<!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>[188126] 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/188126">188126</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2015-08-07 09:04:49 -0700 (Fri, 07 Aug 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move concrete KeyedDecoder/Encoder implementations to WebCore.
https://bugs.webkit.org/show_bug.cgi?id=147757.

Rubberstamped by Andy Estes.

Source/WebCore:

* PlatformEfl.cmake:
* PlatformGTK.cmake:
* WebCore.xcodeproj/project.pbxproj:

* platform/KeyedCoding.h:
(WebCore::KeyedDecoder::KeyedDecoder): Static constructor to be implemented per-platform.
(WebCore::KeyedEncoder::KeyedEncoder): Ditto.

* platform/cf/KeyedDecoderCF.cpp: Renamed from Source/WebKit2/Shared/cf/KeyedDecoder.cpp.
(WebCore::KeyedDecoder::decoder):
(WebCore::KeyedDecoderCF::KeyedDecoderCF):
(WebCore::KeyedDecoderCF::~KeyedDecoderCF):
(WebCore::KeyedDecoderCF::decodeBytes):
(WebCore::KeyedDecoderCF::decodeBool):
(WebCore::KeyedDecoderCF::decodeUInt32):
(WebCore::KeyedDecoderCF::decodeInt32):
(WebCore::KeyedDecoderCF::decodeInt64):
(WebCore::KeyedDecoderCF::decodeFloat):
(WebCore::KeyedDecoderCF::decodeDouble):
(WebCore::KeyedDecoderCF::decodeString):
(WebCore::KeyedDecoderCF::beginObject):
(WebCore::KeyedDecoderCF::endObject):
(WebCore::KeyedDecoderCF::beginArray):
(WebCore::KeyedDecoderCF::beginArrayElement):
(WebCore::KeyedDecoderCF::endArrayElement):
(WebCore::KeyedDecoderCF::endArray):
* platform/cf/KeyedDecoderCF.h: Renamed from Source/WebKit2/Shared/cf/KeyedDecoder.h.

* platform/cf/KeyedEncoderCF.cpp: Renamed from Source/WebKit2/Shared/cf/KeyedEncoder.cpp.
(WebCore::KeyedEncoder::encoder):
(WebCore::createDictionary):
(WebCore::KeyedEncoderCF::KeyedEncoderCF):
(WebCore::KeyedEncoderCF::~KeyedEncoderCF):
(WebCore::KeyedEncoderCF::encodeBytes):
(WebCore::KeyedEncoderCF::encodeBool):
(WebCore::KeyedEncoderCF::encodeUInt32):
(WebCore::KeyedEncoderCF::encodeInt32):
(WebCore::KeyedEncoderCF::encodeInt64):
(WebCore::KeyedEncoderCF::encodeFloat):
(WebCore::KeyedEncoderCF::encodeDouble):
(WebCore::KeyedEncoderCF::encodeString):
(WebCore::KeyedEncoderCF::beginObject):
(WebCore::KeyedEncoderCF::endObject):
(WebCore::KeyedEncoderCF::beginArray):
(WebCore::KeyedEncoderCF::beginArrayElement):
(WebCore::KeyedEncoderCF::endArrayElement):
(WebCore::KeyedEncoderCF::endArray):
(WebCore::KeyedEncoderCF::finishEncoding):
* platform/cf/KeyedEncoderCF.h: Renamed from Source/WebKit2/Shared/cf/KeyedEncoder.h.

* platform/glib/KeyedDecoderGlib.cpp: Renamed from Source/WebKit2/Shared/glib/KeyedDecoder.cpp.
(WebCore::KeyedDecoder::decoder):
(WebCore::KeyedDecoderGlib::KeyedDecoderGlib):
(WebCore::KeyedDecoderGlib::~KeyedDecoderGlib):
(WebCore::KeyedDecoderGlib::dictionaryFromGVariant):
(WebCore::KeyedDecoderGlib::decodeBytes):
(WebCore::KeyedDecoderGlib::decodeSimpleValue):
(WebCore::KeyedDecoderGlib::decodeBool):
(WebCore::KeyedDecoderGlib::decodeUInt32):
(WebCore::KeyedDecoderGlib::decodeInt32):
(WebCore::KeyedDecoderGlib::decodeInt64):
(WebCore::KeyedDecoderGlib::decodeFloat):
(WebCore::KeyedDecoderGlib::decodeDouble):
(WebCore::KeyedDecoderGlib::decodeString):
(WebCore::KeyedDecoderGlib::beginObject):
(WebCore::KeyedDecoderGlib::endObject):
(WebCore::KeyedDecoderGlib::beginArray):
(WebCore::KeyedDecoderGlib::beginArrayElement):
(WebCore::KeyedDecoderGlib::endArrayElement):
(WebCore::KeyedDecoderGlib::endArray):
* platform/glib/KeyedDecoderGlib.h: Renamed from Source/WebKit2/Shared/glib/KeyedDecoder.h.

* platform/glib/KeyedEncoderGlib.cpp: Renamed from Source/WebKit2/Shared/glib/KeyedEncoder.cpp.
(WebCore::KeyedEncoder::encoder):
(WebCore::KeyedEncoderGlib::KeyedEncoderGlib):
(WebCore::KeyedEncoderGlib::~KeyedEncoderGlib):
(WebCore::KeyedEncoderGlib::encodeBytes):
(WebCore::KeyedEncoderGlib::encodeBool):
(WebCore::KeyedEncoderGlib::encodeUInt32):
(WebCore::KeyedEncoderGlib::encodeInt32):
(WebCore::KeyedEncoderGlib::encodeInt64):
(WebCore::KeyedEncoderGlib::encodeFloat):
(WebCore::KeyedEncoderGlib::encodeDouble):
(WebCore::KeyedEncoderGlib::encodeString):
(WebCore::KeyedEncoderGlib::beginObject):
(WebCore::KeyedEncoderGlib::endObject):
(WebCore::KeyedEncoderGlib::beginArray):
(WebCore::KeyedEncoderGlib::beginArrayElement):
(WebCore::KeyedEncoderGlib::endArrayElement):
(WebCore::KeyedEncoderGlib::endArray):
(WebCore::KeyedEncoderGlib::finishEncoding):
* platform/glib/KeyedEncoderGlib.h: Renamed from Source/WebKit2/Shared/glib/KeyedEncoder.h.

Source/WebKit2:

* DatabaseProcess/IndexedDB/IDBSerialization.cpp:
(WebKit::serializeIDBKeyPath):
(WebKit::deserializeIDBKeyPath):
(WebKit::serializeIDBKeyData):
(WebKit::deserializeIDBKeyData):

* PlatformEfl.cmake:
* PlatformGTK.cmake:
* WebKit2.xcodeproj/project.pbxproj:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorePlatformEflcmake">trunk/Source/WebCore/PlatformEfl.cmake</a></li>
<li><a href="#trunkSourceWebCorePlatformGTKcmake">trunk/Source/WebCore/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreplatformKeyedCodingh">trunk/Source/WebCore/platform/KeyedCoding.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBIDBSerializationcpp">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.cpp</a></li>
<li><a href="#trunkSourceWebKit2PlatformEflcmake">trunk/Source/WebKit2/PlatformEfl.cmake</a></li>
<li><a href="#trunkSourceWebKit2PlatformGTKcmake">trunk/Source/WebKit2/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformcfKeyedDecoderCFcpp">trunk/Source/WebCore/platform/cf/KeyedDecoderCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformcfKeyedDecoderCFh">trunk/Source/WebCore/platform/cf/KeyedDecoderCF.h</a></li>
<li><a href="#trunkSourceWebCoreplatformcfKeyedEncoderCFcpp">trunk/Source/WebCore/platform/cf/KeyedEncoderCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformcfKeyedEncoderCFh">trunk/Source/WebCore/platform/cf/KeyedEncoderCF.h</a></li>
<li><a href="#trunkSourceWebCoreplatformglibKeyedDecoderGlibcpp">trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformglibKeyedDecoderGlibh">trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.h</a></li>
<li><a href="#trunkSourceWebCoreplatformglibKeyedEncoderGlibcpp">trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformglibKeyedEncoderGlibh">trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2SharedcfKeyedDecodercpp">trunk/Source/WebKit2/Shared/cf/KeyedDecoder.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedcfKeyedDecoderh">trunk/Source/WebKit2/Shared/cf/KeyedDecoder.h</a></li>
<li><a href="#trunkSourceWebKit2SharedcfKeyedEncodercpp">trunk/Source/WebKit2/Shared/cf/KeyedEncoder.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedcfKeyedEncoderh">trunk/Source/WebKit2/Shared/cf/KeyedEncoder.h</a></li>
<li><a href="#trunkSourceWebKit2SharedglibKeyedDecodercpp">trunk/Source/WebKit2/Shared/glib/KeyedDecoder.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedglibKeyedDecoderh">trunk/Source/WebKit2/Shared/glib/KeyedDecoder.h</a></li>
<li><a href="#trunkSourceWebKit2SharedglibKeyedEncodercpp">trunk/Source/WebKit2/Shared/glib/KeyedEncoder.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedglibKeyedEncoderh">trunk/Source/WebKit2/Shared/glib/KeyedEncoder.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebCore/ChangeLog        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,3 +1,103 @@
</span><ins>+2015-08-07  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Move concrete KeyedDecoder/Encoder implementations to WebCore.
+        https://bugs.webkit.org/show_bug.cgi?id=147757.
+
+        Rubberstamped by Andy Estes.
+
+        * PlatformEfl.cmake:
+        * PlatformGTK.cmake:
+        * WebCore.xcodeproj/project.pbxproj:
+
+        * platform/KeyedCoding.h:
+        (WebCore::KeyedDecoder::KeyedDecoder): Static constructor to be implemented per-platform.
+        (WebCore::KeyedEncoder::KeyedEncoder): Ditto.
+
+        * platform/cf/KeyedDecoderCF.cpp: Renamed from Source/WebKit2/Shared/cf/KeyedDecoder.cpp.
+        (WebCore::KeyedDecoder::decoder):
+        (WebCore::KeyedDecoderCF::KeyedDecoderCF):
+        (WebCore::KeyedDecoderCF::~KeyedDecoderCF):
+        (WebCore::KeyedDecoderCF::decodeBytes):
+        (WebCore::KeyedDecoderCF::decodeBool):
+        (WebCore::KeyedDecoderCF::decodeUInt32):
+        (WebCore::KeyedDecoderCF::decodeInt32):
+        (WebCore::KeyedDecoderCF::decodeInt64):
+        (WebCore::KeyedDecoderCF::decodeFloat):
+        (WebCore::KeyedDecoderCF::decodeDouble):
+        (WebCore::KeyedDecoderCF::decodeString):
+        (WebCore::KeyedDecoderCF::beginObject):
+        (WebCore::KeyedDecoderCF::endObject):
+        (WebCore::KeyedDecoderCF::beginArray):
+        (WebCore::KeyedDecoderCF::beginArrayElement):
+        (WebCore::KeyedDecoderCF::endArrayElement):
+        (WebCore::KeyedDecoderCF::endArray):
+        * platform/cf/KeyedDecoderCF.h: Renamed from Source/WebKit2/Shared/cf/KeyedDecoder.h.
+        
+        * platform/cf/KeyedEncoderCF.cpp: Renamed from Source/WebKit2/Shared/cf/KeyedEncoder.cpp.
+        (WebCore::KeyedEncoder::encoder):
+        (WebCore::createDictionary):
+        (WebCore::KeyedEncoderCF::KeyedEncoderCF):
+        (WebCore::KeyedEncoderCF::~KeyedEncoderCF):
+        (WebCore::KeyedEncoderCF::encodeBytes):
+        (WebCore::KeyedEncoderCF::encodeBool):
+        (WebCore::KeyedEncoderCF::encodeUInt32):
+        (WebCore::KeyedEncoderCF::encodeInt32):
+        (WebCore::KeyedEncoderCF::encodeInt64):
+        (WebCore::KeyedEncoderCF::encodeFloat):
+        (WebCore::KeyedEncoderCF::encodeDouble):
+        (WebCore::KeyedEncoderCF::encodeString):
+        (WebCore::KeyedEncoderCF::beginObject):
+        (WebCore::KeyedEncoderCF::endObject):
+        (WebCore::KeyedEncoderCF::beginArray):
+        (WebCore::KeyedEncoderCF::beginArrayElement):
+        (WebCore::KeyedEncoderCF::endArrayElement):
+        (WebCore::KeyedEncoderCF::endArray):
+        (WebCore::KeyedEncoderCF::finishEncoding):
+        * platform/cf/KeyedEncoderCF.h: Renamed from Source/WebKit2/Shared/cf/KeyedEncoder.h.
+        
+        * platform/glib/KeyedDecoderGlib.cpp: Renamed from Source/WebKit2/Shared/glib/KeyedDecoder.cpp.
+        (WebCore::KeyedDecoder::decoder):
+        (WebCore::KeyedDecoderGlib::KeyedDecoderGlib):
+        (WebCore::KeyedDecoderGlib::~KeyedDecoderGlib):
+        (WebCore::KeyedDecoderGlib::dictionaryFromGVariant):
+        (WebCore::KeyedDecoderGlib::decodeBytes):
+        (WebCore::KeyedDecoderGlib::decodeSimpleValue):
+        (WebCore::KeyedDecoderGlib::decodeBool):
+        (WebCore::KeyedDecoderGlib::decodeUInt32):
+        (WebCore::KeyedDecoderGlib::decodeInt32):
+        (WebCore::KeyedDecoderGlib::decodeInt64):
+        (WebCore::KeyedDecoderGlib::decodeFloat):
+        (WebCore::KeyedDecoderGlib::decodeDouble):
+        (WebCore::KeyedDecoderGlib::decodeString):
+        (WebCore::KeyedDecoderGlib::beginObject):
+        (WebCore::KeyedDecoderGlib::endObject):
+        (WebCore::KeyedDecoderGlib::beginArray):
+        (WebCore::KeyedDecoderGlib::beginArrayElement):
+        (WebCore::KeyedDecoderGlib::endArrayElement):
+        (WebCore::KeyedDecoderGlib::endArray):
+        * platform/glib/KeyedDecoderGlib.h: Renamed from Source/WebKit2/Shared/glib/KeyedDecoder.h.
+        
+        * platform/glib/KeyedEncoderGlib.cpp: Renamed from Source/WebKit2/Shared/glib/KeyedEncoder.cpp.
+        (WebCore::KeyedEncoder::encoder):
+        (WebCore::KeyedEncoderGlib::KeyedEncoderGlib):
+        (WebCore::KeyedEncoderGlib::~KeyedEncoderGlib):
+        (WebCore::KeyedEncoderGlib::encodeBytes):
+        (WebCore::KeyedEncoderGlib::encodeBool):
+        (WebCore::KeyedEncoderGlib::encodeUInt32):
+        (WebCore::KeyedEncoderGlib::encodeInt32):
+        (WebCore::KeyedEncoderGlib::encodeInt64):
+        (WebCore::KeyedEncoderGlib::encodeFloat):
+        (WebCore::KeyedEncoderGlib::encodeDouble):
+        (WebCore::KeyedEncoderGlib::encodeString):
+        (WebCore::KeyedEncoderGlib::beginObject):
+        (WebCore::KeyedEncoderGlib::endObject):
+        (WebCore::KeyedEncoderGlib::beginArray):
+        (WebCore::KeyedEncoderGlib::beginArrayElement):
+        (WebCore::KeyedEncoderGlib::endArrayElement):
+        (WebCore::KeyedEncoderGlib::endArray):
+        (WebCore::KeyedEncoderGlib::finishEncoding):
+        * platform/glib/KeyedEncoderGlib.h: Renamed from Source/WebKit2/Shared/glib/KeyedEncoder.h.
+
</ins><span class="cx"> 2015-08-07  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GStreamer] Do not automatically show PackageKit codec installation notifications
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformEflcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformEfl.cmake (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformEfl.cmake        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebCore/PlatformEfl.cmake        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -106,6 +106,9 @@
</span><span class="cx">     platform/geoclue/GeolocationProviderGeoclue1.cpp
</span><span class="cx">     platform/geoclue/GeolocationProviderGeoclue2.cpp
</span><span class="cx"> 
</span><ins>+    platform/glib/KeyedDecoderGlib.cpp
+    platform/glib/KeyedEncoderGlib.cpp
+
</ins><span class="cx">     platform/graphics/ImageSource.cpp
</span><span class="cx">     platform/graphics/PlatformDisplay.cpp
</span><span class="cx">     platform/graphics/WOFFFileFormat.cpp
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformGTK.cmake (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformGTK.cmake        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebCore/PlatformGTK.cmake        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -65,6 +65,9 @@
</span><span class="cx">     platform/geoclue/GeolocationProviderGeoclue1.cpp
</span><span class="cx">     platform/geoclue/GeolocationProviderGeoclue2.cpp
</span><span class="cx"> 
</span><ins>+    platform/glib/KeyedDecoderGlib.cpp
+    platform/glib/KeyedEncoderGlib.cpp
+
</ins><span class="cx">     platform/graphics/GLContext.cpp
</span><span class="cx">     platform/graphics/GraphicsContext3DPrivate.cpp
</span><span class="cx">     platform/graphics/ImageSource.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1998,6 +1998,10 @@
</span><span class="cx">                 5179CE2A195C91860019C198 /* GamepadProviderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5179CE29195C91860019C198 /* GamepadProviderClient.h */; };
</span><span class="cx">                 5179CE36195CAC7E0019C198 /* HIDGamepadProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5179CE34195CAC7E0019C198 /* HIDGamepadProvider.cpp */; };
</span><span class="cx">                 5179CE37195CAC7E0019C198 /* HIDGamepadProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5179CE35195CAC7E0019C198 /* HIDGamepadProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                517A63C31B74318700E7DCDC /* KeyedDecoderCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */; };
+                517A63C41B74318B00E7DCDC /* KeyedEncoderCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A63C11B74317E00E7DCDC /* KeyedEncoderCF.cpp */; };
+                517A63C51B74318F00E7DCDC /* KeyedDecoderCF.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A63C01B74317E00E7DCDC /* KeyedDecoderCF.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                517A63C61B74319200E7DCDC /* KeyedEncoderCF.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A63C21B74317E00E7DCDC /* KeyedEncoderCF.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 517FBA1E151AB17C00B57959 /* DOMWindowExtension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */; };
</span><span class="cx">                 5189F01D10B37BD900F3C739 /* JSPopStateEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5189F01B10B37BD900F3C739 /* JSPopStateEvent.cpp */; };
</span><span class="cx">                 5189F01E10B37BD900F3C739 /* JSPopStateEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5189F01C10B37BD900F3C739 /* JSPopStateEvent.h */; };
</span><span class="lines">@@ -9249,6 +9253,10 @@
</span><span class="cx">                 5179CE29195C91860019C198 /* GamepadProviderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadProviderClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5179CE34195CAC7E0019C198 /* HIDGamepadProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HIDGamepadProvider.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5179CE35195CAC7E0019C198 /* HIDGamepadProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDGamepadProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyedDecoderCF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                517A63C01B74317E00E7DCDC /* KeyedDecoderCF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyedDecoderCF.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                517A63C11B74317E00E7DCDC /* KeyedEncoderCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyedEncoderCF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                517A63C21B74317E00E7DCDC /* KeyedEncoderCF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyedEncoderCF.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtension.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 517FBA18151AA71B00B57959 /* DOMWindowExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindowExtension.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5189F01B10B37BD900F3C739 /* JSPopStateEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPopStateEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -15451,6 +15459,10 @@
</span><span class="cx">                                 443817FD1A91B2F8006E04F2 /* CoreMediaSoftLink.cpp */,
</span><span class="cx">                                 443817FE1A91B2F8006E04F2 /* CoreMediaSoftLink.h */,
</span><span class="cx">                                 5160306B0CC4362300C8AC25 /* FileSystemCF.cpp */,
</span><ins>+                                517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */,
+                                517A63C01B74317E00E7DCDC /* KeyedDecoderCF.h */,
+                                517A63C11B74317E00E7DCDC /* KeyedEncoderCF.cpp */,
+                                517A63C21B74317E00E7DCDC /* KeyedEncoderCF.h */,
</ins><span class="cx">                                 5CBC8DAA1AAA302200E1C803 /* MediaAccessibilitySoftLink.cpp */,
</span><span class="cx">                                 5CBC8DAB1AAA302200E1C803 /* MediaAccessibilitySoftLink.h */,
</span><span class="cx">                                 2D76BB8319456F8100CFD29A /* RunLoopObserver.cpp */,
</span><span class="lines">@@ -25624,6 +25636,7 @@
</span><span class="cx">                                 07969DB017D14151007FF842 /* JSRTCDTMFSender.h in Headers */,
</span><span class="cx">                                 07969DB217D14151007FF842 /* JSRTCDTMFToneChangeEvent.h in Headers */,
</span><span class="cx">                                 07969DB617D14151007FF842 /* JSRTCIceCandidate.h in Headers */,
</span><ins>+                                517A63C61B74319200E7DCDC /* KeyedEncoderCF.h in Headers */,
</ins><span class="cx">                                 07969DB817D14151007FF842 /* JSRTCIceCandidateEvent.h in Headers */,
</span><span class="cx">                                 073794EC19EE341E00E5A045 /* JSRTCIceServer.h in Headers */,
</span><span class="cx">                                 07969DBA17D14151007FF842 /* JSRTCPeerConnection.h in Headers */,
</span><span class="lines">@@ -26424,6 +26437,7 @@
</span><span class="cx">                                 31955A88160D199200858025 /* RenderSnapshottedPlugIn.h in Headers */,
</span><span class="cx">                                 BC8C8FAE0DDCD31B00B592F4 /* RenderStyle.h in Headers */,
</span><span class="cx">                                 BC5EB6680E81CB7100B25965 /* RenderStyleConstants.h in Headers */,
</span><ins>+                                517A63C51B74318F00E7DCDC /* KeyedDecoderCF.h in Headers */,
</ins><span class="cx">                                 436708C112D9CA4B00044234 /* RenderSVGBlock.h in Headers */,
</span><span class="cx">                                 436708C312D9CA4B00044234 /* RenderSVGContainer.h in Headers */,
</span><span class="cx">                                 2B365C841525119E0091D27B /* RenderSVGEllipse.h in Headers */,
</span><span class="lines">@@ -29625,6 +29639,7 @@
</span><span class="cx">                                 07C59B6817F784BA000FBCBB /* MediaSourceStates.cpp in Sources */,
</span><span class="cx">                                 078E08FF17D14CEE00420AA1 /* MediaStream.cpp in Sources */,
</span><span class="cx">                                 078E094B17D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp in Sources */,
</span><ins>+                                517A63C31B74318700E7DCDC /* KeyedDecoderCF.cpp in Sources */,
</ins><span class="cx">                                 0783228418013ED800999E0C /* MediaStreamAudioSource.cpp in Sources */,
</span><span class="cx">                                 FD671A77159BB07000197559 /* MediaStreamAudioSourceNode.cpp in Sources */,
</span><span class="cx">                                 0705851517FB0EEA005F2BCB /* MediaStreamCapabilities.cpp in Sources */,
</span><span class="lines">@@ -29735,6 +29750,7 @@
</span><span class="cx">                                 1A0D57360A5C77FE007EDD4C /* OverflowEvent.cpp in Sources */,
</span><span class="cx">                                 9B55EEE91B3E8898005342BC /* EditorCocoa.mm in Sources */,
</span><span class="cx">                                 65FEA86909833ADE00BED4AB /* Page.cpp in Sources */,
</span><ins>+                                517A63C41B74318B00E7DCDC /* KeyedEncoderCF.cpp in Sources */,
</ins><span class="cx">                                 1477E7760BF4134A00152872 /* PageCache.cpp in Sources */,
</span><span class="cx">                                 CD5E5B611A15F156000C609E /* PageConfiguration.cpp in Sources */,
</span><span class="cx">                                 F3820892147D35F90010BC06 /* PageConsoleAgent.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformKeyedCodingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/KeyedCoding.h (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/KeyedCoding.h        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebCore/platform/KeyedCoding.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -35,10 +35,11 @@
</span><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><span class="cx"> class KeyedDecoder {
</span><del>-protected:
</del><ins>+public:
+    WEBCORE_EXPORT static std::unique_ptr&lt;KeyedDecoder&gt; decoder(const uint8_t* data, size_t);
+
</ins><span class="cx">     virtual ~KeyedDecoder() { }
</span><span class="cx"> 
</span><del>-public:
</del><span class="cx">     virtual bool decodeBytes(const String&amp; key, const uint8_t*&amp;, size_t&amp;) = 0;
</span><span class="cx">     virtual bool decodeBool(const String&amp; key, bool&amp;) = 0;
</span><span class="cx">     virtual bool decodeUInt32(const String&amp; key, uint32_t&amp;) = 0;
</span><span class="lines">@@ -125,6 +126,11 @@
</span><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+protected:
+    KeyedDecoder()
+    {
+    }
+
</ins><span class="cx"> private:
</span><span class="cx">     virtual bool beginObject(const String&amp; key) = 0;
</span><span class="cx">     virtual void endObject() = 0;
</span><span class="lines">@@ -136,10 +142,11 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class KeyedEncoder {
</span><del>-protected:
</del><ins>+public:
+    WEBCORE_EXPORT static std::unique_ptr&lt;KeyedEncoder&gt; encoder();
+
</ins><span class="cx">     virtual ~KeyedEncoder() { }
</span><span class="cx"> 
</span><del>-public:
</del><span class="cx">     virtual void encodeBytes(const String&amp; key, const uint8_t*, size_t) = 0;
</span><span class="cx">     virtual void encodeBool(const String&amp; key, bool) = 0;
</span><span class="cx">     virtual void encodeUInt32(const String&amp; key, uint32_t) = 0;
</span><span class="lines">@@ -188,6 +195,11 @@
</span><span class="cx">         endArray();
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+protected:
+    KeyedEncoder()
+    {
+    }
+
</ins><span class="cx"> private:
</span><span class="cx">     virtual void beginObject(const String&amp; key) = 0;
</span><span class="cx">     virtual void endObject() = 0;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformcfKeyedDecoderCFcppfromrev188125trunkSourceWebKit2SharedcfKeyedDecodercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/cf/KeyedDecoderCF.cpp (from rev 188125, trunk/Source/WebKit2/Shared/cf/KeyedDecoder.cpp) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/cf/KeyedDecoderCF.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/cf/KeyedDecoderCF.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,183 @@
</span><ins>+/*
+ * Copyright (C) 2014 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;KeyedDecoderCF.h&quot;
+
+#include &lt;wtf/cf/TypeCastsCF.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WebCore {
+
+std::unique_ptr&lt;KeyedDecoder&gt; KeyedDecoder::decoder(const uint8_t* data, size_t size)
+{
+    return std::make_unique&lt;KeyedDecoderCF&gt;(data, size);
+}
+
+KeyedDecoderCF::KeyedDecoderCF(const uint8_t* data, size_t size)
+{
+    auto cfData = adoptCF(CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, data, size, kCFAllocatorNull));
+
+    if (auto rootDictionary = adoptCF(dynamic_cf_cast&lt;CFDictionaryRef&gt;(CFPropertyListCreateWithData(kCFAllocatorDefault, cfData.get(), kCFPropertyListImmutable, nullptr, nullptr))))
+        m_rootDictionary = WTF::move(rootDictionary);
+    else
+        m_rootDictionary = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, nullptr, nullptr, 0, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
+    m_dictionaryStack.append(m_rootDictionary.get());
+}
+
+KeyedDecoderCF::~KeyedDecoderCF()
+{
+    ASSERT(m_dictionaryStack.size() == 1);
+    ASSERT(m_dictionaryStack.last() == m_rootDictionary);
+    ASSERT(m_arrayStack.isEmpty());
+    ASSERT(m_arrayIndexStack.isEmpty());
+}
+
+bool KeyedDecoderCF::decodeBytes(const String&amp; key, const uint8_t*&amp; bytes, size_t&amp; size)
+{
+    auto data = dynamic_cf_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!data)
+        return false;
+
+    bytes = CFDataGetBytePtr(data);
+    size = CFDataGetLength(data);
+    return true;
+}
+
+bool KeyedDecoderCF::decodeBool(const String&amp; key, bool&amp; result)
+{
+    auto boolean = dynamic_cf_cast&lt;CFBooleanRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!boolean)
+        return false;
+
+    result = CFBooleanGetValue(boolean);
+    return true;
+}
+
+bool KeyedDecoderCF::decodeUInt32(const String&amp; key, uint32_t&amp; result)
+{
+    return decodeInt32(key, reinterpret_cast&lt;int32_t&amp;&gt;(result));
+}
+
+bool KeyedDecoderCF::decodeInt32(const String&amp; key, int32_t&amp; result)
+{
+    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!number)
+        return false;
+
+    return CFNumberGetValue(number, kCFNumberSInt32Type, &amp;result);
+}
+
+bool KeyedDecoderCF::decodeInt64(const String&amp; key, int64_t&amp; result)
+{
+    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!number)
+        return false;
+
+    return CFNumberGetValue(number, kCFNumberSInt64Type, &amp;result);
+}
+
+bool KeyedDecoderCF::decodeFloat(const String&amp; key, float&amp; result)
+{
+    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!number)
+        return false;
+
+    return CFNumberGetValue(number, kCFNumberFloatType, &amp;result);
+}
+
+bool KeyedDecoderCF::decodeDouble(const String&amp; key, double&amp; result)
+{
+    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!number)
+        return false;
+
+    return CFNumberGetValue(number, kCFNumberDoubleType, &amp;result);
+}
+
+bool KeyedDecoderCF::decodeString(const String&amp; key, String&amp; result)
+{
+    auto string = dynamic_cf_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!string)
+        return false;
+
+    result = string;
+    return true;
+}
+
+bool KeyedDecoderCF::beginObject(const String&amp; key)
+{
+    auto dictionary = dynamic_cf_cast&lt;CFDictionaryRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!dictionary)
+        return false;
+
+    m_dictionaryStack.append(dictionary);
+    return true;
+}
+
+void KeyedDecoderCF::endObject()
+{
+    m_dictionaryStack.removeLast();
+}
+
+bool KeyedDecoderCF::beginArray(const String&amp; key)
+{
+    auto array = dynamic_cf_cast&lt;CFArrayRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
+    if (!array)
+        return false;
+
+    for (CFIndex i = 0; i &lt; CFArrayGetCount(array); ++i) {
+        CFTypeRef object = CFArrayGetValueAtIndex(array, i);
+        if (CFGetTypeID(object) != CFDictionaryGetTypeID())
+            return false;
+    }
+
+    m_arrayStack.append(array);
+    m_arrayIndexStack.append(0);
+    return true;
+}
+
+bool KeyedDecoderCF::beginArrayElement()
+{
+    if (m_arrayIndexStack.last() &gt;= CFArrayGetCount(m_arrayStack.last()))
+        return false;
+
+    auto dictionary = checked_cf_cast&lt;CFDictionaryRef&gt;(CFArrayGetValueAtIndex(m_arrayStack.last(), m_arrayIndexStack.last()++));
+    m_dictionaryStack.append(dictionary);
+    return true;
+}
+
+void KeyedDecoderCF::endArrayElement()
+{
+    m_dictionaryStack.removeLast();
+}
+
+void KeyedDecoderCF::endArray()
+{
+    m_arrayStack.removeLast();
+    m_arrayIndexStack.removeLast();
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformcfKeyedDecoderCFhfromrev188125trunkSourceWebKit2SharedcfKeyedDecoderh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/cf/KeyedDecoderCF.h (from rev 188125, trunk/Source/WebKit2/Shared/cf/KeyedDecoder.h) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/cf/KeyedDecoderCF.h                                (rev 0)
+++ trunk/Source/WebCore/platform/cf/KeyedDecoderCF.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2014 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 KeyedDecoderCF_h
+#define KeyedDecoderCF_h
+
+#include &quot;KeyedCoding.h&quot;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+namespace WebCore {
+
+class KeyedDecoderCF final : public KeyedDecoder {
+public:
+    KeyedDecoderCF(const uint8_t* data, size_t);
+    virtual ~KeyedDecoderCF() override;
+
+private:
+    virtual bool decodeBytes(const String&amp; key, const uint8_t*&amp;, size_t&amp;) override;
+    virtual bool decodeBool(const String&amp; key, bool&amp;) override;
+    virtual bool decodeUInt32(const String&amp; key, uint32_t&amp;) override;
+    virtual bool decodeInt32(const String&amp; key, int32_t&amp;) override;
+    virtual bool decodeInt64(const String&amp; key, int64_t&amp;) override;
+    virtual bool decodeFloat(const String&amp; key, float&amp;) override;
+    virtual bool decodeDouble(const String&amp; key, double&amp;) override;
+    virtual bool decodeString(const String&amp; key, String&amp;) override;
+
+    virtual bool beginObject(const String&amp; key) override;
+    virtual void endObject() override;
+
+    virtual bool beginArray(const String&amp; key) override;
+    virtual bool beginArrayElement() override;
+    virtual void endArrayElement() override;
+    virtual void endArray() override;
+
+    RetainPtr&lt;CFDictionaryRef&gt; m_rootDictionary;
+
+    Vector&lt;CFDictionaryRef, 16&gt; m_dictionaryStack;
+    Vector&lt;CFArrayRef, 16&gt; m_arrayStack;
+    Vector&lt;CFIndex&gt; m_arrayIndexStack;
+};
+
+} // namespace WebCore
+
+#endif // KeyedDecoderCF_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformcfKeyedEncoderCFcppfromrev188125trunkSourceWebKit2SharedcfKeyedEncodercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/cf/KeyedEncoderCF.cpp (from rev 188125, trunk/Source/WebKit2/Shared/cf/KeyedEncoder.cpp) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/cf/KeyedEncoderCF.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/cf/KeyedEncoderCF.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,152 @@
</span><ins>+/*
+ * 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;KeyedEncoderCF.h&quot;
+
+#include &quot;SharedBuffer.h&quot;
+#include &lt;CoreFoundation/CoreFoundation.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WebCore {
+
+std::unique_ptr&lt;KeyedEncoder&gt; KeyedEncoder::encoder()
+{
+    return std::make_unique&lt;KeyedEncoderCF&gt;();
+}
+
+static RetainPtr&lt;CFMutableDictionaryRef&gt; createDictionary()
+{
+    return adoptCF(CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
+}
+
+KeyedEncoderCF::KeyedEncoderCF()
+    : m_rootDictionary(createDictionary())
+{
+    m_dictionaryStack.append(m_rootDictionary.get());
+}
+    
+KeyedEncoderCF::~KeyedEncoderCF()
+{
+    ASSERT(m_dictionaryStack.size() == 1);
+    ASSERT(m_dictionaryStack.last() == m_rootDictionary);
+    ASSERT(m_arrayStack.isEmpty());
+}
+
+void KeyedEncoderCF::encodeBytes(const String&amp; key, const uint8_t* bytes, size_t size)
+{
+    auto data = adoptCF(CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, bytes, size, kCFAllocatorNull));
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), data.get());
+}
+
+void KeyedEncoderCF::encodeBool(const String&amp; key, bool value)
+{
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), value ? kCFBooleanTrue : kCFBooleanFalse);
+}
+
+void KeyedEncoderCF::encodeUInt32(const String&amp; key, uint32_t value)
+{
+    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &amp;value));
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
+}
+
+void KeyedEncoderCF::encodeInt32(const String&amp; key, int32_t value)
+{
+    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &amp;value));
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
+}
+
+void KeyedEncoderCF::encodeInt64(const String&amp; key, int64_t value)
+{
+    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &amp;value));
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
+}
+
+void KeyedEncoderCF::encodeFloat(const String&amp; key, float value)
+{
+    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &amp;value));
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
+}
+
+void KeyedEncoderCF::encodeDouble(const String&amp; key, double value)
+{
+    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberDoubleType, &amp;value));
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
+}
+
+void KeyedEncoderCF::encodeString(const String&amp; key, const String&amp; value)
+{
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), value.createCFString().get());
+}
+
+void KeyedEncoderCF::beginObject(const String&amp; key)
+{
+    auto dictionary = createDictionary();
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), dictionary.get());
+
+    m_dictionaryStack.append(dictionary.get());
+}
+
+void KeyedEncoderCF::endObject()
+{
+    m_dictionaryStack.removeLast();
+}
+
+void KeyedEncoderCF::beginArray(const String&amp; key)
+{
+    auto array = adoptCF(CFArrayCreateMutable(kCFAllocatorDefault, 0, &amp;kCFTypeArrayCallBacks));
+    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), array.get());
+
+    m_arrayStack.append(array.get());
+}
+
+void KeyedEncoderCF::beginArrayElement()
+{
+    auto dictionary = createDictionary();
+    CFArrayAppendValue(m_arrayStack.last(), dictionary.get());
+
+    m_dictionaryStack.append(dictionary.get());
+}
+
+void KeyedEncoderCF::endArrayElement()
+{
+    m_dictionaryStack.removeLast();
+}
+
+void KeyedEncoderCF::endArray()
+{
+    m_arrayStack.removeLast();
+}
+
+PassRefPtr&lt;SharedBuffer&gt; KeyedEncoderCF::finishEncoding()
+{
+    RetainPtr&lt;CFDataRef&gt; data = adoptCF(CFPropertyListCreateData(kCFAllocatorDefault, m_rootDictionary.get(), kCFPropertyListBinaryFormat_v1_0, 0, nullptr));
+    if (!data)
+        return nullptr;
+
+    return SharedBuffer::wrapCFData(data.get());
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformcfKeyedEncoderCFhfromrev188125trunkSourceWebKit2SharedcfKeyedEncoderh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/cf/KeyedEncoderCF.h (from rev 188125, trunk/Source/WebKit2/Shared/cf/KeyedEncoder.h) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/cf/KeyedEncoderCF.h                                (rev 0)
+++ trunk/Source/WebCore/platform/cf/KeyedEncoderCF.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * 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 KeyedEncoderCF_h
+#define KeyedEncoderCF_h
+
+#include &quot;KeyedCoding.h&quot;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+namespace WebCore {
+
+class KeyedEncoderCF final : public KeyedEncoder {
+public:
+    KeyedEncoderCF();
+    ~KeyedEncoderCF();
+
+    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; finishEncoding() override;
+
+private:
+    virtual void encodeBytes(const String&amp; key, const uint8_t*, size_t) override;
+    virtual void encodeBool(const String&amp; key, bool) override;
+    virtual void encodeUInt32(const String&amp; key, uint32_t) override;
+    virtual void encodeInt32(const String&amp; key, int32_t) override;
+    virtual void encodeInt64(const String&amp; key, int64_t) override;
+    virtual void encodeFloat(const String&amp; key, float) override;
+    virtual void encodeDouble(const String&amp; key, double) override;
+    virtual void encodeString(const String&amp; key, const String&amp;) override;
+
+    virtual void beginObject(const String&amp; key) override;
+    virtual void endObject() override;
+
+    virtual void beginArray(const String&amp; key) override;
+    virtual void beginArrayElement() override;
+    virtual void endArrayElement() override;
+    virtual void endArray() override;
+
+    RetainPtr&lt;CFMutableDictionaryRef&gt; m_rootDictionary;
+
+    Vector&lt;CFMutableDictionaryRef, 16&gt; m_dictionaryStack;
+    Vector&lt;CFMutableArrayRef, 16&gt; m_arrayStack;
+};
+
+} // namespace WebCore
+
+#endif // KeyedEncoderCF_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformglibKeyedDecoderGlibcppfromrev188125trunkSourceWebKit2SharedglibKeyedDecodercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.cpp (from rev 188125, trunk/Source/WebKit2/Shared/glib/KeyedDecoder.cpp) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,173 @@
</span><ins>+/*
+ * Copyright (C) 2015 Igalia S.L.
+ *
+ * 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;KeyedDecoderGlib.h&quot;
+
+#include &lt;wtf/text/CString.h&gt;
+
+namespace WebCore {
+
+std::unique_ptr&lt;KeyedDecoder&gt; KeyedDecoder::decoder(const uint8_t* data, size_t size)
+{
+    return std::make_unique&lt;KeyedDecoderGlib&gt;(data, size);
+}
+
+KeyedDecoderGlib::KeyedDecoderGlib(const uint8_t* data, size_t size)
+{
+    GRefPtr&lt;GBytes&gt; bytes = adoptGRef(g_bytes_new(data, size));
+    GRefPtr&lt;GVariant&gt; variant = g_variant_new_from_bytes(G_VARIANT_TYPE(&quot;a{sv}&quot;), bytes.get(), TRUE);
+    m_dictionaryStack.append(dictionaryFromGVariant(variant.get()));
+}
+
+KeyedDecoderGlib::~KeyedDecoderGlib()
+{
+    ASSERT(m_dictionaryStack.size() == 1);
+    ASSERT(m_arrayStack.isEmpty());
+    ASSERT(m_arrayIndexStack.isEmpty());
+}
+
+HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt; KeyedDecoderGlib::dictionaryFromGVariant(GVariant* variant)
+{
+    HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt; dictionary;
+    GVariantIter iter;
+    g_variant_iter_init(&amp;iter, variant);
+    const char* key;
+    GVariant* value;
+    while (g_variant_iter_loop(&amp;iter, &quot;{&amp;sv}&quot;, &amp;key, &amp;value))
+        dictionary.set(String::fromUTF8(key), value);
+    return WTF::move(dictionary);
+}
+
+bool KeyedDecoderGlib::decodeBytes(const String&amp; key, const uint8_t*&amp; bytes, size_t&amp; size)
+{
+    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
+    if (!value)
+        return false;
+
+    size = g_variant_get_size(value.get());
+    bytes = static_cast&lt;const uint8_t*&gt;(g_variant_get_data(value.get()));
+    return true;
+}
+
+template&lt;typename T, typename F&gt;
+bool KeyedDecoderGlib::decodeSimpleValue(const String&amp; key, T&amp; result, F getFunction)
+{
+    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
+    if (!value)
+        return false;
+
+    result = getFunction(value.get());
+    return true;
+}
+
+bool KeyedDecoderGlib::decodeBool(const String&amp; key, bool&amp; result)
+{
+    return decodeSimpleValue(key, result, g_variant_get_boolean);
+}
+
+bool KeyedDecoderGlib::decodeUInt32(const String&amp; key, uint32_t&amp; result)
+{
+    return decodeSimpleValue(key, result, g_variant_get_uint32);
+}
+
+bool KeyedDecoderGlib::decodeInt32(const String&amp; key, int32_t&amp; result)
+{
+    return decodeSimpleValue(key, result, g_variant_get_int32);
+}
+
+bool KeyedDecoderGlib::decodeInt64(const String&amp; key, int64_t&amp; result)
+{
+    return decodeSimpleValue(key, result, g_variant_get_int64);
+}
+
+bool KeyedDecoderGlib::decodeFloat(const String&amp; key, float&amp; result)
+{
+    return decodeSimpleValue(key, result, g_variant_get_double);
+}
+
+bool KeyedDecoderGlib::decodeDouble(const String&amp; key, double&amp; result)
+{
+    return decodeSimpleValue(key, result, g_variant_get_double);
+}
+
+bool KeyedDecoderGlib::decodeString(const String&amp; key, String&amp; result)
+{
+    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
+    if (!value)
+        return false;
+
+    result = String::fromUTF8(g_variant_get_string(value.get(), nullptr));
+    return true;
+}
+
+bool KeyedDecoderGlib::beginObject(const String&amp; key)
+{
+    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
+    if (!value)
+        return false;
+
+    m_dictionaryStack.append(dictionaryFromGVariant(value.get()));
+    return true;
+}
+
+void KeyedDecoderGlib::endObject()
+{
+    m_dictionaryStack.removeLast();
+}
+
+bool KeyedDecoderGlib::beginArray(const String&amp; key)
+{
+    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
+    if (!value)
+        return false;
+
+    m_arrayStack.append(value.get());
+    m_arrayIndexStack.append(0);
+    return true;
+}
+
+bool KeyedDecoderGlib::beginArrayElement()
+{
+    if (m_arrayIndexStack.last() &gt;= g_variant_n_children(m_arrayStack.last()))
+        return false;
+
+    GRefPtr&lt;GVariant&gt; variant = adoptGRef(g_variant_get_child_value(m_arrayStack.last(), m_arrayIndexStack.last()++));
+    m_dictionaryStack.append(dictionaryFromGVariant(variant.get()));
+    return true;
+}
+
+void KeyedDecoderGlib::endArrayElement()
+{
+    m_dictionaryStack.removeLast();
+}
+
+void KeyedDecoderGlib::endArray()
+{
+    m_arrayStack.removeLast();
+    m_arrayIndexStack.removeLast();
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformglibKeyedDecoderGlibhfromrev188125trunkSourceWebKit2SharedglibKeyedDecoderh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.h (from rev 188125, trunk/Source/WebKit2/Shared/glib/KeyedDecoder.h) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.h                                (rev 0)
+++ trunk/Source/WebCore/platform/glib/KeyedDecoderGlib.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+/*
+ * Copyright (C) 2015 Igaia S.L.
+ *
+ * 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 KeyedDecoderGlib_h
+#define KeyedDecoderGlib_h
+
+#include &quot;KeyedCoding.h&quot;
+#include &lt;glib.h&gt;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/glib/GRefPtr.h&gt;
+#include &lt;wtf/text/StringHash.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WebCore {
+
+class KeyedDecoderGlib final : public KeyedDecoder {
+public:
+    KeyedDecoderGlib(const uint8_t* data, size_t);
+    virtual ~KeyedDecoderGlib() override;
+
+private:
+    virtual bool decodeBytes(const String&amp; key, const uint8_t*&amp;, size_t&amp;) override;
+    virtual bool decodeBool(const String&amp; key, bool&amp;) override;
+    virtual bool decodeUInt32(const String&amp; key, uint32_t&amp;) override;
+    virtual bool decodeInt32(const String&amp; key, int32_t&amp;) override;
+    virtual bool decodeInt64(const String&amp; key, int64_t&amp;) override;
+    virtual bool decodeFloat(const String&amp; key, float&amp;) override;
+    virtual bool decodeDouble(const String&amp; key, double&amp;) override;
+    virtual bool decodeString(const String&amp; key, String&amp;) override;
+
+    virtual bool beginObject(const String&amp; key) override;
+    virtual void endObject() override;
+
+    virtual bool beginArray(const String&amp; key) override;
+    virtual bool beginArrayElement() override;
+    virtual void endArrayElement() override;
+    virtual void endArray() override;
+
+    template&lt;typename T, typename F&gt; bool decodeSimpleValue(const String&amp; key, T&amp; result, F getFunction);
+    HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt; dictionaryFromGVariant(GVariant*);
+
+    Vector&lt;HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt;&gt; m_dictionaryStack;
+    Vector&lt;GVariant*, 16&gt; m_arrayStack;
+    Vector&lt;unsigned&gt; m_arrayIndexStack;
+};
+
+} // namespace WebCore
+
+#endif // KeyedDecoderGlib_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformglibKeyedEncoderGlibcppfromrev188125trunkSourceWebKit2SharedglibKeyedEncodercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.cpp (from rev 188125, trunk/Source/WebKit2/Shared/glib/KeyedEncoder.cpp) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,138 @@
</span><ins>+/*
+ * Copyright (C) 2015 Igalia S.L.
+ *
+ * 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;KeyedEncoderGlib.h&quot;
+
+#include &quot;SharedBuffer.h&quot;
+#include &lt;wtf/text/CString.h&gt;
+
+namespace WebCore {
+
+std::unique_ptr&lt;KeyedEncoder&gt; KeyedEncoder::encoder()
+{
+    return std::make_unique&lt;KeyedEncoderGlib&gt;();
+}
+
+KeyedEncoderGlib::KeyedEncoderGlib()
+{
+    g_variant_builder_init(&amp;m_variantBuilder, G_VARIANT_TYPE(&quot;a{sv}&quot;));
+    m_variantBuilderStack.append(&amp;m_variantBuilder);
+}
+
+KeyedEncoderGlib::~KeyedEncoderGlib()
+{
+    ASSERT(m_variantBuilderStack.size() == 1);
+    ASSERT(m_variantBuilderStack.last() == &amp;m_variantBuilder);
+    ASSERT(m_arrayStack.isEmpty());
+    ASSERT(m_objectStack.isEmpty());
+}
+
+void KeyedEncoderGlib::encodeBytes(const String&amp; key, const uint8_t* bytes, size_t size)
+{
+    GRefPtr&lt;GBytes&gt; gBytes = adoptGRef(g_bytes_new_static(bytes, size));
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_from_bytes(G_VARIANT_TYPE(&quot;ay&quot;), gBytes.get(), TRUE));
+}
+
+void KeyedEncoderGlib::encodeBool(const String&amp; key, bool value)
+{
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_boolean(value));
+}
+
+void KeyedEncoderGlib::encodeUInt32(const String&amp; key, uint32_t value)
+{
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_uint32(value));
+}
+
+void KeyedEncoderGlib::encodeInt32(const String&amp; key, int32_t value)
+{
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_int32(value));
+}
+
+void KeyedEncoderGlib::encodeInt64(const String&amp; key, int64_t value)
+{
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_int64(value));
+}
+
+void KeyedEncoderGlib::encodeFloat(const String&amp; key, float value)
+{
+    encodeDouble(key, value);
+}
+
+void KeyedEncoderGlib::encodeDouble(const String&amp; key, double value)
+{
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_double(value));
+}
+
+void KeyedEncoderGlib::encodeString(const String&amp; key, const String&amp; value)
+{
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_string(value.utf8().data()));
+}
+
+void KeyedEncoderGlib::beginObject(const String&amp; key)
+{
+    GRefPtr&lt;GVariantBuilder&gt; builder = adoptGRef(g_variant_builder_new(G_VARIANT_TYPE(&quot;aa{sv}&quot;)));
+    m_objectStack.append(std::make_pair(key, builder));
+    m_variantBuilderStack.append(builder.get());
+}
+
+void KeyedEncoderGlib::endObject()
+{
+    GVariantBuilder* builder = m_variantBuilderStack.takeLast();
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, m_objectStack.last().first.utf8().data(), g_variant_builder_end(builder));
+    m_objectStack.removeLast();
+}
+
+void KeyedEncoderGlib::beginArray(const String&amp; key)
+{
+    m_arrayStack.append(std::make_pair(key, adoptGRef(g_variant_builder_new(G_VARIANT_TYPE(&quot;aa{sv}&quot;)))));
+}
+
+void KeyedEncoderGlib::beginArrayElement()
+{
+    m_variantBuilderStack.append(g_variant_builder_new(G_VARIANT_TYPE(&quot;a{sv}&quot;)));
+}
+
+void KeyedEncoderGlib::endArrayElement()
+{
+    GRefPtr&lt;GVariantBuilder&gt; variantBuilder = adoptGRef(m_variantBuilderStack.takeLast());
+    g_variant_builder_add_value(m_arrayStack.last().second.get(), g_variant_builder_end(variantBuilder.get()));
+}
+
+void KeyedEncoderGlib::endArray()
+{
+    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, m_arrayStack.last().first.utf8().data(), g_variant_builder_end(m_arrayStack.last().second.get()));
+    m_arrayStack.removeLast();
+}
+
+PassRefPtr&lt;SharedBuffer&gt; KeyedEncoderGlib::finishEncoding()
+{
+    g_assert(m_variantBuilderStack.last() == &amp;m_variantBuilder);
+    GRefPtr&lt;GVariant&gt; variant = g_variant_builder_end(&amp;m_variantBuilder);
+    GRefPtr&lt;GBytes&gt; data = g_variant_get_data_as_bytes(variant.get());
+    return SharedBuffer::create(static_cast&lt;const unsigned char*&gt;(g_bytes_get_data(data.get(), nullptr)), static_cast&lt;unsigned&gt;(g_bytes_get_size(data.get())));
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformglibKeyedEncoderGlibhfromrev188125trunkSourceWebKit2SharedglibKeyedEncoderh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.h (from rev 188125, trunk/Source/WebKit2/Shared/glib/KeyedEncoder.h) (0 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.h                                (rev 0)
+++ trunk/Source/WebCore/platform/glib/KeyedEncoderGlib.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * Copyright (C) 2015 Igalia S.L.
+ *
+ * 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 KeyedEncoderGlib_h
+#define KeyedEncoderGlib_h
+
+#include &quot;KeyedCoding.h&quot;
+#include &lt;glib.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/glib/GRefPtr.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WebCore {
+
+class KeyedEncoderGlib final : public KeyedEncoder {
+public:
+    KeyedEncoderGlib();
+    ~KeyedEncoderGlib();
+
+    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; finishEncoding() override;
+
+private:
+    virtual void encodeBytes(const String&amp; key, const uint8_t*, size_t) override;
+    virtual void encodeBool(const String&amp; key, bool) override;
+    virtual void encodeUInt32(const String&amp; key, uint32_t) override;
+    virtual void encodeInt32(const String&amp; key, int32_t) override;
+    virtual void encodeInt64(const String&amp; key, int64_t) override;
+    virtual void encodeFloat(const String&amp; key, float) override;
+    virtual void encodeDouble(const String&amp; key, double) override;
+    virtual void encodeString(const String&amp; key, const String&amp;) override;
+
+    virtual void beginObject(const String&amp; key) override;
+    virtual void endObject() override;
+
+    virtual void beginArray(const String&amp; key) override;
+    virtual void beginArrayElement() override;
+    virtual void endArrayElement() override;
+    virtual void endArray() override;
+
+    GVariantBuilder m_variantBuilder;
+    Vector&lt;GVariantBuilder*, 16&gt; m_variantBuilderStack;
+    Vector&lt;std::pair&lt;String, GRefPtr&lt;GVariantBuilder&gt;&gt;, 16&gt; m_arrayStack;
+    Vector&lt;std::pair&lt;String, GRefPtr&lt;GVariantBuilder&gt;&gt;, 16&gt; m_objectStack;
+};
+
+} // namespace WebCore
+
+#endif // KeyedEncoderGlib_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/ChangeLog        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2015-08-07  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Move concrete KeyedDecoder/Encoder implementations to WebCore.
+        https://bugs.webkit.org/show_bug.cgi?id=147757.
+
+        Rubberstamped by Andy Estes.
+
+        * DatabaseProcess/IndexedDB/IDBSerialization.cpp:
+        (WebKit::serializeIDBKeyPath):
+        (WebKit::deserializeIDBKeyPath):
+        (WebKit::serializeIDBKeyData):
+        (WebKit::deserializeIDBKeyData):
+        
+        * PlatformEfl.cmake:
+        * PlatformGTK.cmake:
+        * WebKit2.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2015-08-07  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed. Fix GTK+ compile warning also introduced in r188121.
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBIDBSerializationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.cpp (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.cpp        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -28,10 +28,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ArgumentEncoder.h&quot;
</span><del>-#include &quot;KeyedDecoder.h&quot;
-#include &quot;KeyedEncoder.h&quot;
</del><span class="cx"> #include &lt;WebCore/IDBKeyData.h&gt;
</span><span class="cx"> #include &lt;WebCore/IDBKeyPath.h&gt;
</span><ins>+#include &lt;WebCore/KeyedCoding.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="lines">@@ -39,9 +38,9 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;SharedBuffer&gt; serializeIDBKeyPath(const IDBKeyPath&amp; keyPath)
</span><span class="cx"> {
</span><del>-    KeyedEncoder encoder;
-    keyPath.encode(encoder);
-    return encoder.finishEncoding();
</del><ins>+    auto encoder = KeyedEncoder::encoder();
+    keyPath.encode(*encoder);
+    return encoder-&gt;finishEncoding();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool deserializeIDBKeyPath(const uint8_t* data, size_t size, IDBKeyPath&amp; result)
</span><span class="lines">@@ -49,15 +48,15 @@
</span><span class="cx">     if (!data || !size)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    KeyedDecoder decoder(data, size);
-    return IDBKeyPath::decode(decoder, result);
</del><ins>+    auto decoder = KeyedDecoder::decoder(data, size);
+    return IDBKeyPath::decode(*decoder, result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;SharedBuffer&gt; serializeIDBKeyData(const IDBKeyData&amp; key)
</span><span class="cx"> {
</span><del>-    KeyedEncoder encoder;
-    key.encode(encoder);
-    return encoder.finishEncoding();
</del><ins>+    auto encoder = KeyedEncoder::encoder();
+    key.encode(*encoder);
+    return encoder-&gt;finishEncoding();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool deserializeIDBKeyData(const uint8_t* data, size_t size, IDBKeyData&amp; result)
</span><span class="lines">@@ -65,8 +64,8 @@
</span><span class="cx">     if (!data || !size)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    KeyedDecoder decoder(data, size);
-    return IDBKeyData::decode(decoder, result);
</del><ins>+    auto decoder = KeyedDecoder::decoder(data, size);
+    return IDBKeyData::decode(*decoder, result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformEflcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/PlatformEfl.cmake (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/PlatformEfl.cmake        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/PlatformEfl.cmake        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -47,9 +47,6 @@
</span><span class="cx">     Shared/efl/ProcessExecutablePathEfl.cpp
</span><span class="cx">     Shared/efl/WebEventFactory.cpp
</span><span class="cx"> 
</span><del>-    Shared/glib/KeyedDecoder.cpp
-    Shared/glib/KeyedEncoder.cpp
-
</del><span class="cx">     Shared/linux/WebMemorySamplerLinux.cpp
</span><span class="cx"> 
</span><span class="cx">     Shared/linux/SeccompFilters/OpenSyscall.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/PlatformGTK.cmake (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/PlatformGTK.cmake        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/PlatformGTK.cmake        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -62,8 +62,6 @@
</span><span class="cx"> 
</span><span class="cx">     Shared/cairo/ShareableBitmapCairo.cpp
</span><span class="cx"> 
</span><del>-    Shared/glib/KeyedDecoder.cpp
-    Shared/glib/KeyedEncoder.cpp
</del><span class="cx">     Shared/gtk/ArgumentCodersGtk.cpp
</span><span class="cx">     Shared/gtk/NativeContextMenuItemGtk.cpp
</span><span class="cx">     Shared/gtk/NativeWebKeyboardEventGtk.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedcfKeyedDecodercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/cf/KeyedDecoder.cpp (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/cf/KeyedDecoder.cpp        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/cf/KeyedDecoder.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,178 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 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;KeyedDecoder.h&quot;
-
-#include &lt;wtf/cf/TypeCastsCF.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebKit {
-
-KeyedDecoder::KeyedDecoder(const uint8_t* data, size_t size)
-{
-    auto cfData = adoptCF(CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, data, size, kCFAllocatorNull));
-
-    if (auto rootDictionary = adoptCF(dynamic_cf_cast&lt;CFDictionaryRef&gt;(CFPropertyListCreateWithData(kCFAllocatorDefault, cfData.get(), kCFPropertyListImmutable, nullptr, nullptr))))
-        m_rootDictionary = WTF::move(rootDictionary);
-    else
-        m_rootDictionary = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, nullptr, nullptr, 0, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
-    m_dictionaryStack.append(m_rootDictionary.get());
-}
-
-KeyedDecoder::~KeyedDecoder()
-{
-    ASSERT(m_dictionaryStack.size() == 1);
-    ASSERT(m_dictionaryStack.last() == m_rootDictionary);
-    ASSERT(m_arrayStack.isEmpty());
-    ASSERT(m_arrayIndexStack.isEmpty());
-}
-
-bool KeyedDecoder::decodeBytes(const String&amp; key, const uint8_t*&amp; bytes, size_t&amp; size)
-{
-    auto data = dynamic_cf_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!data)
-        return false;
-
-    bytes = CFDataGetBytePtr(data);
-    size = CFDataGetLength(data);
-    return true;
-}
-
-bool KeyedDecoder::decodeBool(const String&amp; key, bool&amp; result)
-{
-    auto boolean = dynamic_cf_cast&lt;CFBooleanRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!boolean)
-        return false;
-
-    result = CFBooleanGetValue(boolean);
-    return true;
-}
-
-bool KeyedDecoder::decodeUInt32(const String&amp; key, uint32_t&amp; result)
-{
-    return decodeInt32(key, reinterpret_cast&lt;int32_t&amp;&gt;(result));
-}
-
-bool KeyedDecoder::decodeInt32(const String&amp; key, int32_t&amp; result)
-{
-    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!number)
-        return false;
-
-    return CFNumberGetValue(number, kCFNumberSInt32Type, &amp;result);
-}
-
-bool KeyedDecoder::decodeInt64(const String&amp; key, int64_t&amp; result)
-{
-    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!number)
-        return false;
-
-    return CFNumberGetValue(number, kCFNumberSInt64Type, &amp;result);
-}
-
-bool KeyedDecoder::decodeFloat(const String&amp; key, float&amp; result)
-{
-    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!number)
-        return false;
-
-    return CFNumberGetValue(number, kCFNumberFloatType, &amp;result);
-}
-
-bool KeyedDecoder::decodeDouble(const String&amp; key, double&amp; result)
-{
-    auto number = dynamic_cf_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!number)
-        return false;
-
-    return CFNumberGetValue(number, kCFNumberDoubleType, &amp;result);
-}
-
-bool KeyedDecoder::decodeString(const String&amp; key, String&amp; result)
-{
-    auto string = dynamic_cf_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!string)
-        return false;
-
-    result = string;
-    return true;
-}
-
-bool KeyedDecoder::beginObject(const String&amp; key)
-{
-    auto dictionary = dynamic_cf_cast&lt;CFDictionaryRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!dictionary)
-        return false;
-
-    m_dictionaryStack.append(dictionary);
-    return true;
-}
-
-void KeyedDecoder::endObject()
-{
-    m_dictionaryStack.removeLast();
-}
-
-bool KeyedDecoder::beginArray(const String&amp; key)
-{
-    auto array = dynamic_cf_cast&lt;CFArrayRef&gt;(CFDictionaryGetValue(m_dictionaryStack.last(), key.createCFString().get()));
-    if (!array)
-        return false;
-
-    for (CFIndex i = 0; i &lt; CFArrayGetCount(array); ++i) {
-        CFTypeRef object = CFArrayGetValueAtIndex(array, i);
-        if (CFGetTypeID(object) != CFDictionaryGetTypeID())
-            return false;
-    }
-
-    m_arrayStack.append(array);
-    m_arrayIndexStack.append(0);
-    return true;
-}
-
-bool KeyedDecoder::beginArrayElement()
-{
-    if (m_arrayIndexStack.last() &gt;= CFArrayGetCount(m_arrayStack.last()))
-        return false;
-
-    auto dictionary = checked_cf_cast&lt;CFDictionaryRef&gt;(CFArrayGetValueAtIndex(m_arrayStack.last(), m_arrayIndexStack.last()++));
-    m_dictionaryStack.append(dictionary);
-    return true;
-}
-
-void KeyedDecoder::endArrayElement()
-{
-    m_dictionaryStack.removeLast();
-}
-
-void KeyedDecoder::endArray()
-{
-    m_arrayStack.removeLast();
-    m_arrayIndexStack.removeLast();
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedcfKeyedDecoderh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/cf/KeyedDecoder.h (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/cf/KeyedDecoder.h        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/cf/KeyedDecoder.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 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 KeyedDecoder_h
-#define KeyedDecoder_h
-
-#include &lt;WebCore/KeyedCoding.h&gt;
-#include &lt;wtf/RetainPtr.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-namespace WebKit {
-
-class KeyedDecoder final : public WebCore::KeyedDecoder {
-public:
-    KeyedDecoder(const uint8_t* data, size_t);
-    virtual ~KeyedDecoder() override;
-
-private:
-    virtual bool decodeBytes(const String&amp; key, const uint8_t*&amp;, size_t&amp;) override;
-    virtual bool decodeBool(const String&amp; key, bool&amp;) override;
-    virtual bool decodeUInt32(const String&amp; key, uint32_t&amp;) override;
-    virtual bool decodeInt32(const String&amp; key, int32_t&amp;) override;
-    virtual bool decodeInt64(const String&amp; key, int64_t&amp;) override;
-    virtual bool decodeFloat(const String&amp; key, float&amp;) override;
-    virtual bool decodeDouble(const String&amp; key, double&amp;) override;
-    virtual bool decodeString(const String&amp; key, String&amp;) override;
-
-    virtual bool beginObject(const String&amp; key) override;
-    virtual void endObject() override;
-
-    virtual bool beginArray(const String&amp; key) override;
-    virtual bool beginArrayElement() override;
-    virtual void endArrayElement() override;
-    virtual void endArray() override;
-
-    RetainPtr&lt;CFDictionaryRef&gt; m_rootDictionary;
-
-    Vector&lt;CFDictionaryRef, 16&gt; m_dictionaryStack;
-    Vector&lt;CFArrayRef, 16&gt; m_arrayStack;
-    Vector&lt;CFIndex&gt; m_arrayIndexStack;
-};
-
-} // namespace WebKit
-
-#endif // KeyedDecoder_h
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedcfKeyedEncodercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/cf/KeyedEncoder.cpp (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/cf/KeyedEncoder.cpp        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/cf/KeyedEncoder.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,149 +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;KeyedEncoder.h&quot;
-
-#include &lt;CoreFoundation/CoreFoundation.h&gt;
-#include &lt;WebCore/SharedBuffer.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-static RetainPtr&lt;CFMutableDictionaryRef&gt; createDictionary()
-{
-    return adoptCF(CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
-}
-
-KeyedEncoder::KeyedEncoder()
-    : m_rootDictionary(createDictionary())
-{
-    m_dictionaryStack.append(m_rootDictionary.get());
-}
-    
-KeyedEncoder::~KeyedEncoder()
-{
-    ASSERT(m_dictionaryStack.size() == 1);
-    ASSERT(m_dictionaryStack.last() == m_rootDictionary);
-    ASSERT(m_arrayStack.isEmpty());
-}
-
-void KeyedEncoder::encodeBytes(const String&amp; key, const uint8_t* bytes, size_t size)
-{
-    auto data = adoptCF(CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, bytes, size, kCFAllocatorNull));
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), data.get());
-}
-
-void KeyedEncoder::encodeBool(const String&amp; key, bool value)
-{
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), value ? kCFBooleanTrue : kCFBooleanFalse);
-}
-
-void KeyedEncoder::encodeUInt32(const String&amp; key, uint32_t value)
-{
-    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &amp;value));
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
-}
-
-void KeyedEncoder::encodeInt32(const String&amp; key, int32_t value)
-{
-    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &amp;value));
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
-}
-
-void KeyedEncoder::encodeInt64(const String&amp; key, int64_t value)
-{
-    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &amp;value));
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
-}
-
-void KeyedEncoder::encodeFloat(const String&amp; key, float value)
-{
-    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &amp;value));
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
-}
-
-void KeyedEncoder::encodeDouble(const String&amp; key, double value)
-{
-    auto number = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberDoubleType, &amp;value));
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), number.get());
-}
-
-void KeyedEncoder::encodeString(const String&amp; key, const String&amp; value)
-{
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), value.createCFString().get());
-}
-
-void KeyedEncoder::beginObject(const String&amp; key)
-{
-    auto dictionary = createDictionary();
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), dictionary.get());
-
-    m_dictionaryStack.append(dictionary.get());
-}
-
-void KeyedEncoder::endObject()
-{
-    m_dictionaryStack.removeLast();
-}
-
-void KeyedEncoder::beginArray(const String&amp; key)
-{
-    auto array = adoptCF(CFArrayCreateMutable(kCFAllocatorDefault, 0, &amp;kCFTypeArrayCallBacks));
-    CFDictionarySetValue(m_dictionaryStack.last(), key.createCFString().get(), array.get());
-
-    m_arrayStack.append(array.get());
-}
-
-void KeyedEncoder::beginArrayElement()
-{
-    auto dictionary = createDictionary();
-    CFArrayAppendValue(m_arrayStack.last(), dictionary.get());
-
-    m_dictionaryStack.append(dictionary.get());
-}
-
-void KeyedEncoder::endArrayElement()
-{
-    m_dictionaryStack.removeLast();
-}
-
-void KeyedEncoder::endArray()
-{
-    m_arrayStack.removeLast();
-}
-
-PassRefPtr&lt;SharedBuffer&gt; KeyedEncoder::finishEncoding()
-{
-    RetainPtr&lt;CFDataRef&gt; data = adoptCF(CFPropertyListCreateData(kCFAllocatorDefault, m_rootDictionary.get(), kCFPropertyListBinaryFormat_v1_0, 0, nullptr));
-    if (!data)
-        return nullptr;
-
-    return SharedBuffer::wrapCFData(data.get());
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedcfKeyedEncoderh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/cf/KeyedEncoder.h (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/cf/KeyedEncoder.h        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/cf/KeyedEncoder.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,68 +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 KeyedEncoder_h
-#define KeyedEncoder_h
-
-#include &lt;WebCore/KeyedCoding.h&gt;
-#include &lt;wtf/RetainPtr.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-namespace WebKit {
-
-class KeyedEncoder final : public WebCore::KeyedEncoder {
-public:
-    KeyedEncoder();
-    ~KeyedEncoder();
-
-    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; finishEncoding() override;
-
-private:
-    virtual void encodeBytes(const String&amp; key, const uint8_t*, size_t) override;
-    virtual void encodeBool(const String&amp; key, bool) override;
-    virtual void encodeUInt32(const String&amp; key, uint32_t) override;
-    virtual void encodeInt32(const String&amp; key, int32_t) override;
-    virtual void encodeInt64(const String&amp; key, int64_t) override;
-    virtual void encodeFloat(const String&amp; key, float) override;
-    virtual void encodeDouble(const String&amp; key, double) override;
-    virtual void encodeString(const String&amp; key, const String&amp;) override;
-
-    virtual void beginObject(const String&amp; key) override;
-    virtual void endObject() override;
-
-    virtual void beginArray(const String&amp; key) override;
-    virtual void beginArrayElement() override;
-    virtual void endArrayElement() override;
-    virtual void endArray() override;
-
-    RetainPtr&lt;CFMutableDictionaryRef&gt; m_rootDictionary;
-
-    Vector&lt;CFMutableDictionaryRef, 16&gt; m_dictionaryStack;
-    Vector&lt;CFMutableArrayRef, 16&gt; m_arrayStack;
-};
-
-} // namespace WebKit
-
-#endif // KeyedEncoder_h
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedglibKeyedDecodercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/glib/KeyedDecoder.cpp (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/glib/KeyedDecoder.cpp        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/glib/KeyedDecoder.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,168 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Igalia S.L.
- *
- * 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;KeyedDecoder.h&quot;
-
-#include &lt;wtf/text/CString.h&gt;
-
-namespace WebKit {
-
-KeyedDecoder::KeyedDecoder(const uint8_t* data, size_t size)
-{
-    GRefPtr&lt;GBytes&gt; bytes = adoptGRef(g_bytes_new(data, size));
-    GRefPtr&lt;GVariant&gt; variant = g_variant_new_from_bytes(G_VARIANT_TYPE(&quot;a{sv}&quot;), bytes.get(), TRUE);
-    m_dictionaryStack.append(dictionaryFromGVariant(variant.get()));
-}
-
-KeyedDecoder::~KeyedDecoder()
-{
-    ASSERT(m_dictionaryStack.size() == 1);
-    ASSERT(m_arrayStack.isEmpty());
-    ASSERT(m_arrayIndexStack.isEmpty());
-}
-
-HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt; KeyedDecoder::dictionaryFromGVariant(GVariant* variant)
-{
-    HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt; dictionary;
-    GVariantIter iter;
-    g_variant_iter_init(&amp;iter, variant);
-    const char* key;
-    GVariant* value;
-    while (g_variant_iter_loop(&amp;iter, &quot;{&amp;sv}&quot;, &amp;key, &amp;value))
-        dictionary.set(String::fromUTF8(key), value);
-    return WTF::move(dictionary);
-}
-
-bool KeyedDecoder::decodeBytes(const String&amp; key, const uint8_t*&amp; bytes, size_t&amp; size)
-{
-    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
-    if (!value)
-        return false;
-
-    size = g_variant_get_size(value.get());
-    bytes = static_cast&lt;const uint8_t*&gt;(g_variant_get_data(value.get()));
-    return true;
-}
-
-template&lt;typename T, typename F&gt;
-bool KeyedDecoder::decodeSimpleValue(const String&amp; key, T&amp; result, F getFunction)
-{
-    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
-    if (!value)
-        return false;
-
-    result = getFunction(value.get());
-    return true;
-}
-
-bool KeyedDecoder::decodeBool(const String&amp; key, bool&amp; result)
-{
-    return decodeSimpleValue(key, result, g_variant_get_boolean);
-}
-
-bool KeyedDecoder::decodeUInt32(const String&amp; key, uint32_t&amp; result)
-{
-    return decodeSimpleValue(key, result, g_variant_get_uint32);
-}
-
-bool KeyedDecoder::decodeInt32(const String&amp; key, int32_t&amp; result)
-{
-    return decodeSimpleValue(key, result, g_variant_get_int32);
-}
-
-bool KeyedDecoder::decodeInt64(const String&amp; key, int64_t&amp; result)
-{
-    return decodeSimpleValue(key, result, g_variant_get_int64);
-}
-
-bool KeyedDecoder::decodeFloat(const String&amp; key, float&amp; result)
-{
-    return decodeSimpleValue(key, result, g_variant_get_double);
-}
-
-bool KeyedDecoder::decodeDouble(const String&amp; key, double&amp; result)
-{
-    return decodeSimpleValue(key, result, g_variant_get_double);
-}
-
-bool KeyedDecoder::decodeString(const String&amp; key, String&amp; result)
-{
-    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
-    if (!value)
-        return false;
-
-    result = String::fromUTF8(g_variant_get_string(value.get(), nullptr));
-    return true;
-}
-
-bool KeyedDecoder::beginObject(const String&amp; key)
-{
-    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
-    if (!value)
-        return false;
-
-    m_dictionaryStack.append(dictionaryFromGVariant(value.get()));
-    return true;
-}
-
-void KeyedDecoder::endObject()
-{
-    m_dictionaryStack.removeLast();
-}
-
-bool KeyedDecoder::beginArray(const String&amp; key)
-{
-    GRefPtr&lt;GVariant&gt; value = m_dictionaryStack.last().get(key);
-    if (!value)
-        return false;
-
-    m_arrayStack.append(value.get());
-    m_arrayIndexStack.append(0);
-    return true;
-}
-
-bool KeyedDecoder::beginArrayElement()
-{
-    if (m_arrayIndexStack.last() &gt;= g_variant_n_children(m_arrayStack.last()))
-        return false;
-
-    GRefPtr&lt;GVariant&gt; variant = adoptGRef(g_variant_get_child_value(m_arrayStack.last(), m_arrayIndexStack.last()++));
-    m_dictionaryStack.append(dictionaryFromGVariant(variant.get()));
-    return true;
-}
-
-void KeyedDecoder::endArrayElement()
-{
-    m_dictionaryStack.removeLast();
-}
-
-void KeyedDecoder::endArray()
-{
-    m_arrayStack.removeLast();
-    m_arrayIndexStack.removeLast();
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedglibKeyedDecoderh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/glib/KeyedDecoder.h (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/glib/KeyedDecoder.h        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/glib/KeyedDecoder.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,71 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Igaia S.L.
- *
- * 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 KeyedDecoder_h
-#define KeyedDecoder_h
-
-#include &lt;WebCore/KeyedCoding.h&gt;
-#include &lt;glib.h&gt;
-#include &lt;wtf/HashMap.h&gt;
-#include &lt;wtf/glib/GRefPtr.h&gt;
-#include &lt;wtf/text/StringHash.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebKit {
-
-class KeyedDecoder final : public WebCore::KeyedDecoder {
-public:
-    KeyedDecoder(const uint8_t* data, size_t);
-    virtual ~KeyedDecoder() override;
-
-private:
-    virtual bool decodeBytes(const String&amp; key, const uint8_t*&amp;, size_t&amp;) override;
-    virtual bool decodeBool(const String&amp; key, bool&amp;) override;
-    virtual bool decodeUInt32(const String&amp; key, uint32_t&amp;) override;
-    virtual bool decodeInt32(const String&amp; key, int32_t&amp;) override;
-    virtual bool decodeInt64(const String&amp; key, int64_t&amp;) override;
-    virtual bool decodeFloat(const String&amp; key, float&amp;) override;
-    virtual bool decodeDouble(const String&amp; key, double&amp;) override;
-    virtual bool decodeString(const String&amp; key, String&amp;) override;
-
-    virtual bool beginObject(const String&amp; key) override;
-    virtual void endObject() override;
-
-    virtual bool beginArray(const String&amp; key) override;
-    virtual bool beginArrayElement() override;
-    virtual void endArrayElement() override;
-    virtual void endArray() override;
-
-    template&lt;typename T, typename F&gt; bool decodeSimpleValue(const String&amp; key, T&amp; result, F getFunction);
-    HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt; dictionaryFromGVariant(GVariant*);
-
-    Vector&lt;HashMap&lt;String, GRefPtr&lt;GVariant&gt;&gt;&gt; m_dictionaryStack;
-    Vector&lt;GVariant*, 16&gt; m_arrayStack;
-    Vector&lt;unsigned&gt; m_arrayIndexStack;
-};
-
-} // namespace WebKit
-
-#endif // KeyedDecoder_h
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedglibKeyedEncodercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/glib/KeyedEncoder.cpp (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/glib/KeyedEncoder.cpp        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/glib/KeyedEncoder.cpp        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,135 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Igalia S.L.
- *
- * 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;KeyedEncoder.h&quot;
-
-#include &lt;WebCore/SharedBuffer.h&gt;
-#include &lt;wtf/text/CString.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-KeyedEncoder::KeyedEncoder()
-{
-    g_variant_builder_init(&amp;m_variantBuilder, G_VARIANT_TYPE(&quot;a{sv}&quot;));
-    m_variantBuilderStack.append(&amp;m_variantBuilder);
-}
-
-KeyedEncoder::~KeyedEncoder()
-{
-    ASSERT(m_variantBuilderStack.size() == 1);
-    ASSERT(m_variantBuilderStack.last() == &amp;m_variantBuilder);
-    ASSERT(m_arrayStack.isEmpty());
-    ASSERT(m_objectStack.isEmpty());
-}
-
-void KeyedEncoder::encodeBytes(const String&amp; key, const uint8_t* bytes, size_t size)
-{
-    GRefPtr&lt;GBytes&gt; gBytes = adoptGRef(g_bytes_new_static(bytes, size));
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_from_bytes(G_VARIANT_TYPE(&quot;ay&quot;), gBytes.get(), TRUE));
-}
-
-void KeyedEncoder::encodeBool(const String&amp; key, bool value)
-{
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_boolean(value));
-}
-
-void KeyedEncoder::encodeUInt32(const String&amp; key, uint32_t value)
-{
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_uint32(value));
-}
-
-void KeyedEncoder::encodeInt32(const String&amp; key, int32_t value)
-{
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_int32(value));
-}
-
-void KeyedEncoder::encodeInt64(const String&amp; key, int64_t value)
-{
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_int64(value));
-}
-
-void KeyedEncoder::encodeFloat(const String&amp; key, float value)
-{
-    encodeDouble(key, value);
-}
-
-void KeyedEncoder::encodeDouble(const String&amp; key, double value)
-{
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_double(value));
-}
-
-void KeyedEncoder::encodeString(const String&amp; key, const String&amp; value)
-{
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, key.utf8().data(), g_variant_new_string(value.utf8().data()));
-}
-
-void KeyedEncoder::beginObject(const String&amp; key)
-{
-    GRefPtr&lt;GVariantBuilder&gt; builder = adoptGRef(g_variant_builder_new(G_VARIANT_TYPE(&quot;aa{sv}&quot;)));
-    m_objectStack.append(std::make_pair(key, builder));
-    m_variantBuilderStack.append(builder.get());
-}
-
-void KeyedEncoder::endObject()
-{
-    GVariantBuilder* builder = m_variantBuilderStack.takeLast();
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, m_objectStack.last().first.utf8().data(), g_variant_builder_end(builder));
-    m_objectStack.removeLast();
-}
-
-void KeyedEncoder::beginArray(const String&amp; key)
-{
-    m_arrayStack.append(std::make_pair(key, adoptGRef(g_variant_builder_new(G_VARIANT_TYPE(&quot;aa{sv}&quot;)))));
-}
-
-void KeyedEncoder::beginArrayElement()
-{
-    m_variantBuilderStack.append(g_variant_builder_new(G_VARIANT_TYPE(&quot;a{sv}&quot;)));
-}
-
-void KeyedEncoder::endArrayElement()
-{
-    GRefPtr&lt;GVariantBuilder&gt; variantBuilder = adoptGRef(m_variantBuilderStack.takeLast());
-    g_variant_builder_add_value(m_arrayStack.last().second.get(), g_variant_builder_end(variantBuilder.get()));
-}
-
-void KeyedEncoder::endArray()
-{
-    g_variant_builder_add(m_variantBuilderStack.last(), &quot;{sv}&quot;, m_arrayStack.last().first.utf8().data(), g_variant_builder_end(m_arrayStack.last().second.get()));
-    m_arrayStack.removeLast();
-}
-
-PassRefPtr&lt;SharedBuffer&gt; KeyedEncoder::finishEncoding()
-{
-    g_assert(m_variantBuilderStack.last() == &amp;m_variantBuilder);
-    GRefPtr&lt;GVariant&gt; variant = g_variant_builder_end(&amp;m_variantBuilder);
-    GRefPtr&lt;GBytes&gt; data = g_variant_get_data_as_bytes(variant.get());
-    return SharedBuffer::create(static_cast&lt;const unsigned char*&gt;(g_bytes_get_data(data.get(), nullptr)), static_cast&lt;unsigned&gt;(g_bytes_get_size(data.get())));
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedglibKeyedEncoderh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/glib/KeyedEncoder.h (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/glib/KeyedEncoder.h        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/Shared/glib/KeyedEncoder.h        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -1,70 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Igalia S.L.
- *
- * 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 KeyedEncoder_h
-#define KeyedEncoder_h
-
-#include &lt;WebCore/KeyedCoding.h&gt;
-#include &lt;glib.h&gt;
-#include &lt;wtf/Vector.h&gt;
-#include &lt;wtf/glib/GRefPtr.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebKit {
-
-class KeyedEncoder final : public WebCore::KeyedEncoder {
-public:
-    KeyedEncoder();
-    ~KeyedEncoder();
-
-    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; finishEncoding() override;
-
-private:
-    virtual void encodeBytes(const String&amp; key, const uint8_t*, size_t) override;
-    virtual void encodeBool(const String&amp; key, bool) override;
-    virtual void encodeUInt32(const String&amp; key, uint32_t) override;
-    virtual void encodeInt32(const String&amp; key, int32_t) override;
-    virtual void encodeInt64(const String&amp; key, int64_t) override;
-    virtual void encodeFloat(const String&amp; key, float) override;
-    virtual void encodeDouble(const String&amp; key, double) override;
-    virtual void encodeString(const String&amp; key, const String&amp;) override;
-
-    virtual void beginObject(const String&amp; key) override;
-    virtual void endObject() override;
-
-    virtual void beginArray(const String&amp; key) override;
-    virtual void beginArrayElement() override;
-    virtual void endArrayElement() override;
-    virtual void endArray() override;
-
-    GVariantBuilder m_variantBuilder;
-    Vector&lt;GVariantBuilder*, 16&gt; m_variantBuilderStack;
-    Vector&lt;std::pair&lt;String, GRefPtr&lt;GVariantBuilder&gt;&gt;, 16&gt; m_arrayStack;
-    Vector&lt;std::pair&lt;String, GRefPtr&lt;GVariantBuilder&gt;&gt;, 16&gt; m_objectStack;
-};
-
-} // namespace WebKit
-
-#endif // KeyedEncoder_h
</del></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (188125 => 188126)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-08-07 15:28:01 UTC (rev 188125)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-08-07 16:04:49 UTC (rev 188126)
</span><span class="lines">@@ -462,8 +462,6 @@
</span><span class="cx">                 1AE00D4C182D6EB000087DD7 /* WKBrowsingContextHandle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AE00D4A182D6EB000087DD7 /* WKBrowsingContextHandle.mm */; };
</span><span class="cx">                 1AE00D4D182D6EB000087DD7 /* WKBrowsingContextHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE00D4B182D6EB000087DD7 /* WKBrowsingContextHandle.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 1AE00D4F182D6F5000087DD7 /* WKBrowsingContextHandleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE00D4E182D6F5000087DD7 /* WKBrowsingContextHandleInternal.h */; };
</span><del>-                1AE00D5C182DADE100087DD7 /* KeyedEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE00D5A182DADE100087DD7 /* KeyedEncoder.cpp */; };
-                1AE00D5D182DADE100087DD7 /* KeyedEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE00D5B182DADE100087DD7 /* KeyedEncoder.h */; };
</del><span class="cx">                 1AE00D601831792100087DD7 /* FrameLoadState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE00D5E1831792100087DD7 /* FrameLoadState.cpp */; };
</span><span class="cx">                 1AE00D611831792100087DD7 /* FrameLoadState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE00D5F1831792100087DD7 /* FrameLoadState.h */; };
</span><span class="cx">                 1AE00D6B18327C1200087DD7 /* StringReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE00D6918327C1200087DD7 /* StringReference.cpp */; };
</span><span class="lines">@@ -947,8 +945,6 @@
</span><span class="cx">                 51834593134532E90092B696 /* WebIconDatabaseClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 51834591134532E80092B696 /* WebIconDatabaseClient.h */; };
</span><span class="cx">                 518353DA1885BF8C00D9FE44 /* IDBSerialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 518353D81885BF8C00D9FE44 /* IDBSerialization.cpp */; };
</span><span class="cx">                 518353DB1885BF8C00D9FE44 /* IDBSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 518353D91885BF8C00D9FE44 /* IDBSerialization.h */; };
</span><del>-                518353DE1887128B00D9FE44 /* KeyedDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 518353DC1887128B00D9FE44 /* KeyedDecoder.cpp */; };
-                518353DF1887128B00D9FE44 /* KeyedDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 518353DD1887128B00D9FE44 /* KeyedDecoder.h */; };
</del><span class="cx">                 5183DDEC1630BDFC008BE5C7 /* NetworkProcessConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5105B0D4162F7A7A00E27709 /* NetworkProcessConnection.cpp */; };
</span><span class="cx">                 51871B5B127CB89D00F76232 /* WebContextMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51871B59127CB89D00F76232 /* WebContextMenu.cpp */; };
</span><span class="cx">                 51871B5C127CB89D00F76232 /* WebContextMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 51871B5A127CB89D00F76232 /* WebContextMenu.h */; };
</span><span class="lines">@@ -2588,8 +2584,6 @@
</span><span class="cx">                 1AE00D4A182D6EB000087DD7 /* WKBrowsingContextHandle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKBrowsingContextHandle.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AE00D4B182D6EB000087DD7 /* WKBrowsingContextHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBrowsingContextHandle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AE00D4E182D6F5000087DD7 /* WKBrowsingContextHandleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBrowsingContextHandleInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                1AE00D5A182DADE100087DD7 /* KeyedEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyedEncoder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                1AE00D5B182DADE100087DD7 /* KeyedEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyedEncoder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 1AE00D5E1831792100087DD7 /* FrameLoadState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameLoadState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AE00D5F1831792100087DD7 /* FrameLoadState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameLoadState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AE00D6918327C1200087DD7 /* StringReference.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringReference.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3111,8 +3105,6 @@
</span><span class="cx">                 51834591134532E80092B696 /* WebIconDatabaseClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabaseClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 518353D81885BF8C00D9FE44 /* IDBSerialization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBSerialization.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 518353D91885BF8C00D9FE44 /* IDBSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBSerialization.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                518353DC1887128B00D9FE44 /* KeyedDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyedDecoder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                518353DD1887128B00D9FE44 /* KeyedDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyedDecoder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 5183B3931379F85C00E8754E /* Shim.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shim.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5184BC4A132E907A006B9E28 /* WebIconDatabase.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebIconDatabase.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51871B59127CB89D00F76232 /* WebContextMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebContextMenu.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4871,10 +4863,6 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 1AAF0C4912B16334008E49E2 /* ArgumentCodersCF.cpp */,
</span><span class="cx">                                 1AAF0C4812B16334008E49E2 /* ArgumentCodersCF.h */,
</span><del>-                                518353DC1887128B00D9FE44 /* KeyedDecoder.cpp */,
-                                518353DD1887128B00D9FE44 /* KeyedDecoder.h */,
-                                1AE00D5A182DADE100087DD7 /* KeyedEncoder.cpp */,
-                                1AE00D5B182DADE100087DD7 /* KeyedEncoder.h */,
</del><span class="cx">                         );
</span><span class="cx">                         path = cf;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -7699,8 +7687,6 @@
</span><span class="cx">                                 C58CDF2A1887548B00871536 /* InteractionInformationAtPosition.h in Headers */,
</span><span class="cx">                                 1AE49A4911FFA8CE0048B464 /* JSNPMethod.h in Headers */,
</span><span class="cx">                                 1AE4987811FF7FAA0048B464 /* JSNPObject.h in Headers */,
</span><del>-                                518353DF1887128B00D9FE44 /* KeyedDecoder.h in Headers */,
-                                1AE00D5D182DADE100087DD7 /* KeyedEncoder.h in Headers */,
</del><span class="cx">                                 BCE0937814FB128C001138D9 /* LayerHostingContext.h in Headers */,
</span><span class="cx">                                 0F0C365A18C0555800F607D7 /* LayerRepresentation.h in Headers */,
</span><span class="cx">                                 1A92DC1112F8BA460017AF65 /* LayerTreeContext.h in Headers */,
</span><span class="lines">@@ -9497,8 +9483,6 @@
</span><span class="cx">                                 C58CDF2D1887609F00871536 /* InteractionInformationAtPosition.cpp in Sources */,
</span><span class="cx">                                 1AE49A4A11FFA8CE0048B464 /* JSNPMethod.cpp in Sources */,
</span><span class="cx">                                 1AE4987911FF7FAA0048B464 /* JSNPObject.cpp in Sources */,
</span><del>-                                518353DE1887128B00D9FE44 /* KeyedDecoder.cpp in Sources */,
-                                1AE00D5C182DADE100087DD7 /* KeyedEncoder.cpp in Sources */,
</del><span class="cx">                                 BCE0937714FB128C001138D9 /* LayerHostingContext.mm in Sources */,
</span><span class="cx">                                 0F0C365E18C110A500F607D7 /* LayerRepresentation.mm in Sources */,
</span><span class="cx">                                 1A92DC1312F8BAB90017AF65 /* LayerTreeContext.cpp in Sources */,
</span></span></pre>
</div>
</div>

</body>
</html>