Commit 64d63fed authored by Alexander Timin's avatar Alexander Timin Committed by Commit Bot

[bfcache] Track service worker-controlled pages in metrics

Track pages controlled by service workers.

R=haraken@chromium.org,kinuko@chromium.org
CC=falken@chromium.org
BUG=933147

Change-Id: I27c2665bf6c484df7748a97ea5260c7407bbae90
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1571693
Commit-Queue: Alexander Timin <altimin@chromium.org>
Auto-Submit: Alexander Timin <altimin@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652522}
parent 31082d0f
...@@ -31,8 +31,11 @@ enum class WebSchedulerTrackedFeature { ...@@ -31,8 +31,11 @@ enum class WebSchedulerTrackedFeature {
kDocumentLoaded = 13, kDocumentLoaded = 13,
kDedicatedWorkerOrWorklet = 14, kDedicatedWorkerOrWorklet = 14,
kOutstandingNetworkRequest = 15, kOutstandingNetworkRequest = 15,
// TODO(altimin): This doesn't include service worker-controlled origins.
// We need to track them too.
kServiceWorkerControlledPage = 16,
kCount = 16 kMaxValue = kServiceWorkerControlledPage
}; };
} // namespace scheduler } // namespace scheduler
......
...@@ -476,6 +476,9 @@ void ServiceWorkerContainer::SetController( ...@@ -476,6 +476,9 @@ void ServiceWorkerContainer::SetController(
if (controller_) { if (controller_) {
UseCounter::Count(GetExecutionContext(), UseCounter::Count(GetExecutionContext(),
WebFeature::kServiceWorkerControlledPage); WebFeature::kServiceWorkerControlledPage);
GetExecutionContext()->GetScheduler()->RegisterStickyFeature(
SchedulingPolicy::Feature::kServiceWorkerControlledPage,
{SchedulingPolicy::RecordMetricsForBackForwardCache()});
} }
if (should_notify_controller_change) if (should_notify_controller_change)
DispatchEvent(*Event::Create(event_type_names::kControllerchange)); DispatchEvent(*Event::Create(event_type_names::kControllerchange));
......
...@@ -27,10 +27,8 @@ bool SchedulingPolicy::IsFeatureSticky(SchedulingPolicy::Feature feature) { ...@@ -27,10 +27,8 @@ bool SchedulingPolicy::IsFeatureSticky(SchedulingPolicy::Feature feature) {
case Feature::kResumeEventListener: case Feature::kResumeEventListener:
case Feature::kContainsPlugins: case Feature::kContainsPlugins:
case Feature::kDocumentLoaded: case Feature::kDocumentLoaded:
case Feature::kServiceWorkerControlledPage:
return true; return true;
case Feature::kCount:
NOTREACHED();
return false;
} }
} }
......
...@@ -1083,7 +1083,7 @@ uint64_t ...@@ -1083,7 +1083,7 @@ uint64_t
FrameSchedulerImpl::GetActiveFeaturesTrackedForBackForwardCacheMetricsMask() FrameSchedulerImpl::GetActiveFeaturesTrackedForBackForwardCacheMetricsMask()
const { const {
auto result = back_forward_cache_opt_outs_.to_ullong(); auto result = back_forward_cache_opt_outs_.to_ullong();
static_assert(static_cast<size_t>(SchedulingPolicy::Feature::kCount) <= static_assert(static_cast<size_t>(SchedulingPolicy::Feature::kMaxValue) <
sizeof(result) * 8, sizeof(result) * 8,
"Number of the features should allow a bitmask to fit into " "Number of the features should allow a bitmask to fit into "
"64-bit integer"); "64-bit integer");
......
...@@ -317,7 +317,7 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler, ...@@ -317,7 +317,7 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler,
size_t subresource_loading_pause_count_; size_t subresource_loading_pause_count_;
base::flat_map<SchedulingPolicy::Feature, int> base::flat_map<SchedulingPolicy::Feature, int>
back_forward_cache_opt_out_counts_; back_forward_cache_opt_out_counts_;
std::bitset<static_cast<size_t>(SchedulingPolicy::Feature::kCount)> std::bitset<static_cast<size_t>(SchedulingPolicy::Feature::kMaxValue) + 1>
back_forward_cache_opt_outs_; back_forward_cache_opt_outs_;
TraceableState<bool, TracingCategoryName::kInfo> TraceableState<bool, TracingCategoryName::kInfo>
opted_out_from_back_forward_cache_; opted_out_from_back_forward_cache_;
......
...@@ -76,7 +76,7 @@ class PLATFORM_EXPORT FrameOrWorkerScheduler { ...@@ -76,7 +76,7 @@ class PLATFORM_EXPORT FrameOrWorkerScheduler {
SchedulingPolicy policy, SchedulingPolicy policy,
base::WeakPtr<FrameOrWorkerScheduler>); base::WeakPtr<FrameOrWorkerScheduler>);
SchedulingPolicy::Feature feature_ = SchedulingPolicy::Feature::kCount; SchedulingPolicy::Feature feature_ = SchedulingPolicy::Feature::kMaxValue;
SchedulingPolicy policy_; SchedulingPolicy policy_;
base::WeakPtr<FrameOrWorkerScheduler> scheduler_; base::WeakPtr<FrameOrWorkerScheduler> scheduler_;
......
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