Index: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc |
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc |
index e7b47a523771fc1aa624353330e4402bf89600ce..6ffd88d8da3afbbcfef66cd95b2f02d58e9fcadc 100644 |
--- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc |
+++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc |
@@ -5,6 +5,7 @@ |
#include "components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h" |
#include "base/metrics/histogram_macros.h" |
+#include "base/rand_util.h" |
#include "components/subresource_filter/content/browser/content_subresource_filter_driver.h" |
#include "components/subresource_filter/content/common/subresource_filter_messages.h" |
#include "components/subresource_filter/core/browser/subresource_filter_client.h" |
@@ -24,6 +25,10 @@ std::string DistillURLToHostAndPath(const GURL& url) { |
return url.host() + url.path(); |
} |
+bool ShouldMeasurePerformance(double rate) { |
+ return base::RandDouble() < rate; |
+} |
+ |
} // namespace |
// static |
@@ -54,7 +59,8 @@ ContentSubresourceFilterDriverFactory::ContentSubresourceFilterDriverFactory( |
std::unique_ptr<SubresourceFilterClient> client) |
: content::WebContentsObserver(web_contents), |
client_(std::move(client)), |
- activation_state_(ActivationState::DISABLED) { |
+ activation_state_(ActivationState::DISABLED), |
+ measure_performance_(false) { |
content::RenderFrameHost* main_frame_host = web_contents->GetMainFrame(); |
if (main_frame_host && main_frame_host->IsRenderFrameLive()) |
CreateDriverForFrameHostIfNeeded(main_frame_host); |
@@ -122,14 +128,10 @@ void ContentSubresourceFilterDriverFactory::ActivateForFrameHostIfNeeded( |
content::RenderFrameHost* render_frame_host, |
const GURL& url) { |
if (activation_state_ != ActivationState::DISABLED) { |
- // TODO(pkalinnikov): Introduce a variation parameter controlling how often |
- // the |measure_performance| bit is set. crbug/672519 |
- constexpr bool measure_performance = true; |
- |
auto* driver = DriverFromFrameHost(render_frame_host); |
DCHECK(driver); |
driver->ActivateForProvisionalLoad(GetMaximumActivationState(), url, |
- measure_performance); |
+ measure_performance_); |
} |
} |
@@ -209,6 +211,8 @@ void ContentSubresourceFilterDriverFactory::ReadyToCommitNavigationInternal( |
RecordRedirectChainMatchPattern(); |
if (ShouldActivateForMainFrameURL(url)) { |
activation_state_ = GetMaximumActivationState(); |
+ measure_performance_ = |
+ ShouldMeasurePerformance(GetCurrentPerfMeasurementRate()); |
ActivateForFrameHostIfNeeded(render_frame_host, url); |
} else { |
activation_state_ = ActivationState::DISABLED; |
engedy
2016/12/12 15:32:36
Same here, reset |measure_performance_|.
pkalinnikov
2016/12/12 18:47:29
Done.
|