Record service worker's script sizes for script streaming
ServiceWorkerInstalledScriptsManager starts to record following two metrics by
this patch:
- ServiceWorker.ScriptSize
- ServiceWorker.ScriptCachedMetadataSize
Bug: 683037
Change-Id: I2a941ae97e62a4c198dccc4a9ac0e769251ddf94
Reviewed-on: https://chromium-review.googlesource.com/609621
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Cr-Commit-Position: refs/heads/master@{#494017}diff --git a/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp b/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp
index b1f679e0d..50bc156 100644
--- a/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp
+++ b/third_party/WebKit/Source/modules/exported/WebEmbeddedWorkerImpl.cpp
@@ -53,7 +53,6 @@
#include "modules/serviceworkers/ServiceWorkerGlobalScopeProxy.h"
#include "modules/serviceworkers/ServiceWorkerInstalledScriptsManager.h"
#include "modules/serviceworkers/ServiceWorkerThread.h"
-#include "platform/Histogram.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/SharedBuffer.h"
#include "platform/heap/Handle.h"
@@ -340,17 +339,6 @@
}
worker_context_client_->WorkerScriptLoaded();
- DEFINE_STATIC_LOCAL(CustomCountHistogram, script_size_histogram,
- ("ServiceWorker.ScriptSize", 1000, 5000000, 50));
- script_size_histogram.Count(main_script_loader_->SourceText().length());
- if (main_script_loader_->CachedMetadata()) {
- DEFINE_STATIC_LOCAL(
- CustomCountHistogram, script_cached_metadata_size_histogram,
- ("ServiceWorker.ScriptCachedMetadataSize", 1000, 50000000, 50));
- script_cached_metadata_size_histogram.Count(
- main_script_loader_->CachedMetadata()->size());
- }
-
if (pause_after_download_state_ == kDoPauseAfterDownload) {
pause_after_download_state_ = kIsPausedAfterDownload;
return;
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp
index 008caf37..3cad3ec 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.cpp
@@ -120,8 +120,31 @@
ServiceWorkerGlobalScope::~ServiceWorkerGlobalScope() {}
-void ServiceWorkerGlobalScope::CountScript(size_t script_size,
- size_t cached_metadata_size) {
+void ServiceWorkerGlobalScope::CountWorkerScript(size_t script_size,
+ size_t cached_metadata_size) {
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(
+ CustomCountHistogram, script_size_histogram,
+ ("ServiceWorker.ScriptSize", 1000, 5000000, 50));
+ script_size_histogram.Count(script_size);
+
+ if (cached_metadata_size) {
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(
+ CustomCountHistogram, script_cached_metadata_size_histogram,
+ ("ServiceWorker.ScriptCachedMetadataSize", 1000, 50000000, 50));
+ script_cached_metadata_size_histogram.Count(cached_metadata_size);
+ }
+
+ RecordScriptSize(script_size, cached_metadata_size);
+}
+
+void ServiceWorkerGlobalScope::CountImportedScript(
+ size_t script_size,
+ size_t cached_metadata_size) {
+ RecordScriptSize(script_size, cached_metadata_size);
+}
+
+void ServiceWorkerGlobalScope::RecordScriptSize(size_t script_size,
+ size_t cached_metadata_size) {
++script_count_;
script_total_size_ += script_size;
script_cached_metadata_total_size_ += cached_metadata_size;
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.h b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.h
index 5d17247b..3fb1cd8 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.h
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScope.h
@@ -65,9 +65,12 @@
~ServiceWorkerGlobalScope() override;
bool IsServiceWorkerGlobalScope() const override { return true; }
- // Counts an evaluated script and its size. Called for each of the main
- // worker script and imported scripts.
- void CountScript(size_t script_size, size_t cached_metadata_size);
+ // Counts an evaluated script and its size. Called for the main worker script.
+ void CountWorkerScript(size_t script_size, size_t cached_metadata_size);
+
+ // Counts an evaluated script and its size. Called for each of imported
+ // scripts.
+ void CountImportedScript(size_t script_size, size_t cached_metadata_size);
// Called when the main worker script is evaluated.
void DidEvaluateWorkerScript();
@@ -123,6 +126,10 @@
const Vector<char>* meta_data) override;
void ExceptionThrown(ErrorEvent*) override;
+ // Records the |script_size| and |cached_metadata_size| for UMA to measure the
+ // number of scripts and the total bytes of scripts.
+ void RecordScriptSize(size_t script_size, size_t cached_metadata_size);
+
Member<ServiceWorkerClients> clients_;
Member<ServiceWorkerRegistration> registration_;
bool did_evaluate_script_;
diff --git a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp
index b789dc2..4cb7aac 100644
--- a/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp
+++ b/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerGlobalScopeProxy.cpp
@@ -628,14 +628,14 @@
size_t script_size,
size_t cached_metadata_size) {
DCHECK(WorkerGlobalScope()->IsContextThread());
- WorkerGlobalScope()->CountScript(script_size, cached_metadata_size);
+ worker_global_scope_->CountWorkerScript(script_size, cached_metadata_size);
}
void ServiceWorkerGlobalScopeProxy::WillEvaluateImportedScript(
size_t script_size,
size_t cached_metadata_size) {
DCHECK(WorkerGlobalScope()->IsContextThread());
- WorkerGlobalScope()->CountScript(script_size, cached_metadata_size);
+ worker_global_scope_->CountImportedScript(script_size, cached_metadata_size);
}
void ServiceWorkerGlobalScopeProxy::DidEvaluateWorkerScript(bool success) {