| Index: Source/core/loader/WorkerThreadableLoader.cpp
|
| diff --git a/Source/core/loader/WorkerThreadableLoader.cpp b/Source/core/loader/WorkerThreadableLoader.cpp
|
| index 0a0adf40966c9665a8bfd7f3c087e2faec6f1f2c..c262e56cd8bb81dac18e5713d2f17ada02218efb 100644
|
| --- a/Source/core/loader/WorkerThreadableLoader.cpp
|
| +++ b/Source/core/loader/WorkerThreadableLoader.cpp
|
| @@ -36,6 +36,7 @@
|
| #include "core/dom/Document.h"
|
| #include "core/loader/DocumentThreadableLoader.h"
|
| #include "core/loader/WorkerLoaderClientBridgeSyncHelper.h"
|
| +#include "core/timing/WorkerGlobalScopePerformance.h"
|
| #include "core/workers/WorkerGlobalScope.h"
|
| #include "core/workers/WorkerLoaderProxy.h"
|
| #include "core/workers/WorkerThread.h"
|
| @@ -57,10 +58,12 @@ WorkerThreadableLoader::WorkerThreadableLoader(WorkerGlobalScope& workerGlobalSc
|
| , m_workerClientWrapper(clientWrapper)
|
| , m_bridge(*(new MainThreadBridge(m_workerClientWrapper, clientBridge, workerGlobalScope.thread()->workerLoaderProxy(), request, options, resourceLoaderOptions, workerGlobalScope.referrerPolicy(), workerGlobalScope.url().strippedForUseAsReferrer())))
|
| {
|
| + m_workerClientWrapper->setResourceTimingClient(this);
|
| }
|
|
|
| WorkerThreadableLoader::~WorkerThreadableLoader()
|
| {
|
| + m_workerClientWrapper->clearResourceTimingClient();
|
| m_bridge.destroy();
|
| }
|
|
|
| @@ -76,7 +79,7 @@ void WorkerThreadableLoader::loadResourceSynchronously(WorkerGlobalScope& worker
|
| events.append(loaderDone.get());
|
|
|
| RefPtr<ThreadableLoaderClientWrapper> clientWrapper(ThreadableLoaderClientWrapper::create(&client));
|
| - OwnPtr<WorkerLoaderClientBridgeSyncHelper> clientBridge(WorkerLoaderClientBridgeSyncHelper::create(client, loaderDone.release()));
|
| + OwnPtr<WorkerLoaderClientBridgeSyncHelper> clientBridge(WorkerLoaderClientBridgeSyncHelper::create(clientWrapper.get(), loaderDone.release()));
|
|
|
| // This must be valid while loader is around.
|
| WorkerLoaderClientBridgeSyncHelper* clientBridgePtr = clientBridge.get();
|
| @@ -106,6 +109,11 @@ void WorkerThreadableLoader::cancel()
|
| m_bridge.cancel();
|
| }
|
|
|
| +void WorkerThreadableLoader::reportResourceTiming(const ResourceTimingInfo& info)
|
| +{
|
| + WorkerGlobalScopePerformance::performance(*m_workerGlobalScope)->addResourceTiming(info);
|
| +}
|
| +
|
| WorkerThreadableLoader::MainThreadBridge::MainThreadBridge(
|
| PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper,
|
| PassOwnPtr<ThreadableLoaderClient> clientBridge,
|
| @@ -254,4 +262,9 @@ void WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck()
|
| m_clientBridge->didFailRedirectCheck();
|
| }
|
|
|
| +void WorkerThreadableLoader::MainThreadBridge::reportResourceTiming(const ResourceTimingInfo& info)
|
| +{
|
| + m_clientBridge->reportResourceTiming(info);
|
| +}
|
| +
|
| } // namespace blink
|
|
|