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

Unified Diff: Source/core/loader/WorkerLoaderClientBridgeSyncHelper.cpp

Issue 891263002: Prevent calling didReceiveData()/didFinishLoading() after didFailAccessControlCheck() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: More assert. Created 5 years, 11 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: 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));

Powered by Google App Engine
This is Rietveld 408576698