| Index: Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp
|
| diff --git a/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp b/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp
|
| index de426754615a4d95196024cb3d1777c18de3191d..77dfafbb797dcf4d3740a9af73b9adec2666c6e3 100644
|
| --- a/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp
|
| +++ b/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp
|
| @@ -36,13 +36,14 @@
|
| #include "platform/ThreadSafeFunctional.h"
|
| #include "platform/network/ResourceError.h"
|
| #include "platform/network/ResourceResponse.h"
|
| +#include "platform/network/ResourceTimingInfo.h"
|
| #include "public/platform/WebWaitableEvent.h"
|
| #include "wtf/MainThread.h"
|
| #include "wtf/OwnPtr.h"
|
|
|
| namespace blink {
|
|
|
| -PassOwnPtr<WorkerLoaderClientBridgeSyncHelper> WorkerLoaderClientBridgeSyncHelper::create(ThreadableLoaderClient& client, PassOwnPtr<WebWaitableEvent> event)
|
| +PassOwnPtr<WorkerLoaderClientBridgeSyncHelper> WorkerLoaderClientBridgeSyncHelper::create(ThreadableLoaderClientWrapper* client, PassOwnPtr<WebWaitableEvent> event)
|
| {
|
| return adoptPtr(new WorkerLoaderClientBridgeSyncHelper(client, event));
|
| }
|
| @@ -68,10 +69,10 @@ void WorkerLoaderClientBridgeSyncHelper::didSendData(unsigned long long bytesSen
|
| {
|
| MutexLocker lock(m_lock);
|
| ASSERT(isMainThread());
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didSendData, AllowCrossThreadAccess(&m_client), bytesSent, totalBytesToBeSent));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didSendData, AllowCrossThreadAccess(m_client.get()), bytesSent, totalBytesToBeSent));
|
| }
|
|
|
| -static void didReceiveResponseAdapter(ThreadableLoaderClient* client, unsigned long identifier, PassOwnPtr<CrossThreadResourceResponseData> responseData, PassOwnPtr<WebDataConsumerHandle> handle)
|
| +static void didReceiveResponseAdapter(ThreadableLoaderClientWrapper* client, unsigned long identifier, PassOwnPtr<CrossThreadResourceResponseData> responseData, PassOwnPtr<WebDataConsumerHandle> handle)
|
| {
|
| OwnPtr<ResourceResponse> response(ResourceResponse::adopt(responseData));
|
| client->didReceiveResponse(identifier, *response, handle);
|
| @@ -81,7 +82,7 @@ void WorkerLoaderClientBridgeSyncHelper::didReceiveResponse(unsigned long identi
|
| {
|
| MutexLocker lock(m_lock);
|
| ASSERT(isMainThread());
|
| - m_clientTasks.append(threadSafeBind(&didReceiveResponseAdapter, AllowCrossThreadAccess(&m_client), identifier, response, handle));
|
| + m_clientTasks.append(threadSafeBind(&didReceiveResponseAdapter, AllowCrossThreadAccess(m_client.get()), identifier, response, handle));
|
| }
|
|
|
| void WorkerLoaderClientBridgeSyncHelper::didReceiveData(const char* data, unsigned dataLength)
|
| @@ -91,14 +92,14 @@ void WorkerLoaderClientBridgeSyncHelper::didReceiveData(const char* data, unsign
|
| Vector<char>* buffer = new Vector<char>(dataLength);
|
| memcpy(buffer->data(), data, dataLength);
|
| m_receivedData.append(buffer);
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didReceiveData, AllowCrossThreadAccess(&m_client), AllowCrossThreadAccess(static_cast<const char*>(buffer->data())), dataLength));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didReceiveData, AllowCrossThreadAccess(m_client.get()), AllowCrossThreadAccess(static_cast<const char*>(buffer->data())), dataLength));
|
| }
|
|
|
| void WorkerLoaderClientBridgeSyncHelper::didDownloadData(int dataLength)
|
| {
|
| MutexLocker lock(m_lock);
|
| ASSERT(isMainThread());
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didDownloadData, AllowCrossThreadAccess(&m_client), dataLength));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didDownloadData, AllowCrossThreadAccess(m_client.get()), dataLength));
|
| }
|
|
|
| void WorkerLoaderClientBridgeSyncHelper::didReceiveCachedMetadata(const char* data, int dataLength)
|
| @@ -108,14 +109,14 @@ void WorkerLoaderClientBridgeSyncHelper::didReceiveCachedMetadata(const char* da
|
| Vector<char>* buffer = new Vector<char>(dataLength);
|
| memcpy(buffer->data(), data, dataLength);
|
| m_receivedData.append(buffer);
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didReceiveCachedMetadata, AllowCrossThreadAccess(&m_client), AllowCrossThreadAccess(static_cast<const char*>(buffer->data())), dataLength));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didReceiveCachedMetadata, AllowCrossThreadAccess(m_client.get()), AllowCrossThreadAccess(static_cast<const char*>(buffer->data())), dataLength));
|
| }
|
|
|
| void WorkerLoaderClientBridgeSyncHelper::didFinishLoading(unsigned long identifier, double finishTime)
|
| {
|
| MutexLocker lock(m_lock);
|
| ASSERT(isMainThread());
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didFinishLoading, AllowCrossThreadAccess(&m_client), identifier, finishTime));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didFinishLoading, AllowCrossThreadAccess(m_client.get()), identifier, finishTime));
|
| m_done = true;
|
| m_event->signal();
|
| }
|
| @@ -124,7 +125,7 @@ void WorkerLoaderClientBridgeSyncHelper::didFail(const ResourceError& error)
|
| {
|
| MutexLocker lock(m_lock);
|
| ASSERT(isMainThread());
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didFail, AllowCrossThreadAccess(&m_client), error));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didFail, AllowCrossThreadAccess(m_client.get()), error));
|
| m_done = true;
|
| m_event->signal();
|
| }
|
| @@ -133,7 +134,7 @@ void WorkerLoaderClientBridgeSyncHelper::didFailAccessControlCheck(const Resourc
|
| {
|
| MutexLocker lock(m_lock);
|
| ASSERT(isMainThread());
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didFailAccessControlCheck, AllowCrossThreadAccess(&m_client), error));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didFailAccessControlCheck, AllowCrossThreadAccess(m_client.get()), error));
|
| m_done = true;
|
| m_event->signal();
|
| }
|
| @@ -142,12 +143,25 @@ void WorkerLoaderClientBridgeSyncHelper::didFailRedirectCheck()
|
| {
|
| MutexLocker lock(m_lock);
|
| ASSERT(isMainThread());
|
| - m_clientTasks.append(threadSafeBind(&ThreadableLoaderClient::didFailRedirectCheck, AllowCrossThreadAccess(&m_client)));
|
| + m_clientTasks.append(threadSafeBind(&ThreadableLoaderClientWrapper::didFailRedirectCheck, AllowCrossThreadAccess(m_client.get())));
|
| m_done = true;
|
| m_event->signal();
|
| }
|
|
|
| -WorkerLoaderClientBridgeSyncHelper::WorkerLoaderClientBridgeSyncHelper(ThreadableLoaderClient& client, PassOwnPtr<WebWaitableEvent> event)
|
| +static void didReceiveResourceTimingAdapter(ThreadableLoaderClientWrapper* client, PassOwnPtr<CrossThreadResourceTimingInfoData> timingData)
|
| +{
|
| + OwnPtr<ResourceTimingInfo> info(ResourceTimingInfo::adopt(timingData));
|
| + client->didReceiveResourceTiming(*info);
|
| +}
|
| +
|
| +void WorkerLoaderClientBridgeSyncHelper::didReceiveResourceTiming(const ResourceTimingInfo& info)
|
| +{
|
| + MutexLocker lock(m_lock);
|
| + ASSERT(isMainThread());
|
| + m_clientTasks.append(threadSafeBind(&didReceiveResourceTimingAdapter, AllowCrossThreadAccess(m_client.get()), info));
|
| +}
|
| +
|
| +WorkerLoaderClientBridgeSyncHelper::WorkerLoaderClientBridgeSyncHelper(ThreadableLoaderClientWrapper* client, PassOwnPtr<WebWaitableEvent> event)
|
| : m_done(false)
|
| , m_client(client)
|
| , m_event(event)
|
|
|