Index: Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp |
diff --git a/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp b/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp |
index 4d9f998fcc65ad6c326e9c3413b26168ee317231..803ca1d5853508a0ff6e06b0c01bdcf089636eb2 100644 |
--- a/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp |
+++ b/Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp |
@@ -66,6 +66,10 @@ void WorkerLoaderClientBridgeSyncHelper::run() |
void WorkerLoaderClientBridgeSyncHelper::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
kinuko
2015/02/03 02:35:36
nit: I am kind of supportive for this style, but c
hiroshige
2015/02/03 08:19:44
Hmm.
Then, how about use RELEASE_ASSERT here and o
kinuko
2015/02/03 08:51:22
That works for me, assuming that leaving a thread-
hiroshige
2015/02/03 09:21:14
Done.
|
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
m_clientTasks.append(bind(&ThreadableLoaderClient::didSendData, &m_client, bytesSent, totalBytesToBeSent)); |
@@ -79,6 +83,10 @@ static void didReceiveResponseAdapter(ThreadableLoaderClient* client, unsigned l |
void WorkerLoaderClientBridgeSyncHelper::didReceiveResponse(unsigned long identifier, const ResourceResponse& response, PassOwnPtr<WebDataConsumerHandle> handle) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
m_clientTasks.append(bind(&didReceiveResponseAdapter, &m_client, identifier, response.copyData(), handle)); |
@@ -86,6 +94,10 @@ void WorkerLoaderClientBridgeSyncHelper::didReceiveResponse(unsigned long identi |
void WorkerLoaderClientBridgeSyncHelper::didReceiveData(const char* data, unsigned dataLength) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
Vector<char>* buffer = new Vector<char>(dataLength); |
@@ -96,6 +108,10 @@ void WorkerLoaderClientBridgeSyncHelper::didReceiveData(const char* data, unsign |
void WorkerLoaderClientBridgeSyncHelper::didDownloadData(int dataLength) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
m_clientTasks.append(bind(&ThreadableLoaderClient::didDownloadData, &m_client, dataLength)); |
@@ -103,6 +119,10 @@ void WorkerLoaderClientBridgeSyncHelper::didDownloadData(int dataLength) |
void WorkerLoaderClientBridgeSyncHelper::didReceiveCachedMetadata(const char* data, int dataLength) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
Vector<char>* buffer = new Vector<char>(dataLength); |
@@ -113,6 +133,10 @@ void WorkerLoaderClientBridgeSyncHelper::didReceiveCachedMetadata(const char* da |
void WorkerLoaderClientBridgeSyncHelper::didFinishLoading(unsigned long identifier, double finishTime) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
m_clientTasks.append(bind(&ThreadableLoaderClient::didFinishLoading, &m_client, identifier, finishTime)); |
@@ -122,6 +146,10 @@ void WorkerLoaderClientBridgeSyncHelper::didFinishLoading(unsigned long identifi |
void WorkerLoaderClientBridgeSyncHelper::didFail(const ResourceError& error) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
m_clientTasks.append(bind(&ThreadableLoaderClient::didFail, &m_client, error.copy())); |
@@ -131,6 +159,10 @@ void WorkerLoaderClientBridgeSyncHelper::didFail(const ResourceError& error) |
void WorkerLoaderClientBridgeSyncHelper::didFailAccessControlCheck(const ResourceError& error) |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
m_clientTasks.append(bind(&ThreadableLoaderClient::didFailAccessControlCheck, &m_client, error.copy())); |
@@ -140,6 +172,10 @@ void WorkerLoaderClientBridgeSyncHelper::didFailAccessControlCheck(const Resourc |
void WorkerLoaderClientBridgeSyncHelper::didFailRedirectCheck() |
{ |
+ ASSERT(!m_done); |
+ if (m_done) |
+ return; |
+ |
MutexLocker lock(m_lock); |
ASSERT(isMainThread()); |
m_clientTasks.append(bind(&ThreadableLoaderClient::didFailRedirectCheck, &m_client)); |