Index: third_party/WebKit/Source/core/loader/ThreadableLoaderClientWrapper.h |
diff --git a/third_party/WebKit/Source/core/loader/ThreadableLoaderClientWrapper.h b/third_party/WebKit/Source/core/loader/ThreadableLoaderClientWrapper.h |
index e70a1d6dfac8767138062fe4877e76bb163343b0..aee4ccbab5ff8b62d9ef279099e6a7d6db5c963a 100644 |
--- a/third_party/WebKit/Source/core/loader/ThreadableLoaderClientWrapper.h |
+++ b/third_party/WebKit/Source/core/loader/ThreadableLoaderClientWrapper.h |
@@ -32,50 +32,32 @@ |
#define ThreadableLoaderClientWrapper_h |
#include "core/loader/ThreadableLoaderClient.h" |
+#include "core/timing/WorkerGlobalScopePerformance.h" |
+#include "core/workers/WorkerGlobalScope.h" |
+#include "platform/heap/Handle.h" |
#include "platform/network/ResourceResponse.h" |
#include "platform/network/ResourceTimingInfo.h" |
-#include "wtf/Noncopyable.h" |
-#include "wtf/PassRefPtr.h" |
-#include "wtf/ThreadSafeRefCounted.h" |
#include "wtf/Threading.h" |
#include "wtf/Vector.h" |
#include <memory> |
namespace blink { |
-class ThreadableLoaderClientWrapper : public ThreadSafeRefCounted<ThreadableLoaderClientWrapper> { |
+class ThreadableLoaderClientWrapper final : public GarbageCollected<ThreadableLoaderClientWrapper> { |
public: |
- class ResourceTimingClient { |
- public: |
- virtual void didReceiveResourceTiming(const ResourceTimingInfo&) = 0; |
- }; |
- |
- static PassRefPtr<ThreadableLoaderClientWrapper> create(ThreadableLoaderClient* client) |
+ ThreadableLoaderClientWrapper(WorkerGlobalScope& workerGlobalScope, ThreadableLoaderClient* client) |
+ : m_workerGlobalScope(workerGlobalScope) |
+ , m_client(client) |
{ |
- return adoptRef(new ThreadableLoaderClientWrapper(client)); |
} |
void clearClient() |
{ |
m_done = true; |
- m_client = 0; |
- clearResourceTimingClient(); |
- } |
- |
- bool done() const |
- { |
- return m_done; |
- } |
- |
- void setResourceTimingClient(ResourceTimingClient* client) |
- { |
- m_resourceTimingClient = client; |
+ m_client = nullptr; |
} |
- void clearResourceTimingClient() |
- { |
- m_resourceTimingClient = nullptr; |
- } |
+ bool done() const { return m_done; } |
void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) |
{ |
@@ -142,22 +124,21 @@ public: |
void didReceiveResourceTiming(std::unique_ptr<CrossThreadResourceTimingInfoData> timingData) |
{ |
std::unique_ptr<ResourceTimingInfo> info(ResourceTimingInfo::adopt(std::move(timingData))); |
- |
- if (m_resourceTimingClient) |
- m_resourceTimingClient->didReceiveResourceTiming(*info); |
+ if (m_client) { |
+ WorkerGlobalScopePerformance::performance(*m_workerGlobalScope)->addResourceTiming(*info); |
+ m_client->didReceiveResourceTiming(*info); |
+ } |
} |
-protected: |
- explicit ThreadableLoaderClientWrapper(ThreadableLoaderClient* client) |
- : m_client(client) |
- , m_resourceTimingClient(nullptr) |
- , m_done(false) |
+ DEFINE_INLINE_TRACE() |
{ |
+ visitor->trace(m_workerGlobalScope); |
} |
- ThreadableLoaderClient* m_client; |
- ResourceTimingClient* m_resourceTimingClient; |
- bool m_done; |
+private: |
+ Member<WorkerGlobalScope> m_workerGlobalScope; |
+ ThreadableLoaderClient* m_client = nullptr; |
haraken
2016/07/14 08:33:17
Is it guaranteed that clearClient() is explicitly
yhirano
2016/07/14 08:55:41
This class is inistantiated only in WorkerThreadab
|
+ bool m_done = false; |
}; |
} // namespace blink |