<!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>[174581] 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/174581">174581</a></dd>
<dt>Author</dt> <dd>zandobersek@gmail.com</dd>
<dt>Date</dt> <dd>2014-10-10 03:27:39 -0700 (Fri, 10 Oct 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Avoid defaulting to capture-by-value for C++11 lambdas in WebCore
https://bugs.webkit.org/show_bug.cgi?id=137565

Reviewed by Darin Adler.

C++11 lambas should avoid defaulting to capturing used variables by value as that
can lead to unintended captures that, in worst cases, result in lambdas that are
not self-contained and end up operating on dangling pointers.

Explicitly stating the variables that are to be copied by value can also serve as
a checklist of variables that are actually intented for use in the lambda body. 

* Modules/quota/StorageErrorCallback.cpp:
(WebCore::StorageErrorCallback::CallbackTask::CallbackTask):
* Modules/webdatabase/Database.cpp:
(WebCore::Database::~Database):
(WebCore::Database::runTransaction):
(WebCore::Database::scheduleTransactionCallback):
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::openDatabase):
* Modules/webdatabase/SQLCallbackWrapper.h:
(WebCore::SQLCallbackWrapper::clear):
* Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
(WebCore::ThreadableWebSocketChannelClientWrapper::didConnect):
(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage):
(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData):
(WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount):
(WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake):
(WebCore::ThreadableWebSocketChannelClientWrapper::didClose):
(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):
(WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks):
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::Peer::send):
(WebCore::WorkerThreadableWebSocketChannel::Peer::bufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessage):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didStartClosingHandshake):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didClose):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::bufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::close):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::fail):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::disconnect):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::suspend):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::resume):
* bindings/js/JSCallbackData.h:
(WebCore::DeleteCallbackDataTask::DeleteCallbackDataTask):
* bindings/js/JSDOMGlobalObjectTask.cpp:
(WebCore::JSGlobalObjectTask::JSGlobalObjectTask):
* dom/ScriptExecutionContext.h:
(WebCore::ScriptExecutionContext::AddConsoleMessageTask::AddConsoleMessageTask):
* dom/StringCallback.cpp:
(WebCore::StringCallback::scheduleCallback):
* fileapi/FileReader.cpp:
(WebCore::FileReader::abort):
* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::postListenerTask):
* workers/DefaultSharedWorkerRepository.cpp:
(WebCore::SharedWorkerProxy::postExceptionToWorkerObject):
(WebCore::SharedWorkerProxy::postConsoleMessageToWorkerObject):
(WebCore::SharedWorkerConnectTask::SharedWorkerConnectTask):
* workers/WorkerEventQueue.cpp:
(WebCore::WorkerEventQueue::enqueueEvent):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope):
(WebCore::WorkerMessagingProxy::postExceptionToWorkerObject):
(WebCore::WorkerMessagingProxy::postConsoleMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::notifyNetworkStateChange):
(WebCore::WorkerMessagingProxy::postMessageToPageInspector):
(WebCore::WorkerMessagingProxy::confirmMessageFromWorkerObject):
(WebCore::WorkerMessagingProxy::reportPendingActivity):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesquotaStorageErrorCallbackcpp">trunk/Source/WebCore/Modules/quota/StorageErrorCallback.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebdatabaseDatabasecpp">trunk/Source/WebCore/Modules/webdatabase/Database.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebdatabaseDatabaseManagercpp">trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebdatabaseSQLCallbackWrapperh">trunk/Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrappercpp">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelcpp">trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCallbackDatah">trunk/Source/WebCore/bindings/js/JSCallbackData.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMGlobalObjectTaskcpp">trunk/Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp</a></li>
<li><a href="#trunkSourceWebCoredomScriptExecutionContexth">trunk/Source/WebCore/dom/ScriptExecutionContext.h</a></li>
<li><a href="#trunkSourceWebCoredomStringCallbackcpp">trunk/Source/WebCore/dom/StringCallback.cpp</a></li>
<li><a href="#trunkSourceWebCorefileapiFileReadercpp">trunk/Source/WebCore/fileapi/FileReader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheGroupcpp">trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersDefaultSharedWorkerRepositorycpp">trunk/Source/WebCore/workers/DefaultSharedWorkerRepository.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerEventQueuecpp">trunk/Source/WebCore/workers/WorkerEventQueue.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerMessagingProxycpp">trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/ChangeLog        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -1,5 +1,85 @@
</span><span class="cx"> 2014-10-10  Zan Dobersek  &lt;zdobersek@igalia.com&gt;
</span><span class="cx"> 
</span><ins>+        Avoid defaulting to capture-by-value for C++11 lambdas in WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=137565
+
+        Reviewed by Darin Adler.
+
+        C++11 lambas should avoid defaulting to capturing used variables by value as that
+        can lead to unintended captures that, in worst cases, result in lambdas that are
+        not self-contained and end up operating on dangling pointers.
+
+        Explicitly stating the variables that are to be copied by value can also serve as
+        a checklist of variables that are actually intented for use in the lambda body. 
+
+        * Modules/quota/StorageErrorCallback.cpp:
+        (WebCore::StorageErrorCallback::CallbackTask::CallbackTask):
+        * Modules/webdatabase/Database.cpp:
+        (WebCore::Database::~Database):
+        (WebCore::Database::runTransaction):
+        (WebCore::Database::scheduleTransactionCallback):
+        * Modules/webdatabase/DatabaseManager.cpp:
+        (WebCore::DatabaseManager::openDatabase):
+        * Modules/webdatabase/SQLCallbackWrapper.h:
+        (WebCore::SQLCallbackWrapper::clear):
+        * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didConnect):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didClose):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks):
+        * Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::send):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::bufferedAmount):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessage):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didStartClosingHandshake):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didClose):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::bufferedAmount):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::close):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::fail):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::disconnect):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::suspend):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::resume):
+        * bindings/js/JSCallbackData.h:
+        (WebCore::DeleteCallbackDataTask::DeleteCallbackDataTask):
+        * bindings/js/JSDOMGlobalObjectTask.cpp:
+        (WebCore::JSGlobalObjectTask::JSGlobalObjectTask):
+        * dom/ScriptExecutionContext.h:
+        (WebCore::ScriptExecutionContext::AddConsoleMessageTask::AddConsoleMessageTask):
+        * dom/StringCallback.cpp:
+        (WebCore::StringCallback::scheduleCallback):
+        * fileapi/FileReader.cpp:
+        (WebCore::FileReader::abort):
+        * loader/appcache/ApplicationCacheGroup.cpp:
+        (WebCore::ApplicationCacheGroup::postListenerTask):
+        * workers/DefaultSharedWorkerRepository.cpp:
+        (WebCore::SharedWorkerProxy::postExceptionToWorkerObject):
+        (WebCore::SharedWorkerProxy::postConsoleMessageToWorkerObject):
+        (WebCore::SharedWorkerConnectTask::SharedWorkerConnectTask):
+        * workers/WorkerEventQueue.cpp:
+        (WebCore::WorkerEventQueue::enqueueEvent):
+        * workers/WorkerMessagingProxy.cpp:
+        (WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
+        (WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope):
+        (WebCore::WorkerMessagingProxy::postExceptionToWorkerObject):
+        (WebCore::WorkerMessagingProxy::postConsoleMessageToWorkerObject):
+        (WebCore::WorkerMessagingProxy::notifyNetworkStateChange):
+        (WebCore::WorkerMessagingProxy::postMessageToPageInspector):
+        (WebCore::WorkerMessagingProxy::confirmMessageFromWorkerObject):
+        (WebCore::WorkerMessagingProxy::reportPendingActivity):
+
+2014-10-10  Zan Dobersek  &lt;zdobersek@igalia.com&gt;
+
</ins><span class="cx">         Remove MainThreadTask
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=137563
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesquotaStorageErrorCallbackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/quota/StorageErrorCallback.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/quota/StorageErrorCallback.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/Modules/quota/StorageErrorCallback.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> StorageErrorCallback::CallbackTask::CallbackTask(PassRefPtr&lt;StorageErrorCallback&gt; callback, ExceptionCode ec)
</span><del>-    : ScriptExecutionContext::Task([=] (ScriptExecutionContext*) {
</del><ins>+    : ScriptExecutionContext::Task([callback, ec] (ScriptExecutionContext*) {
</ins><span class="cx">         if (callback)
</span><span class="cx">             callback-&gt;handleEvent(DOMCoreException::create(ExceptionCodeDescription(ec)).get());
</span><span class="cx">     })
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/Database.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/Database.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/Modules/webdatabase/Database.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">         // Grab a pointer to the script execution here because we're releasing it when we pass it to
</span><span class="cx">         // DerefContextTask::create.
</span><span class="cx">         PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = m_scriptExecutionContext.release();
</span><del>-        passedContext-&gt;postTask({ScriptExecutionContext::Task::CleanupTask, [=] (ScriptExecutionContext&amp; context) {
</del><ins>+        passedContext-&gt;postTask({ScriptExecutionContext::Task::CleanupTask, [passedContext] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">             ASSERT_UNUSED(context, &amp;context == passedContext);
</span><span class="cx">             RefPtr&lt;ScriptExecutionContext&gt; scriptExecutionContext(passedContext);
</span><span class="cx">         }});
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;SQLTransactionBackend&gt; transactionBackend(backend()-&gt;runTransaction(transaction.release(), readOnly, changeVersionData));
</span><span class="cx">     if (!transactionBackend &amp;&amp; errorCallbackProtector)
</span><del>-        scriptExecutionContext()-&gt;postTask([=] (ScriptExecutionContext&amp;) {
</del><ins>+        scriptExecutionContext()-&gt;postTask([errorCallbackProtector] (ScriptExecutionContext&amp;) {
</ins><span class="cx">             errorCallbackProtector-&gt;handleEvent(SQLError::create(SQLError::UNKNOWN_ERR, &quot;database has been closed&quot;).get());
</span><span class="cx">         });
</span><span class="cx"> }
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> void Database::scheduleTransactionCallback(SQLTransaction* transaction)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;SQLTransaction&gt; transactionProtector(transaction);
</span><del>-    m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp;) {
</del><ins>+    m_scriptExecutionContext-&gt;postTask([transactionProtector] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         transactionProtector-&gt;performPendingCallback();
</span><span class="cx">     });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseDatabaseManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -311,7 +311,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (backend-&gt;isNew() &amp;&amp; creationCallback.get()) {
</span><span class="cx">         LOG(StorageAPI, &quot;Scheduling DatabaseCreationCallbackTask for database %p\n&quot;, database.get());
</span><del>-        database-&gt;m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp;) {
</del><ins>+        database-&gt;m_scriptExecutionContext-&gt;postTask([creationCallback, database] (ScriptExecutionContext&amp;) {
</ins><span class="cx">             creationCallback-&gt;handleEvent(database.get());
</span><span class="cx">         });
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseSQLCallbackWrapperh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -73,11 +73,14 @@
</span><span class="cx">             scriptExecutionContextPtr = m_scriptExecutionContext.release().leakRef();
</span><span class="cx">             callback = m_callback.release().leakRef();
</span><span class="cx">         }
</span><del>-        scriptExecutionContextPtr-&gt;postTask({ ScriptExecutionContext::Task::CleanupTask, [=] (ScriptExecutionContext&amp; context) {
-            ASSERT_UNUSED(context, &amp;context == scriptExecutionContextPtr &amp;&amp; context.isContextThread());
-            callback-&gt;deref();
-            scriptExecutionContextPtr-&gt;deref();
-        } });
</del><ins>+        scriptExecutionContextPtr-&gt;postTask({
+            ScriptExecutionContext::Task::CleanupTask,
+            [callback, scriptExecutionContextPtr] (ScriptExecutionContext&amp; context) {
+                ASSERT_UNUSED(context, &amp;context == scriptExecutionContextPtr &amp;&amp; context.isContextThread());
+                callback-&gt;deref();
+                scriptExecutionContextPtr-&gt;deref();
+            }
+        });
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;T&gt; unwrap()
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrappercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> void ThreadableWebSocketChannelClientWrapper::didConnect()
</span><span class="cx"> {
</span><span class="cx">     ref();
</span><del>-    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([this] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         if (m_client)
</span><span class="cx">             m_client-&gt;didConnect();
</span><span class="cx">         deref();
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> {
</span><span class="cx">     ref();
</span><span class="cx">     String messageCopy = message.isolatedCopy();
</span><del>-    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([this, message] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         if (m_client)
</span><span class="cx">             m_client-&gt;didReceiveMessage(message);
</span><span class="cx">         deref();
</span><span class="lines">@@ -183,7 +183,7 @@
</span><span class="cx"> void ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData(PassOwnPtr&lt;Vector&lt;char&gt;&gt; binaryData)
</span><span class="cx"> {
</span><span class="cx">     ref();
</span><del>-    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([this, binaryData] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         if (m_client)
</span><span class="cx">             m_client-&gt;didReceiveBinaryData(binaryData);
</span><span class="cx">         deref();
</span><span class="lines">@@ -196,7 +196,7 @@
</span><span class="cx"> void ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount(unsigned long bufferedAmount)
</span><span class="cx"> {
</span><span class="cx">     ref();
</span><del>-    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([this, bufferedAmount] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         if (m_client)
</span><span class="cx">             m_client-&gt;didUpdateBufferedAmount(bufferedAmount);
</span><span class="cx">         deref();
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> void ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake()
</span><span class="cx"> {
</span><span class="cx">     ref();
</span><del>-    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([this] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         if (m_client)
</span><span class="cx">             m_client-&gt;didStartClosingHandshake();
</span><span class="cx">         deref();
</span><span class="lines">@@ -223,11 +223,12 @@
</span><span class="cx"> {
</span><span class="cx">     ref();
</span><span class="cx">     String reasonCopy = reason.isolatedCopy();
</span><del>-    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([=](ScriptExecutionContext&amp;) {
-        if (m_client)
-            m_client-&gt;didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy);
-        deref();
-    }));
</del><ins>+    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;(
+        [this, unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy] (ScriptExecutionContext&amp;) {
+            if (m_client)
+                m_client-&gt;didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy);
+            deref();
+        }));
</ins><span class="cx"> 
</span><span class="cx">     if (!m_suspended)
</span><span class="cx">         processPendingTasks();
</span><span class="lines">@@ -236,7 +237,7 @@
</span><span class="cx"> void ThreadableWebSocketChannelClientWrapper::didReceiveMessageError()
</span><span class="cx"> {
</span><span class="cx">     ref();
</span><del>-    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([this] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         if (m_client)
</span><span class="cx">             m_client-&gt;didReceiveMessageError();
</span><span class="cx">         deref();
</span><span class="lines">@@ -265,7 +266,7 @@
</span><span class="cx">         // When a synchronous operation is in progress (i.e. the execution stack contains
</span><span class="cx">         // WorkerThreadableWebSocketChannel::waitForMethodCompletion()), we cannot invoke callbacks in this run loop.
</span><span class="cx">         ref();
</span><del>-        m_context-&gt;postTask([=](ScriptExecutionContext&amp; context) {
</del><ins>+        m_context-&gt;postTask([this] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">             ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">             processPendingTasks();
</span><span class="cx">             deref();
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -176,7 +176,7 @@
</span><span class="cx"> 
</span><span class="cx">     ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel-&gt;send(message);
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, sendRequestResult] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         workerClientWrapper-&gt;setSendRequestResult(sendRequestResult);
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span><span class="lines">@@ -189,7 +189,7 @@
</span><span class="cx"> 
</span><span class="cx">     ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel-&gt;send(binaryData, 0, binaryData.byteLength());
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, sendRequestResult] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         workerClientWrapper-&gt;setSendRequestResult(sendRequestResult);
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx"> 
</span><span class="cx">     ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel-&gt;send(binaryData);
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp;) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, sendRequestResult] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         workerClientWrapper-&gt;setSendRequestResult(sendRequestResult);
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span><span class="lines">@@ -215,7 +215,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><span class="cx">     unsigned long bufferedAmount = m_mainWebSocketChannel-&gt;bufferedAmount();
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, bufferedAmount] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;setBufferedAmount(bufferedAmount);
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -269,7 +269,7 @@
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><span class="cx">     String subprotocolCopy = m_mainWebSocketChannel-&gt;subprotocol().isolatedCopy();
</span><span class="cx">     String extensionsCopy = m_mainWebSocketChannel-&gt;extensions().isolatedCopy();
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, subprotocolCopy, extensionsCopy] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;setSubprotocol(subprotocolCopy);
</span><span class="cx">         workerClientWrapper-&gt;setExtensions(extensionsCopy);
</span><span class="lines">@@ -283,7 +283,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><span class="cx">     String messageCopy = message.isolatedCopy();
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, messageCopy] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didReceiveMessage(messageCopy);
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -294,7 +294,7 @@
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, binaryData] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didReceiveBinaryData(binaryData);
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -305,7 +305,7 @@
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, bufferedAmount] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didUpdateBufferedAmount(bufferedAmount);
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -316,7 +316,7 @@
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didStartClosingHandshake();
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -329,10 +329,11 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><span class="cx">     String reasonCopy = reason.isolatedCopy();
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
-        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-        workerClientWrapper-&gt;didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy);
-    }, m_taskMode);
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope(
+        [workerClientWrapper, unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy] (ScriptExecutionContext&amp; context) {
+            ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+            workerClientWrapper-&gt;didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy);
+        }, m_taskMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError()
</span><span class="lines">@@ -340,7 +341,7 @@
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didReceiveMessageError();
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -369,18 +370,22 @@
</span><span class="cx">     RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; clientWrapper = prpClientWrapper;
</span><span class="cx"> 
</span><span class="cx">     Peer* peerPtr = Peer::create(clientWrapper, *loaderProxy, &amp;context, taskMode);
</span><del>-    bool sent = loaderProxy-&gt;postTaskForModeToWorkerGlobalScope({ ScriptExecutionContext::Task::CleanupTask, [=] (ScriptExecutionContext&amp; context) {
-        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
-        if (clientWrapper-&gt;failedWebSocketChannelCreation()) {
-            // If Bridge::initialize() quitted earlier, we need to kick mainThreadDestroy() to delete the peer.
-            loaderProxy-&gt;postTaskToLoader([=](ScriptExecutionContext&amp; context) {
-                ASSERT(isMainThread());
-                ASSERT_UNUSED(context, context.isDocument());
-                delete peerPtr;
-            });
-        } else
-            clientWrapper-&gt;didCreateWebSocketChannel(peerPtr);
-    } }, taskMode);
</del><ins>+    bool sent = loaderProxy-&gt;postTaskForModeToWorkerGlobalScope({
+        ScriptExecutionContext::Task::CleanupTask,
+        [clientWrapper, loaderProxy, peerPtr] (ScriptExecutionContext&amp; context) {
+            ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+            if (clientWrapper-&gt;failedWebSocketChannelCreation()) {
+                // If Bridge::initialize() quitted earlier, we need to kick mainThreadDestroy() to delete the peer.
+                loaderProxy-&gt;postTaskToLoader([peerPtr] (ScriptExecutionContext&amp; context) {
+                    ASSERT(isMainThread());
+                    ASSERT_UNUSED(context, context.isDocument());
+                    delete peerPtr;
+                });
+            } else
+                clientWrapper-&gt;didCreateWebSocketChannel(peerPtr);
+        }
+    }, taskMode);
+
</ins><span class="cx">     if (!sent) {
</span><span class="cx">         clientWrapper-&gt;clearPeer();
</span><span class="cx">         delete peerPtr;
</span><span class="lines">@@ -409,12 +414,12 @@
</span><span class="cx">     Peer* peer = m_peer;
</span><span class="cx">     URL urlCopy = url.copy();
</span><span class="cx">     String protocolCopy = protocol.isolatedCopy();
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer, urlCopy, protocolCopy] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="cx"> 
</span><del>-        peer-&gt;connect(url, protocol);
</del><ins>+        peer-&gt;connect(urlCopy, protocolCopy);
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -426,12 +431,12 @@
</span><span class="cx"> 
</span><span class="cx">     Peer* peer = m_peer;
</span><span class="cx">     String messageCopy = message.isolatedCopy();
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer, messageCopy] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="cx"> 
</span><del>-        peer-&gt;send(message);
</del><ins>+        peer-&gt;send(messageCopy);
</ins><span class="cx">     });
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Bridge&gt; protect(*this);
</span><span class="lines">@@ -454,7 +459,7 @@
</span><span class="cx">     setMethodNotCompleted();
</span><span class="cx"> 
</span><span class="cx">     Peer* peer = m_peer;
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer, dataPtr] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -482,7 +487,7 @@
</span><span class="cx">     URL urlCopy = binaryData.url().copy();
</span><span class="cx">     String typeCopy = binaryData.type().isolatedCopy();
</span><span class="cx">     long long size = binaryData.size();
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer, urlCopy, typeCopy, size] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -506,7 +511,7 @@
</span><span class="cx">     setMethodNotCompleted();
</span><span class="cx"> 
</span><span class="cx">     Peer* peer = m_peer;
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -529,7 +534,7 @@
</span><span class="cx"> 
</span><span class="cx">     Peer* peer = m_peer;
</span><span class="cx">     String reasonCopy = reason.isolatedCopy();
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer, code, reasonCopy] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -545,12 +550,12 @@
</span><span class="cx"> 
</span><span class="cx">     Peer* peer = m_peer;
</span><span class="cx">     String reasonCopy = reason.isolatedCopy();
</span><del>-    m_loaderProxy.postTaskToLoader([=] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer, reasonCopy] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="cx"> 
</span><del>-        peer-&gt;fail(reason);
</del><ins>+        peer-&gt;fail(reasonCopy);
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -559,7 +564,7 @@
</span><span class="cx">     clearClientWrapper();
</span><span class="cx">     if (m_peer) {
</span><span class="cx">         Peer* peer = m_peer;
</span><del>-        m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+        m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">             ASSERT(isMainThread());
</span><span class="cx">             ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">             delete peer;
</span><span class="lines">@@ -575,7 +580,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     Peer* peer = m_peer;
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -590,7 +595,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     Peer* peer = m_peer;
</span><del>-    m_loaderProxy.postTaskToLoader([=](ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCallbackDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCallbackData.h (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCallbackData.h        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/bindings/js/JSCallbackData.h        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> class DeleteCallbackDataTask : public ScriptExecutionContext::Task {
</span><span class="cx"> public:
</span><span class="cx">     DeleteCallbackDataTask(JSCallbackData* data)
</span><del>-        : ScriptExecutionContext::Task({ ScriptExecutionContext::Task::CleanupTask, [=] (ScriptExecutionContext&amp;) {
</del><ins>+        : ScriptExecutionContext::Task({ ScriptExecutionContext::Task::CleanupTask, [data] (ScriptExecutionContext&amp;) {
</ins><span class="cx">             delete data;
</span><span class="cx">         } })
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMGlobalObjectTaskcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx">     : ScriptExecutionContext::Task(nullptr)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;JSGlobalObjectCallback&gt; callback = JSGlobalObjectCallback::create(globalObject, task);
</span><del>-    m_task = [=] (ScriptExecutionContext&amp;) {
</del><ins>+    m_task = [callback] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         callback-&gt;call();
</span><span class="cx">     };
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomScriptExecutionContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ScriptExecutionContext.h (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ScriptExecutionContext.h        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/dom/ScriptExecutionContext.h        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">     class AddConsoleMessageTask : public Task {
</span><span class="cx">     public:
</span><span class="cx">         AddConsoleMessageTask(MessageSource source, MessageLevel level, const String&amp; message)
</span><del>-            : Task([=] (ScriptExecutionContext&amp; context) {
</del><ins>+            : Task([source, level, message] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">                 context.addConsoleMessage(source, level, message);
</span><span class="cx">             })
</span><span class="cx">         {
</span></span></pre></div>
<a id="trunkSourceWebCoredomStringCallbackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/StringCallback.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/StringCallback.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/dom/StringCallback.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -39,8 +39,8 @@
</span><span class="cx"> void StringCallback::scheduleCallback(ScriptExecutionContext* context, const String&amp; data)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;StringCallback&gt; protector(this);
</span><del>-    context-&gt;postTask([=] (ScriptExecutionContext&amp;) {
-        this-&gt;handleEvent(data);
</del><ins>+    context-&gt;postTask([protector, data] (ScriptExecutionContext&amp;) {
+        protector-&gt;handleEvent(data);
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiFileReadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/FileReader.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/FileReader.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/fileapi/FileReader.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx">     m_aborting = true;
</span><span class="cx"> 
</span><span class="cx">     // Schedule to have the abort done later since abort() might be called from the event handler and we do not want the resource loading code to be in the stack.
</span><del>-    scriptExecutionContext()-&gt;postTask([=](ScriptExecutionContext&amp;) {
</del><ins>+    scriptExecutionContext()-&gt;postTask([this] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         ASSERT(m_state != DONE);
</span><span class="cx"> 
</span><span class="cx">         terminate();
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheGroupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -1117,7 +1117,7 @@
</span><span class="cx">     ASSERT(frame-&gt;loader().documentLoader() == loader);
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;DocumentLoader&gt; loaderProtector(loader);
</span><del>-    frame-&gt;document()-&gt;postTask([=] (ScriptExecutionContext&amp; context) {
</del><ins>+    frame-&gt;document()-&gt;postTask([loaderProtector, eventID, progressTotal, progressDone] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         Frame* frame = loaderProtector-&gt;frame();
</span><span class="cx">         if (!frame)
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersDefaultSharedWorkerRepositorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/DefaultSharedWorkerRepository.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/DefaultSharedWorkerRepository.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/workers/DefaultSharedWorkerRepository.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">     String sourceURLCopy = sourceURL.isolatedCopy();
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; document : m_workerDocuments)
</span><del>-        document-&gt;postTask([=] (ScriptExecutionContext&amp; context) {
</del><ins>+        document-&gt;postTask([errorMessageCopy, lineNumber, columnNumber, sourceURLCopy] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">             context.reportException(errorMessageCopy, lineNumber, columnNumber, sourceURLCopy, nullptr);
</span><span class="cx">         });
</span><span class="cx"> }
</span><span class="lines">@@ -197,7 +197,7 @@
</span><span class="cx">     String sourceURLCopy = sourceURL.isolatedCopy();
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; document : m_workerDocuments)
</span><del>-        document-&gt;postTask([=] (ScriptExecutionContext&amp; context) {
</del><ins>+        document-&gt;postTask([source, level, messageCopy, sourceURLCopy, lineNumber, columnNumber] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">             context.addConsoleMessage(source, level, messageCopy, sourceURLCopy, lineNumber, columnNumber);
</span><span class="cx">         });
</span><span class="cx"> }
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx"> class SharedWorkerConnectTask : public ScriptExecutionContext::Task {
</span><span class="cx"> public:
</span><span class="cx">     SharedWorkerConnectTask(MessagePortChannel* channel)
</span><del>-        : ScriptExecutionContext::Task([=] (ScriptExecutionContext&amp; context) {
</del><ins>+        : ScriptExecutionContext::Task([channel] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">             RefPtr&lt;MessagePort&gt; port = MessagePort::create(context);
</span><span class="cx">             port-&gt;entangle(std::unique_ptr&lt;MessagePortChannel&gt;(channel));
</span><span class="cx">             ASSERT_WITH_SECURITY_IMPLICATION(is&lt;WorkerGlobalScope&gt;(context));
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerEventQueuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerEventQueue.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerEventQueue.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/workers/WorkerEventQueue.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx"> 
</span><span class="cx">     EventDispatcher* eventDispatcherPtr = new EventDispatcher(event.get(), *this);
</span><span class="cx">     m_eventDispatcherMap.add(event, eventDispatcherPtr);
</span><del>-    m_scriptExecutionContext.postTask([=] (ScriptExecutionContext&amp;) {
</del><ins>+    m_scriptExecutionContext.postTask([eventDispatcherPtr] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         std::unique_ptr&lt;EventDispatcher&gt; eventDispatcher(eventDispatcherPtr);
</span><span class="cx">         eventDispatcher-&gt;dispatch();
</span><span class="cx">     });
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerMessagingProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp (174580 => 174581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp        2014-10-10 10:25:21 UTC (rev 174580)
+++ trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp        2014-10-10 10:27:39 UTC (rev 174581)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> void WorkerMessagingProxy::postMessageToWorkerObject(PassRefPtr&lt;SerializedScriptValue&gt; message, std::unique_ptr&lt;MessagePortChannelArray&gt; channels)
</span><span class="cx"> {
</span><span class="cx">     MessagePortChannelArray* channelsPtr = channels.release();
</span><del>-    m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_scriptExecutionContext-&gt;postTask([this, channelsPtr, message] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         Worker* workerObject = this-&gt;workerObject();
</span><span class="cx">         if (!workerObject || askedToTerminate())
</span><span class="cx">             return;
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     MessagePortChannelArray* channelsPtr = channels.release();
</span><del>-    ScriptExecutionContext::Task task([=] (ScriptExecutionContext&amp; scriptContext) {
</del><ins>+    ScriptExecutionContext::Task task([channelsPtr, message] (ScriptExecutionContext&amp; scriptContext) {
</ins><span class="cx">         ASSERT_WITH_SECURITY_IMPLICATION(scriptContext.isWorkerGlobalScope());
</span><span class="cx">         DedicatedWorkerGlobalScope&amp; context = static_cast&lt;DedicatedWorkerGlobalScope&amp;&gt;(scriptContext);
</span><span class="cx">         std::unique_ptr&lt;MessagePortArray&gt; ports = MessagePort::entanglePorts(scriptContext, std::unique_ptr&lt;MessagePortChannelArray&gt;(channelsPtr));
</span><span class="lines">@@ -148,7 +148,7 @@
</span><span class="cx"> {
</span><span class="cx">     String errorMessageCopy = errorMessage.isolatedCopy();
</span><span class="cx">     String sourceURLCopy = sourceURL.isolatedCopy();
</span><del>-    m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_scriptExecutionContext-&gt;postTask([this, errorMessageCopy, sourceURLCopy, lineNumber, columnNumber] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         Worker* workerObject = this-&gt;workerObject();
</span><span class="cx">         if (!workerObject)
</span><span class="cx">             return;
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx"> {
</span><span class="cx">     String messageCopy = message.isolatedCopy();
</span><span class="cx">     String sourceURLCopy = sourceURL.isolatedCopy();
</span><del>-    m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_scriptExecutionContext-&gt;postTask([this, source, level, messageCopy, sourceURLCopy, lineNumber, columnNumber] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         if (askedToTerminate())
</span><span class="cx">             return;
</span><span class="cx">         context.addConsoleMessage(source, level, messageCopy, sourceURLCopy, lineNumber, columnNumber);
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx">     if (!m_workerThread)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_workerThread-&gt;runLoop().postTask([=] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_workerThread-&gt;runLoop().postTask([isOnline] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         downcast&lt;WorkerGlobalScope&gt;(context).dispatchEvent(Event::create(isOnline ? eventNames().onlineEvent : eventNames().offlineEvent, false, false));
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="lines">@@ -295,7 +295,7 @@
</span><span class="cx"> void WorkerMessagingProxy::postMessageToPageInspector(const String&amp; message)
</span><span class="cx"> {
</span><span class="cx">     String messageCopy = message.isolatedCopy();
</span><del>-    m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp;) {
</del><ins>+    m_scriptExecutionContext-&gt;postTask([this, messageCopy] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         m_pageInspector-&gt;dispatchMessageFromWorker(messageCopy);
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="lines">@@ -303,7 +303,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WorkerMessagingProxy::confirmMessageFromWorkerObject(bool hasPendingActivity)
</span><span class="cx"> {
</span><del>-    m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp;) {
</del><ins>+    m_scriptExecutionContext-&gt;postTask([this, hasPendingActivity] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         reportPendingActivityInternal(true, hasPendingActivity);
</span><span class="cx">     });
</span><span class="cx">     // Will execute reportPendingActivityInternal() on context's thread.
</span><span class="lines">@@ -311,7 +311,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WorkerMessagingProxy::reportPendingActivity(bool hasPendingActivity)
</span><span class="cx"> {
</span><del>-    m_scriptExecutionContext-&gt;postTask([=] (ScriptExecutionContext&amp;) {
</del><ins>+    m_scriptExecutionContext-&gt;postTask([this, hasPendingActivity] (ScriptExecutionContext&amp;) {
</ins><span class="cx">         reportPendingActivityInternal(false, hasPendingActivity);
</span><span class="cx">     });
</span><span class="cx">     // Will execute reportPendingActivityInternal() on context's thread.
</span></span></pre>
</div>
</div>

</body>
</html>