1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/page_load_metrics/browser/page_load_metrics_embedder_base.h"
#include "base/feature_list.h"
#include "base/timer/timer.h"
#include "components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/core/uma_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/core/unstarted_page_paint_observer.h"
#include "components/page_load_metrics/browser/observers/cross_origin_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/early_hints_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/fenced_frames_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/performance_manager_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/privacy_sandbox_ads_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/same_origin_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/shared_storage_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/uma_file_and_data_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/observers/use_counter_page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/page_load_tracker.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
#include "services/network/public/cpp/features.h"
#include "third_party/blink/public/common/features.h"
namespace page_load_metrics {
PageLoadMetricsEmbedderBase::PageLoadMetricsEmbedderBase(
content::WebContents* web_contents)
: web_contents_(web_contents) {}
PageLoadMetricsEmbedderBase::~PageLoadMetricsEmbedderBase() = default;
void PageLoadMetricsEmbedderBase::RegisterObservers(
PageLoadTracker* tracker,
content::NavigationHandle* navigation_handle) {
RegisterCommonObservers(tracker);
}
void PageLoadMetricsEmbedderBase::RegisterCommonObservers(
PageLoadTracker* tracker) {
if (IsNoStatePrefetch(web_contents())) {
return;
}
bool is_incognito = IsIncognito(tracker->GetWebContents());
tracker->AddObserver(
std::make_unique<BackForwardCachePageLoadMetricsObserver>(is_incognito));
tracker->AddObserver(
std::make_unique<UmaPageLoadMetricsObserver>(is_incognito));
tracker->AddObserver(std::make_unique<UseCounterPageLoadMetricsObserver>());
tracker->AddObserver(std::make_unique<EarlyHintsPageLoadMetricsObserver>());
tracker->AddObserver(std::make_unique<FencedFramesPageLoadMetricsObserver>());
tracker->AddObserver(
std::make_unique<PrerenderPageLoadMetricsObserver>(is_incognito));
tracker->AddObserver(std::make_unique<SameOriginPageLoadMetricsObserver>());
tracker->AddObserver(std::make_unique<CrossOriginPageLoadMetricsObserver>());
if (base::FeatureList::IsEnabled(network::features::kSharedStorageAPI)) {
tracker->AddObserver(
std::make_unique<SharedStoragePageLoadMetricsObserver>());
}
tracker->AddObserver(
std::make_unique<PrivacySandboxAdsPageLoadMetricsObserver>());
tracker->AddObserver(
std::make_unique<UmaFileAndDataPageLoadMetricsObserver>());
tracker->AddObserver(std::make_unique<PerformanceManagerMetricsObserver>());
tracker->AddObserver(std::make_unique<UnstartedPagePaintObserver>());
}
std::unique_ptr<base::OneShotTimer> PageLoadMetricsEmbedderBase::CreateTimer() {
return std::make_unique<base::OneShotTimer>();
}
bool PageLoadMetricsEmbedderBase::ShouldObserveScheme(std::string_view scheme) {
return false;
}
} // namespace page_load_metrics
|