<!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  &lt;zdobersek@igalia.com&gt;
</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  &lt;zdobersek@igalia.com&gt;
+
</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 &quot;WorkerThreadableWebSocketChannel.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Blob.h&quot;
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &quot;ThreadableWebSocketChannelClientWrapper.h&quot;
</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&lt;Bridge&gt; protect(*this);
</span><del>-    m_loaderProxy.postTaskToLoader(CrossThreadTask(&amp;Bridge::mainThreadInitialize, AllowCrossThreadAccess(&amp;m_loaderProxy), m_workerClientWrapper, m_taskMode));
</del><ins>+
+    WorkerLoaderProxy* loaderProxy = &amp;m_loaderProxy;
+    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    String taskModeCopy = m_taskMode.isolatedCopy();
+    m_loaderProxy.postTaskToLoader([loaderProxy, workerClientWrapper, taskModeCopy] (ScriptExecutionContext&amp; 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-&gt;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">     &lt;ClInclude Include=&quot;..\dom\CompositionEvent.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\ContainerNode.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\ContextDestructionObserver.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\dom\CrossThreadTask.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\dom\CustomEvent.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\DatasetDOMStringMap.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\DataTransfer.h&quot; /&gt;
</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">     &lt;ClInclude Include=&quot;..\dom\ContextDestructionObserver.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;dom&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\dom\CrossThreadTask.h&quot;&gt;
-      &lt;Filter&gt;dom&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\dom\CustomEvent.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;dom&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E3BC107117D479800B9409A /* DOMFileError.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMFileError.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E3BC10A117D47C800B9409A /* DOMFileErrorInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMFileErrorInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                2E3FAA0811A36BF100576624 /* CrossThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadTask.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 2E4346330F546A8200B0F1BA /* Worker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Worker.cpp; path = workers/Worker.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E4346340F546A8200B0F1BA /* Worker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Worker.h; path = workers/Worker.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E4346350F546A8200B0F1BA /* Worker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Worker.idl; path = workers/Worker.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</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
- * &quot;AS IS&quot; 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 &quot;CrossThreadCopier.h&quot;
-#include &quot;ScriptExecutionContext.h&quot;
-#include &lt;memory&gt;
-#include &lt;wtf/PassRefPtr.h&gt;
-
-namespace WebCore {
-
-class CrossThreadTask : public ScriptExecutionContext::Task {
-public:
-    template&lt;typename Method, typename... Parameters&gt;
-    CrossThreadTask(Method method, const Parameters&amp;... parameters)
-        : ScriptExecutionContext::Task(std::bind(method, std::placeholders::_1, typename CrossThreadCopier&lt;Parameters&gt;::Type(CrossThreadCopier&lt;Parameters&gt;::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 &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentThreadableLoader.h&quot;
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;ResourceError.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</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(&amp;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&amp; context) {
+        ASSERT(isMainThread());
+        Document&amp; document = downcast&lt;Document&gt;(context);
</ins><span class="cx"> 
</span><del>-void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExecutionContext&amp; context, MainThreadBridge* thisPtr, PassOwnPtr&lt;CrossThreadResourceRequestData&gt; requestData, ThreadableLoaderOptions options, const String&amp; outgoingReferrer)
-{
-    ASSERT(isMainThread());
-    Document&amp; document = downcast&lt;Document&gt;(context);
</del><ins>+        OwnPtr&lt;ResourceRequest&gt; request = ResourceRequest::adopt(adoptPtr(requestData));
+        request-&gt;setHTTPReferrer(outgoingReferrerCopy);
</ins><span class="cx"> 
</span><del>-    OwnPtr&lt;ResourceRequest&gt; request(ResourceRequest::adopt(requestData));
-    request-&gt;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-&gt;m_mainThreadLoader = DocumentThreadableLoader::create(document, *thisPtr, *request, options);
-    ASSERT(thisPtr-&gt;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&amp; 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">     // &quot;delete this&quot; and m_mainThreadLoader::deref() on the worker object's thread.
</span><del>-    m_loaderProxy.postTaskToLoader(CrossThreadTask(&amp;MainThreadBridge::mainThreadDestroy, AllowCrossThreadAccess(this)));
</del><ins>+    m_loaderProxy.postTaskToLoader([this] (ScriptExecutionContext&amp; 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&amp; 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&amp; context) {
+        ASSERT(isMainThread());
+        ASSERT_UNUSED(context, context.isDocument());
</ins><span class="cx"> 
</span><del>-    if (!thisPtr-&gt;m_mainThreadLoader)
-        return;
-    thisPtr-&gt;m_mainThreadLoader-&gt;cancel();
-    thisPtr-&gt;m_mainThreadLoader = 0;
-}
</del><ins>+        if (!m_mainThreadLoader)
+            return;
+        m_mainThreadLoader-&gt;cancel();
+        m_mainThreadLoader = nullptr;
+    });
</ins><span class="cx"> 
</span><del>-void WorkerThreadableLoader::MainThreadBridge::cancel()
-{
-    m_loaderProxy.postTaskToLoader(CrossThreadTask(&amp;MainThreadBridge::mainThreadCancel, AllowCrossThreadAccess(this)));
</del><span class="cx">     ThreadableLoaderClientWrapper* clientWrapper = m_workerClientWrapper.get();
</span><span class="cx">     if (!clientWrapper-&gt;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-&gt;clearClient();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void workerGlobalScopeDidSendData(ScriptExecutionContext&amp; context, RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper, unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
-{
-    ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-    workerClientWrapper-&gt;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(&amp;workerGlobalScopeDidSendData, m_workerClientWrapper, bytesSent, totalBytesToBeSent), m_taskMode);
</del><ins>+    RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, bytesSent, totalBytesToBeSent] (ScriptExecutionContext&amp; context) {
+        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+        workerClientWrapper-&gt;didSendData(bytesSent, totalBytesToBeSent);
+    }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void workerGlobalScopeDidReceiveResponse(ScriptExecutionContext&amp; context, RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper, unsigned long identifier, PassOwnPtr&lt;CrossThreadResourceResponseData&gt; responseData)
-{
-    ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-    OwnPtr&lt;ResourceResponse&gt; response(ResourceResponse::adopt(responseData));
-    workerClientWrapper-&gt;didReceiveResponse(identifier, *response);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didReceiveResponse(unsigned long identifier, const ResourceResponse&amp; response)
</span><span class="cx"> {
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&amp;workerGlobalScopeDidReceiveResponse, m_workerClientWrapper, identifier, response), m_taskMode);
</del><ins>+    RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    CrossThreadResourceResponseData* responseData = response.copyData().leakPtr();
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, identifier, responseData] (ScriptExecutionContext&amp; context) {
+        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+        OwnPtr&lt;ResourceResponse&gt; response(ResourceResponse::adopt(adoptPtr(responseData)));
+        workerClientWrapper-&gt;didReceiveResponse(identifier, *response);
+    }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void workerGlobalScopeDidReceiveData(ScriptExecutionContext&amp; context, RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper, PassOwnPtr&lt;Vector&lt;char&gt;&gt; vectorData)
-{
-    ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-    workerClientWrapper-&gt;didReceiveData(vectorData-&gt;data(), vectorData-&gt;size());
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didReceiveData(const char* data, int dataLength)
</span><span class="cx"> {
</span><del>-    OwnPtr&lt;Vector&lt;char&gt;&gt; vector = adoptPtr(new Vector&lt;char&gt;(dataLength)); // needs to be an OwnPtr for usage with CrossThreadTask.
-    memcpy(vector-&gt;data(), data, dataLength);
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&amp;workerGlobalScopeDidReceiveData, m_workerClientWrapper, vector.release()), m_taskMode);
</del><ins>+    RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    Vector&lt;char&gt;* vectorPtr = new Vector&lt;char&gt;(dataLength);
+    memcpy(vectorPtr-&gt;data(), data, dataLength);
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, vectorPtr] (ScriptExecutionContext&amp; context) {
+        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+        OwnPtr&lt;Vector&lt;char&gt;&gt; vector = adoptPtr(vectorPtr);
+        workerClientWrapper-&gt;didReceiveData(vector-&gt;data(), vector-&gt;size());
+    }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void workerGlobalScopeDidFinishLoading(ScriptExecutionContext&amp; context, RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper, unsigned long identifier, double finishTime)
-{
-    ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-    workerClientWrapper-&gt;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(&amp;workerGlobalScopeDidFinishLoading, m_workerClientWrapper, identifier, finishTime), m_taskMode);
</del><ins>+    RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, identifier, finishTime] (ScriptExecutionContext&amp; context) {
+        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+        workerClientWrapper-&gt;didFinishLoading(identifier, finishTime);
+    }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void workerGlobalScopeDidFail(ScriptExecutionContext&amp; context, RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper, const ResourceError&amp; error)
-{
-    ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-    workerClientWrapper-&gt;didFail(error);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didFail(const ResourceError&amp; error)
</span><span class="cx"> {
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&amp;workerGlobalScopeDidFail, m_workerClientWrapper, error), m_taskMode);
</del><ins>+    RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    ResourceError errorCopy = error.copy();
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, errorCopy] (ScriptExecutionContext&amp; context) {
+        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+        workerClientWrapper-&gt;didFail(errorCopy);
+    }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void workerGlobalScopeDidFailAccessControlCheck(ScriptExecutionContext&amp; context, PassRefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper, const ResourceError&amp; error)
-{
-    ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-    workerClientWrapper-&gt;didFailAccessControlCheck(error);
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck(const ResourceError&amp; error)
</span><span class="cx"> {
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&amp;workerGlobalScopeDidFailAccessControlCheck, m_workerClientWrapper, error), m_taskMode);
</del><ins>+    RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    ResourceError errorCopy = error.copy();
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, errorCopy] (ScriptExecutionContext&amp; context) {
+        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+        workerClientWrapper-&gt;didFailAccessControlCheck(errorCopy);
+    }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void workerGlobalScopeDidFailRedirectCheck(ScriptExecutionContext&amp; context, RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper)
-{
-    ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-    workerClientWrapper-&gt;didFailRedirectCheck();
-}
-
</del><span class="cx"> void WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck()
</span><span class="cx"> {
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope(CrossThreadTask(&amp;workerGlobalScopeDidFailRedirectCheck, m_workerClientWrapper), m_taskMode);
</del><ins>+    RefPtr&lt;ThreadableLoaderClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper] (ScriptExecutionContext&amp; context) {
+        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+        workerClientWrapper-&gt;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 &quot;ThreadableLoaderClientWrapper::ref&quot; (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&lt;ThreadableLoaderClientWrapper&gt; 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&amp;, MainThreadBridge*);
-            ~MainThreadBridge();
-
</del><span class="cx">             static void mainThreadCreateLoader(ScriptExecutionContext&amp;, MainThreadBridge*, PassOwnPtr&lt;CrossThreadResourceRequestData&gt;, ThreadableLoaderOptions, const String&amp; outgoingReferrer);
</span><del>-            static void mainThreadCancel(ScriptExecutionContext&amp;, 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&amp;) 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 &quot;CachedImageClient.h&quot;
</span><span class="cx"> #include &quot;CachedResource.h&quot;
</span><span class="cx"> #include &quot;CachedResourceHandle.h&quot;
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderTypes.h&quot;
</span><span class="lines">@@ -754,15 +753,14 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(context);
</span><span class="cx">     if (is&lt;WorkerGlobalScope&gt;(*context)) {
</span><del>-        downcast&lt;WorkerGlobalScope&gt;(*context).thread().workerLoaderProxy().postTaskToLoader(CrossThreadTask(&amp;crossThreadRemoveRequestFromCache, request, sessionID));
</del><ins>+        CrossThreadResourceRequestData* requestData = request.copyData().leakPtr();
+        downcast&lt;WorkerGlobalScope&gt;(*context).thread().workerLoaderProxy().postTaskToLoader([requestData, sessionID] (ScriptExecutionContext&amp; context) {
+            OwnPtr&lt;ResourceRequest&gt; request(ResourceRequest::adopt(adoptPtr(requestData)));
+            removeRequestFromCache(&amp;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&amp; request, SessionID sessionID)
-{
</del><span class="cx">     if (CachedResource* resource = memoryCache()-&gt;resourceForRequest(request, sessionID))
</span><span class="cx">         memoryCache()-&gt;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&lt;WorkerGlobalScope&gt;(*context)) {
</span><del>-        downcast&lt;WorkerGlobalScope&gt;(*context).thread().workerLoaderProxy().postTaskToLoader(CrossThreadTask(&amp;crossThreadRemoveRequestFromSessionCaches, request));
</del><ins>+        CrossThreadResourceRequestData* requestData = request.copyData().leakPtr();
+        downcast&lt;WorkerGlobalScope&gt;(*context).thread().workerLoaderProxy().postTaskToLoader([requestData] (ScriptExecutionContext&amp; context) {
+            OwnPtr&lt;ResourceRequest&gt; request(ResourceRequest::adopt(adoptPtr(requestData)));
+            MemoryCache::removeRequestFromSessionCaches(&amp;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&amp; request)
-{
</del><span class="cx">     for (auto&amp; resources : memoryCache()-&gt;m_sessionResources) {
</span><span class="cx">         if (CachedResource* resource = memoryCache()-&gt;resourceForRequestImpl(request, *resources.value))
</span><span class="cx">         memoryCache()-&gt;remove(resource);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MemoryCache::crossThreadRemoveRequestFromCache(ScriptExecutionContext&amp; context, PassOwnPtr&lt;WebCore::CrossThreadResourceRequestData&gt; requestData, SessionID sessionID)
-{
-    OwnPtr&lt;ResourceRequest&gt; request(ResourceRequest::adopt(requestData));
-    MemoryCache::removeRequestFromCacheImpl(&amp;context, *request, sessionID);
-}
-
-void MemoryCache::crossThreadRemoveRequestFromSessionCaches(ScriptExecutionContext&amp; context, PassOwnPtr&lt;WebCore::CrossThreadResourceRequestData&gt; requestData)
-{
-    OwnPtr&lt;ResourceRequest&gt; request(ResourceRequest::adopt(requestData));
-    MemoryCache::removeRequestFromSessionCaches(&amp;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&amp;, CachedResourceMap&amp;);
</span><del>-    static void removeRequestFromCacheImpl(ScriptExecutionContext*, const ResourceRequest&amp;, SessionID);
-    static void removeRequestFromSessionCachesImpl(ScriptExecutionContext*, const ResourceRequest&amp;);
-    static void crossThreadRemoveRequestFromCache(ScriptExecutionContext&amp;, PassOwnPtr&lt;CrossThreadResourceRequestData&gt;, SessionID);
-    static void crossThreadRemoveRequestFromSessionCaches(ScriptExecutionContext&amp;, PassOwnPtr&lt;CrossThreadResourceRequestData&gt;);
</del><span class="cx"> 
</span><span class="cx">     CachedResourceMap&amp; getSessionMap(SessionID);
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>