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 {
kDocumentLoaded = 13,
kDedicatedWorkerOrWorklet = 14,
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
......
......@@ -476,6 +476,9 @@ void ServiceWorkerContainer::SetController(
if (controller_) {
UseCounter::Count(GetExecutionContext(),
WebFeature::kServiceWorkerControlledPage);
GetExecutionContext()->GetScheduler()->RegisterStickyFeature(
SchedulingPolicy::Feature::kServiceWorkerControlledPage,
{SchedulingPolicy::RecordMetricsForBackForwardCache()});
}
if (should_notify_controller_change)
DispatchEvent(*Event::Create(event_type_names::kControllerchange));
......
......@@ -27,10 +27,8 @@ bool SchedulingPolicy::IsFeatureSticky(SchedulingPolicy::Feature feature) {
case Feature::kResumeEventListener:
case Feature::kContainsPlugins:
case Feature::kDocumentLoaded:
case Feature::kServiceWorkerControlledPage:
return true;
case Feature::kCount:
NOTREACHED();
return false;
}
}
......
......@@ -1083,7 +1083,7 @@ uint64_t
FrameSchedulerImpl::GetActiveFeaturesTrackedForBackForwardCacheMetricsMask()
const {
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,
"Number of the features should allow a bitmask to fit into "
"64-bit integer");
......
......@@ -317,7 +317,7 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler,
size_t subresource_loading_pause_count_;
base::flat_map<SchedulingPolicy::Feature, int>
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_;
TraceableState<bool, TracingCategoryName::kInfo>
opted_out_from_back_forward_cache_;
......
......@@ -76,7 +76,7 @@ class PLATFORM_EXPORT FrameOrWorkerScheduler {
SchedulingPolicy policy,
base::WeakPtr<FrameOrWorkerScheduler>);
SchedulingPolicy::Feature feature_ = SchedulingPolicy::Feature::kCount;
SchedulingPolicy::Feature feature_ = SchedulingPolicy::Feature::kMaxValue;
SchedulingPolicy policy_;
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