<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[174583] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/174583">174583</a></dd>
<dt>Author</dt> <dd>zandobersek@gmail.com</dd>
<dt>Date</dt> <dd>2014-10-10 05:15:06 -0700 (Fri, 10 Oct 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Remove CrossThreadTask
https://bugs.webkit.org/show_bug.cgi?id=137570
Reviewed by Darin Adler.
Replace uses of CrossThreadTask with C++11 lambdas. The initializations
of cross-thread copies are rather verbose at the moment, but should look
better once we can switch to using C++14 init capture for lambdas.
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Bridge::initialize):
* WebCore.order:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* dom/CrossThreadTask.h: Removed.
* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
(WebCore::WorkerThreadableLoader::MainThreadBridge::destroy):
(WebCore::WorkerThreadableLoader::MainThreadBridge::cancel):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck):
(WebCore::WorkerThreadableLoader::MainThreadBridge::~MainThreadBridge): Deleted.
(WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader): Deleted.
(WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadDestroy): Deleted.
(WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCancel): Deleted.
(WebCore::workerGlobalScopeDidSendData): Deleted.
(WebCore::workerGlobalScopeDidReceiveResponse): Deleted.
(WebCore::workerGlobalScopeDidReceiveData): Deleted.
(WebCore::workerGlobalScopeDidFinishLoading): Deleted.
(WebCore::workerGlobalScopeDidFail): Deleted.
(WebCore::workerGlobalScopeDidFailAccessControlCheck): Deleted.
(WebCore::workerGlobalScopeDidFailRedirectCheck): Deleted.
* loader/WorkerThreadableLoader.h:
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::removeRequestFromCache):
(WebCore::MemoryCache::removeRequestFromSessionCaches):
(WebCore::MemoryCache::removeRequestFromCacheImpl): Deleted.
(WebCore::MemoryCache::removeRequestFromSessionCachesImpl): Deleted.
(WebCore::MemoryCache::crossThreadRemoveRequestFromCache): Deleted.
(WebCore::MemoryCache::crossThreadRemoveRequestFromSessionCaches): Deleted.
* loader/cache/MemoryCache.h:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelcpp">trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp</a></li>
<li><a href="#trunkSourceWebCoreWebCoreorder">trunk/Source/WebCore/WebCore.order</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreloaderWorkerThreadableLoadercpp">trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderWorkerThreadableLoaderh">trunk/Source/WebCore/loader/WorkerThreadableLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheMemoryCachecpp">trunk/Source/WebCore/loader/cache/MemoryCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheMemoryCacheh">trunk/Source/WebCore/loader/cache/MemoryCache.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoredomCrossThreadTaskh">trunk/Source/WebCore/dom/CrossThreadTask.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/ChangeLog        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -1,5 +1,55 @@
</span><span class="cx"> 2014-10-10 Zan Dobersek <zdobersek@igalia.com>
</span><span class="cx">
</span><ins>+ Remove CrossThreadTask
+ https://bugs.webkit.org/show_bug.cgi?id=137570
+
+ Reviewed by Darin Adler.
+
+ Replace uses of CrossThreadTask with C++11 lambdas. The initializations
+ of cross-thread copies are rather verbose at the moment, but should look
+ better once we can switch to using C++14 init capture for lambdas.
+
+ * Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
+ (WebCore::WorkerThreadableWebSocketChannel::Bridge::initialize):
+ * WebCore.order:
+ * WebCore.vcxproj/WebCore.vcxproj:
+ * WebCore.vcxproj/WebCore.vcxproj.filters:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/CrossThreadTask.h: Removed.
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::destroy):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::cancel):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::~MainThreadBridge): Deleted.
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader): Deleted.
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadDestroy): Deleted.
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCancel): Deleted.
+ (WebCore::workerGlobalScopeDidSendData): Deleted.
+ (WebCore::workerGlobalScopeDidReceiveResponse): Deleted.
+ (WebCore::workerGlobalScopeDidReceiveData): Deleted.
+ (WebCore::workerGlobalScopeDidFinishLoading): Deleted.
+ (WebCore::workerGlobalScopeDidFail): Deleted.
+ (WebCore::workerGlobalScopeDidFailAccessControlCheck): Deleted.
+ (WebCore::workerGlobalScopeDidFailRedirectCheck): Deleted.
+ * loader/WorkerThreadableLoader.h:
+ * loader/cache/MemoryCache.cpp:
+ (WebCore::MemoryCache::removeRequestFromCache):
+ (WebCore::MemoryCache::removeRequestFromSessionCaches):
+ (WebCore::MemoryCache::removeRequestFromCacheImpl): Deleted.
+ (WebCore::MemoryCache::removeRequestFromSessionCachesImpl): Deleted.
+ (WebCore::MemoryCache::crossThreadRemoveRequestFromCache): Deleted.
+ (WebCore::MemoryCache::crossThreadRemoveRequestFromSessionCaches): Deleted.
+ * loader/cache/MemoryCache.h:
+
+2014-10-10 Zan Dobersek <zdobersek@igalia.com>
+
</ins><span class="cx"> Avoid defaulting to capture-by-value for C++11 lambdas in WebCore
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=137565
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include "WorkerThreadableWebSocketChannel.h"
</span><span class="cx">
</span><span class="cx"> #include "Blob.h"
</span><del>-#include "CrossThreadTask.h"
</del><span class="cx"> #include "Document.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><span class="cx"> #include "ThreadableWebSocketChannelClientWrapper.h"
</span><span class="lines">@@ -397,8 +396,15 @@
</span><span class="cx"> ASSERT(!m_peer);
</span><span class="cx"> setMethodNotCompleted();
</span><span class="cx"> Ref<Bridge> protect(*this);
</span><del>- m_loaderProxy.postTaskToLoader(CrossThreadTask(&Bridge::mainThreadInitialize, AllowCrossThreadAccess(&m_loaderProxy), m_workerClientWrapper, m_taskMode));
</del><ins>+
+ WorkerLoaderProxy* loaderProxy = &m_loaderProxy;
+ RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ String taskModeCopy = m_taskMode.isolatedCopy();
+ m_loaderProxy.postTaskToLoader([loaderProxy, workerClientWrapper, taskModeCopy] (ScriptExecutionContext& context) {
+ mainThreadInitialize(context, loaderProxy, workerClientWrapper, taskModeCopy);
+ });
</ins><span class="cx"> waitForMethodCompletion();
</span><ins>+
</ins><span class="cx"> // m_peer may be null when the nested runloop exited before a peer has created.
</span><span class="cx"> m_peer = m_workerClientWrapper->peer();
</span><span class="cx"> if (!m_peer)
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreorder"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.order (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.order        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/WebCore.order        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -23998,13 +23998,9 @@
</span><span class="cx"> __ZTVN7WebCore24ApplicationCacheResourceE
</span><span class="cx"> __ZTVN7WebCore18SubstituteResourceE
</span><span class="cx"> __ZTVN7WebCore15ArchiveResourceE
</span><del>-__ZTVN7WebCore16CrossThreadTask2IPNS_15AsyncFileStreamES2_iiEE
</del><span class="cx"> __ZTVN7WebCore15FileThreadTask2INS_15AsyncFileStreamEPcS2_iiEE
</span><del>-__ZTVN7WebCore16CrossThreadTask2IPNS_15AsyncFileStreamES2_bbEE
</del><span class="cx"> __ZTVN7WebCore15FileThreadTask3INS_15AsyncFileStreamEN3WTF6StringERKS3_xxxxEE
</span><del>-__ZTVN7WebCore16CrossThreadTask2IPNS_15AsyncFileStreamES2_xxEE
</del><span class="cx"> __ZTVN7WebCore15FileThreadTask2INS_15AsyncFileStreamEN3WTF6StringERKS3_ddEE
</span><del>-__ZTVN7WebCore16CrossThreadTask1IPNS_15AsyncFileStreamES2_EE
</del><span class="cx"> __ZTVN7WebCore15FileThreadTask0INS_15AsyncFileStreamEEE
</span><span class="cx"> __ZTVN3WTF21MemoryInstrumentation7WrapperIN7WebCore4NodeEEE
</span><span class="cx"> __ZTVN3WTF12Float32ArrayE
</span><span class="lines">@@ -24125,11 +24121,8 @@
</span><span class="cx"> __ZTVN7WebCore21StyleSheetCSSRuleListE
</span><span class="cx"> __ZTVN7WebCore19StepsTimingFunctionE
</span><span class="cx"> __ZTVN7WebCore20LinearTimingFunctionE
</span><del>-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_27SQLTransactionErrorCallbackEEES4_NS2_INS_8SQLErrorEEES6_EE
</del><span class="cx"> __ZTVN7WebCore26DeliverPendingCallbackTaskE
</span><span class="cx"> __ZTVN7WebCore16DerefContextTaskE
</span><del>-__ZTVN7WebCore16CrossThreadTask5INS_13MessageSourceES1_NS_12MessageLevelES2_N3WTF6StringERKS4_S4_S6_ijEE
-__ZTVN7WebCore16CrossThreadTask3IN3WTF6StringERKS2_iiS2_S4_EE
</del><span class="cx"> __ZTVN7WebCore23SharedWorkerConnectTaskE
</span><span class="cx"> __ZTVN7WebCore9DelayNodeE
</span><span class="cx"> __ZTVN7WebCore19RemoveTargetCommandE
</span><span class="lines">@@ -24255,7 +24248,6 @@
</span><span class="cx"> __ZGVZN3WTF19ParallelEnvironment7executeEPhE11globalQueue
</span><span class="cx"> __ZZN3WTF19ParallelEnvironment7executeEPhE11globalQueue
</span><span class="cx"> __ZTVN3WTF17Uint8ClampedArrayE
</span><del>-__ZTVN7WebCore16CrossThreadTask1IPNS_10FileReaderES2_EE
</del><span class="cx"> __ZTVN7WebCore14FileReaderSyncE
</span><span class="cx"> __ZTVN7WebCore6FilterE
</span><span class="cx"> __ZTVN3WTF21MemoryInstrumentation7WrapperIN7WebCore8DocumentEEE
</span><span class="lines">@@ -26077,7 +26069,6 @@
</span><span class="cx"> __ZTVN7WebCore5TimerINS_23MediaPlayerPrivateQTKitEEE
</span><span class="cx"> __ZTVN3WTF21MemoryInstrumentation7WrapperINS_6VectorINS_6OwnPtrIN7WebCore13MediaQueryExpEEELm0EEEEE
</span><span class="cx"> __ZTVN3WTF21MemoryInstrumentation7WrapperIN7WebCore13MediaQueryExpEEE
</span><del>-__ZTVN7WebCore16CrossThreadTask1IN3WTF6StringERKS2_EE
</del><span class="cx"> __ZTVN3WTF21MemoryInstrumentation7WrapperINS0_11WrapperBaseEEE
</span><span class="cx"> __ZTVN7WebCore19NamedFlowCollectionE
</span><span class="cx"> __ZTVN7WebCore5TimerINS_19NavigationSchedulerEEE
</span><span class="lines">@@ -26408,11 +26399,6 @@
</span><span class="cx"> __ZTVN7WebCore24TextInsertionBaseCommandE
</span><span class="cx"> __ZTVN7WebCore5TimerINS_13TextTrackListEEE
</span><span class="cx"> __ZTVN7WebCore5TimerINS_15TextTrackLoaderEEE
</span><del>-__ZTVN7WebCore16CrossThreadTask5IN3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES4_mmNS_22WebSocketChannelClient32ClosingHandshakeCompletionStatusES6_ttNS1_6StringERKS7_EE
-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES4_mmEE
-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES4_NS1_10PassOwnPtrINS1_6VectorIcLm0EEEEES8_EE
-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES4_NS1_6StringERKS5_EE
-__ZTVN7WebCore16CrossThreadTask1IN3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES4_EE
</del><span class="cx"> __ZN7WebCoreL23threadViolationBehaviorE
</span><span class="cx"> __ZTVN7WebCore21MainThreadSharedTimerE
</span><span class="cx"> __ZTVN7WebCore5TimerINS_9TileCacheEEE
</span><span class="lines">@@ -26476,9 +26462,6 @@
</span><span class="cx"> __ZTVN7WebCore22CloseWorkerGlobalScopeTaskE
</span><span class="cx"> __ZN7WebCore19WorkerDebuggerAgent16debuggerTaskModeE
</span><span class="cx"> __ZTVN7WebCore16WorkerEventQueue19EventDispatcherTaskE
</span><del>-__ZTVN7WebCore16CrossThreadTask1IbbEE
-__ZTVN7WebCore16CrossThreadTask1IPNS_20WorkerMessagingProxyES2_EE
-__ZTVN7WebCore16CrossThreadTask6IPNS_20WorkerMessagingProxyES2_NS_13MessageSourceES3_NS_12MessageLevelES4_N3WTF6StringERKS6_ijS6_S8_EE
</del><span class="cx"> __ZTVN7WebCore30WorkerThreadActivityReportTaskE
</span><span class="cx"> __ZTVN7WebCore30PostMessageToPageInspectorTaskE
</span><span class="cx"> __ZTVN7WebCore19WorkerTerminateTaskE
</span><span class="lines">@@ -26489,25 +26472,6 @@
</span><span class="cx"> __ZTVN7WebCore17WorkerSharedTimerE
</span><span class="cx"> __ZTVN7WebCore29WorkerThreadShutdownStartTaskE
</span><span class="cx"> __ZTVN7WebCore30WorkerThreadShutdownFinishTaskE
</span><del>-__ZTVN7WebCore16CrossThreadTask1IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EEEE
-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEES4_NS_13ResourceErrorERKS5_EE
-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EENS_13ResourceErrorERKS7_EE
-__ZTVN7WebCore16CrossThreadTask3IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EEmmddEE
-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EENS1_10PassOwnPtrINS1_6VectorIcLm0EEEEESA_EE
-__ZTVN7WebCore16CrossThreadTask3IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EEmmNS1_10PassOwnPtrINS_31CrossThreadResourceResponseDataEEES9_EE
-__ZTVN7WebCore16CrossThreadTask3IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EEyyyyEE
-__ZTVN7WebCore16CrossThreadTask1IPNS_22WorkerThreadableLoader16MainThreadBridgeES3_EE
-__ZTVN7WebCore16CrossThreadTask4IPNS_22WorkerThreadableLoader16MainThreadBridgeES3_N3WTF10PassOwnPtrINS_30CrossThreadResourceRequestDataEEES7_NS_23ThreadableLoaderOptionsES8_NS4_6StringERKS9_EE
-__ZTVN7WebCore16CrossThreadTask3IPNS_32WorkerThreadableWebSocketChannel4PeerES3_iiN3WTF6StringERKS5_EE
-__ZTVN7WebCore16CrossThreadTask1IPNS_32WorkerThreadableWebSocketChannel4PeerES3_EE
-__ZTVN7WebCore16CrossThreadTask4IPNS_32WorkerThreadableWebSocketChannel4PeerES3_NS_4KURLERKS4_N3WTF6StringERKS8_yxEE
-__ZTVN7WebCore16CrossThreadTask2IPNS_32WorkerThreadableWebSocketChannel4PeerES3_N3WTF10PassOwnPtrINS4_6VectorIcLm0EEEEES8_EE
-__ZTVN7WebCore16CrossThreadTask2IPNS_32WorkerThreadableWebSocketChannel4PeerES3_N3WTF6StringERKS5_EE
-__ZTVN7WebCore16CrossThreadTask3IPNS_32WorkerThreadableWebSocketChannel4PeerES3_NS_4KURLERKS4_N3WTF6StringERKS8_EE
-__ZTVN7WebCore16CrossThreadTask3IPNS_17WorkerLoaderProxyES2_N3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES6_NS3_6StringERKS7_EE
-__ZTVN7WebCore16CrossThreadTask1IN3WTF10PassOwnPtrINS_32WorkerThreadableWebSocketChannel4PeerEEES5_EE
-__ZTVN7WebCore16CrossThreadTask3IN3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES4_NS1_6StringERKS5_S5_S7_EE
-__ZTVN7WebCore16CrossThreadTask2IN3WTF10PassRefPtrINS_39ThreadableWebSocketChannelClientWrapperEEES4_NS_26ThreadableWebSocketChannel10SendResultES6_EE
</del><span class="cx"> __ZTVN7WebCore32WorkerThreadableWebSocketChannel30WorkerGlobalScopeDidInitializeTaskE
</span><span class="cx"> __ZZN7WebCore10XLinkNames13getXLinkAttrsEvE9XLinkAttr
</span><span class="cx"> __ZTVN7WebCore16PendingCallbacks29PendingInternalSubsetCallbackE
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -20473,7 +20473,6 @@
</span><span class="cx"> <ClInclude Include="..\dom\CompositionEvent.h" />
</span><span class="cx"> <ClInclude Include="..\dom\ContainerNode.h" />
</span><span class="cx"> <ClInclude Include="..\dom\ContextDestructionObserver.h" />
</span><del>- <ClInclude Include="..\dom\CrossThreadTask.h" />
</del><span class="cx"> <ClInclude Include="..\dom\CustomEvent.h" />
</span><span class="cx"> <ClInclude Include="..\dom\DatasetDOMStringMap.h" />
</span><span class="cx"> <ClInclude Include="..\dom\DataTransfer.h" />
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -10152,9 +10152,6 @@
</span><span class="cx"> <ClInclude Include="..\dom\ContextDestructionObserver.h">
</span><span class="cx"> <Filter>dom</Filter>
</span><span class="cx"> </ClInclude>
</span><del>- <ClInclude Include="..\dom\CrossThreadTask.h">
- <Filter>dom</Filter>
- </ClInclude>
</del><span class="cx"> <ClInclude Include="..\dom\CustomEvent.h">
</span><span class="cx"> <Filter>dom</Filter>
</span><span class="cx"> </ClInclude>
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -1139,7 +1139,6 @@
</span><span class="cx">                 2E3BC108117D479800B9409A /* DOMFileError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3BC106117D479800B9409A /* DOMFileError.h */; };
</span><span class="cx">                 2E3BC109117D479800B9409A /* DOMFileError.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E3BC107117D479800B9409A /* DOMFileError.mm */; };
</span><span class="cx">                 2E3BC10B117D47C800B9409A /* DOMFileErrorInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3BC10A117D47C800B9409A /* DOMFileErrorInternal.h */; };
</span><del>-                2E3FAA0911A36BF100576624 /* CrossThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3FAA0811A36BF100576624 /* CrossThreadTask.h */; };
</del><span class="cx">                 2E4346450F546A8200B0F1BA /* Worker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346330F546A8200B0F1BA /* Worker.cpp */; };
</span><span class="cx">                 2E4346460F546A8200B0F1BA /* Worker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346340F546A8200B0F1BA /* Worker.h */; };
</span><span class="cx">                 2E4346480F546A8200B0F1BA /* WorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346360F546A8200B0F1BA /* WorkerGlobalScope.cpp */; };
</span><span class="lines">@@ -8139,7 +8138,6 @@
</span><span class="cx">                 2E3BC106117D479800B9409A /* DOMFileError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileError.h; sourceTree = "<group>"; };
</span><span class="cx">                 2E3BC107117D479800B9409A /* DOMFileError.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMFileError.mm; sourceTree = "<group>"; };
</span><span class="cx">                 2E3BC10A117D47C800B9409A /* DOMFileErrorInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileErrorInternal.h; sourceTree = "<group>"; };
</span><del>-                2E3FAA0811A36BF100576624 /* CrossThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadTask.h; sourceTree = "<group>"; };
</del><span class="cx">                 2E4346330F546A8200B0F1BA /* Worker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Worker.cpp; path = workers/Worker.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 2E4346340F546A8200B0F1BA /* Worker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Worker.h; path = workers/Worker.h; sourceTree = "<group>"; };
</span><span class="cx">                 2E4346350F546A8200B0F1BA /* Worker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Worker.idl; path = workers/Worker.idl; sourceTree = "<group>"; };
</span><span class="lines">@@ -22529,7 +22527,6 @@
</span><span class="cx">                                 E1A1470711102B1500EEC0F3 /* ContainerNodeAlgorithms.h */,
</span><span class="cx">                                 97627B8B14FB3CEE002CDCA1 /* ContextDestructionObserver.cpp */,
</span><span class="cx">                                 97627B8C14FB3CEE002CDCA1 /* ContextDestructionObserver.h */,
</span><del>-                                2E3FAA0811A36BF100576624 /* CrossThreadTask.h */,
</del><span class="cx">                                 62CD32561157E57C0063B0A7 /* CustomEvent.cpp */,
</span><span class="cx">                                 62CD32571157E57C0063B0A7 /* CustomEvent.h */,
</span><span class="cx">                                 62CD32581157E57C0063B0A7 /* CustomEvent.idl */,
</span><span class="lines">@@ -23571,7 +23568,6 @@
</span><span class="cx">                                 E1C416120F6562FD0092D2FB /* CrossOriginAccessControl.h in Headers */,
</span><span class="cx">                                 E1C415DA0F655D6F0092D2FB /* CrossOriginPreflightResultCache.h in Headers */,
</span><span class="cx">                                 2E4346590F546A9900B0F1BA /* CrossThreadCopier.h in Headers */,
</span><del>-                                2E3FAA0911A36BF100576624 /* CrossThreadTask.h in Headers */,
</del><span class="cx">                                 E169803D1133542D00894115 /* CRuntimeObject.h in Headers */,
</span><span class="cx">                                 975CA28B130365F800E99AD9 /* Crypto.h in Headers */,
</span><span class="cx">                                 E172AF6E180F24C600FBADB9 /* CryptoAlgorithm.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCoredomCrossThreadTaskh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/dom/CrossThreadTask.h (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CrossThreadTask.h        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/dom/CrossThreadTask.h        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -1,52 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009-2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef CrossThreadTask_h
-#define CrossThreadTask_h
-
-#include "CrossThreadCopier.h"
-#include "ScriptExecutionContext.h"
-#include <memory>
-#include <wtf/PassRefPtr.h>
-
-namespace WebCore {
-
-class CrossThreadTask : public ScriptExecutionContext::Task {
-public:
- template<typename Method, typename... Parameters>
- CrossThreadTask(Method method, const Parameters&... parameters)
- : ScriptExecutionContext::Task(std::bind(method, std::placeholders::_1, typename CrossThreadCopier<Parameters>::Type(CrossThreadCopier<Parameters>::copy(parameters))...))
- {
- }
-};
-
-} // namespace WebCore
-
-#endif // CrossThreadTask_h
</del></span></pre></div>
<a id="trunkSourceWebCoreloaderWorkerThreadableLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx">
</span><span class="cx"> #include "Document.h"
</span><span class="cx"> #include "DocumentThreadableLoader.h"
</span><del>-#include "CrossThreadTask.h"
</del><span class="cx"> #include "ResourceError.h"
</span><span class="cx"> #include "ResourceRequest.h"
</span><span class="cx"> #include "ResourceResponse.h"
</span><span class="lines">@@ -91,57 +90,49 @@
</span><span class="cx"> , m_taskMode(taskMode.isolatedCopy())
</span><span class="cx"> {
</span><span class="cx"> ASSERT(m_workerClientWrapper.get());
</span><del>- m_loaderProxy.postTaskToLoader(CrossThreadTask(&MainThreadBridge::mainThreadCreateLoader, AllowCrossThreadAccess(this), request, options, outgoingReferrer));
-}
</del><span class="cx">
</span><del>-WorkerThreadableLoader::MainThreadBridge::~MainThreadBridge()
-{
-}
</del><ins>+ CrossThreadResourceRequestData* requestData = request.copyData().leakPtr();
+ String outgoingReferrerCopy = outgoingReferrer.isolatedCopy();
+ m_loaderProxy.postTaskToLoader([this, requestData, options, outgoingReferrerCopy] (ScriptExecutionContext& context) {
+ ASSERT(isMainThread());
+ Document& document = downcast<Document>(context);
</ins><span class="cx">
</span><del>-void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExecutionContext& context, MainThreadBridge* thisPtr, PassOwnPtr<CrossThreadResourceRequestData> requestData, ThreadableLoaderOptions options, const String& outgoingReferrer)
-{
- ASSERT(isMainThread());
- Document& document = downcast<Document>(context);
</del><ins>+ OwnPtr<ResourceRequest> request = ResourceRequest::adopt(adoptPtr(requestData));
+ request->setHTTPReferrer(outgoingReferrerCopy);
</ins><span class="cx">
</span><del>- OwnPtr<ResourceRequest> request(ResourceRequest::adopt(requestData));
- request->setHTTPReferrer(outgoingReferrer);
- // FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path
- // will return a 0 value. Either this should return 0 or the other code path should do a callback with
- // a failure.
- thisPtr->m_mainThreadLoader = DocumentThreadableLoader::create(document, *thisPtr, *request, options);
- ASSERT(thisPtr->m_mainThreadLoader);
</del><ins>+ // FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path
+ // will return a 0 value. Either this should return 0 or the other code path should do a callback with
+ // a failure.
+ m_mainThreadLoader = DocumentThreadableLoader::create(document, *this, *request, options);
+ ASSERT(m_mainThreadLoader);
+ });
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void WorkerThreadableLoader::MainThreadBridge::mainThreadDestroy(ScriptExecutionContext& context, MainThreadBridge* thisPtr)
-{
- ASSERT(isMainThread());
- ASSERT_UNUSED(context, context.isDocument());
- delete thisPtr;
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::destroy()
</span><span class="cx"> {
</span><span class="cx"> // Ensure that no more client callbacks are done in the worker context's thread.
</span><span class="cx"> clearClientWrapper();
</span><span class="cx">
</span><span class="cx"> // "delete this" and m_mainThreadLoader::deref() on the worker object's thread.
</span><del>- m_loaderProxy.postTaskToLoader(CrossThreadTask(&MainThreadBridge::mainThreadDestroy, AllowCrossThreadAccess(this)));
</del><ins>+ m_loaderProxy.postTaskToLoader([this] (ScriptExecutionContext& context) {
+ ASSERT(isMainThread());
+ ASSERT_UNUSED(context, context.isDocument());
+ delete this;
+ });
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void WorkerThreadableLoader::MainThreadBridge::mainThreadCancel(ScriptExecutionContext& context, MainThreadBridge* thisPtr)
</del><ins>+void WorkerThreadableLoader::MainThreadBridge::cancel()
</ins><span class="cx"> {
</span><del>- ASSERT(isMainThread());
- ASSERT_UNUSED(context, context.isDocument());
</del><ins>+ m_loaderProxy.postTaskToLoader([this] (ScriptExecutionContext& context) {
+ ASSERT(isMainThread());
+ ASSERT_UNUSED(context, context.isDocument());
</ins><span class="cx">
</span><del>- if (!thisPtr->m_mainThreadLoader)
- return;
- thisPtr->m_mainThreadLoader->cancel();
- thisPtr->m_mainThreadLoader = 0;
-}
</del><ins>+ if (!m_mainThreadLoader)
+ return;
+ m_mainThreadLoader->cancel();
+ m_mainThreadLoader = nullptr;
+ });
</ins><span class="cx">
</span><del>-void WorkerThreadableLoader::MainThreadBridge::cancel()
-{
- m_loaderProxy.postTaskToLoader(CrossThreadTask(&MainThreadBridge::mainThreadCancel, AllowCrossThreadAccess(this)));
</del><span class="cx"> ThreadableLoaderClientWrapper* clientWrapper = m_workerClientWrapper.get();
</span><span class="cx"> if (!clientWrapper->done()) {
</span><span class="cx"> // If the client hasn't reached a termination state, then transition it by sending a cancellation error.
</span><span class="lines">@@ -158,84 +149,74 @@
</span><span class="cx"> m_workerClientWrapper->clearClient();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void workerGlobalScopeDidSendData(ScriptExecutionContext& context, RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
-{
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didSendData(bytesSent, totalBytesToBeSent);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
</span><span class="cx"> {
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&workerGlobalScopeDidSendData, m_workerClientWrapper, bytesSent, totalBytesToBeSent), m_taskMode);
</del><ins>+ RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, bytesSent, totalBytesToBeSent] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ workerClientWrapper->didSendData(bytesSent, totalBytesToBeSent);
+ }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static void workerGlobalScopeDidReceiveResponse(ScriptExecutionContext& context, RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, unsigned long identifier, PassOwnPtr<CrossThreadResourceResponseData> responseData)
-{
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- OwnPtr<ResourceResponse> response(ResourceResponse::adopt(responseData));
- workerClientWrapper->didReceiveResponse(identifier, *response);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didReceiveResponse(unsigned long identifier, const ResourceResponse& response)
</span><span class="cx"> {
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&workerGlobalScopeDidReceiveResponse, m_workerClientWrapper, identifier, response), m_taskMode);
</del><ins>+ RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ CrossThreadResourceResponseData* responseData = response.copyData().leakPtr();
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, identifier, responseData] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ OwnPtr<ResourceResponse> response(ResourceResponse::adopt(adoptPtr(responseData)));
+ workerClientWrapper->didReceiveResponse(identifier, *response);
+ }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static void workerGlobalScopeDidReceiveData(ScriptExecutionContext& context, RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, PassOwnPtr<Vector<char>> vectorData)
-{
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didReceiveData(vectorData->data(), vectorData->size());
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didReceiveData(const char* data, int dataLength)
</span><span class="cx"> {
</span><del>- OwnPtr<Vector<char>> vector = adoptPtr(new Vector<char>(dataLength)); // needs to be an OwnPtr for usage with CrossThreadTask.
- memcpy(vector->data(), data, dataLength);
- m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&workerGlobalScopeDidReceiveData, m_workerClientWrapper, vector.release()), m_taskMode);
</del><ins>+ RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ Vector<char>* vectorPtr = new Vector<char>(dataLength);
+ memcpy(vectorPtr->data(), data, dataLength);
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, vectorPtr] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ OwnPtr<Vector<char>> vector = adoptPtr(vectorPtr);
+ workerClientWrapper->didReceiveData(vector->data(), vector->size());
+ }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static void workerGlobalScopeDidFinishLoading(ScriptExecutionContext& context, RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, unsigned long identifier, double finishTime)
-{
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFinishLoading(identifier, finishTime);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didFinishLoading(unsigned long identifier, double finishTime)
</span><span class="cx"> {
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&workerGlobalScopeDidFinishLoading, m_workerClientWrapper, identifier, finishTime), m_taskMode);
</del><ins>+ RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, identifier, finishTime] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ workerClientWrapper->didFinishLoading(identifier, finishTime);
+ }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static void workerGlobalScopeDidFail(ScriptExecutionContext& context, RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, const ResourceError& error)
-{
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFail(error);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didFail(const ResourceError& error)
</span><span class="cx"> {
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&workerGlobalScopeDidFail, m_workerClientWrapper, error), m_taskMode);
</del><ins>+ RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ ResourceError errorCopy = error.copy();
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, errorCopy] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ workerClientWrapper->didFail(errorCopy);
+ }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static void workerGlobalScopeDidFailAccessControlCheck(ScriptExecutionContext& context, PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, const ResourceError& error)
-{
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFailAccessControlCheck(error);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck(const ResourceError& error)
</span><span class="cx"> {
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&workerGlobalScopeDidFailAccessControlCheck, m_workerClientWrapper, error), m_taskMode);
</del><ins>+ RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ ResourceError errorCopy = error.copy();
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, errorCopy] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ workerClientWrapper->didFailAccessControlCheck(errorCopy);
+ }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static void workerGlobalScopeDidFailRedirectCheck(ScriptExecutionContext& context, RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper)
-{
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFailRedirectCheck();
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck()
</span><span class="cx"> {
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&workerGlobalScopeDidFailRedirectCheck, m_workerClientWrapper), m_taskMode);
</del><ins>+ RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ workerClientWrapper->didFailRedirectCheck();
+ }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderWorkerThreadableLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/WorkerThreadableLoader.h (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/WorkerThreadableLoader.h        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/loader/WorkerThreadableLoader.h        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -90,9 +90,8 @@
</span><span class="cx"> // case 2. xhr gets aborted and the worker context continues running.
</span><span class="cx"> // The ThreadableLoaderClientWrapper has the underlying client cleared, so no more calls
</span><span class="cx"> // go through it. All tasks posted from the worker object's thread to the worker context's
</span><del>- // thread do "ThreadableLoaderClientWrapper::ref" (automatically inside of the cross thread copy
- // done in CrossThreadTask), so the ThreadableLoaderClientWrapper instance is there until all
- // tasks are executed.
</del><ins>+ // thread contain the RefPtr<ThreadableLoaderClientWrapper> object, so the
+ // ThreadableLoaderClientWrapper instance is there until all tasks are executed.
</ins><span class="cx"> class MainThreadBridge : public ThreadableLoaderClient {
</span><span class="cx"> public:
</span><span class="cx"> // All executed on the worker context's thread.
</span><span class="lines">@@ -105,11 +104,7 @@
</span><span class="cx"> void clearClientWrapper();
</span><span class="cx">
</span><span class="cx"> // All executed on the main thread.
</span><del>- static void mainThreadDestroy(ScriptExecutionContext&, MainThreadBridge*);
- ~MainThreadBridge();
-
</del><span class="cx"> static void mainThreadCreateLoader(ScriptExecutionContext&, MainThreadBridge*, PassOwnPtr<CrossThreadResourceRequestData>, ThreadableLoaderOptions, const String& outgoingReferrer);
</span><del>- static void mainThreadCancel(ScriptExecutionContext&, MainThreadBridge*);
</del><span class="cx"> virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
</span><span class="cx"> virtual void didReceiveResponse(unsigned long identifier, const ResourceResponse&) override;
</span><span class="cx"> virtual void didReceiveData(const char*, int dataLength) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheMemoryCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/MemoryCache.cpp (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/MemoryCache.cpp        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/loader/cache/MemoryCache.cpp        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include "CachedImageClient.h"
</span><span class="cx"> #include "CachedResource.h"
</span><span class="cx"> #include "CachedResourceHandle.h"
</span><del>-#include "CrossThreadTask.h"
</del><span class="cx"> #include "Document.h"
</span><span class="cx"> #include "FrameLoader.h"
</span><span class="cx"> #include "FrameLoaderTypes.h"
</span><span class="lines">@@ -754,15 +753,14 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(context);
</span><span class="cx"> if (is<WorkerGlobalScope>(*context)) {
</span><del>- downcast<WorkerGlobalScope>(*context).thread().workerLoaderProxy().postTaskToLoader(CrossThreadTask(&crossThreadRemoveRequestFromCache, request, sessionID));
</del><ins>+ CrossThreadResourceRequestData* requestData = request.copyData().leakPtr();
+ downcast<WorkerGlobalScope>(*context).thread().workerLoaderProxy().postTaskToLoader([requestData, sessionID] (ScriptExecutionContext& context) {
+ OwnPtr<ResourceRequest> request(ResourceRequest::adopt(adoptPtr(requestData)));
+ removeRequestFromCache(&context, *request, sessionID);
+ });
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- removeRequestFromCacheImpl(context, request, sessionID);
-}
-
-void MemoryCache::removeRequestFromCacheImpl(ScriptExecutionContext*, const ResourceRequest& request, SessionID sessionID)
-{
</del><span class="cx"> if (CachedResource* resource = memoryCache()->resourceForRequest(request, sessionID))
</span><span class="cx"> memoryCache()->remove(resource);
</span><span class="cx"> }
</span><span class="lines">@@ -771,32 +769,20 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(context);
</span><span class="cx"> if (is<WorkerGlobalScope>(*context)) {
</span><del>- downcast<WorkerGlobalScope>(*context).thread().workerLoaderProxy().postTaskToLoader(CrossThreadTask(&crossThreadRemoveRequestFromSessionCaches, request));
</del><ins>+ CrossThreadResourceRequestData* requestData = request.copyData().leakPtr();
+ downcast<WorkerGlobalScope>(*context).thread().workerLoaderProxy().postTaskToLoader([requestData] (ScriptExecutionContext& context) {
+ OwnPtr<ResourceRequest> request(ResourceRequest::adopt(adoptPtr(requestData)));
+ MemoryCache::removeRequestFromSessionCaches(&context, *request);
+ });
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><del>- removeRequestFromSessionCachesImpl(context, request);
-}
</del><span class="cx">
</span><del>-void MemoryCache::removeRequestFromSessionCachesImpl(ScriptExecutionContext*, const ResourceRequest& request)
-{
</del><span class="cx"> for (auto& resources : memoryCache()->m_sessionResources) {
</span><span class="cx"> if (CachedResource* resource = memoryCache()->resourceForRequestImpl(request, *resources.value))
</span><span class="cx"> memoryCache()->remove(resource);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void MemoryCache::crossThreadRemoveRequestFromCache(ScriptExecutionContext& context, PassOwnPtr<WebCore::CrossThreadResourceRequestData> requestData, SessionID sessionID)
-{
- OwnPtr<ResourceRequest> request(ResourceRequest::adopt(requestData));
- MemoryCache::removeRequestFromCacheImpl(&context, *request, sessionID);
-}
-
-void MemoryCache::crossThreadRemoveRequestFromSessionCaches(ScriptExecutionContext& context, PassOwnPtr<WebCore::CrossThreadResourceRequestData> requestData)
-{
- OwnPtr<ResourceRequest> request(ResourceRequest::adopt(requestData));
- MemoryCache::removeRequestFromSessionCaches(&context, *request);
-}
-
</del><span class="cx"> void MemoryCache::TypeStatistic::addResource(CachedResource* o)
</span><span class="cx"> {
</span><span class="cx"> count++;
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheMemoryCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/MemoryCache.h (174582 => 174583)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/MemoryCache.h        2014-10-10 10:52:41 UTC (rev 174582)
+++ trunk/Source/WebCore/loader/cache/MemoryCache.h        2014-10-10 12:15:06 UTC (rev 174583)
</span><span class="lines">@@ -204,10 +204,6 @@
</span><span class="cx"> void evict(CachedResource*);
</span><span class="cx">
</span><span class="cx"> WEBCORE_EXPORT CachedResource* resourceForRequestImpl(const ResourceRequest&, CachedResourceMap&);
</span><del>- static void removeRequestFromCacheImpl(ScriptExecutionContext*, const ResourceRequest&, SessionID);
- static void removeRequestFromSessionCachesImpl(ScriptExecutionContext*, const ResourceRequest&);
- static void crossThreadRemoveRequestFromCache(ScriptExecutionContext&, PassOwnPtr<CrossThreadResourceRequestData>, SessionID);
- static void crossThreadRemoveRequestFromSessionCaches(ScriptExecutionContext&, PassOwnPtr<CrossThreadResourceRequestData>);
</del><span class="cx">
</span><span class="cx"> CachedResourceMap& getSessionMap(SessionID);
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>