<!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>[201504] trunk/Source</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/201504">201504</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2016-05-30 20:35:44 -0700 (Mon, 30 May 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move CrossThreadCopier/CrossThreadTask to WTF.
https://bugs.webkit.org/show_bug.cgi?id=158207

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (Refactor, no behavior change).

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:

* Modules/indexeddb/IDBActiveDOMObject.h:
* Modules/indexeddb/IDBValue.cpp:
* Modules/indexeddb/client/IDBConnectionProxy.h:
* Modules/indexeddb/server/IDBServer.cpp:
* Modules/indexeddb/server/IDBServer.h:
* Modules/indexeddb/server/UniqueIDBDatabase.h:
* dom/ScriptExecutionContext.h:
* fileapi/ThreadableBlobRegistry.cpp:

* platform/WebCoreCrossThreadCopier.cpp: Added.
(WTF::WebCore::SessionID&gt;::copy):
(WTF::WebCore::ThreadSafeDataBuffer&gt;::copy):
* platform/WebCoreCrossThreadCopier.h: Added.

* platform/network/cf/ResourceError.h:
(WebCore::ResourceError::isolatedCopy):

* platform/network/cf/ResourceRequest.h:
(WebCore::ResourceRequest::isolatedCopy):

* platform/network/cf/ResourceResponse.h:
(WebCore::ResourceResponse::isolatedCopy):

Source/WebKit2:

* CMakeLists.txt:
* WebKit2.xcodeproj/project.pbxproj:

* DatabaseProcess/DatabaseProcess.cpp:
* DatabaseProcess/DatabaseProcess.h:

* Shared/WebCrossThreadCopier.cpp: Removed.
* Shared/WebCrossThreadCopier.h: Removed.

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:

* wtf/CrossThreadCopier.cpp: Renamed from Source/WebCore/platform/CrossThreadCopier.cpp.
* wtf/CrossThreadCopier.h: Renamed from Source/WebCore/platform/CrossThreadCopier.h.
(WTF::CrossThreadCopierPassThrough::copy):

* wtf/CrossThreadTask.h: Renamed from Source/WebCore/platform/CrossThreadTask.h.
(WTF::CrossThreadTask::CrossThreadTask):
(WTF::CrossThreadTask::performTask):
(WTF::createCrossThreadTask):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFWTFxcodeprojprojectpbxproj">trunk/Source/WTF/WTF.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWTFwtfCMakeListstxt">trunk/Source/WTF/wtf/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBActiveDOMObjecth">trunk/Source/WebCore/Modules/indexeddb/IDBActiveDOMObject.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBValuecpp">trunk/Source/WebCore/Modules/indexeddb/IDBValue.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbclientIDBConnectionProxyh">trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbserverIDBServercpp">trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbserverIDBServerh">trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbserverUniqueIDBDatabaseh">trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoredomScriptExecutionContexth">trunk/Source/WebCore/dom/ScriptExecutionContext.h</a></li>
<li><a href="#trunkSourceWebCorefileapiThreadableBlobRegistrycpp">trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfResourceErrorh">trunk/Source/WebCore/platform/network/cf/ResourceError.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfResourceRequesth">trunk/Source/WebCore/platform/network/cf/ResourceRequest.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfResourceResponseh">trunk/Source/WebCore/platform/network/cf/ResourceResponse.h</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseProcesscpp">trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseProcessh">trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWTFwtfCrossThreadCopiercpp">trunk/Source/WTF/wtf/CrossThreadCopier.cpp</a></li>
<li><a href="#trunkSourceWTFwtfCrossThreadCopierh">trunk/Source/WTF/wtf/CrossThreadCopier.h</a></li>
<li><a href="#trunkSourceWTFwtfCrossThreadTaskh">trunk/Source/WTF/wtf/CrossThreadTask.h</a></li>
<li><a href="#trunkSourceWebCoreplatformWebCoreCrossThreadCopiercpp">trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformWebCoreCrossThreadCopierh">trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformCrossThreadCopiercpp">trunk/Source/WebCore/platform/CrossThreadCopier.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformCrossThreadCopierh">trunk/Source/WebCore/platform/CrossThreadCopier.h</a></li>
<li><a href="#trunkSourceWebCoreplatformCrossThreadTaskh">trunk/Source/WebCore/platform/CrossThreadTask.h</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCrossThreadCopiercpp">trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCrossThreadCopierh">trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WTF/ChangeLog        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2016-05-30  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Move CrossThreadCopier/CrossThreadTask to WTF.
+        https://bugs.webkit.org/show_bug.cgi?id=158207
+
+        Reviewed by Alex Christensen.
+
+        * WTF.xcodeproj/project.pbxproj:
+        * wtf/CMakeLists.txt:
+
+        * wtf/CrossThreadCopier.cpp: Renamed from Source/WebCore/platform/CrossThreadCopier.cpp.
+        * wtf/CrossThreadCopier.h: Renamed from Source/WebCore/platform/CrossThreadCopier.h.
+        (WTF::CrossThreadCopierPassThrough::copy):
+        
+        * wtf/CrossThreadTask.h: Renamed from Source/WebCore/platform/CrossThreadTask.h.
+        (WTF::CrossThreadTask::CrossThreadTask):
+        (WTF::CrossThreadTask::performTask):
+        (WTF::createCrossThreadTask):
+
</ins><span class="cx"> 2016-05-28  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Templatize NoncopyableFunction class similarly to std::function
</span></span></pre></div>
<a id="trunkSourceWTFWTFxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.xcodeproj/project.pbxproj (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.xcodeproj/project.pbxproj        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WTF/WTF.xcodeproj/project.pbxproj        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -101,6 +101,9 @@
</span><span class="cx">                 2CDED0F418115C85004DBA70 /* RunLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CDED0F218115C85004DBA70 /* RunLoop.h */; };
</span><span class="cx">                 430B47891AAAAC1A001223DA /* StringCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 430B47871AAAAC1A001223DA /* StringCommon.h */; };
</span><span class="cx">                 513E170B1CD7D5BF00E3650B /* LoggingAccumulator.h in Headers */ = {isa = PBXBuildFile; fileRef = 513E170A1CD7D5BF00E3650B /* LoggingAccumulator.h */; };
</span><ins>+                515F794E1CFC9F4A00CCED93 /* CrossThreadCopier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515F794B1CFC9F4A00CCED93 /* CrossThreadCopier.cpp */; };
+                515F794F1CFC9F4A00CCED93 /* CrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 515F794C1CFC9F4A00CCED93 /* CrossThreadCopier.h */; };
+                515F79501CFC9F4A00CCED93 /* CrossThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 515F794D1CFC9F4A00CCED93 /* CrossThreadTask.h */; };
</ins><span class="cx">                 553071CA1C40427200384898 /* TinyLRUCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 553071C91C40427200384898 /* TinyLRUCache.h */; };
</span><span class="cx">                 70A993FE1AD7151300FA615B /* SymbolRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70A993FC1AD7151300FA615B /* SymbolRegistry.cpp */; };
</span><span class="cx">                 70A993FF1AD7151300FA615B /* SymbolRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 70A993FD1AD7151300FA615B /* SymbolRegistry.h */; };
</span><span class="lines">@@ -420,6 +423,9 @@
</span><span class="cx">                 2CDED0F218115C85004DBA70 /* RunLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RunLoop.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 430B47871AAAAC1A001223DA /* StringCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringCommon.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 513E170A1CD7D5BF00E3650B /* LoggingAccumulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoggingAccumulator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                515F794B1CFC9F4A00CCED93 /* CrossThreadCopier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossThreadCopier.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                515F794C1CFC9F4A00CCED93 /* CrossThreadCopier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadCopier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                515F794D1CFC9F4A00CCED93 /* CrossThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadTask.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 553071C91C40427200384898 /* TinyLRUCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TinyLRUCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5D247B6214689B8600E78B76 /* libWTF.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libWTF.a; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 5D247B6E14689C4700E78B76 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -797,6 +803,9 @@
</span><span class="cx">                                 0F8F2B90172E00F0007DBDA5 /* CompilationThread.h */,
</span><span class="cx">                                 A8A47270151A825A004123FF /* Compiler.h */,
</span><span class="cx">                                 0FDB698D1B7C643A000C1078 /* Condition.h */,
</span><ins>+                                515F794B1CFC9F4A00CCED93 /* CrossThreadCopier.cpp */,
+                                515F794C1CFC9F4A00CCED93 /* CrossThreadCopier.h */,
+                                515F794D1CFC9F4A00CCED93 /* CrossThreadTask.h */,
</ins><span class="cx">                                 A8A47273151A825A004123FF /* CryptographicallyRandomNumber.cpp */,
</span><span class="cx">                                 A8A47274151A825A004123FF /* CryptographicallyRandomNumber.h */,
</span><span class="cx">                                 E15556F318A0CC18006F48FB /* CryptographicUtilities.cpp */,
</span><span class="lines">@@ -1247,6 +1256,7 @@
</span><span class="cx">                                 0FE1646B1B6FFC9600400E7C /* Lock.h in Headers */,
</span><span class="cx">                                 A8A473E3151A825B004123FF /* Locker.h in Headers */,
</span><span class="cx">                                 A8A473E6151A825B004123FF /* MainThread.h in Headers */,
</span><ins>+                                515F794F1CFC9F4A00CCED93 /* CrossThreadCopier.h in Headers */,
</ins><span class="cx">                                 1A233C7D17DAA6E300A93ACF /* MallocPtr.h in Headers */,
</span><span class="cx">                                 A8A473E8151A825B004123FF /* MathExtras.h in Headers */,
</span><span class="cx">                                 A8A473EA151A825B004123FF /* MD5.h in Headers */,
</span><span class="lines">@@ -1294,6 +1304,7 @@
</span><span class="cx">                                 86F46F611A2840EE00CCBF22 /* RefCounter.h in Headers */,
</span><span class="cx">                                 A8A4741C151A825B004123FF /* RefPtr.h in Headers */,
</span><span class="cx">                                 A8A4741E151A825B004123FF /* RetainPtr.h in Headers */,
</span><ins>+                                515F79501CFC9F4A00CCED93 /* CrossThreadTask.h in Headers */,
</ins><span class="cx">                                 2CDED0F418115C85004DBA70 /* RunLoop.h in Headers */,
</span><span class="cx">                                 1469419216EAAF6D0024E146 /* RunLoopTimer.h in Headers */,
</span><span class="cx">                                 A5098B001C169E0700087797 /* SandboxSPI.h in Headers */,
</span><span class="lines">@@ -1521,6 +1532,7 @@
</span><span class="cx">                                 A748745217A0BDAE00FA04CB /* SixCharacterHash.cpp in Sources */,
</span><span class="cx">                                 A8A47425151A825B004123FF /* SizeLimits.cpp in Sources */,
</span><span class="cx">                                 A8A47427151A825B004123FF /* StackBounds.cpp in Sources */,
</span><ins>+                                515F794E1CFC9F4A00CCED93 /* CrossThreadCopier.cpp in Sources */,
</ins><span class="cx">                                 FEDACD3D1630F83F00C69634 /* StackStats.cpp in Sources */,
</span><span class="cx">                                 A8A4743C151A825B004123FF /* StringBuilder.cpp in Sources */,
</span><span class="cx">                                 A5BA15FB182435A600A82E69 /* StringCF.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWTFwtfCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/CMakeLists.txt (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CMakeLists.txt        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WTF/wtf/CMakeLists.txt        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -13,6 +13,8 @@
</span><span class="cx">     CompilationThread.h
</span><span class="cx">     Compiler.h
</span><span class="cx">     Condition.h
</span><ins>+    CrossThreadCopier.h
+    CrossThreadTask.h
</ins><span class="cx">     CryptographicUtilities.h
</span><span class="cx">     CryptographicallyRandomNumber.h
</span><span class="cx">     CurrentTime.h
</span><span class="lines">@@ -159,6 +161,7 @@
</span><span class="cx">     Atomics.cpp
</span><span class="cx">     BitVector.cpp
</span><span class="cx">     CompilationThread.cpp
</span><ins>+    CrossThreadCopier.cpp
</ins><span class="cx">     CryptographicUtilities.cpp
</span><span class="cx">     CryptographicallyRandomNumber.cpp
</span><span class="cx">     CurrentTime.cpp
</span></span></pre></div>
<a id="trunkSourceWTFwtfCrossThreadCopiercppfromrev201503trunkSourceWebCoreplatformCrossThreadCopiercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/CrossThreadCopier.cpp (from rev 201503, trunk/Source/WebCore/platform/CrossThreadCopier.cpp) (0 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CrossThreadCopier.cpp                                (rev 0)
+++ trunk/Source/WTF/wtf/CrossThreadCopier.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2011-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CrossThreadCopier.h&quot;
+
+namespace WTF {
+
+// Test CrossThreadCopier using COMPILE_ASSERT.
+
+// Verify that ThreadSafeRefCounted objects get handled correctly.
+class CopierThreadSafeRefCountedTest : public ThreadSafeRefCounted&lt;CopierThreadSafeRefCountedTest&gt; {
+};
+
+COMPILE_ASSERT((std::is_same&lt;
+                    PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;,
+                    CrossThreadCopier&lt;PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;&gt;::Type
+                &gt;::value),
+                PassRefPtrTest);
+COMPILE_ASSERT((std::is_same&lt;
+                    PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;,
+                    CrossThreadCopier&lt;RefPtr&lt;CopierThreadSafeRefCountedTest&gt;&gt;::Type
+                &gt;::value),
+                RefPtrTest);
+COMPILE_ASSERT((std::is_same&lt;
+                    PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;,
+                    CrossThreadCopier&lt;CopierThreadSafeRefCountedTest*&gt;::Type
+                &gt;::value),
+                RawPointerTest);
+
+// Add specializations for RefCounted types which will let us verify that no other template matches.
+template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, RefPtr&lt;T&gt;&gt; {
+    typedef int Type;
+};
+
+template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, PassRefPtr&lt;T&gt;&gt; {
+    typedef int Type;
+};
+
+template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, T*&gt; {
+    typedef int Type;
+};
+
+// Verify that RefCounted objects only match the above templates which expose Type as int.
+class CopierRefCountedTest : public RefCounted&lt;CopierRefCountedTest&gt; {
+};
+
+static_assert((std::is_same&lt;int, CrossThreadCopier&lt;PassRefPtr&lt;CopierRefCountedTest&gt;&gt;::Type&gt;::value), &quot;CrossThreadCopier specialization improperly applied to PassRefPtr&lt;&gt; of a RefCounted (but not ThreadSafeRefCounted) type&quot;);
+static_assert((std::is_same&lt;int, CrossThreadCopier&lt;RefPtr&lt;CopierRefCountedTest&gt;&gt;::Type&gt;::value), &quot;CrossThreadCopier specialization improperly applied to RefPtr&lt;&gt; of a RefCounted (but not ThreadSafeRefCounted) type&quot;);
+static_assert((std::is_same&lt;int, CrossThreadCopier&lt;CopierRefCountedTest*&gt;::Type&gt;::value), &quot;CrossThreadCopier specialization improperly applied to raw pointer of a RefCounted (but not ThreadSafeRefCounted) type&quot;);
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWTFwtfCrossThreadCopierhfromrev201503trunkSourceWebCoreplatformCrossThreadCopierh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/CrossThreadCopier.h (from rev 201503, trunk/Source/WebCore/platform/CrossThreadCopier.h) (0 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CrossThreadCopier.h                                (rev 0)
+++ trunk/Source/WTF/wtf/CrossThreadCopier.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -0,0 +1,139 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2014, 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &lt;wtf/Assertions.h&gt;
+#include &lt;wtf/Forward.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/Threading.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WTF {
+
+struct CrossThreadCopierBaseHelper {
+    template&lt;typename T&gt; struct RemovePointer {
+        typedef T Type;
+    };
+    template&lt;typename T&gt; struct RemovePointer&lt;T*&gt; {
+        typedef T Type;
+    };
+
+    template&lt;typename T&gt; struct RemovePointer&lt;RefPtr&lt;T&gt;&gt; {
+        typedef T Type;
+    };
+
+    template&lt;typename T&gt; struct RemovePointer&lt;PassRefPtr&lt;T&gt;&gt; {
+        typedef T Type;
+    };
+
+    template&lt;typename T&gt; struct IsEnumOrConvertibleToInteger {
+        static const bool value = std::is_integral&lt;T&gt;::value || std::is_enum&lt;T&gt;::value || std::is_convertible&lt;T, long double&gt;::value;
+    };
+
+    template&lt;typename T&gt; struct IsThreadSafeRefCountedPointer {
+        static const bool value = std::is_convertible&lt;typename RemovePointer&lt;T&gt;::Type*, ThreadSafeRefCounted&lt;typename RemovePointer&lt;T&gt;::Type&gt;*&gt;::value;
+    };
+};
+
+template&lt;typename T&gt; struct CrossThreadCopierPassThrough {
+    typedef T Type;
+    static Type copy(const T&amp; parameter)
+    {
+        return parameter;
+    }
+};
+
+template&lt;bool isEnumOrConvertibleToInteger, bool isThreadSafeRefCounted, typename T&gt; struct CrossThreadCopierBase;
+
+// Integers get passed through without any changes.
+template&lt;typename T&gt; struct CrossThreadCopierBase&lt;true, false, T&gt; : public CrossThreadCopierPassThrough&lt;T&gt; {
+};
+
+// Classes that have an isolatedCopy() method get a default specialization.
+template&lt;class T&gt; struct CrossThreadCopierBase&lt;false, false, T&gt; {
+    static T copy(const T&amp; value)
+    {
+        return value.isolatedCopy();
+    }
+};
+
+// Custom copy methods.
+template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, true, T&gt; {
+    typedef typename CrossThreadCopierBaseHelper::RemovePointer&lt;T&gt;::Type RefCountedType;
+    static_assert(std::is_convertible&lt;RefCountedType*, ThreadSafeRefCounted&lt;RefCountedType&gt;*&gt;::value, &quot;T is not convertible to ThreadSafeRefCounted!&quot;);
+
+    typedef PassRefPtr&lt;RefCountedType&gt; Type;
+    static Type copy(const T&amp; refPtr)
+    {
+        return refPtr;
+    }
+};
+
+template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, std::chrono::system_clock::time_point&gt; {
+    typedef std::chrono::system_clock::time_point Type;
+    static Type copy(const Type&amp; source)
+    {
+        return source;
+    }
+};
+
+template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, WTF::ASCIILiteral&gt; {
+    typedef WTF::ASCIILiteral Type;
+    static Type copy(const Type&amp; source)
+    {
+        return source;
+    }
+};
+
+template&lt;typename T&gt;
+struct CrossThreadCopier : public CrossThreadCopierBase&lt;CrossThreadCopierBaseHelper::IsEnumOrConvertibleToInteger&lt;T&gt;::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer&lt;T&gt;::value, T&gt; {
+};
+
+// Default specialization for Vectors of CrossThreadCopyable classes.
+template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, Vector&lt;T&gt;&gt; {
+    typedef Vector&lt;T&gt; Type;
+    static Type copy(const Type&amp; source)
+    {
+        Type destination;
+        destination.reserveInitialCapacity(source.size());
+        for (auto&amp; object : source)
+            destination.uncheckedAppend(CrossThreadCopier&lt;T&gt;::copy(object));
+        return destination;
+    }
+};
+
+} // namespace WTF
+
+using WTF::CrossThreadCopierBaseHelper;
+using WTF::CrossThreadCopierBase;
+using WTF::CrossThreadCopier;
</ins></span></pre></div>
<a id="trunkSourceWTFwtfCrossThreadTaskhfromrev201503trunkSourceWebCoreplatformCrossThreadTaskh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/CrossThreadTask.h (from rev 201503, trunk/Source/WebCore/platform/CrossThreadTask.h) (0 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CrossThreadTask.h                                (rev 0)
+++ trunk/Source/WTF/wtf/CrossThreadTask.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -0,0 +1,253 @@
</span><ins>+/*
+ * Copyright (C) 2013, 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &lt;wtf/CrossThreadCopier.h&gt;
+#include &lt;wtf/NoncopyableFunction.h&gt;
+
+namespace WTF {
+
+class CrossThreadTask {
+    WTF_MAKE_NONCOPYABLE(CrossThreadTask);
+public:
+    CrossThreadTask(NoncopyableFunction&lt;void ()&gt;&amp;&amp; taskFunction)
+        : m_taskFunction(WTFMove(taskFunction))
+    {
+        ASSERT(taskFunction);
+    }
+
+    void performTask()
+    {
+        m_taskFunction();
+    }
+
+protected:
+    CrossThreadTask() { }
+
+    NoncopyableFunction&lt;void ()&gt; m_taskFunction;
+};
+
+template &lt;typename T, typename... Arguments&gt;
+class CrossThreadTaskImpl final : public CrossThreadTask {
+public:
+    CrossThreadTaskImpl(T* callee, void (T::*method)(Arguments...), Arguments&amp;&amp;... arguments)
+    {
+        m_taskFunction = [callee, method, arguments...] {
+            (callee-&gt;*method)(arguments...);
+        };
+    }
+};
+
+template &lt;typename... Arguments&gt;
+class CrossThreadTaskStaticImpl final : public CrossThreadTask {
+public:
+    CrossThreadTaskStaticImpl(void (*method)(Arguments...), Arguments&amp;&amp;... arguments)
+    {
+        m_taskFunction = [method, arguments...] {
+            method(arguments...);
+        };
+    }
+};
+
+template&lt;typename T&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)())
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T&gt;&gt;(&amp;callee, method);
+}
+
+template&lt;typename T, typename P1, typename MP1&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1),
+    const P1&amp; parameter1)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1));
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2));
+
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2, MP3),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2,
+    const P3&amp; parameter3)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
+        WTF::CrossThreadCopier&lt;P3&gt;::copy(parameter3));
+}
+
+template&lt;typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    void (*method)(MP1, MP2, MP3),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2,
+    const P3&amp; parameter3)
+{
+    return std::make_unique&lt;CrossThreadTaskStaticImpl&lt;MP1, MP2, MP3&gt;&gt;(
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
+        WTF::CrossThreadCopier&lt;P3&gt;::copy(parameter3));
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2, MP3, MP4),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2,
+    const P3&amp; parameter3,
+    const P4&amp; parameter4)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
+        WTF::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
+        WTF::CrossThreadCopier&lt;P4&gt;::copy(parameter4));
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2, MP3, MP4, MP5),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2,
+    const P3&amp; parameter3,
+    const P4&amp; parameter4,
+    const P5&amp; parameter5)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
+        WTF::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
+        WTF::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
+        WTF::CrossThreadCopier&lt;P5&gt;::copy(parameter5));
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2,
+    const P3&amp; parameter3,
+    const P4&amp; parameter4,
+    const P5&amp; parameter5,
+    const P6&amp; parameter6)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5, MP6&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
+        WTF::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
+        WTF::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
+        WTF::CrossThreadCopier&lt;P5&gt;::copy(parameter5),
+        WTF::CrossThreadCopier&lt;P6&gt;::copy(parameter6));
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6, typename P7, typename MP7&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6, MP7),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2,
+    const P3&amp; parameter3,
+    const P4&amp; parameter4,
+    const P5&amp; parameter5,
+    const P6&amp; parameter6,
+    const P7&amp; parameter7)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5, MP6, MP7&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
+        WTF::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
+        WTF::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
+        WTF::CrossThreadCopier&lt;P5&gt;::copy(parameter5),
+        WTF::CrossThreadCopier&lt;P6&gt;::copy(parameter6),
+        WTF::CrossThreadCopier&lt;P7&gt;::copy(parameter7));
+}
+
+template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6, typename P7, typename MP7, typename P8, typename MP8&gt;
+std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
+    T&amp; callee,
+    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8),
+    const P1&amp; parameter1,
+    const P2&amp; parameter2,
+    const P3&amp; parameter3,
+    const P4&amp; parameter4,
+    const P5&amp; parameter5,
+    const P6&amp; parameter6,
+    const P7&amp; parameter7,
+    const P8&amp; parameter8)
+{
+    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8&gt;&gt;(
+        &amp;callee,
+        method,
+        WTF::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
+        WTF::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
+        WTF::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
+        WTF::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
+        WTF::CrossThreadCopier&lt;P5&gt;::copy(parameter5),
+        WTF::CrossThreadCopier&lt;P6&gt;::copy(parameter6),
+        WTF::CrossThreadCopier&lt;P7&gt;::copy(parameter7),
+        WTF::CrossThreadCopier&lt;P8&gt;::copy(parameter8));
+}
+
+} // namespace WTF
+
+using WTF::CrossThreadTask;
+using WTF::createCrossThreadTask;
</ins></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -2097,7 +2097,6 @@
</span><span class="cx">     platform/ContentType.cpp
</span><span class="cx">     platform/ContextMenu.cpp
</span><span class="cx">     platform/ContextMenuItem.cpp
</span><del>-    platform/CrossThreadCopier.cpp
</del><span class="cx">     platform/Cursor.cpp
</span><span class="cx">     platform/DateComponents.cpp
</span><span class="cx">     platform/Decimal.cpp
</span><span class="lines">@@ -2142,6 +2141,7 @@
</span><span class="cx">     platform/URL.cpp
</span><span class="cx">     platform/UUID.cpp
</span><span class="cx">     platform/UserActivity.cpp
</span><ins>+    platform/WebCoreCrossThreadCopier.cpp
</ins><span class="cx">     platform/Widget.cpp
</span><span class="cx"> 
</span><span class="cx">     platform/animation/Animation.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/ChangeLog        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2016-05-30  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Move CrossThreadCopier/CrossThreadTask to WTF.
+        https://bugs.webkit.org/show_bug.cgi?id=158207
+
+        Reviewed by Alex Christensen.
+
+        No new tests (Refactor, no behavior change).
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+
+        * Modules/indexeddb/IDBActiveDOMObject.h:
+        * Modules/indexeddb/IDBValue.cpp:
+        * Modules/indexeddb/client/IDBConnectionProxy.h:
+        * Modules/indexeddb/server/IDBServer.cpp:
+        * Modules/indexeddb/server/IDBServer.h:
+        * Modules/indexeddb/server/UniqueIDBDatabase.h:
+        * dom/ScriptExecutionContext.h:
+        * fileapi/ThreadableBlobRegistry.cpp:
+        
+        * platform/WebCoreCrossThreadCopier.cpp: Added.
+        (WTF::WebCore::SessionID&gt;::copy):
+        (WTF::WebCore::ThreadSafeDataBuffer&gt;::copy):
+        * platform/WebCoreCrossThreadCopier.h: Added.
+        
+        * platform/network/cf/ResourceError.h:
+        (WebCore::ResourceError::isolatedCopy):
+        
+        * platform/network/cf/ResourceRequest.h:
+        (WebCore::ResourceRequest::isolatedCopy):
+        
+        * platform/network/cf/ResourceResponse.h:
+        (WebCore::ResourceResponse::isolatedCopy):
+
</ins><span class="cx"> 2016-05-30  Per Arne Vollan  &lt;pvollan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html crashes on Windows almost all the time
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBActiveDOMObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBActiveDOMObject.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBActiveDOMObject.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBActiveDOMObject.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -26,8 +26,8 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ActiveDOMObject.h&quot;
</span><del>-#include &quot;CrossThreadCopier.h&quot;
</del><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #include &lt;wtf/Threading.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBValue.cpp (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBValue.cpp        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBValue.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -28,8 +28,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><del>-#include &quot;CrossThreadCopier.h&quot;
</del><span class="cx"> #include &quot;SerializedScriptValue.h&quot;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbclientIDBConnectionProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -27,11 +27,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;IDBConnectionToServer.h&quot;
</span><span class="cx"> #include &quot;IDBResourceIdentifier.h&quot;
</span><span class="cx"> #include &quot;TransactionOperation.h&quot;
</span><span class="cx"> #include &lt;functional&gt;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #include &lt;wtf/MessageQueue.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbserverIDBServercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><del>-#include &quot;CrossThreadCopier.h&quot;
</del><span class="cx"> #include &quot;IDBRequestData.h&quot;
</span><span class="cx"> #include &quot;IDBResultData.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="lines">@@ -36,6 +35,7 @@
</span><span class="cx"> #include &quot;SQLiteFileSystem.h&quot;
</span><span class="cx"> #include &quot;SQLiteIDBBackingStore.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><ins>+#include &lt;wtf/CrossThreadCopier.h&gt;
</ins><span class="cx"> #include &lt;wtf/Locker.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbserverIDBServerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -27,11 +27,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;IDBConnectionToClient.h&quot;
</span><span class="cx"> #include &quot;IDBDatabaseIdentifier.h&quot;
</span><span class="cx"> #include &quot;UniqueIDBDatabase.h&quot;
</span><span class="cx"> #include &quot;UniqueIDBDatabaseConnection.h&quot;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Lock.h&gt;
</span><span class="cx"> #include &lt;wtf/MessageQueue.h&gt;
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class CrossThreadTask;
</del><span class="cx"> class IDBCursorInfo;
</span><span class="cx"> class IDBRequestData;
</span><span class="cx"> class IDBValue;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbserverUniqueIDBDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;IDBBackingStore.h&quot;
</span><span class="cx"> #include &quot;IDBBindingUtilities.h&quot;
</span><span class="cx"> #include &quot;IDBDatabaseIdentifier.h&quot;
</span><span class="lines">@@ -38,6 +37,7 @@
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><span class="cx"> #include &quot;UniqueIDBDatabaseConnection.h&quot;
</span><span class="cx"> #include &quot;UniqueIDBDatabaseTransaction.h&quot;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/Deque.h&gt;
</span><span class="cx"> #include &lt;wtf/HashCountedSet.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1251,8 +1251,6 @@
</span><span class="cx">                 2E4346530F546A8200B0F1BA /* WorkerRunLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346410F546A8200B0F1BA /* WorkerRunLoop.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2E4346540F546A8200B0F1BA /* WorkerThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346420F546A8200B0F1BA /* WorkerThread.cpp */; };
</span><span class="cx">                 2E4346550F546A8200B0F1BA /* WorkerThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346430F546A8200B0F1BA /* WorkerThread.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                2E4346580F546A9900B0F1BA /* CrossThreadCopier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */; };
-                2E4346590F546A9900B0F1BA /* CrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 2E7582EE12764F260062628B /* JSFileReaderCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E7582ED12764F260062628B /* JSFileReaderCustom.cpp */; };
</span><span class="cx">                 2E75841D12779ADA0062628B /* FileReaderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E75841A12779ADA0062628B /* FileReaderLoader.cpp */; };
</span><span class="cx">                 2E75841E12779ADA0062628B /* FileReaderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E75841B12779ADA0062628B /* FileReaderLoader.h */; };
</span><span class="lines">@@ -2038,6 +2036,8 @@
</span><span class="cx">                 514C767D0CE923A1007EF3CD /* ResourceRequestBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76680CE923A1007EF3CD /* ResourceRequestBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 514C767E0CE923A1007EF3CD /* ResourceResponseBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76690CE923A1007EF3CD /* ResourceResponseBase.cpp */; };
</span><span class="cx">                 514C767F0CE923A1007EF3CD /* ResourceResponseBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C766A0CE923A1007EF3CD /* ResourceResponseBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                515F79531CFCA3D000CCED93 /* WebCoreCrossThreadCopier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515F79511CFCA3C700CCED93 /* WebCoreCrossThreadCopier.cpp */; };
+                515F79541CFCA3D500CCED93 /* WebCoreCrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 515F79521CFCA3C700CCED93 /* WebCoreCrossThreadCopier.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 5160300B0CC4251200C8AC25 /* FileSystemPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5160300A0CC4251200C8AC25 /* FileSystemPOSIX.cpp */; };
</span><span class="cx">                 5160306C0CC4362300C8AC25 /* FileSystemCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5160306B0CC4362300C8AC25 /* FileSystemCF.cpp */; };
</span><span class="cx">                 5160712E1BD8307800DBC4F2 /* IDBObjectStoreInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5160712C1BD8307200DBC4F2 /* IDBObjectStoreInfo.cpp */; };
</span><span class="lines">@@ -2221,7 +2221,6 @@
</span><span class="cx">                 51E3F9D60DA05E1D00250911 /* JSStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E3F9D40DA05E1D00250911 /* JSStorage.cpp */; };
</span><span class="cx">                 51E4143416A6596300C633C7 /* ResourceHandleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E4143216A6595100C633C7 /* ResourceHandleTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51E6821016387302003BBF3C /* LoaderStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E6820F16387302003BBF3C /* LoaderStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                51E6FA7C1BBB4FC3008700D9 /* CrossThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E6FA7B1BBB4FB5008700D9 /* CrossThreadTask.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 51EC92650CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51EC925D0CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp */; };
</span><span class="cx">                 51EE7B381AA50B0500F92B21 /* ResourceLoadInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 51EE7B371AA50B0500F92B21 /* ResourceLoadInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51EE7B3A1AA5123100F92B21 /* ResourceLoadInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51EE7B391AA5123100F92B21 /* ResourceLoadInfo.cpp */; };
</span><span class="lines">@@ -8742,8 +8741,6 @@
</span><span class="cx">                 2E4346410F546A8200B0F1BA /* WorkerRunLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerRunLoop.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E4346420F546A8200B0F1BA /* WorkerThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerThread.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E4346430F546A8200B0F1BA /* WorkerThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerThread.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossThreadCopier.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadCopier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 2E7582ED12764F260062628B /* JSFileReaderCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileReaderCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E75841A12779ADA0062628B /* FileReaderLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileReaderLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2E75841B12779ADA0062628B /* FileReaderLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileReaderLoader.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9612,6 +9609,8 @@
</span><span class="cx">                 514C76690CE923A1007EF3CD /* ResourceResponseBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceResponseBase.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 514C766A0CE923A1007EF3CD /* ResourceResponseBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceResponseBase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 515E5FEF195101470086CA5E /* PlatformGamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformGamepad.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                515F79511CFCA3C700CCED93 /* WebCoreCrossThreadCopier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreCrossThreadCopier.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                515F79521CFCA3C700CCED93 /* WebCoreCrossThreadCopier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreCrossThreadCopier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5160300A0CC4251200C8AC25 /* FileSystemPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemPOSIX.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5160306B0CC4362300C8AC25 /* FileSystemCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemCF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5160712B1BD8305300DBC4F2 /* TransactionOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransactionOperation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9812,7 +9811,6 @@
</span><span class="cx">                 51E3F9D50DA05E1D00250911 /* JSStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStorage.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51E4143216A6595100C633C7 /* ResourceHandleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceHandleTypes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51E6820F16387302003BBF3C /* LoaderStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoaderStrategy.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                51E6FA7B1BBB4FB5008700D9 /* CrossThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadTask.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 51EAC5B018163F4E004F1BA4 /* IDBRecordIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBRecordIdentifier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51EC925D0CE90DD400F90308 /* JSCustomSQLStatementErrorCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCustomSQLStatementErrorCallback.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51EE7B371AA50B0500F92B21 /* ResourceLoadInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -22900,9 +22898,6 @@
</span><span class="cx">                                 D8B6152E1032495100C8554A /* Cookie.h */,
</span><span class="cx">                                 339B5B62131DAA3200F48D02 /* CookiesStrategy.h */,
</span><span class="cx">                                 862F129D18C1572C005C54AF /* CountedUserActivity.h */,
</span><del>-                                2E4346560F546A9900B0F1BA /* CrossThreadCopier.cpp */,
-                                2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */,
-                                51E6FA7B1BBB4FB5008700D9 /* CrossThreadTask.h */,
</del><span class="cx">                                 E11AF15011B9A1A300805103 /* Cursor.cpp */,
</span><span class="cx">                                 F587868402DE3B8601EA4122 /* Cursor.h */,
</span><span class="cx">                                 A5732B08136A161D005C8D7C /* DateComponents.cpp */,
</span><span class="lines">@@ -23046,6 +23041,8 @@
</span><span class="cx">                                 9A1142031832D134000BB8AD /* ValueToString.h */,
</span><span class="cx">                                 46DB7D581B20FE58005651B2 /* VNodeTracker.cpp */,
</span><span class="cx">                                 46DB7D591B20FE58005651B2 /* VNodeTracker.h */,
</span><ins>+                                515F79511CFCA3C700CCED93 /* WebCoreCrossThreadCopier.cpp */,
+                                515F79521CFCA3C700CCED93 /* WebCoreCrossThreadCopier.h */,
</ins><span class="cx">                                 9380F47109A11AB4001FDB34 /* Widget.cpp */,
</span><span class="cx">                                 9380F47209A11AB4001FDB34 /* Widget.h */,
</span><span class="cx">                                 E1E1BEFF115FF6FB006F52CA /* WindowsKeyboardCodes.h */,
</span><span class="lines">@@ -25371,8 +25368,6 @@
</span><span class="cx">                                 2D481F02146B5C5500AA7834 /* CrossfadeGeneratedImage.h in Headers */,
</span><span class="cx">                                 E1C416120F6562FD0092D2FB /* CrossOriginAccessControl.h in Headers */,
</span><span class="cx">                                 E1C415DA0F655D6F0092D2FB /* CrossOriginPreflightResultCache.h in Headers */,
</span><del>-                                2E4346590F546A9900B0F1BA /* CrossThreadCopier.h in Headers */,
-                                51E6FA7C1BBB4FC3008700D9 /* CrossThreadTask.h in Headers */,
</del><span class="cx">                                 E169803D1133542D00894115 /* CRuntimeObject.h in Headers */,
</span><span class="cx">                                 975CA28B130365F800E99AD9 /* Crypto.h in Headers */,
</span><span class="cx">                                 E172AF6E180F24C600FBADB9 /* CryptoAlgorithm.h in Headers */,
</span><span class="lines">@@ -28394,6 +28389,7 @@
</span><span class="cx">                                 498770F31242C535002226BA /* TilingData.h in Headers */,
</span><span class="cx">                                 F55B3DDC1251F12D003EF269 /* TimeInputType.h in Headers */,
</span><span class="cx">                                 7553CFE8108F473F00EA281E /* TimelineRecordFactory.h in Headers */,
</span><ins>+                                515F79541CFCA3D500CCED93 /* WebCoreCrossThreadCopier.h in Headers */,
</ins><span class="cx">                                 9305B24D098F1B6B00C28855 /* Timer.h in Headers */,
</span><span class="cx">                                 E44613B00CD6331000FADA75 /* TimeRanges.h in Headers */,
</span><span class="cx">                                 2D7ED0AB1BAE99170043B3E5 /* TimerEventBasedMock.h in Headers */,
</span><span class="lines">@@ -29295,7 +29291,6 @@
</span><span class="cx">                                 2D481F00146B5C4C00AA7834 /* CrossfadeGeneratedImage.cpp in Sources */,
</span><span class="cx">                                 E1C416170F6563180092D2FB /* CrossOriginAccessControl.cpp in Sources */,
</span><span class="cx">                                 E1C415DE0F655D7C0092D2FB /* CrossOriginPreflightResultCache.cpp in Sources */,
</span><del>-                                2E4346580F546A9900B0F1BA /* CrossThreadCopier.cpp in Sources */,
</del><span class="cx">                                 E16980491133644700894115 /* CRuntimeObject.cpp in Sources */,
</span><span class="cx">                                 975CA28A130365F800E99AD9 /* Crypto.cpp in Sources */,
</span><span class="cx">                                 E172AF6D180F24C600FBADB9 /* CryptoAlgorithm.cpp in Sources */,
</span><span class="lines">@@ -31315,6 +31310,7 @@
</span><span class="cx">                                 5A574F24131DB93900471B88 /* RenderQuote.cpp in Sources */,
</span><span class="cx">                                 D70AD65713E1342B005B50B4 /* RenderRegion.cpp in Sources */,
</span><span class="cx">                                 BCE93F471517C6D5008CCF74 /* RenderRegionSet.cpp in Sources */,
</span><ins>+                                515F79531CFCA3D000CCED93 /* WebCoreCrossThreadCopier.cpp in Sources */,
</ins><span class="cx">                                 A871DFE20A15376B00B12A68 /* RenderReplaced.cpp in Sources */,
</span><span class="cx">                                 CD4BE52A1CE136EF009D87DA /* GenericTaskQueue.cpp in Sources */,
</span><span class="cx">                                 BCA846D60DC67A350026C309 /* RenderReplica.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoredomScriptExecutionContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ScriptExecutionContext.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ScriptExecutionContext.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/dom/ScriptExecutionContext.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ActiveDOMObject.h&quot;
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;DOMTimer.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;SecurityContext.h&quot;
</span><span class="cx"> #include &quot;Supplementable.h&quot;
</span><span class="cx"> #include &lt;runtime/ConsoleTypes.h&gt;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/NoncopyableFunction.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiThreadableBlobRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.cpp (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.cpp        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -35,9 +35,9 @@
</span><span class="cx"> #include &quot;BlobPart.h&quot;
</span><span class="cx"> #include &quot;BlobRegistry.h&quot;
</span><span class="cx"> #include &quot;BlobURL.h&quot;
</span><del>-#include &quot;CrossThreadTask.h&quot;
</del><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &lt;mutex&gt;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #include &lt;wtf/MessageQueue.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformCrossThreadCopiercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/CrossThreadCopier.cpp (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/CrossThreadCopier.cpp        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,136 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-
-#include &quot;CrossThreadCopier.h&quot;
-
-#include &quot;URL.h&quot;
-#include &quot;ResourceError.h&quot;
-#include &quot;ResourceRequest.h&quot;
-#include &quot;ResourceResponse.h&quot;
-#include &quot;SecurityOriginData.h&quot;
-#include &quot;SerializedScriptValue.h&quot;
-#include &quot;SessionID.h&quot;
-#include &quot;ThreadSafeDataBuffer.h&quot;
-#include &lt;wtf/Assertions.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-CrossThreadCopierBase&lt;false, false, URL&gt;::Type CrossThreadCopierBase&lt;false, false, URL&gt;::copy(const URL&amp; url)
-{
-    return url.isolatedCopy();
-}
-
-CrossThreadCopierBase&lt;false, false, String&gt;::Type CrossThreadCopierBase&lt;false, false, String&gt;::copy(const String&amp; str)
-{
-    return str.isolatedCopy();
-}
-
-CrossThreadCopierBase&lt;false, false, ResourceError&gt;::Type CrossThreadCopierBase&lt;false, false, ResourceError&gt;::copy(const ResourceError&amp; error)
-{
-    return error.copy();
-}
-
-CrossThreadCopierBase&lt;false, false, ResourceRequest&gt;::Type CrossThreadCopierBase&lt;false, false, ResourceRequest&gt;::copy(const ResourceRequest&amp; request)
-{
-    return request.copyData();
-}
-
-CrossThreadCopierBase&lt;false, false, ResourceResponse&gt;::Type CrossThreadCopierBase&lt;false, false, ResourceResponse&gt;::copy(const ResourceResponse&amp; response)
-{
-    return response.copyData();
-}
-
-CrossThreadCopierBase&lt;false, false, SecurityOriginData&gt;::Type CrossThreadCopierBase&lt;false, false, SecurityOriginData&gt;::copy(const SecurityOriginData&amp; originData)
-{
-    return originData.isolatedCopy();
-}
-
-CrossThreadCopierBase&lt;false, false, SessionID&gt;::Type CrossThreadCopierBase&lt;false, false, SessionID&gt;::copy(const SessionID&amp; sessionID)
-{
-    return sessionID;
-}
-
-CrossThreadCopierBase&lt;false, false, ThreadSafeDataBuffer&gt;::Type CrossThreadCopierBase&lt;false, false, ThreadSafeDataBuffer&gt;::copy(const ThreadSafeDataBuffer&amp; buffer)
-{
-    return ThreadSafeDataBuffer(buffer);
-}
-
-CrossThreadCopierBase&lt;false, false, std::chrono::system_clock::time_point&gt;::Type CrossThreadCopierBase&lt;false, false, std::chrono::system_clock::time_point&gt;::copy(const std::chrono::system_clock::time_point&amp; timePoint)
-{
-    return timePoint;
-}
-
-// Test CrossThreadCopier using COMPILE_ASSERT.
-
-// Verify that ThreadSafeRefCounted objects get handled correctly.
-class CopierThreadSafeRefCountedTest : public ThreadSafeRefCounted&lt;CopierThreadSafeRefCountedTest&gt; {
-};
-
-COMPILE_ASSERT((std::is_same&lt;
-                  PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;,
-                  CrossThreadCopier&lt;PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;&gt;::Type
-                  &gt;::value),
-               PassRefPtrTest);
-COMPILE_ASSERT((std::is_same&lt;
-                  PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;,
-                  CrossThreadCopier&lt;RefPtr&lt;CopierThreadSafeRefCountedTest&gt;&gt;::Type
-                  &gt;::value),
-               RefPtrTest);
-COMPILE_ASSERT((std::is_same&lt;
-                  PassRefPtr&lt;CopierThreadSafeRefCountedTest&gt;,
-                  CrossThreadCopier&lt;CopierThreadSafeRefCountedTest*&gt;::Type
-                  &gt;::value),
-               RawPointerTest);
-
-// Add specializations for RefCounted types which will let us verify that no other template matches.
-template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, RefPtr&lt;T&gt;&gt; {
-    typedef int Type;
-};
-
-template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, PassRefPtr&lt;T&gt;&gt; {
-    typedef int Type;
-};
-
-template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, T*&gt; {
-    typedef int Type;
-};
-
-// Verify that RefCounted objects only match the above templates which expose Type as int.
-class CopierRefCountedTest : public RefCounted&lt;CopierRefCountedTest&gt; {
-};
-
-static_assert((std::is_same&lt;int, CrossThreadCopier&lt;PassRefPtr&lt;CopierRefCountedTest&gt;&gt;::Type&gt;::value), &quot;CrossThreadCopier specialization improperly applied to PassRefPtr&lt;&gt; of a RefCounted (but not ThreadSafeRefCounted) type&quot;);
-static_assert((std::is_same&lt;int, CrossThreadCopier&lt;RefPtr&lt;CopierRefCountedTest&gt;&gt;::Type&gt;::value), &quot;CrossThreadCopier specialization improperly applied to RefPtr&lt;&gt; of a RefCounted (but not ThreadSafeRefCounted) type&quot;);
-static_assert((std::is_same&lt;int, CrossThreadCopier&lt;CopierRefCountedTest*&gt;::Type&gt;::value), &quot;CrossThreadCopier specialization improperly applied to raw pointer of a RefCounted (but not ThreadSafeRefCounted) type&quot;);
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformCrossThreadCopierh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/CrossThreadCopier.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/CrossThreadCopier.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,185 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
- * Copyright (C) 2014, 2015, 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include &lt;wtf/Assertions.h&gt;
-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/PassRefPtr.h&gt;
-#include &lt;wtf/RefPtr.h&gt;
-#include &lt;wtf/Threading.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class IntRect;
-class IntSize;
-class URL;
-class ResourceError;
-class ResourceRequest;
-class ResourceResponse;
-class SessionID;
-class ThreadSafeDataBuffer;
-struct CrossThreadResourceResponseData;
-struct CrossThreadResourceRequestData;
-struct SecurityOriginData;
-struct ThreadableLoaderOptions;
-
-struct CrossThreadCopierBaseHelper {
-    template&lt;typename T&gt; struct RemovePointer {
-        typedef T Type;
-    };
-    template&lt;typename T&gt; struct RemovePointer&lt;T*&gt; {
-        typedef T Type;
-    };
-
-    template&lt;typename T&gt; struct RemovePointer&lt;RefPtr&lt;T&gt;&gt; {
-        typedef T Type;
-    };
-
-    template&lt;typename T&gt; struct RemovePointer&lt;PassRefPtr&lt;T&gt;&gt; {
-        typedef T Type;
-    };
-
-    template&lt;typename T&gt; struct IsEnumOrConvertibleToInteger {
-        static const bool value = std::is_integral&lt;T&gt;::value || std::is_enum&lt;T&gt;::value || std::is_convertible&lt;T, long double&gt;::value;
-    };
-
-    template&lt;typename T&gt; struct IsThreadSafeRefCountedPointer {
-        static const bool value = std::is_convertible&lt;typename RemovePointer&lt;T&gt;::Type*, ThreadSafeRefCounted&lt;typename RemovePointer&lt;T&gt;::Type&gt;*&gt;::value;
-    };
-};
-
-template&lt;typename T&gt; struct CrossThreadCopierPassThrough {
-    typedef T Type;
-    static Type copy(const T&amp; parameter)
-    {
-        return parameter;
-    }
-};
-
-template&lt;bool isEnumOrConvertibleToInteger, bool isThreadSafeRefCounted, typename T&gt; struct CrossThreadCopierBase;
-
-// Integers get passed through without any changes.
-template&lt;typename T&gt; struct CrossThreadCopierBase&lt;true, false, T&gt; : public CrossThreadCopierPassThrough&lt;T&gt; {
-};
-
-// To allow a type to be passed across threads using its copy constructor, add a forward declaration of the type and
-// a CopyThreadCopierBase&lt;false, false, TypeName&gt; : public CrossThreadCopierPassThrough&lt;TypeName&gt; { }; to this file.
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, IntRect&gt; : public CrossThreadCopierPassThrough&lt;IntRect&gt; {
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, IntSize&gt; : public CrossThreadCopierPassThrough&lt;IntSize&gt; {
-};
-
-// Classes that have an isolatedCopy() method get a default specialization.
-template&lt;class T&gt; struct CrossThreadCopierBase&lt;false, false, T&gt; {
-    static T copy(const T&amp; value)
-    {
-        return value.isolatedCopy();
-    }
-};
-
-// Custom copy methods.
-template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, true, T&gt; {
-    typedef typename CrossThreadCopierBaseHelper::RemovePointer&lt;T&gt;::Type RefCountedType;
-    static_assert(std::is_convertible&lt;RefCountedType*, ThreadSafeRefCounted&lt;RefCountedType&gt;*&gt;::value, &quot;T is not convertible to ThreadSafeRefCounted!&quot;);
-
-    typedef PassRefPtr&lt;RefCountedType&gt; Type;
-    WEBCORE_EXPORT static Type copy(const T&amp; refPtr)
-    {
-        return refPtr;
-    }
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, URL&gt; {
-    typedef URL Type;
-    static Type copy(const URL&amp;);
-};
-
-template&lt;&gt; struct WEBCORE_EXPORT CrossThreadCopierBase&lt;false, false, String&gt; {
-    typedef String Type;
-    static Type copy(const String&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, ResourceError&gt; {
-    typedef ResourceError Type;
-    static Type copy(const ResourceError&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, ResourceRequest&gt; {
-    typedef std::unique_ptr&lt;CrossThreadResourceRequestData&gt; Type;
-    static Type copy(const ResourceRequest&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, ResourceResponse&gt; {
-    typedef std::unique_ptr&lt;CrossThreadResourceResponseData&gt; Type;
-    static Type copy(const ResourceResponse&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, SecurityOriginData&gt; {
-    typedef SecurityOriginData Type;
-    static Type copy(const SecurityOriginData&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, SessionID&gt; {
-    typedef SessionID Type;
-    static Type copy(const SessionID&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, ThreadSafeDataBuffer&gt; {
-    typedef ThreadSafeDataBuffer Type;
-    static Type copy(const ThreadSafeDataBuffer&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, std::chrono::system_clock::time_point&gt; {
-    typedef std::chrono::system_clock::time_point Type;
-    static Type copy(const Type&amp; source);
-};
-
-template&lt;typename T&gt;
-struct CrossThreadCopier : public CrossThreadCopierBase&lt;CrossThreadCopierBaseHelper::IsEnumOrConvertibleToInteger&lt;T&gt;::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer&lt;T&gt;::value, T&gt; {
-};
-
-// Default specialization for Vectors of CrossThreadCopyable classes.
-template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, Vector&lt;T&gt;&gt; {
-    typedef Vector&lt;T&gt; Type;
-    static Type copy(const Type&amp; source)
-    {
-        Type destination;
-        destination.reserveInitialCapacity(source.size());
-        for (auto&amp; object : source)
-            destination.uncheckedAppend(CrossThreadCopier&lt;T&gt;::copy(object));
-        return destination;
-    }
-};
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformCrossThreadTaskh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/CrossThreadTask.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/CrossThreadTask.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/platform/CrossThreadTask.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,253 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef CrossThreadTask_h
-#define CrossThreadTask_h
-
-#include &quot;CrossThreadCopier.h&quot;
-#include &lt;functional&gt;
-
-namespace WebCore {
-
-class CrossThreadTask {
-    WTF_MAKE_NONCOPYABLE(CrossThreadTask);
-public:
-    CrossThreadTask(const std::function&lt;void ()&gt; taskFunction)
-        : m_taskFunction(taskFunction)
-    {
-        ASSERT(taskFunction);
-    }
-
-    void performTask()
-    {
-        m_taskFunction();
-    }
-
-protected:
-    CrossThreadTask() { }
-
-    std::function&lt;void ()&gt; m_taskFunction;
-};
-
-template &lt;typename T, typename... Arguments&gt;
-class CrossThreadTaskImpl final : public CrossThreadTask {
-public:
-    CrossThreadTaskImpl(T* callee, void (T::*method)(Arguments...), Arguments&amp;&amp;... arguments)
-    {
-        m_taskFunction = [callee, method, arguments...] {
-            (callee-&gt;*method)(arguments...);
-        };
-    }
-};
-
-template &lt;typename... Arguments&gt;
-class CrossThreadTaskStaticImpl final : public CrossThreadTask {
-public:
-    CrossThreadTaskStaticImpl(void (*method)(Arguments...), Arguments&amp;&amp;... arguments)
-    {
-        m_taskFunction = [method, arguments...] {
-            method(arguments...);
-        };
-    }
-};
-
-template&lt;typename T&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)())
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T&gt;&gt;(&amp;callee, method);
-}
-
-template&lt;typename T, typename P1, typename MP1&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1),
-    const P1&amp; parameter1)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1));
-}
-
-template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1, MP2),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2));
-
-}
-
-template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1, MP2, MP3),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2,
-    const P3&amp; parameter3)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
-        WebCore::CrossThreadCopier&lt;P3&gt;::copy(parameter3));
-}
-
-template&lt;typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    void (*method)(MP1, MP2, MP3),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2,
-    const P3&amp; parameter3)
-{
-    return std::make_unique&lt;CrossThreadTaskStaticImpl&lt;MP1, MP2, MP3&gt;&gt;(
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
-        WebCore::CrossThreadCopier&lt;P3&gt;::copy(parameter3));
-}
-
-template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1, MP2, MP3, MP4),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2,
-    const P3&amp; parameter3,
-    const P4&amp; parameter4)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
-        WebCore::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
-        WebCore::CrossThreadCopier&lt;P4&gt;::copy(parameter4));
-}
-
-template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1, MP2, MP3, MP4, MP5),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2,
-    const P3&amp; parameter3,
-    const P4&amp; parameter4,
-    const P5&amp; parameter5)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
-        WebCore::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
-        WebCore::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
-        WebCore::CrossThreadCopier&lt;P5&gt;::copy(parameter5));
-}
-
-template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2,
-    const P3&amp; parameter3,
-    const P4&amp; parameter4,
-    const P5&amp; parameter5,
-    const P6&amp; parameter6)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5, MP6&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
-        WebCore::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
-        WebCore::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
-        WebCore::CrossThreadCopier&lt;P5&gt;::copy(parameter5),
-        WebCore::CrossThreadCopier&lt;P6&gt;::copy(parameter6));
-}
-
-template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6, typename P7, typename MP7&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6, MP7),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2,
-    const P3&amp; parameter3,
-    const P4&amp; parameter4,
-    const P5&amp; parameter5,
-    const P6&amp; parameter6,
-    const P7&amp; parameter7)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5, MP6, MP7&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
-        WebCore::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
-        WebCore::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
-        WebCore::CrossThreadCopier&lt;P5&gt;::copy(parameter5),
-        WebCore::CrossThreadCopier&lt;P6&gt;::copy(parameter6),
-        WebCore::CrossThreadCopier&lt;P7&gt;::copy(parameter7));
-}
-
-template&lt;typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6, typename P7, typename MP7, typename P8, typename MP8&gt;
-std::unique_ptr&lt;CrossThreadTask&gt; createCrossThreadTask(
-    T&amp; callee,
-    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8),
-    const P1&amp; parameter1,
-    const P2&amp; parameter2,
-    const P3&amp; parameter3,
-    const P4&amp; parameter4,
-    const P5&amp; parameter5,
-    const P6&amp; parameter6,
-    const P7&amp; parameter7,
-    const P8&amp; parameter8)
-{
-    return std::make_unique&lt;CrossThreadTaskImpl&lt;T, MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8&gt;&gt;(
-        &amp;callee,
-        method,
-        WebCore::CrossThreadCopier&lt;P1&gt;::copy(parameter1),
-        WebCore::CrossThreadCopier&lt;P2&gt;::copy(parameter2),
-        WebCore::CrossThreadCopier&lt;P3&gt;::copy(parameter3),
-        WebCore::CrossThreadCopier&lt;P4&gt;::copy(parameter4),
-        WebCore::CrossThreadCopier&lt;P5&gt;::copy(parameter5),
-        WebCore::CrossThreadCopier&lt;P6&gt;::copy(parameter6),
-        WebCore::CrossThreadCopier&lt;P7&gt;::copy(parameter7),
-        WebCore::CrossThreadCopier&lt;P8&gt;::copy(parameter8));
-}
-
-} // namespace WebCore
-
-#endif // CrossThreadTask_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformWebCoreCrossThreadCopiercpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.cpp (0 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebCoreCrossThreadCopier.h&quot;
+
+#include &quot;SessionID.h&quot;
+#include &quot;ThreadSafeDataBuffer.h&quot;
+
+namespace WTF {
+
+CrossThreadCopierBase&lt;false, false, WebCore::SessionID&gt;::Type CrossThreadCopierBase&lt;false, false, WebCore::SessionID&gt;::copy(const WebCore::SessionID&amp; sessionID)
+{
+    return sessionID;
+}
+
+CrossThreadCopierBase&lt;false, false, WebCore::ThreadSafeDataBuffer&gt;::Type CrossThreadCopierBase&lt;false, false, WebCore::ThreadSafeDataBuffer&gt;::copy(const WebCore::ThreadSafeDataBuffer&amp; buffer)
+{
+    return WebCore::ThreadSafeDataBuffer(buffer);
+}
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformWebCoreCrossThreadCopierh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.h (0 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.h                                (rev 0)
+++ trunk/Source/WebCore/platform/WebCoreCrossThreadCopier.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2014, 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &lt;wtf/CrossThreadCopier.h&gt;
+
+namespace WebCore {
+class SessionID;
+class ThreadSafeDataBuffer;
+}
+
+namespace WTF {
+
+template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, WebCore::SessionID&gt; {
+    typedef WebCore::SessionID Type;
+    static Type copy(const WebCore::SessionID&amp;);
+};
+
+template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, WebCore::ThreadSafeDataBuffer&gt; {
+    typedef WebCore::ThreadSafeDataBuffer Type;
+    static Type copy(const WebCore::ThreadSafeDataBuffer&amp;);
+};
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcfResourceErrorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/cf/ResourceError.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/cf/ResourceError.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/platform/network/cf/ResourceError.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -61,6 +61,8 @@
</span><span class="cx">     WEBCORE_EXPORT CFErrorRef cfError() const;
</span><span class="cx">     WEBCORE_EXPORT operator CFErrorRef() const;
</span><span class="cx"> 
</span><ins>+    ResourceError isolatedCopy() const { return copy(); }
+
</ins><span class="cx"> #if USE(CFNETWORK)
</span><span class="cx"> #if PLATFORM(WIN)
</span><span class="cx">     ResourceError(const String&amp; domain, int errorCode, const URL&amp; failingURL, const String&amp; localizedDescription, CFDataRef certificate);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcfResourceRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/cf/ResourceRequest.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/cf/ResourceRequest.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/platform/network/cf/ResourceRequest.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -24,8 +24,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef ResourceRequest_h
-#define ResourceRequest_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;ResourceRequestBase.h&quot;
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="lines">@@ -82,6 +81,8 @@
</span><span class="cx">         }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+        ResourceRequest isolatedCopy() const { return *ResourceRequest::adopt(copyData()); }
+
</ins><span class="cx">         WEBCORE_EXPORT void updateFromDelegatePreservingOldProperties(const ResourceRequest&amp;);
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="lines">@@ -162,5 +163,3 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif // ResourceRequest_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcfResourceResponseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/cf/ResourceResponse.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/cf/ResourceResponse.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebCore/platform/network/cf/ResourceResponse.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -23,8 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef ResourceResponse_h
-#define ResourceResponse_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;ResourceResponseBase.h&quot;
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="lines">@@ -73,6 +72,8 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    ResourceResponse isolatedCopy() const { return *ResourceResponse::adopt(copyData()); }
+
</ins><span class="cx">     unsigned memoryUsage() const
</span><span class="cx">     {
</span><span class="cx">         // FIXME: Find some programmatic lighweight way to calculate ResourceResponse and associated classes.
</span><span class="lines">@@ -124,5 +125,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif // ResourceResponse_h
</del></span></pre></div>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebKit2/CMakeLists.txt        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -259,7 +259,6 @@
</span><span class="cx">     Shared/WebContextMenuItem.cpp
</span><span class="cx">     Shared/WebContextMenuItemData.cpp
</span><span class="cx">     Shared/WebCoreArgumentCoders.cpp
</span><del>-    Shared/WebCrossThreadCopier.cpp
</del><span class="cx">     Shared/WebEvent.cpp
</span><span class="cx">     Shared/WebEventConversion.cpp
</span><span class="cx">     Shared/WebGeolocationPosition.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebKit2/ChangeLog        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2016-05-30  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Move CrossThreadCopier/CrossThreadTask to WTF.
+        https://bugs.webkit.org/show_bug.cgi?id=158207
+
+        Reviewed by Alex Christensen.
+
+        * CMakeLists.txt:
+        * WebKit2.xcodeproj/project.pbxproj:
+
+        * DatabaseProcess/DatabaseProcess.cpp:
+        * DatabaseProcess/DatabaseProcess.h:
+
+        * Shared/WebCrossThreadCopier.cpp: Removed.
+        * Shared/WebCrossThreadCopier.h: Removed.
+
</ins><span class="cx"> 2016-05-28  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Templatize NoncopyableFunction class similarly to std::function
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseProcesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -33,13 +33,12 @@
</span><span class="cx"> #include &quot;DatabaseProcessProxyMessages.h&quot;
</span><span class="cx"> #include &quot;DatabaseToWebProcessConnection.h&quot;
</span><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><del>-#include &quot;WebCrossThreadCopier.h&quot;
</del><span class="cx"> #include &quot;WebsiteData.h&quot;
</span><del>-#include &lt;WebCore/CrossThreadTask.h&gt;
</del><span class="cx"> #include &lt;WebCore/FileSystem.h&gt;
</span><span class="cx"> #include &lt;WebCore/NotImplemented.h&gt;
</span><span class="cx"> #include &lt;WebCore/SessionID.h&gt;
</span><span class="cx"> #include &lt;WebCore/TextEncoding.h&gt;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseProcessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -23,8 +23,7 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef DatabaseProcess_h
-#define DatabaseProcess_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATABASE_PROCESS)
</span><span class="cx"> 
</span><span class="lines">@@ -33,10 +32,10 @@
</span><span class="cx"> #include &lt;WebCore/IDBBackingStore.h&gt;
</span><span class="cx"> #include &lt;WebCore/IDBServer.h&gt;
</span><span class="cx"> #include &lt;WebCore/UniqueIDBDatabase.h&gt;
</span><ins>+#include &lt;wtf/CrossThreadTask.h&gt;
</ins><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-class CrossThreadTask;
</del><span class="cx"> class SessionID;
</span><span class="cx"> struct SecurityOriginData;
</span><span class="cx"> }
</span><span class="lines">@@ -69,7 +68,7 @@
</span><span class="cx"> 
</span><span class="cx">     WorkQueue&amp; queue() { return m_queue.get(); }
</span><span class="cx"> 
</span><del>-    void postDatabaseTask(std::unique_ptr&lt;WebCore::CrossThreadTask&gt;);
</del><ins>+    void postDatabaseTask(std::unique_ptr&lt;CrossThreadTask&gt;);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     // WebCore::IDBServer::IDBBackingStoreFileHandler
</span><span class="lines">@@ -127,12 +126,10 @@
</span><span class="cx">     HashMap&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; m_blobTemporaryFileSandboxExtensions;
</span><span class="cx">     HashMap&lt;uint64_t, std::function&lt;void (const SandboxExtension::HandleArray&amp;)&gt;&gt; m_sandboxExtensionForBlobsCompletionHandlers;
</span><span class="cx"> 
</span><del>-    Deque&lt;std::unique_ptr&lt;WebCore::CrossThreadTask&gt;&gt; m_databaseTasks;
</del><ins>+    Deque&lt;std::unique_ptr&lt;CrossThreadTask&gt;&gt; m_databaseTasks;
</ins><span class="cx">     Lock m_databaseTaskMutex;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(DATABASE_PROCESS)
</span><del>-
-#endif // DatabaseProcess_h
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCrossThreadCopiercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include &quot;config.h&quot;
-#include &quot;WebCrossThreadCopier.h&quot;
-
-#if ENABLE(INDEXED_DATABASE)
-
-#include &lt;WebCore/IDBKeyData.h&gt;
-
-using namespace WebKit;
-
-namespace WebCore {
-
-Vector&lt;char&gt; CrossThreadCopierBase&lt;false, false, Vector&lt;char&gt;&gt;::copy(const Vector&lt;char&gt;&amp; vector)
-{
-    Vector&lt;char&gt; result;
-    result.reserveInitialCapacity(vector.size());
-    result.appendVector(vector);
-    return result;
-}
-
-Vector&lt;int64_t&gt; CrossThreadCopierBase&lt;false, false, Vector&lt;int64_t&gt;&gt;::copy(const Vector&lt;int64_t&gt;&amp; vector)
-{
-    Vector&lt;int64_t&gt; result;
-    result.reserveInitialCapacity(vector.size());
-    result.appendVector(vector);
-    return result;
-}
-
-Vector&lt;uint8_t&gt; CrossThreadCopierBase&lt;false, false, Vector&lt;uint8_t&gt;&gt;::copy(const Vector&lt;uint8_t&gt;&amp; vector)
-{
-    Vector&lt;uint8_t&gt; result;
-    result.reserveInitialCapacity(vector.size());
-    result.appendVector(vector);
-    return result;
-}
-
-ASCIILiteral CrossThreadCopierBase&lt;false, false, ASCIILiteral&gt;::copy(const ASCIILiteral&amp; literal)
-{
-    return literal;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INDEXED_DATABASE)
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCrossThreadCopierh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -1,74 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebCrossThreadCopier_h
-#define WebCrossThreadCopier_h
-
-#include &lt;WebCore/CrossThreadCopier.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-struct SecurityOriginData;
-}
-
-namespace WebKit {
-enum class LegacyUniqueIDBDatabaseShutdownType;
-}
-
-namespace WTF {
-class ASCIILiteral;
-}
-
-namespace WebCore {
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, WebKit::LegacyUniqueIDBDatabaseShutdownType&gt; {
-    static WebKit::LegacyUniqueIDBDatabaseShutdownType copy(const WebKit::LegacyUniqueIDBDatabaseShutdownType&amp; type)
-    {
-        return type;
-    }
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, Vector&lt;char&gt;&gt; {
-    static Vector&lt;char&gt; copy(const Vector&lt;char&gt;&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, Vector&lt;int64_t&gt;&gt; {
-    static Vector&lt;int64_t&gt; copy(const Vector&lt;int64_t&gt;&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, Vector&lt;uint8_t&gt;&gt; {
-    static Vector&lt;uint8_t&gt; copy(const Vector&lt;uint8_t&gt;&amp;);
-};
-
-template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, WTF::ASCIILiteral&gt; {
-    static WTF::ASCIILiteral copy(const WTF::ASCIILiteral&amp;);
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(INDEXED_DATABASE)
-#endif // WebCrossThreadCopier_h
</del></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (201503 => 201504)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-05-31 03:25:40 UTC (rev 201503)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-05-31 03:35:44 UTC (rev 201504)
</span><span class="lines">@@ -929,7 +929,6 @@
</span><span class="cx">                 515E772B184008B90007203F /* DatabaseProcessCreationParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515E7729184008B90007203F /* DatabaseProcessCreationParameters.cpp */; };
</span><span class="cx">                 515E772C184008B90007203F /* DatabaseProcessCreationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 515E772A184008B90007203F /* DatabaseProcessCreationParameters.h */; };
</span><span class="cx">                 5160BFE113381DF900918999 /* LoggingFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5160BFE013381DF900918999 /* LoggingFoundation.mm */; };
</span><del>-                516311871858446600534647 /* WebCrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 516311861858446600534647 /* WebCrossThreadCopier.h */; };
</del><span class="cx">                 516319921628980A00E22F00 /* NetworkProcessProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 516319911628980A00E22F00 /* NetworkProcessProxyMac.mm */; };
</span><span class="cx">                 5163199416289A6000E22F00 /* NetworkProcessMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51ACC9341628064800342550 /* NetworkProcessMessageReceiver.cpp */; };
</span><span class="cx">                 5163199516289A6300E22F00 /* NetworkProcessMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ACC9351628064800342550 /* NetworkProcessMessages.h */; };
</span><span class="lines">@@ -972,7 +971,6 @@
</span><span class="cx">                 51ACBBA1127A8F2C00D203B9 /* WebContextMenuProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51ACBB9F127A8F2C00D203B9 /* WebContextMenuProxyMac.mm */; };
</span><span class="cx">                 51B15A8413843A3900321AD8 /* EnvironmentUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51B15A8213843A3900321AD8 /* EnvironmentUtilities.cpp */; };
</span><span class="cx">                 51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */; };
</span><del>-                51BA24461858F55D00EA2811 /* WebCrossThreadCopier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51BA24451858F41500EA2811 /* WebCrossThreadCopier.cpp */; };
</del><span class="cx">                 51CD1C5D1B3493AF00142CA5 /* WKSecurityOriginRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CD1C591B3493A900142CA5 /* WKSecurityOriginRef.cpp */; };
</span><span class="cx">                 51CD1C5E1B3493B400142CA5 /* WKSecurityOriginRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1C5A1B3493A900142CA5 /* WKSecurityOriginRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51CD1C651B34B9D400142CA5 /* WKSecurityOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1C5F1B34B9C900142CA5 /* WKSecurityOrigin.h */; settings = {ATTRIBUTES = (Public, ); }; };
</span><span class="lines">@@ -2953,7 +2951,6 @@
</span><span class="cx">                 515E7729184008B90007203F /* DatabaseProcessCreationParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseProcessCreationParameters.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 515E772A184008B90007203F /* DatabaseProcessCreationParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseProcessCreationParameters.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5160BFE013381DF900918999 /* LoggingFoundation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LoggingFoundation.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                516311861858446600534647 /* WebCrossThreadCopier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCrossThreadCopier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 516319911628980A00E22F00 /* NetworkProcessProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NetworkProcessProxyMac.mm; path = mac/NetworkProcessProxyMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5164C0941B05B757004F102A /* ChildProcess.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChildProcess.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 516A4A5B120A2CCD00C05B7F /* APIError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIError.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3001,7 +2998,6 @@
</span><span class="cx">                 51ACC9351628064800342550 /* NetworkProcessMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkProcessMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B15A8213843A3900321AD8 /* EnvironmentUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EnvironmentUtilities.cpp; path = unix/EnvironmentUtilities.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvironmentUtilities.h; path = unix/EnvironmentUtilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                51BA24451858F41500EA2811 /* WebCrossThreadCopier.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebCrossThreadCopier.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 51CD1C591B3493A900142CA5 /* WKSecurityOriginRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKSecurityOriginRef.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51CD1C5A1B3493A900142CA5 /* WKSecurityOriginRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSecurityOriginRef.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51CD1C5F1B34B9C900142CA5 /* WKSecurityOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSecurityOrigin.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4525,8 +4521,6 @@
</span><span class="cx">                                 510FBB991288C95E00AFFDF4 /* WebContextMenuItemData.h */,
</span><span class="cx">                                 939AE7651316E99C00AE06A6 /* WebCoreArgumentCoders.cpp */,
</span><span class="cx">                                 BC1DD7B1114DC396005ADAF3 /* WebCoreArgumentCoders.h */,
</span><del>-                                51BA24451858F41500EA2811 /* WebCrossThreadCopier.cpp */,
-                                516311861858446600534647 /* WebCrossThreadCopier.h */,
</del><span class="cx">                                 C0337DAD127A24FE008FF4F4 /* WebEvent.cpp */,
</span><span class="cx">                                 BC032DAF10F4380F0058C15A /* WebEvent.h */,
</span><span class="cx">                                 BC032DB010F4380F0058C15A /* WebEventConversion.cpp */,
</span><span class="lines">@@ -7704,7 +7698,6 @@
</span><span class="cx">                                 3309344A1315B9220097A7BC /* WebCookieManagerProxyMessages.h in Headers */,
</span><span class="cx">                                 BC1DD7B2114DC396005ADAF3 /* WebCoreArgumentCoders.h in Headers */,
</span><span class="cx">                                 512F589B12A8838800629530 /* WebCredential.h in Headers */,
</span><del>-                                516311871858446600534647 /* WebCrossThreadCopier.h in Headers */,
</del><span class="cx">                                 1AA83F6D1A5B63FF00026EC6 /* WebDatabaseProvider.h in Headers */,
</span><span class="cx">                                 CD19A26E1A13E834008D650E /* WebDiagnosticLoggingClient.h in Headers */,
</span><span class="cx">                                 1A5B1C5518987EDF004FCF9B /* WebDocumentLoader.h in Headers */,
</span><span class="lines">@@ -9189,7 +9182,6 @@
</span><span class="cx">                                 939AE7661316E99C00AE06A6 /* WebCoreArgumentCoders.cpp in Sources */,
</span><span class="cx">                                 BCE23263122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm in Sources */,
</span><span class="cx">                                 512F589A12A8838800629530 /* WebCredential.cpp in Sources */,
</span><del>-                                51BA24461858F55D00EA2811 /* WebCrossThreadCopier.cpp in Sources */,
</del><span class="cx">                                 1AA83F6C1A5B63FF00026EC6 /* WebDatabaseProvider.cpp in Sources */,
</span><span class="cx">                                 CD19A26D1A13E82A008D650E /* WebDiagnosticLoggingClient.cpp in Sources */,
</span><span class="cx">                                 1A5B1C5418987EDF004FCF9B /* WebDocumentLoader.cpp in Sources */,
</span></span></pre>
</div>
</div>

</body>
</html>