Commit 46010c3e authored by Tommy Steimel's avatar Tommy Steimel Committed by Commit Bot

Revert "Reland "Migrate AdsPageLoadMetricsObserver to ResourceDataUse over OnLoadedResource""

This reverts commit 02979f89.

Reason for revert: Causing failures on linux-xenial-rel bot:

https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/linux-xenial-rel/6075

Original change's description:
> Reland "Migrate AdsPageLoadMetricsObserver to ResourceDataUse over OnLoadedResource"
> 
> This is a reland of 7c6d18ba
> 
> Original change's description:
> > Migrate AdsPageLoadMetricsObserver to ResourceDataUse over OnLoadedResource
> >
> > This CL is strictly a refactor that switches the Ads PLMO to count frame
> > data using ResourceDataUseUpdate instead of OnLoadedResource. This will
> > allow us to include incomplete resources and header bytes in future
> > per-frame metrics. This will not change behavior of existing histograms
> > at all.
> >
> > Bug: 878393
> > Change-Id: Ibb235c11bbaa168a40be51bc99c03a0ba999c251
> > Reviewed-on: https://chromium-review.googlesource.com/c/1372428
> > Commit-Queue: John Delaney <johnidel@chromium.org>
> > Reviewed-by: Robert Sesek <rsesek@chromium.org>
> > Reviewed-by: Josh Karlin <jkarlin@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#619436}
> 
> TBR=rsesek@chromium.org
> 
> Bug: 878393
> Change-Id: I9c8760497d2a5110f4bae31d633d82a405ed812a
> Reviewed-on: https://chromium-review.googlesource.com/c/1393530
> Commit-Queue: John Delaney <johnidel@chromium.org>
> Reviewed-by: Josh Karlin <jkarlin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#619760}

TBR=jkarlin@chromium.org,rsesek@chromium.org,johnidel@chromium.org

Change-Id: Ia755a547df8982402942b3430e6680ed1e97f3a2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 878393
Reviewed-on: https://chromium-review.googlesource.com/c/1394949Reviewed-by: default avatarTommy Steimel <steimel@chromium.org>
Commit-Queue: Tommy Steimel <steimel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619789}
parent e965c1e1
...@@ -308,6 +308,11 @@ AdsPageLoadMetricsObserver::FlushMetricsOnAppEnterBackground( ...@@ -308,6 +308,11 @@ AdsPageLoadMetricsObserver::FlushMetricsOnAppEnterBackground(
return STOP_OBSERVING; return STOP_OBSERVING;
} }
void AdsPageLoadMetricsObserver::OnLoadedResource(
const page_load_metrics::ExtraRequestCompleteInfo& extra_request_info) {
ProcessLoadedResource(extra_request_info);
}
void AdsPageLoadMetricsObserver::OnComplete( void AdsPageLoadMetricsObserver::OnComplete(
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
...@@ -317,11 +322,10 @@ void AdsPageLoadMetricsObserver::OnComplete( ...@@ -317,11 +322,10 @@ void AdsPageLoadMetricsObserver::OnComplete(
} }
void AdsPageLoadMetricsObserver::OnResourceDataUseObserved( void AdsPageLoadMetricsObserver::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
for (auto const& resource : resources) for (auto const& resource : resources)
UpdateResource(frame_tree_node_id, resource); UpdateResource(resource);
} }
void AdsPageLoadMetricsObserver::OnSubframeNavigationEvaluated( void AdsPageLoadMetricsObserver::OnSubframeNavigationEvaluated(
...@@ -378,22 +382,29 @@ AdsPageLoadMetricsObserver::AdTypes AdsPageLoadMetricsObserver::DetectAds( ...@@ -378,22 +382,29 @@ AdsPageLoadMetricsObserver::AdTypes AdsPageLoadMetricsObserver::DetectAds(
return ad_types; return ad_types;
} }
void AdsPageLoadMetricsObserver::ProcessResourceForFrame( void AdsPageLoadMetricsObserver::ProcessLoadedResource(
FrameTreeNodeId frame_tree_node_id, const page_load_metrics::ExtraRequestCompleteInfo& extra_request_info) {
const page_load_metrics::mojom::ResourceDataUpdatePtr& resource) { const auto& id_and_data =
const auto& id_and_data = ad_frames_data_.find(frame_tree_node_id); ad_frames_data_.find(extra_request_info.frame_tree_node_id);
if (id_and_data == ad_frames_data_.end()) { if (id_and_data == ad_frames_data_.end()) {
if (resource->is_primary_frame_resource) { if (extra_request_info.resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
// Only hold onto primary resources if their load has finished. extra_request_info.resource_type == content::RESOURCE_TYPE_SUB_FRAME) {
if (!resource->is_complete)
return;
// This resource request is the primary resource load for a frame that // This resource request is the primary resource load for a frame that
// hasn't yet finished navigating. Hang onto the request info and replay // hasn't yet finished navigating. Hang onto the request info and replay
// it once the frame finishes navigating. // it once the frame finishes navigating.
ongoing_navigation_resources_.emplace( ongoing_navigation_resources_.emplace(
std::piecewise_construct, std::forward_as_tuple(frame_tree_node_id), std::piecewise_construct,
std::forward_as_tuple(resource.Clone())); std::forward_as_tuple(extra_request_info.frame_tree_node_id),
std::forward_as_tuple(
extra_request_info.url, extra_request_info.host_port_pair,
extra_request_info.frame_tree_node_id,
extra_request_info.was_cached, extra_request_info.raw_body_bytes,
extra_request_info.original_network_content_length, nullptr,
extra_request_info.resource_type, extra_request_info.net_error,
extra_request_info.load_timing_info
? std::make_unique<net::LoadTimingInfo>(
*extra_request_info.load_timing_info)
: nullptr));
} else { } else {
// This is unexpected, it could be: // This is unexpected, it could be:
// 1. a resource from a previous navigation that started its resource // 1. a resource from a previous navigation that started its resource
...@@ -404,21 +415,18 @@ void AdsPageLoadMetricsObserver::ProcessResourceForFrame( ...@@ -404,21 +415,18 @@ void AdsPageLoadMetricsObserver::ProcessResourceForFrame(
return; return;
} }
if (resource->is_complete) { page_bytes_ += extra_request_info.raw_body_bytes;
page_bytes_ += resource->encoded_body_length; if (!extra_request_info.was_cached)
if (!resource->was_fetched_via_cache) uncached_page_bytes_ += extra_request_info.raw_body_bytes;
uncached_page_bytes_ += resource->encoded_body_length;
}
// Determine if the frame (or its ancestor) is an ad, if so attribute the // Determine if the frame (or its ancestor) is an ad, if so attribute the
// bytes to the highest ad ancestor. // bytes to the highest ad ancestor.
AdFrameData* ancestor_data = id_and_data->second; AdFrameData* ancestor_data = id_and_data->second;
if (ancestor_data) { if (ancestor_data) {
if (resource->is_complete) { ancestor_data->frame_bytes += extra_request_info.raw_body_bytes;
ancestor_data->frame_bytes += resource->encoded_body_length; if (!extra_request_info.was_cached) {
if (!resource->was_fetched_via_cache) ancestor_data->frame_bytes_uncached += extra_request_info.raw_body_bytes;
ancestor_data->frame_bytes_uncached += resource->encoded_body_length;
} }
} }
} }
...@@ -449,9 +457,7 @@ AdsPageLoadMetricsObserver::GetResourceMimeType( ...@@ -449,9 +457,7 @@ AdsPageLoadMetricsObserver::GetResourceMimeType(
} }
void AdsPageLoadMetricsObserver::UpdateResource( void AdsPageLoadMetricsObserver::UpdateResource(
FrameTreeNodeId frame_tree_node_id,
const page_load_metrics::mojom::ResourceDataUpdatePtr& resource) { const page_load_metrics::mojom::ResourceDataUpdatePtr& resource) {
ProcessResourceForFrame(frame_tree_node_id, resource);
auto it = page_resources_.find(resource->request_id); auto it = page_resources_.find(resource->request_id);
// A new resource has been observed. // A new resource has been observed.
if (it == page_resources_.end()) if (it == page_resources_.end())
...@@ -684,6 +690,6 @@ void AdsPageLoadMetricsObserver::ProcessOngoingNavigationResource( ...@@ -684,6 +690,6 @@ void AdsPageLoadMetricsObserver::ProcessOngoingNavigationResource(
if (frame_id_and_request == ongoing_navigation_resources_.end()) if (frame_id_and_request == ongoing_navigation_resources_.end())
return; return;
ProcessResourceForFrame(frame_tree_node_id, frame_id_and_request->second); ProcessLoadedResource(frame_id_and_request->second);
ongoing_navigation_resources_.erase(frame_id_and_request); ongoing_navigation_resources_.erase(frame_id_and_request);
} }
...@@ -81,10 +81,11 @@ class AdsPageLoadMetricsObserver ...@@ -81,10 +81,11 @@ class AdsPageLoadMetricsObserver
ObservePolicy FlushMetricsOnAppEnterBackground( ObservePolicy FlushMetricsOnAppEnterBackground(
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& extra_info) override; const page_load_metrics::PageLoadExtraInfo& extra_info) override;
void OnLoadedResource(const page_load_metrics::ExtraRequestCompleteInfo&
extra_request_info) override;
void OnComplete(const page_load_metrics::mojom::PageLoadTiming& timing, void OnComplete(const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) override; const page_load_metrics::PageLoadExtraInfo& info) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
void OnPageInteractive( void OnPageInteractive(
...@@ -97,8 +98,6 @@ class AdsPageLoadMetricsObserver ...@@ -97,8 +98,6 @@ class AdsPageLoadMetricsObserver
AdTypes ad_types, AdTypes ad_types,
AdOriginStatus origin_status, AdOriginStatus origin_status,
bool frame_navigated); bool frame_navigated);
// Total prefilter (body) bytes loaded for complete resources.
size_t frame_bytes; size_t frame_bytes;
size_t frame_bytes_uncached; size_t frame_bytes_uncached;
const FrameTreeNodeId frame_tree_node_id; const FrameTreeNodeId frame_tree_node_id;
...@@ -125,9 +124,8 @@ class AdsPageLoadMetricsObserver ...@@ -125,9 +124,8 @@ class AdsPageLoadMetricsObserver
// each call in order to free up memory. // each call in order to free up memory.
AdTypes DetectAds(content::NavigationHandle* navigation_handle); AdTypes DetectAds(content::NavigationHandle* navigation_handle);
void ProcessResourceForFrame( void ProcessLoadedResource(
FrameTreeNodeId frame_tree_node_id, const page_load_metrics::ExtraRequestCompleteInfo& extra_request_info);
const page_load_metrics::mojom::ResourceDataUpdatePtr& resource);
// Get the mime type of a resource. This only returns a subset of mime types, // Get the mime type of a resource. This only returns a subset of mime types,
// grouped at a higher level. For example, all video mime types return the // grouped at a higher level. For example, all video mime types return the
...@@ -139,7 +137,6 @@ class AdsPageLoadMetricsObserver ...@@ -139,7 +137,6 @@ class AdsPageLoadMetricsObserver
// update. Updates |page_resources_| to reflect the new state of the resource. // update. Updates |page_resources_| to reflect the new state of the resource.
// Called once per ResourceDataUpdate. // Called once per ResourceDataUpdate.
void UpdateResource( void UpdateResource(
FrameTreeNodeId frame_tree_node_id,
const page_load_metrics::mojom::ResourceDataUpdatePtr& resource); const page_load_metrics::mojom::ResourceDataUpdatePtr& resource);
// Records size of resources by mime type. // Records size of resources by mime type.
...@@ -155,7 +152,7 @@ class AdsPageLoadMetricsObserver ...@@ -155,7 +152,7 @@ class AdsPageLoadMetricsObserver
// Checks to see if a resource is waiting for a navigation with the given // Checks to see if a resource is waiting for a navigation with the given
// |frame_tree_node_id| to commit before it can be processed. If so, call // |frame_tree_node_id| to commit before it can be processed. If so, call
// OnResourceDataUpdate for the delayed resource. // OnLoadedResource for the delayed resource.
void ProcessOngoingNavigationResource(FrameTreeNodeId frame_tree_node_id); void ProcessOngoingNavigationResource(FrameTreeNodeId frame_tree_node_id);
// Stores the size data of each ad frame. Pointed to by ad_frames_ so use a // Stores the size data of each ad frame. Pointed to by ad_frames_ so use a
...@@ -177,7 +174,7 @@ class AdsPageLoadMetricsObserver ...@@ -177,7 +174,7 @@ class AdsPageLoadMetricsObserver
// When the observer receives report of a document resource loading for a // When the observer receives report of a document resource loading for a
// sub-frame before the sub-frame commit occurs, hold onto the resource // sub-frame before the sub-frame commit occurs, hold onto the resource
// request info (delay it) until the sub-frame commits. // request info (delay it) until the sub-frame commits.
std::map<FrameTreeNodeId, page_load_metrics::mojom::ResourceDataUpdatePtr> std::map<FrameTreeNodeId, page_load_metrics::ExtraRequestCompleteInfo>
ongoing_navigation_resources_; ongoing_navigation_resources_;
// Maps a request_id for a blink resource to the metadata for the resource // Maps a request_id for a blink resource to the metadata for the resource
......
...@@ -87,14 +87,6 @@ class AdsPageLoadMetricsObserverBrowserTest ...@@ -87,14 +87,6 @@ class AdsPageLoadMetricsObserverBrowserTest
} }
~AdsPageLoadMetricsObserverBrowserTest() override {} ~AdsPageLoadMetricsObserverBrowserTest() override {}
std::unique_ptr<page_load_metrics::PageLoadMetricsTestWaiter>
CreatePageLoadMetricsTestWaiter() {
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
return std::make_unique<page_load_metrics::PageLoadMetricsTestWaiter>(
web_contents);
}
private: private:
base::test::ScopedFeatureList scoped_feature_list_; base::test::ScopedFeatureList scoped_feature_list_;
...@@ -105,12 +97,9 @@ class AdsPageLoadMetricsObserverBrowserTest ...@@ -105,12 +97,9 @@ class AdsPageLoadMetricsObserverBrowserTest
IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest, IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
OriginStatusMetricEmbedded) { OriginStatusMetricEmbedded) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
auto waiter = CreatePageLoadMetricsTestWaiter();
ui_test_utils::NavigateToURL( ui_test_utils::NavigateToURL(
browser(), browser(),
embedded_test_server()->GetURL("/ads_observer/srcdoc_embedded_ad.html")); embedded_test_server()->GetURL("/ads_observer/srcdoc_embedded_ad.html"));
waiter->AddMinimumCompleteResourcesExpectation(3);
waiter->Wait();
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectUniqueSample( histogram_tester.ExpectUniqueSample(
kCrossOriginHistogramId, kCrossOriginHistogramId,
...@@ -132,13 +121,9 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest, ...@@ -132,13 +121,9 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest, IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
OriginStatusMetricSame) { OriginStatusMetricSame) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
auto waiter = CreatePageLoadMetricsTestWaiter();
ui_test_utils::NavigateToURL( ui_test_utils::NavigateToURL(
browser(), browser(),
embedded_test_server()->GetURL("/ads_observer/same_origin_ad.html")); embedded_test_server()->GetURL("/ads_observer/same_origin_ad.html"));
waiter->AddMinimumCompleteResourcesExpectation(3);
waiter->Wait();
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectUniqueSample( histogram_tester.ExpectUniqueSample(
kCrossOriginHistogramId, kCrossOriginHistogramId,
...@@ -150,8 +135,6 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest, ...@@ -150,8 +135,6 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
OriginStatusMetricCross) { OriginStatusMetricCross) {
// Note: Cannot navigate cross-origin without dynamically generating the URL. // Note: Cannot navigate cross-origin without dynamically generating the URL.
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
auto waiter = CreatePageLoadMetricsTestWaiter();
ui_test_utils::NavigateToURL( ui_test_utils::NavigateToURL(
browser(), embedded_test_server()->GetURL("/iframe_blank.html")); browser(), embedded_test_server()->GetURL("/iframe_blank.html"));
// Note that the initial iframe is not an ad, so the metric doesn't observe // Note that the initial iframe is not an ad, so the metric doesn't observe
...@@ -161,11 +144,6 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest, ...@@ -161,11 +144,6 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
NavigateIframeToURL(web_contents(), "test", NavigateIframeToURL(web_contents(), "test",
embedded_test_server()->GetURL( embedded_test_server()->GetURL(
"a.com", "/ads_observer/same_origin_ad.html")); "a.com", "/ads_observer/same_origin_ad.html"));
// Wait until all resource data updates are sent.
waiter->AddPageExpectation(
page_load_metrics::PageLoadMetricsTestWaiter::TimingField::kLoadEvent);
waiter->Wait();
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectUniqueSample( histogram_tester.ExpectUniqueSample(
kCrossOriginHistogramId, kCrossOriginHistogramId,
...@@ -190,24 +168,6 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest, ...@@ -190,24 +168,6 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
// Navigate away to force the histogram recording. // Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
// TODO(johnidel): Check that the subresources of the new frame are reported
// correctly. Resources from a failed provisional load are not reported to
// resource data updates, causing this adframe to not be recorded. This is an
// uncommon case but should be reported. See crbug.com/914893.
}
// Test that a blank ad subframe that is docwritten correctly reports metrics.
IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
DocWriteAboutBlankAdframe) {
base::HistogramTester histogram_tester;
auto waiter = CreatePageLoadMetricsTestWaiter();
ui_test_utils::NavigateToURL(browser(),
embedded_test_server()->GetURL(
"/ads_observer/docwrite_blank_frame.html"));
waiter->AddMinimumCompleteResourcesExpectation(4);
waiter->Wait();
// Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectUniqueSample( histogram_tester.ExpectUniqueSample(
"PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 1, 1); "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 1, 1);
histogram_tester.ExpectUniqueSample( histogram_tester.ExpectUniqueSample(
...@@ -228,13 +188,7 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest, ...@@ -228,13 +188,7 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverBrowserTest,
const GURL main_url(embedded_test_server()->GetURL( const GURL main_url(embedded_test_server()->GetURL(
"a.com", "/cross_site_iframe_factory.html?a(b,b,c,d)")); "a.com", "/cross_site_iframe_factory.html?a(b,b,c,d)"));
auto waiter = CreatePageLoadMetricsTestWaiter();
ui_test_utils::NavigateToURL(browser(), main_url); ui_test_utils::NavigateToURL(browser(), main_url);
// One favicon resource and 2 resources for each frame.
waiter->AddMinimumCompleteResourcesExpectation(11);
waiter->Wait();
// Navigate away to force the histogram recording. // Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
......
...@@ -716,7 +716,6 @@ void CorePageLoadMetricsObserver::OnUserInput( ...@@ -716,7 +716,6 @@ void CorePageLoadMetricsObserver::OnUserInput(
} }
void CorePageLoadMetricsObserver::OnResourceDataUseObserved( void CorePageLoadMetricsObserver::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
for (auto const& resource : resources) { for (auto const& resource : resources) {
......
...@@ -214,7 +214,6 @@ class CorePageLoadMetricsObserver ...@@ -214,7 +214,6 @@ class CorePageLoadMetricsObserver
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& extra_info) override; const page_load_metrics::PageLoadExtraInfo& extra_info) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
......
...@@ -354,7 +354,6 @@ void DataReductionProxyMetricsObserverBase::OnLoadedResource( ...@@ -354,7 +354,6 @@ void DataReductionProxyMetricsObserverBase::OnLoadedResource(
} }
void DataReductionProxyMetricsObserverBase::OnResourceDataUseObserved( void DataReductionProxyMetricsObserverBase::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
......
...@@ -52,7 +52,6 @@ class DataReductionProxyMetricsObserverBase ...@@ -52,7 +52,6 @@ class DataReductionProxyMetricsObserverBase
void OnLoadedResource(const page_load_metrics::ExtraRequestCompleteInfo& void OnLoadedResource(const page_load_metrics::ExtraRequestCompleteInfo&
extra_request_compelte_info) override; extra_request_compelte_info) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
void OnEventOccurred(const void* const event_key) override; void OnEventOccurred(const void* const event_key) override;
......
...@@ -42,7 +42,6 @@ DataSaverSiteBreakdownMetricsObserver::OnCommit( ...@@ -42,7 +42,6 @@ DataSaverSiteBreakdownMetricsObserver::OnCommit(
} }
void DataSaverSiteBreakdownMetricsObserver::OnResourceDataUseObserved( void DataSaverSiteBreakdownMetricsObserver::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
......
...@@ -31,7 +31,6 @@ class DataSaverSiteBreakdownMetricsObserver ...@@ -31,7 +31,6 @@ class DataSaverSiteBreakdownMetricsObserver
ukm::SourceId source_id) override; ukm::SourceId source_id) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
......
...@@ -24,7 +24,6 @@ MediaPageLoadMetricsObserver::MediaPageLoadMetricsObserver() ...@@ -24,7 +24,6 @@ MediaPageLoadMetricsObserver::MediaPageLoadMetricsObserver()
MediaPageLoadMetricsObserver::~MediaPageLoadMetricsObserver() = default; MediaPageLoadMetricsObserver::~MediaPageLoadMetricsObserver() = default;
void MediaPageLoadMetricsObserver::OnResourceDataUseObserved( void MediaPageLoadMetricsObserver::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
for (auto const& resource : resources) { for (auto const& resource : resources) {
......
...@@ -27,7 +27,6 @@ class MediaPageLoadMetricsObserver ...@@ -27,7 +27,6 @@ class MediaPageLoadMetricsObserver
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) override; const page_load_metrics::PageLoadExtraInfo& info) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
void MediaStartedPlaying( void MediaStartedPlaying(
......
...@@ -111,7 +111,6 @@ PageCappingPageLoadMetricsObserver::OnCommit( ...@@ -111,7 +111,6 @@ PageCappingPageLoadMetricsObserver::OnCommit(
} }
void PageCappingPageLoadMetricsObserver::OnResourceDataUseObserved( void PageCappingPageLoadMetricsObserver::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
last_data_use_time_ = clock_->NowTicks(); last_data_use_time_ = clock_->NowTicks();
......
...@@ -75,7 +75,6 @@ class PageCappingPageLoadMetricsObserver ...@@ -75,7 +75,6 @@ class PageCappingPageLoadMetricsObserver
private: private:
// page_load_metrics::PageLoadMetricsObserver: // page_load_metrics::PageLoadMetricsObserver:
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
ObservePolicy OnCommit(content::NavigationHandle* navigation_handle, ObservePolicy OnCommit(content::NavigationHandle* navigation_handle,
......
...@@ -70,12 +70,6 @@ void PageLoadMetricsObserverTestHarness::SimulateResourceDataUseUpdate( ...@@ -70,12 +70,6 @@ void PageLoadMetricsObserverTestHarness::SimulateResourceDataUseUpdate(
tester_->SimulateResourceDataUseUpdate(resources); tester_->SimulateResourceDataUseUpdate(resources);
} }
void PageLoadMetricsObserverTestHarness::SimulateResourceDataUseUpdate(
const std::vector<mojom::ResourceDataUpdatePtr>& resources,
content::RenderFrameHost* render_frame_host) {
tester_->SimulateResourceDataUseUpdate(resources, render_frame_host);
}
void PageLoadMetricsObserverTestHarness::SimulateFeaturesUpdate( void PageLoadMetricsObserverTestHarness::SimulateFeaturesUpdate(
const mojom::PageLoadFeatures& new_features) { const mojom::PageLoadFeatures& new_features) {
tester_->SimulateFeaturesUpdate(new_features); tester_->SimulateFeaturesUpdate(new_features);
......
...@@ -83,9 +83,6 @@ class PageLoadMetricsObserverTestHarness ...@@ -83,9 +83,6 @@ class PageLoadMetricsObserverTestHarness
void SimulateFeaturesUpdate(const mojom::PageLoadFeatures& new_features); void SimulateFeaturesUpdate(const mojom::PageLoadFeatures& new_features);
void SimulateResourceDataUseUpdate( void SimulateResourceDataUseUpdate(
const std::vector<mojom::ResourceDataUpdatePtr>& resources); const std::vector<mojom::ResourceDataUpdatePtr>& resources);
void SimulateResourceDataUseUpdate(
const std::vector<mojom::ResourceDataUpdatePtr>& resources,
content::RenderFrameHost* render_frame_host);
void SimulateRenderDataUpdate(const mojom::PageRenderData& render_data); void SimulateRenderDataUpdate(const mojom::PageRenderData& render_data);
// Simulates a loaded resource. Main frame resources must specify a // Simulates a loaded resource. Main frame resources must specify a
......
...@@ -119,19 +119,11 @@ void PageLoadMetricsObserverTester::SimulatePageLoadTimingUpdate( ...@@ -119,19 +119,11 @@ void PageLoadMetricsObserverTester::SimulatePageLoadTimingUpdate(
void PageLoadMetricsObserverTester::SimulateResourceDataUseUpdate( void PageLoadMetricsObserverTester::SimulateResourceDataUseUpdate(
const std::vector<mojom::ResourceDataUpdatePtr>& resources) { const std::vector<mojom::ResourceDataUpdatePtr>& resources) {
SimulateResourceDataUseUpdate(resources, web_contents()->GetMainFrame()); observer_->OnTimingUpdated(
} web_contents()->GetMainFrame(), mojom::PageLoadTimingPtr(base::in_place),
mojom::PageLoadMetadataPtr(base::in_place),
void PageLoadMetricsObserverTester::SimulateResourceDataUseUpdate( mojom::PageLoadFeaturesPtr(base::in_place), resources,
const std::vector<mojom::ResourceDataUpdatePtr>& resources, mojom::PageRenderDataPtr(base::in_place));
content::RenderFrameHost* render_frame_host) {
auto timing = mojom::PageLoadTimingPtr(base::in_place);
InitPageLoadTimingForTest(timing.get());
observer_->OnTimingUpdated(render_frame_host, std::move(timing),
mojom::PageLoadMetadataPtr(base::in_place),
mojom::PageLoadFeaturesPtr(base::in_place),
resources,
mojom::PageRenderDataPtr(base::in_place));
} }
void PageLoadMetricsObserverTester::SimulateLoadedResource( void PageLoadMetricsObserverTester::SimulateLoadedResource(
......
...@@ -54,9 +54,6 @@ class PageLoadMetricsObserverTester : public test::WeakMockTimerProvider { ...@@ -54,9 +54,6 @@ class PageLoadMetricsObserverTester : public test::WeakMockTimerProvider {
void SimulateFeaturesUpdate(const mojom::PageLoadFeatures& new_features); void SimulateFeaturesUpdate(const mojom::PageLoadFeatures& new_features);
void SimulateResourceDataUseUpdate( void SimulateResourceDataUseUpdate(
const std::vector<mojom::ResourceDataUpdatePtr>& resources); const std::vector<mojom::ResourceDataUpdatePtr>& resources);
void SimulateResourceDataUseUpdate(
const std::vector<mojom::ResourceDataUpdatePtr>& resources,
content::RenderFrameHost* render_frame_host);
void SimulateRenderDataUpdate(const mojom::PageRenderData& render_data); void SimulateRenderDataUpdate(const mojom::PageRenderData& render_data);
// Simulates a loaded resource. Main frame resources must specify a // Simulates a loaded resource. Main frame resources must specify a
......
...@@ -220,7 +220,6 @@ void PreviewsPageLoadMetricsObserver::RecordTimingMetrics( ...@@ -220,7 +220,6 @@ void PreviewsPageLoadMetricsObserver::RecordTimingMetrics(
} }
void PreviewsPageLoadMetricsObserver::OnResourceDataUseObserved( void PreviewsPageLoadMetricsObserver::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
for (auto const& resource : resources) { for (auto const& resource : resources) {
......
...@@ -40,7 +40,6 @@ class PreviewsPageLoadMetricsObserver ...@@ -40,7 +40,6 @@ class PreviewsPageLoadMetricsObserver
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) override; const page_load_metrics::PageLoadExtraInfo& info) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
......
...@@ -40,7 +40,6 @@ TabRestorePageLoadMetricsObserver::OnStart( ...@@ -40,7 +40,6 @@ TabRestorePageLoadMetricsObserver::OnStart(
} }
void TabRestorePageLoadMetricsObserver::OnResourceDataUseObserved( void TabRestorePageLoadMetricsObserver::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
for (auto const& resource : resources) { for (auto const& resource : resources) {
......
...@@ -30,7 +30,6 @@ class TabRestorePageLoadMetricsObserver ...@@ -30,7 +30,6 @@ class TabRestorePageLoadMetricsObserver
const GURL& currently_committed_url, const GURL& currently_committed_url,
bool started_in_foreground) override; bool started_in_foreground) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
page_load_metrics::PageLoadMetricsObserver::ObservePolicy page_load_metrics::PageLoadMetricsObserver::ObservePolicy
......
...@@ -432,10 +432,9 @@ class PageLoadMetricsObserver { ...@@ -432,10 +432,9 @@ class PageLoadMetricsObserver {
const PageLoadExtraInfo& extra_info) {} const PageLoadExtraInfo& extra_info) {}
// Invoked when there is data use for loading a resource on the page // Invoked when there is data use for loading a resource on the page
// for a given render frame host. This only contains resources that have had // across all frames. This only contains resources that have had new
// new data use since the last callback. // data use since the last callback.
virtual void OnResourceDataUseObserved( virtual void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<mojom::ResourceDataUpdatePtr>& resources) {} const std::vector<mojom::ResourceDataUpdatePtr>& resources) {}
// Invoked when a media element starts playing. // Invoked when a media element starts playing.
......
...@@ -114,7 +114,6 @@ void PageLoadMetricsTestWaiter::OnLoadedResource( ...@@ -114,7 +114,6 @@ void PageLoadMetricsTestWaiter::OnLoadedResource(
} }
void PageLoadMetricsTestWaiter::OnResourceDataUseObserved( void PageLoadMetricsTestWaiter::OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
for (auto const& resource : resources) { for (auto const& resource : resources) {
...@@ -258,11 +257,10 @@ void PageLoadMetricsTestWaiter::WaiterMetricsObserver::OnLoadedResource( ...@@ -258,11 +257,10 @@ void PageLoadMetricsTestWaiter::WaiterMetricsObserver::OnLoadedResource(
void PageLoadMetricsTestWaiter::WaiterMetricsObserver:: void PageLoadMetricsTestWaiter::WaiterMetricsObserver::
OnResourceDataUseObserved( OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) { resources) {
if (waiter_) if (waiter_)
waiter_->OnResourceDataUseObserved(frame_tree_node_id, resources); waiter_->OnResourceDataUseObserved(resources);
} }
void PageLoadMetricsTestWaiter::WaiterMetricsObserver::OnFeaturesUsageObserved( void PageLoadMetricsTestWaiter::WaiterMetricsObserver::OnFeaturesUsageObserved(
......
...@@ -29,8 +29,6 @@ class PageLoadMetricsTestWaiter ...@@ -29,8 +29,6 @@ class PageLoadMetricsTestWaiter
// kLoadTimingInfo waits for main frame timing info only. // kLoadTimingInfo waits for main frame timing info only.
kLoadTimingInfo = 1 << 6, kLoadTimingInfo = 1 << 6,
}; };
using FrameTreeNodeId =
page_load_metrics::PageLoadMetricsObserver::FrameTreeNodeId;
explicit PageLoadMetricsTestWaiter(content::WebContents* web_contents); explicit PageLoadMetricsTestWaiter(content::WebContents* web_contents);
...@@ -79,8 +77,6 @@ class PageLoadMetricsTestWaiter ...@@ -79,8 +77,6 @@ class PageLoadMetricsTestWaiter
class WaiterMetricsObserver class WaiterMetricsObserver
: public page_load_metrics::PageLoadMetricsObserver { : public page_load_metrics::PageLoadMetricsObserver {
public: public:
using FrameTreeNodeId =
page_load_metrics::PageLoadMetricsObserver::FrameTreeNodeId;
// We use a WeakPtr to the PageLoadMetricsTestWaiter because |waiter| can be // We use a WeakPtr to the PageLoadMetricsTestWaiter because |waiter| can be
// destroyed before this WaiterMetricsObserver. // destroyed before this WaiterMetricsObserver.
explicit WaiterMetricsObserver( explicit WaiterMetricsObserver(
...@@ -96,7 +92,6 @@ class PageLoadMetricsTestWaiter ...@@ -96,7 +92,6 @@ class PageLoadMetricsTestWaiter
extra_request_complete_info) override; extra_request_complete_info) override;
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources) override; resources) override;
...@@ -163,7 +158,6 @@ class PageLoadMetricsTestWaiter ...@@ -163,7 +158,6 @@ class PageLoadMetricsTestWaiter
// from a resource load. Stops waiting if expectations are satisfied after // from a resource load. Stops waiting if expectations are satisfied after
// update. // update.
void OnResourceDataUseObserved( void OnResourceDataUseObserved(
FrameTreeNodeId frame_tree_node_id,
const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>&
resources); resources);
......
...@@ -444,8 +444,7 @@ void PageLoadMetricsUpdateDispatcher::UpdateMetrics( ...@@ -444,8 +444,7 @@ void PageLoadMetricsUpdateDispatcher::UpdateMetrics(
// Report data usage before new timing and metadata for messages that have // Report data usage before new timing and metadata for messages that have
// both updates. // both updates.
client_->UpdateResourceDataUse(render_frame_host->GetFrameTreeNodeId(), client_->UpdateResourceDataUse(resources);
resources);
if (render_frame_host->GetParent() == nullptr) { if (render_frame_host->GetParent() == nullptr) {
UpdateMainFrameMetadata(std::move(new_metadata)); UpdateMainFrameMetadata(std::move(new_metadata));
UpdateMainFrameTiming(std::move(new_timing)); UpdateMainFrameTiming(std::move(new_timing));
......
...@@ -112,7 +112,6 @@ class PageLoadMetricsUpdateDispatcher { ...@@ -112,7 +112,6 @@ class PageLoadMetricsUpdateDispatcher {
content::RenderFrameHost* rfh, content::RenderFrameHost* rfh,
const mojom::PageLoadFeatures& new_features) = 0; const mojom::PageLoadFeatures& new_features) = 0;
virtual void UpdateResourceDataUse( virtual void UpdateResourceDataUse(
int frame_tree_node_id,
const std::vector<mojom::ResourceDataUpdatePtr>& resources) = 0; const std::vector<mojom::ResourceDataUpdatePtr>& resources) = 0;
}; };
......
...@@ -651,10 +651,9 @@ void PageLoadTracker::UpdateFeaturesUsage( ...@@ -651,10 +651,9 @@ void PageLoadTracker::UpdateFeaturesUsage(
} }
void PageLoadTracker::UpdateResourceDataUse( void PageLoadTracker::UpdateResourceDataUse(
int frame_tree_node_id,
const std::vector<mojom::ResourceDataUpdatePtr>& resources) { const std::vector<mojom::ResourceDataUpdatePtr>& resources) {
for (const auto& observer : observers_) { for (const auto& observer : observers_) {
observer->OnResourceDataUseObserved(frame_tree_node_id, resources); observer->OnResourceDataUseObserved(resources);
} }
} }
......
...@@ -182,7 +182,6 @@ class PageLoadTracker : public PageLoadMetricsUpdateDispatcher::Client { ...@@ -182,7 +182,6 @@ class PageLoadTracker : public PageLoadMetricsUpdateDispatcher::Client {
content::RenderFrameHost* rfh, content::RenderFrameHost* rfh,
const mojom::PageLoadFeatures& new_features) override; const mojom::PageLoadFeatures& new_features) override;
void UpdateResourceDataUse( void UpdateResourceDataUse(
int frame_tree_node_id,
const std::vector<mojom::ResourceDataUpdatePtr>& resources) override; const std::vector<mojom::ResourceDataUpdatePtr>& resources) override;
void Redirect(content::NavigationHandle* navigation_handle); void Redirect(content::NavigationHandle* navigation_handle);
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/histogram_tester.h"
#include "chrome/browser/metrics/subprocess_metrics_provider.h" #include "chrome/browser/metrics/subprocess_metrics_provider.h"
#include "chrome/browser/page_load_metrics/observers/ads_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/ads_page_load_metrics_observer.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_test_waiter.h"
#include "chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h" #include "chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
...@@ -93,12 +92,6 @@ class AdTaggingBrowserTest : public SubresourceFilterBrowserTest { ...@@ -93,12 +92,6 @@ class AdTaggingBrowserTest : public SubresourceFilterBrowserTest {
return embedded_test_server()->GetURL("/ad_tagging/" + page); return embedded_test_server()->GetURL("/ad_tagging/" + page);
} }
std::unique_ptr<page_load_metrics::PageLoadMetricsTestWaiter>
CreatePageLoadMetricsTestWaiter() {
return std::make_unique<page_load_metrics::PageLoadMetricsTestWaiter>(
GetWebContents());
}
private: private:
content::RenderFrameHost* CreateFrameImpl( content::RenderFrameHost* CreateFrameImpl(
const content::ToRenderFrameHost& adapter, const content::ToRenderFrameHost& adapter,
...@@ -248,9 +241,9 @@ IN_PROC_BROWSER_TEST_F(AdTaggingBrowserTest, VerifyCrossOriginWithoutNavigate) { ...@@ -248,9 +241,9 @@ IN_PROC_BROWSER_TEST_F(AdTaggingBrowserTest, VerifyCrossOriginWithoutNavigate) {
// Navigate away and ensure we report cross origin. // Navigate away and ensure we report cross origin.
ui_test_utils::NavigateToURL(browser(), GetURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GetURL(url::kAboutBlankURL));
histogram_tester.ExpectUniqueSample(
// TODO(johnidel): Check that frame was reported properly. See kAllOriginStatusHistogram,
// crbug.com/914893. AdsPageLoadMetricsObserver::AdOriginStatus::kCross, 1);
} }
// Ad script creates a frame and navigates it cross origin. // Ad script creates a frame and navigates it cross origin.
...@@ -258,18 +251,12 @@ IN_PROC_BROWSER_TEST_F(AdTaggingBrowserTest, ...@@ -258,18 +251,12 @@ IN_PROC_BROWSER_TEST_F(AdTaggingBrowserTest,
VerifyCrossOriginWithImmediateNavigate) { VerifyCrossOriginWithImmediateNavigate) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
auto waiter = CreatePageLoadMetricsTestWaiter();
// Create the main frame and cross origin subframe from an ad script. // Create the main frame and cross origin subframe from an ad script.
// This triggers both subresource_filter and Google ad detection. // This triggers both subresource_filter and Google ad detection.
ui_test_utils::NavigateToURL(browser(), GetURL("frame_factory.html")); ui_test_utils::NavigateToURL(browser(), GetURL("frame_factory.html"));
CreateSrcFrameFromAdScript(GetWebContents(), CreateSrcFrameFromAdScript(GetWebContents(),
embedded_test_server()->GetURL( embedded_test_server()->GetURL(
"b.com", "/ads_observer/same_origin_ad.html")); "b.com", "/ads_observer/same_origin_ad.html"));
// Wait for all of the subresources to finish loading (includes favicon).
// Waiting for the navigation to finish is not sufficient, as it blocks on the
// main resource load finishing, not the iframe resource.
waiter->AddMinimumCompleteResourcesExpectation(4);
waiter->Wait();
// Navigate away and ensure we report cross origin. // Navigate away and ensure we report cross origin.
ui_test_utils::NavigateToURL(browser(), GetURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GetURL(url::kAboutBlankURL));
......
...@@ -199,9 +199,6 @@ struct ResourceDataUpdate { ...@@ -199,9 +199,6 @@ struct ResourceDataUpdate {
// Whether this resource was fetched from the http cache. // Whether this resource was fetched from the http cache.
bool was_fetched_via_cache; bool was_fetched_via_cache;
// Whether this resource is the primary resource for a frame.
bool is_primary_frame_resource;
// Mime type for the resource found in the network response header. // Mime type for the resource found in the network response header.
string mime_type; string mime_type;
......
...@@ -106,10 +106,10 @@ void MetricsRenderFrameObserver::DidStartResponse( ...@@ -106,10 +106,10 @@ void MetricsRenderFrameObserver::DidStartResponse(
// case. There should be a guarantee that DidStartProvisionalLoad be called // case. There should be a guarantee that DidStartProvisionalLoad be called
// before DidStartResponse for the frame request. // before DidStartResponse for the frame request.
provisional_frame_resource_data_use_->DidStartResponse( provisional_frame_resource_data_use_->DidStartResponse(
response_url, request_id, response_head, resource_type); response_url, request_id, response_head);
} else if (page_timing_metrics_sender_) { } else if (page_timing_metrics_sender_) {
page_timing_metrics_sender_->DidStartResponse(response_url, request_id, page_timing_metrics_sender_->DidStartResponse(response_url, request_id,
response_head, resource_type); response_head);
UpdateResourceMetadata(request_id); UpdateResourceMetadata(request_id);
} }
} }
......
...@@ -32,8 +32,7 @@ PageResourceDataUse::~PageResourceDataUse() = default; ...@@ -32,8 +32,7 @@ PageResourceDataUse::~PageResourceDataUse() = default;
void PageResourceDataUse::DidStartResponse( void PageResourceDataUse::DidStartResponse(
const GURL& response_url, const GURL& response_url,
int resource_id, int resource_id,
const network::ResourceResponseHead& response_head, const network::ResourceResponseHead& response_head) {
content::ResourceType resource_type) {
resource_id_ = resource_id; resource_id_ = resource_id;
data_reduction_proxy_compression_ratio_estimate_ = data_reduction_proxy_compression_ratio_estimate_ =
data_reduction_proxy::EstimateCompressionRatioFromHeaders(&response_head); data_reduction_proxy::EstimateCompressionRatioFromHeaders(&response_head);
...@@ -41,9 +40,6 @@ void PageResourceDataUse::DidStartResponse( ...@@ -41,9 +40,6 @@ void PageResourceDataUse::DidStartResponse(
mime_type_ = response_head.mime_type; mime_type_ = response_head.mime_type;
was_fetched_via_cache_ = response_head.was_fetched_via_cache; was_fetched_via_cache_ = response_head.was_fetched_via_cache;
is_secure_scheme_ = response_url.SchemeIsCryptographic(); is_secure_scheme_ = response_url.SchemeIsCryptographic();
is_primary_frame_resource_ =
resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
resource_type == content::RESOURCE_TYPE_SUB_FRAME;
} }
void PageResourceDataUse::DidReceiveTransferSizeUpdate( void PageResourceDataUse::DidReceiveTransferSizeUpdate(
...@@ -104,7 +100,6 @@ mojom::ResourceDataUpdatePtr PageResourceDataUse::GetResourceDataUpdate() { ...@@ -104,7 +100,6 @@ mojom::ResourceDataUpdatePtr PageResourceDataUse::GetResourceDataUpdate() {
resource_data_update->was_fetched_via_cache = was_fetched_via_cache_; resource_data_update->was_fetched_via_cache = was_fetched_via_cache_;
resource_data_update->is_secure_scheme = is_secure_scheme_; resource_data_update->is_secure_scheme = is_secure_scheme_;
resource_data_update->proxy_used = proxy_used_; resource_data_update->proxy_used = proxy_used_;
resource_data_update->is_primary_frame_resource = is_primary_frame_resource_;
return resource_data_update; return resource_data_update;
} }
} // namespace page_load_metrics } // namespace page_load_metrics
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "base/macros.h" #include "base/macros.h"
#include "chrome/common/page_load_metrics/page_load_metrics.mojom.h" #include "chrome/common/page_load_metrics/page_load_metrics.mojom.h"
#include "content/public/common/resource_type.h"
class GURL; class GURL;
...@@ -28,8 +27,7 @@ class PageResourceDataUse { ...@@ -28,8 +27,7 @@ class PageResourceDataUse {
void DidStartResponse(const GURL& response_url, void DidStartResponse(const GURL& response_url,
int resource_id, int resource_id,
const network::ResourceResponseHead& response_head, const network::ResourceResponseHead& response_head);
content::ResourceType resource_type);
// Updates received bytes. // Updates received bytes.
void DidReceiveTransferSizeUpdate(int received_data_length); void DidReceiveTransferSizeUpdate(int received_data_length);
...@@ -76,7 +74,6 @@ class PageResourceDataUse { ...@@ -76,7 +74,6 @@ class PageResourceDataUse {
bool was_fetched_via_cache_; bool was_fetched_via_cache_;
bool is_secure_scheme_; bool is_secure_scheme_;
bool proxy_used_; bool proxy_used_;
bool is_primary_frame_resource_ = false;
std::string mime_type_; std::string mime_type_;
......
...@@ -100,15 +100,14 @@ void PageTimingMetricsSender::DidObserveLayoutJank(double jank_fraction) { ...@@ -100,15 +100,14 @@ void PageTimingMetricsSender::DidObserveLayoutJank(double jank_fraction) {
void PageTimingMetricsSender::DidStartResponse( void PageTimingMetricsSender::DidStartResponse(
const GURL& response_url, const GURL& response_url,
int resource_id, int resource_id,
const network::ResourceResponseHead& response_head, const network::ResourceResponseHead& response_head) {
content::ResourceType resource_type) {
DCHECK(!base::ContainsKey(page_resource_data_use_, resource_id)); DCHECK(!base::ContainsKey(page_resource_data_use_, resource_id));
auto resource_it = page_resource_data_use_.emplace( auto resource_it = page_resource_data_use_.emplace(
std::piecewise_construct, std::forward_as_tuple(resource_id), std::piecewise_construct, std::forward_as_tuple(resource_id),
std::forward_as_tuple(std::make_unique<PageResourceDataUse>())); std::forward_as_tuple(std::make_unique<PageResourceDataUse>()));
resource_it.first->second->DidStartResponse(response_url, resource_id, resource_it.first->second->DidStartResponse(response_url, resource_id,
response_head, resource_type); response_head);
} }
void PageTimingMetricsSender::DidReceiveTransferSizeUpdate( void PageTimingMetricsSender::DidReceiveTransferSizeUpdate(
......
...@@ -49,8 +49,7 @@ class PageTimingMetricsSender { ...@@ -49,8 +49,7 @@ class PageTimingMetricsSender {
void DidObserveLayoutJank(double jank_fraction); void DidObserveLayoutJank(double jank_fraction);
void DidStartResponse(const GURL& response_url, void DidStartResponse(const GURL& response_url,
int resource_id, int resource_id,
const network::ResourceResponseHead& response_head, const network::ResourceResponseHead& response_head);
content::ResourceType resource_type);
void DidReceiveTransferSizeUpdate(int resource_id, int received_data_length); void DidReceiveTransferSizeUpdate(int resource_id, int received_data_length);
void DidCompleteResponse(int resource_id, void DidCompleteResponse(int resource_id,
const network::URLLoaderCompletionStatus& status); const network::URLLoaderCompletionStatus& status);
......
<html>
<iframe id="blank_frame" name="google_ads_iframe"></iframe>
<script>
let iframe = document.getElementById("blank_frame");
let doc = iframe.contentWindow.document;
doc.open();
doc.write("<html>Rewritten. <img src=pixel.png> <img src=pixel2.png> <img src=pixel3.png></html>");
doc.close();
</script>
</html>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment