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

Unified Diff: third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp

Issue 2654663004: [Not for review] record detailed time breakdown of SW related requests.
Patch Set: add stream uma Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
diff --git a/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp b/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
index 70d417fbcc337f9098f74069ad38ca12dcd349ec..893dd66f199318482ce93e164bca1bea60140407 100644
--- a/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
@@ -30,6 +30,7 @@
#include "core/loader/WorkerThreadableLoader.h"
+#include <memory>
#include "core/dom/Document.h"
#include "core/dom/ExecutionContextTask.h"
#include "core/loader/DocumentThreadableLoader.h"
@@ -37,6 +38,7 @@
#include "core/workers/WorkerGlobalScope.h"
#include "core/workers/WorkerLoaderProxy.h"
#include "platform/CrossThreadFunctional.h"
+#include "platform/Histogram.h"
#include "platform/heap/SafePoint.h"
#include "platform/network/ResourceError.h"
#include "platform/network/ResourceRequest.h"
@@ -44,9 +46,9 @@
#include "platform/network/ResourceTimingInfo.h"
#include "platform/weborigin/KURL.h"
#include "platform/weborigin/SecurityPolicy.h"
+#include "wtf/CurrentTime.h"
#include "wtf/Functional.h"
#include "wtf/debug/Alias.h"
-#include <memory>
namespace blink {
@@ -201,7 +203,8 @@ WorkerThreadableLoader::WorkerThreadableLoader(
m_client(client),
m_threadableLoaderOptions(options),
m_resourceLoaderOptions(resourceLoaderOptions),
- m_blockingBehavior(blockingBehavior) {
+ m_blockingBehavior(blockingBehavior),
+ m_isServiceWorker(workerGlobalScope.isServiceWorkerGlobalScope()) {
DCHECK(client);
}
@@ -242,7 +245,7 @@ void WorkerThreadableLoader::start(const ResourceRequest& originalRequest) {
wrapCrossThreadPersistent(
m_workerGlobalScope->thread()->getWorkerThreadLifecycleContext()),
request, m_threadableLoaderOptions, m_resourceLoaderOptions,
- eventWithTasks));
+ eventWithTasks, monotonicallyIncreasingTime(), m_isServiceWorker));
if (m_blockingBehavior == LoadAsynchronously)
return;
@@ -334,7 +337,15 @@ void WorkerThreadableLoader::didReceiveRedirectTo(const KURL& url) {
void WorkerThreadableLoader::didReceiveResponse(
unsigned long identifier,
std::unique_ptr<CrossThreadResourceResponseData> responseData,
- std::unique_ptr<WebDataConsumerHandle> handle) {
+ std::unique_ptr<WebDataConsumerHandle> handle,
+ double postTaskTime) {
+ int value =
+ static_cast<int>((monotonicallyIncreasingTime() - postTaskTime) * 1000);
+ DEFINE_STATIC_LOCAL(
+ CustomCountHistogram, hist,
+ ("SWF.C2.Response.RendererMainToWorker", 0, 10000000, 50));
+ if (m_isServiceWorker)
+ hist.count(value);
DCHECK(!isMainThread());
if (!m_client)
return;
@@ -433,7 +444,16 @@ void WorkerThreadableLoader::MainThreadLoaderHolder::createAndStart(
const ThreadableLoaderOptions& options,
const ResourceLoaderOptions& resourceLoaderOptions,
PassRefPtr<WaitableEventWithTasks> eventWithTasks,
+ double postTaskTime,
+ bool isServiceWorker,
ExecutionContext* executionContext) {
+ int value =
+ static_cast<int>((monotonicallyIncreasingTime() - postTaskTime) * 1000);
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, hist,
+ ("SWF.B1.Request.WorkerToRendererMain", 0, 10000000, 50));
+ if (isServiceWorker)
+ hist.count(value);
+
DCHECK(isMainThread());
TaskForwarder* forwarder;
RefPtr<WorkerLoaderProxy> loaderProxy = passLoaderProxy;
@@ -444,6 +464,7 @@ void WorkerThreadableLoader::MainThreadLoaderHolder::createAndStart(
MainThreadLoaderHolder* mainThreadLoaderHolder =
new MainThreadLoaderHolder(forwarder, workerThreadLifecycleContext);
+ mainThreadLoaderHolder->m_isServiceWorker = isServiceWorker;
if (mainThreadLoaderHolder->wasContextDestroyedBeforeObserverCreation()) {
// The thread is already terminating.
forwarder->abort();
@@ -515,6 +536,14 @@ void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveResponse(
const ResourceResponse& response,
std::unique_ptr<WebDataConsumerHandle> handle) {
DCHECK(isMainThread());
+ double now(monotonicallyIncreasingTime());
+ int value = static_cast<int>((now * 1000 - response.responseStart() / 1000));
+ DEFINE_STATIC_LOCAL(
+ CustomCountHistogram, hist,
+ ("SWF.C1.Response.BrowserToRendererMain", 0, 10000000, 50));
+ if (m_isServiceWorker)
+ hist.count(value);
+
CrossThreadPersistent<WorkerThreadableLoader> workerLoader =
m_workerLoader.get();
if (!workerLoader || !m_forwarder)
@@ -522,7 +551,8 @@ void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveResponse(
m_forwarder->forwardTask(
BLINK_FROM_HERE,
crossThreadBind(&WorkerThreadableLoader::didReceiveResponse, workerLoader,
- identifier, response, WTF::passed(std::move(handle))));
+ identifier, response, WTF::passed(std::move(handle)),
+ now));
}
void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveData(

Powered by Google App Engine
This is Rietveld 408576698