<!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 <zdobersek@igalia.com>
</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 <zdobersek@igalia.com>
+
</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<StorageErrorCallback> 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->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<ScriptExecutionContext> passedContext = m_scriptExecutionContext.release();
</span><del>- passedContext->postTask({ScriptExecutionContext::Task::CleanupTask, [=] (ScriptExecutionContext& context) {
</del><ins>+ passedContext->postTask({ScriptExecutionContext::Task::CleanupTask, [passedContext] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, &context == passedContext);
</span><span class="cx"> RefPtr<ScriptExecutionContext> scriptExecutionContext(passedContext);
</span><span class="cx"> }});
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<SQLTransactionBackend> transactionBackend(backend()->runTransaction(transaction.release(), readOnly, changeVersionData));
</span><span class="cx"> if (!transactionBackend && errorCallbackProtector)
</span><del>- scriptExecutionContext()->postTask([=] (ScriptExecutionContext&) {
</del><ins>+ scriptExecutionContext()->postTask([errorCallbackProtector] (ScriptExecutionContext&) {
</ins><span class="cx"> errorCallbackProtector->handleEvent(SQLError::create(SQLError::UNKNOWN_ERR, "database has been closed").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<SQLTransaction> transactionProtector(transaction);
</span><del>- m_scriptExecutionContext->postTask([=] (ScriptExecutionContext&) {
</del><ins>+ m_scriptExecutionContext->postTask([transactionProtector] (ScriptExecutionContext&) {
</ins><span class="cx"> transactionProtector->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->isNew() && creationCallback.get()) {
</span><span class="cx"> LOG(StorageAPI, "Scheduling DatabaseCreationCallbackTask for database %p\n", database.get());
</span><del>- database->m_scriptExecutionContext->postTask([=] (ScriptExecutionContext&) {
</del><ins>+ database->m_scriptExecutionContext->postTask([creationCallback, database] (ScriptExecutionContext&) {
</ins><span class="cx"> creationCallback->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->postTask({ ScriptExecutionContext::Task::CleanupTask, [=] (ScriptExecutionContext& context) {
- ASSERT_UNUSED(context, &context == scriptExecutionContextPtr && context.isContextThread());
- callback->deref();
- scriptExecutionContextPtr->deref();
- } });
</del><ins>+ scriptExecutionContextPtr->postTask({
+ ScriptExecutionContext::Task::CleanupTask,
+ [callback, scriptExecutionContextPtr] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, &context == scriptExecutionContextPtr && context.isContextThread());
+ callback->deref();
+ scriptExecutionContextPtr->deref();
+ }
+ });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PassRefPtr<T> 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<ScriptExecutionContext::Task>([=](ScriptExecutionContext&) {
</del><ins>+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) {
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->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<ScriptExecutionContext::Task>([=](ScriptExecutionContext&) {
</del><ins>+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, message] (ScriptExecutionContext&) {
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->didReceiveMessage(message);
</span><span class="cx"> deref();
</span><span class="lines">@@ -183,7 +183,7 @@
</span><span class="cx"> void ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData(PassOwnPtr<Vector<char>> binaryData)
</span><span class="cx"> {
</span><span class="cx"> ref();
</span><del>- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([=](ScriptExecutionContext&) {
</del><ins>+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, binaryData] (ScriptExecutionContext&) {
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->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<ScriptExecutionContext::Task>([=](ScriptExecutionContext&) {
</del><ins>+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, bufferedAmount] (ScriptExecutionContext&) {
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->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<ScriptExecutionContext::Task>([=](ScriptExecutionContext&) {
</del><ins>+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) {
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->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<ScriptExecutionContext::Task>([=](ScriptExecutionContext&) {
- if (m_client)
- m_client->didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy);
- deref();
- }));
</del><ins>+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>(
+ [this, unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy] (ScriptExecutionContext&) {
+ if (m_client)
+ m_client->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<ScriptExecutionContext::Task>([=](ScriptExecutionContext&) {
</del><ins>+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) {
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->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->postTask([=](ScriptExecutionContext& context) {
</del><ins>+ m_context->postTask([this] (ScriptExecutionContext& 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->send(message);
</span><span class="cx"> RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, sendRequestResult] (ScriptExecutionContext&) {
</ins><span class="cx"> workerClientWrapper->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->send(binaryData, 0, binaryData.byteLength());
</span><span class="cx"> RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, sendRequestResult] (ScriptExecutionContext&) {
</ins><span class="cx"> workerClientWrapper->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->send(binaryData);
</span><span class="cx"> RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext&) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, sendRequestResult] (ScriptExecutionContext&) {
</ins><span class="cx"> workerClientWrapper->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<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><span class="cx"> unsigned long bufferedAmount = m_mainWebSocketChannel->bufferedAmount();
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, bufferedAmount] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx"> workerClientWrapper->setBufferedAmount(bufferedAmount);
</span><span class="cx"> }, m_taskMode);
</span><span class="lines">@@ -269,7 +269,7 @@
</span><span class="cx"> RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><span class="cx"> String subprotocolCopy = m_mainWebSocketChannel->subprotocol().isolatedCopy();
</span><span class="cx"> String extensionsCopy = m_mainWebSocketChannel->extensions().isolatedCopy();
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, subprotocolCopy, extensionsCopy] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx"> workerClientWrapper->setSubprotocol(subprotocolCopy);
</span><span class="cx"> workerClientWrapper->setExtensions(extensionsCopy);
</span><span class="lines">@@ -283,7 +283,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><span class="cx"> String messageCopy = message.isolatedCopy();
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, messageCopy] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx"> workerClientWrapper->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<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, binaryData] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx"> workerClientWrapper->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<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, bufferedAmount] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx"> workerClientWrapper->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<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx"> workerClientWrapper->didStartClosingHandshake();
</span><span class="cx"> }, m_taskMode);
</span><span class="lines">@@ -329,10 +329,11 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><span class="cx"> String reasonCopy = reason.isolatedCopy();
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy);
- }, m_taskMode);
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope(
+ [workerClientWrapper, unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ workerClientWrapper->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<ThreadableWebSocketChannelClientWrapper> workerClientWrapper = m_workerClientWrapper;
</span><del>- m_loaderProxy.postTaskForModeToWorkerGlobalScope([=](ScriptExecutionContext& context) {
</del><ins>+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx"> workerClientWrapper->didReceiveMessageError();
</span><span class="cx"> }, m_taskMode);
</span><span class="lines">@@ -369,18 +370,22 @@
</span><span class="cx"> RefPtr<ThreadableWebSocketChannelClientWrapper> clientWrapper = prpClientWrapper;
</span><span class="cx">
</span><span class="cx"> Peer* peerPtr = Peer::create(clientWrapper, *loaderProxy, &context, taskMode);
</span><del>- bool sent = loaderProxy->postTaskForModeToWorkerGlobalScope({ ScriptExecutionContext::Task::CleanupTask, [=] (ScriptExecutionContext& context) {
- ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- if (clientWrapper->failedWebSocketChannelCreation()) {
- // If Bridge::initialize() quitted earlier, we need to kick mainThreadDestroy() to delete the peer.
- loaderProxy->postTaskToLoader([=](ScriptExecutionContext& context) {
- ASSERT(isMainThread());
- ASSERT_UNUSED(context, context.isDocument());
- delete peerPtr;
- });
- } else
- clientWrapper->didCreateWebSocketChannel(peerPtr);
- } }, taskMode);
</del><ins>+ bool sent = loaderProxy->postTaskForModeToWorkerGlobalScope({
+ ScriptExecutionContext::Task::CleanupTask,
+ [clientWrapper, loaderProxy, peerPtr] (ScriptExecutionContext& context) {
+ ASSERT_UNUSED(context, context.isWorkerGlobalScope());
+ if (clientWrapper->failedWebSocketChannelCreation()) {
+ // If Bridge::initialize() quitted earlier, we need to kick mainThreadDestroy() to delete the peer.
+ loaderProxy->postTaskToLoader([peerPtr] (ScriptExecutionContext& context) {
+ ASSERT(isMainThread());
+ ASSERT_UNUSED(context, context.isDocument());
+ delete peerPtr;
+ });
+ } else
+ clientWrapper->didCreateWebSocketChannel(peerPtr);
+ }
+ }, taskMode);
+
</ins><span class="cx"> if (!sent) {
</span><span class="cx"> clientWrapper->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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer, urlCopy, protocolCopy] (ScriptExecutionContext& 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->connect(url, protocol);
</del><ins>+ peer->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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer, messageCopy] (ScriptExecutionContext& 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->send(message);
</del><ins>+ peer->send(messageCopy);
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> Ref<Bridge> 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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer, dataPtr] (ScriptExecutionContext& 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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer, urlCopy, typeCopy, size] (ScriptExecutionContext& 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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext& 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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer, code, reasonCopy] (ScriptExecutionContext& 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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer, reasonCopy] (ScriptExecutionContext& 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->fail(reason);
</del><ins>+ peer->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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext& 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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext& 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& context) {
</del><ins>+ m_loaderProxy.postTaskToLoader([peer] (ScriptExecutionContext& 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&) {
</del><ins>+ : ScriptExecutionContext::Task({ ScriptExecutionContext::Task::CleanupTask, [data] (ScriptExecutionContext&) {
</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<JSGlobalObjectCallback> callback = JSGlobalObjectCallback::create(globalObject, task);
</span><del>- m_task = [=] (ScriptExecutionContext&) {
</del><ins>+ m_task = [callback] (ScriptExecutionContext&) {
</ins><span class="cx"> callback->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& message)
</span><del>- : Task([=] (ScriptExecutionContext& context) {
</del><ins>+ : Task([source, level, message] (ScriptExecutionContext& 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& data)
</span><span class="cx"> {
</span><span class="cx"> RefPtr<StringCallback> protector(this);
</span><del>- context->postTask([=] (ScriptExecutionContext&) {
- this->handleEvent(data);
</del><ins>+ context->postTask([protector, data] (ScriptExecutionContext&) {
+ protector->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()->postTask([=](ScriptExecutionContext&) {
</del><ins>+ scriptExecutionContext()->postTask([this] (ScriptExecutionContext&) {
</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->loader().documentLoader() == loader);
</span><span class="cx">
</span><span class="cx"> RefPtr<DocumentLoader> loaderProtector(loader);
</span><del>- frame->document()->postTask([=] (ScriptExecutionContext& context) {
</del><ins>+ frame->document()->postTask([loaderProtector, eventID, progressTotal, progressDone] (ScriptExecutionContext& context) {
</ins><span class="cx"> ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx"> Frame* frame = loaderProtector->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& document : m_workerDocuments)
</span><del>- document->postTask([=] (ScriptExecutionContext& context) {
</del><ins>+ document->postTask([errorMessageCopy, lineNumber, columnNumber, sourceURLCopy] (ScriptExecutionContext& 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& document : m_workerDocuments)
</span><del>- document->postTask([=] (ScriptExecutionContext& context) {
</del><ins>+ document->postTask([source, level, messageCopy, sourceURLCopy, lineNumber, columnNumber] (ScriptExecutionContext& 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& context) {
</del><ins>+ : ScriptExecutionContext::Task([channel] (ScriptExecutionContext& context) {
</ins><span class="cx"> RefPtr<MessagePort> port = MessagePort::create(context);
</span><span class="cx"> port->entangle(std::unique_ptr<MessagePortChannel>(channel));
</span><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(is<WorkerGlobalScope>(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&) {
</del><ins>+ m_scriptExecutionContext.postTask([eventDispatcherPtr] (ScriptExecutionContext&) {
</ins><span class="cx"> std::unique_ptr<EventDispatcher> eventDispatcher(eventDispatcherPtr);
</span><span class="cx"> eventDispatcher->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<SerializedScriptValue> message, std::unique_ptr<MessagePortChannelArray> channels)
</span><span class="cx"> {
</span><span class="cx"> MessagePortChannelArray* channelsPtr = channels.release();
</span><del>- m_scriptExecutionContext->postTask([=] (ScriptExecutionContext& context) {
</del><ins>+ m_scriptExecutionContext->postTask([this, channelsPtr, message] (ScriptExecutionContext& context) {
</ins><span class="cx"> Worker* workerObject = this->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& scriptContext) {
</del><ins>+ ScriptExecutionContext::Task task([channelsPtr, message] (ScriptExecutionContext& scriptContext) {
</ins><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(scriptContext.isWorkerGlobalScope());
</span><span class="cx"> DedicatedWorkerGlobalScope& context = static_cast<DedicatedWorkerGlobalScope&>(scriptContext);
</span><span class="cx"> std::unique_ptr<MessagePortArray> ports = MessagePort::entanglePorts(scriptContext, std::unique_ptr<MessagePortChannelArray>(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->postTask([=] (ScriptExecutionContext& context) {
</del><ins>+ m_scriptExecutionContext->postTask([this, errorMessageCopy, sourceURLCopy, lineNumber, columnNumber] (ScriptExecutionContext& context) {
</ins><span class="cx"> Worker* workerObject = this->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->postTask([=] (ScriptExecutionContext& context) {
</del><ins>+ m_scriptExecutionContext->postTask([this, source, level, messageCopy, sourceURLCopy, lineNumber, columnNumber] (ScriptExecutionContext& 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->runLoop().postTask([=] (ScriptExecutionContext& context) {
</del><ins>+ m_workerThread->runLoop().postTask([isOnline] (ScriptExecutionContext& context) {
</ins><span class="cx"> downcast<WorkerGlobalScope>(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& message)
</span><span class="cx"> {
</span><span class="cx"> String messageCopy = message.isolatedCopy();
</span><del>- m_scriptExecutionContext->postTask([=] (ScriptExecutionContext&) {
</del><ins>+ m_scriptExecutionContext->postTask([this, messageCopy] (ScriptExecutionContext&) {
</ins><span class="cx"> m_pageInspector->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->postTask([=] (ScriptExecutionContext&) {
</del><ins>+ m_scriptExecutionContext->postTask([this, hasPendingActivity] (ScriptExecutionContext&) {
</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->postTask([=] (ScriptExecutionContext&) {
</del><ins>+ m_scriptExecutionContext->postTask([this, hasPendingActivity] (ScriptExecutionContext&) {
</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>