Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: components/subresource_filter/content/browser/activation_state_computing_navigation_throttle.cc

Issue 2861053004: [subresource_filter] Add metrics for all NavigationThrottle delays (Closed)
Patch Set: shivanisha review Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "components/subresource_filter/content/browser/activation_state_computi ng_navigation_throttle.h" 5 #include "components/subresource_filter/content/browser/activation_state_computi ng_navigation_throttle.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/metrics/histogram_macros.h"
12 #include "components/subresource_filter/content/browser/async_document_subresour ce_filter.h" 13 #include "components/subresource_filter/content/browser/async_document_subresour ce_filter.h"
13 #include "content/public/browser/navigation_handle.h" 14 #include "content/public/browser/navigation_handle.h"
14 #include "content/public/browser/render_frame_host.h" 15 #include "content/public/browser/render_frame_host.h"
15 #include "content/public/browser/web_contents.h" 16 #include "content/public/browser/web_contents.h"
16 17
17 namespace subresource_filter { 18 namespace subresource_filter {
18 19
19 // static 20 // static
20 std::unique_ptr<ActivationStateComputingNavigationThrottle> 21 std::unique_ptr<ActivationStateComputingNavigationThrottle>
21 ActivationStateComputingNavigationThrottle::CreateForMainFrame( 22 ActivationStateComputingNavigationThrottle::CreateForMainFrame(
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 content::RenderFrameHost* parent = navigation_handle()->GetParentFrame(); 86 content::RenderFrameHost* parent = navigation_handle()->GetParentFrame();
86 DCHECK(parent); 87 DCHECK(parent);
87 params.parent_document_origin = parent->GetLastCommittedOrigin(); 88 params.parent_document_origin = parent->GetLastCommittedOrigin();
88 } 89 }
89 90
90 async_filter_ = base::MakeUnique<AsyncDocumentSubresourceFilter>( 91 async_filter_ = base::MakeUnique<AsyncDocumentSubresourceFilter>(
91 ruleset_handle_, std::move(params), 92 ruleset_handle_, std::move(params),
92 base::Bind(&ActivationStateComputingNavigationThrottle:: 93 base::Bind(&ActivationStateComputingNavigationThrottle::
93 OnActivationStateComputed, 94 OnActivationStateComputed,
94 weak_ptr_factory_.GetWeakPtr())); 95 weak_ptr_factory_.GetWeakPtr()));
96
97 defer_timestamp_ = base::TimeTicks::Now();
95 return content::NavigationThrottle::ThrottleCheckResult::DEFER; 98 return content::NavigationThrottle::ThrottleCheckResult::DEFER;
96 } 99 }
97 100
98 const char* ActivationStateComputingNavigationThrottle::GetNameForLogging() { 101 const char* ActivationStateComputingNavigationThrottle::GetNameForLogging() {
99 return "ActivationStateComputingNavigationThrottle"; 102 return "ActivationStateComputingNavigationThrottle";
100 } 103 }
101 104
102 void ActivationStateComputingNavigationThrottle::OnActivationStateComputed( 105 void ActivationStateComputingNavigationThrottle::OnActivationStateComputed(
103 ActivationState state) { 106 ActivationState state) {
107 DCHECK(!defer_timestamp_.is_null());
108 base::TimeDelta delay = base::TimeTicks::Now() - defer_timestamp_;
109 UMA_HISTOGRAM_TIMES("SubresourceFilter.DocumentLoad.ActivationComputingDelay",
pkalinnikov 2017/05/08 12:00:05 Do you expect it to be mostly >= 1 ms? We also ha
Charlie Harrison 2017/05/08 12:53:33 Yeah we can us microseconds for these metrics (may
110 delay);
111 if (navigation_handle()->IsInMainFrame()) {
112 UMA_HISTOGRAM_TIMES(
113 "SubresourceFilter.DocumentLoad.ActivationComputingDelay.MainFrame",
114 delay);
115 }
104 navigation_handle()->Resume(); 116 navigation_handle()->Resume();
105 } 117 }
106 118
107 // Ensure the caller cannot take ownership of a subresource filter for cases 119 // Ensure the caller cannot take ownership of a subresource filter for cases
108 // when activation IPCs are not sent to the render process. 120 // when activation IPCs are not sent to the render process.
109 std::unique_ptr<AsyncDocumentSubresourceFilter> 121 std::unique_ptr<AsyncDocumentSubresourceFilter>
110 ActivationStateComputingNavigationThrottle::ReleaseFilter() { 122 ActivationStateComputingNavigationThrottle::ReleaseFilter() {
111 return will_send_activation_to_renderer_ ? std::move(async_filter_) : nullptr; 123 return will_send_activation_to_renderer_ ? std::move(async_filter_) : nullptr;
112 } 124 }
113 125
114 void ActivationStateComputingNavigationThrottle:: 126 void ActivationStateComputingNavigationThrottle::
115 WillSendActivationToRenderer() { 127 WillSendActivationToRenderer() {
116 DCHECK(async_filter_); 128 DCHECK(async_filter_);
117 will_send_activation_to_renderer_ = true; 129 will_send_activation_to_renderer_ = true;
118 } 130 }
119 131
120 } // namespace subresource_filter 132 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698