| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/page_load_metrics/observers/ads_page_load_metrics_obser
ver.h" | 5 #include "chrome/browser/page_load_metrics/observers/ads_page_load_metrics_obser
ver.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/feature_list.h" | 10 #include "base/feature_list.h" |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 } | 78 } |
| 79 | 79 |
| 80 AdsPageLoadMetricsObserver::AdsPageLoadMetricsObserver() = default; | 80 AdsPageLoadMetricsObserver::AdsPageLoadMetricsObserver() = default; |
| 81 AdsPageLoadMetricsObserver::~AdsPageLoadMetricsObserver() = default; | 81 AdsPageLoadMetricsObserver::~AdsPageLoadMetricsObserver() = default; |
| 82 | 82 |
| 83 page_load_metrics::PageLoadMetricsObserver::ObservePolicy | 83 page_load_metrics::PageLoadMetricsObserver::ObservePolicy |
| 84 AdsPageLoadMetricsObserver::OnCommit( | 84 AdsPageLoadMetricsObserver::OnCommit( |
| 85 content::NavigationHandle* navigation_handle) { | 85 content::NavigationHandle* navigation_handle) { |
| 86 DCHECK(ad_frames_data_.empty()); | 86 DCHECK(ad_frames_data_.empty()); |
| 87 | 87 |
| 88 committed_ = true; |
| 89 |
| 88 // The main frame is never considered an ad. | 90 // The main frame is never considered an ad. |
| 89 ad_frames_data_[navigation_handle->GetFrameTreeNodeId()] = nullptr; | 91 ad_frames_data_[navigation_handle->GetFrameTreeNodeId()] = nullptr; |
| 90 ProcessOngoingNavigationResource(navigation_handle->GetFrameTreeNodeId()); | 92 ProcessOngoingNavigationResource(navigation_handle->GetFrameTreeNodeId()); |
| 91 return CONTINUE_OBSERVING; | 93 return CONTINUE_OBSERVING; |
| 92 } | 94 } |
| 93 | 95 |
| 94 page_load_metrics::PageLoadMetricsObserver::ObservePolicy | 96 page_load_metrics::PageLoadMetricsObserver::ObservePolicy |
| 95 AdsPageLoadMetricsObserver::OnDidFinishSubFrameNavigation( | 97 AdsPageLoadMetricsObserver::OnDidFinishSubFrameNavigation( |
| 96 content::NavigationHandle* navigation_handle) { | 98 content::NavigationHandle* navigation_handle) { |
| 97 // Determine if the frame is part of an existing ad, the root of a new ad, | 99 // Determine if the frame is part of an existing ad, the root of a new ad, |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 extra_request_info.was_cached, extra_request_info.raw_body_bytes, | 201 extra_request_info.was_cached, extra_request_info.raw_body_bytes, |
| 200 extra_request_info.original_network_content_length, nullptr, | 202 extra_request_info.original_network_content_length, nullptr, |
| 201 extra_request_info.resource_type)); | 203 extra_request_info.resource_type)); |
| 202 } else { | 204 } else { |
| 203 // This is unexpected, it could be: | 205 // This is unexpected, it could be: |
| 204 // 1. a resource from a previous navigation that started its resource | 206 // 1. a resource from a previous navigation that started its resource |
| 205 // load after this page started navigation. | 207 // load after this page started navigation. |
| 206 // 2. possibly a resource from a document.written frame whose frame | 208 // 2. possibly a resource from a document.written frame whose frame |
| 207 // failure message has yet to arrive. (uncertain of this) | 209 // failure message has yet to arrive. (uncertain of this) |
| 208 } | 210 } |
| 209 UMA_HISTOGRAM_ENUMERATION( | 211 if (committed_) { |
| 210 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound", | 212 UMA_HISTOGRAM_ENUMERATION( |
| 211 extra_request_info.resource_type, content::RESOURCE_TYPE_LAST_TYPE); | 213 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound", |
| 214 extra_request_info.resource_type, content::RESOURCE_TYPE_LAST_TYPE); |
| 215 } |
| 212 | 216 |
| 213 return; | 217 return; |
| 214 } | 218 } |
| 215 | 219 |
| 216 page_bytes_ += extra_request_info.raw_body_bytes; | 220 page_bytes_ += extra_request_info.raw_body_bytes; |
| 217 if (!extra_request_info.was_cached) | 221 if (!extra_request_info.was_cached) |
| 218 uncached_page_bytes_ += extra_request_info.raw_body_bytes; | 222 uncached_page_bytes_ += extra_request_info.raw_body_bytes; |
| 219 | 223 |
| 220 // Determine if the frame (or its ancestor) is an ad, if so attribute the | 224 // Determine if the frame (or its ancestor) is an ad, if so attribute the |
| 221 // bytes to the highest ad ancestor. | 225 // bytes to the highest ad ancestor. |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 void AdsPageLoadMetricsObserver::ProcessOngoingNavigationResource( | 304 void AdsPageLoadMetricsObserver::ProcessOngoingNavigationResource( |
| 301 FrameTreeNodeId frame_tree_node_id) { | 305 FrameTreeNodeId frame_tree_node_id) { |
| 302 const auto& frame_id_and_request = | 306 const auto& frame_id_and_request = |
| 303 ongoing_navigation_resources_.find(frame_tree_node_id); | 307 ongoing_navigation_resources_.find(frame_tree_node_id); |
| 304 if (frame_id_and_request == ongoing_navigation_resources_.end()) | 308 if (frame_id_and_request == ongoing_navigation_resources_.end()) |
| 305 return; | 309 return; |
| 306 | 310 |
| 307 ProcessLoadedResource(frame_id_and_request->second); | 311 ProcessLoadedResource(frame_id_and_request->second); |
| 308 ongoing_navigation_resources_.erase(frame_id_and_request); | 312 ongoing_navigation_resources_.erase(frame_id_and_request); |
| 309 } | 313 } |
| OLD | NEW |