<!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>[211027] trunk</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/211027">211027</a></dd>
<dt>Author</dt> <dd>mmaxfield@apple.com</dd>
<dt>Date</dt> <dd>2017-01-22 09:24:51 -0800 (Sun, 22 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Introducing the Platform Abstraction Layer (PAL)
https://bugs.webkit.org/show_bug.cgi?id=143358

Reviewed by Alex Christensen.

.:

* CMakeLists.txt:
* Source/CMakeLists.txt:
* Source/cmake/WebKitFS.cmake:

Source/WebCore:

In order to enforce layering and promote testability, WebCore/platform files
should be compiled in their own project. This new project can enforce layering
and can be tested with unit tests in addition to layout tests.

The name of this new project is the Platform Abstraction Layer, or &quot;PAL.&quot;
This comprises of a new directory in WebCore which will be the destination
for files migrated from WebCore/platform. This new folder, and its associated
project, will maintain layering invariants. These invariants are enforced at
build-time by setting the #include path for PAL to not include the rest of
WebCore (which is the same layering enforcement mechanism for WTF). Files will
be migrated into this new target/directory piece-by-piece, and the migration
of a file will be performed as soon as it can be migrated without violating
layering.

Within WebCore, files should include PAL files using the convention
#include &lt;pal/foo.h&gt;. Symbols within PAL are placed within a new top-level
namespace, &quot;PAL,&quot; and therefore when used should be referred to as PAL::Foo.

The first set of files to move into the new platform is the crypto/ subdirectory
because it is both simple but also includes platform-dependent files.

No new tests because there is no behavior change.

* CMakeLists.txt:
* Configurations/WebCore.xcconfig: Add PAL to the include path
* PAL/Configurations/Base.xcconfig: Added.
* PAL/Configurations/DebugRelease.xcconfig: Added.
* PAL/Configurations/PAL.xcconfig: Added. Sets up some PAL-specific
variables.
* PAL/Configurations/FeatureDefines.xcconfig: Added.
* PAL/Configurations/Version.xcconfig: Added.
* PAL/PAL.xcodeproj/project.pbxproj: Added. New project file.
* PAL/config.h: Added. Simplified from WebCore/config.h.
* PAL/pal/CMakeLists.txt: Added.
* PAL/pal/PlatformEfl.cmake: Added.
* PAL/pal/PlatformGTK.cmake: Added.
* PAL/pal/PlatformMac.cmake: Added.
* PAL/pal/PlatformWin.cmake: Added.
* PAL/pal/crypto/CryptoDigest.h: Renamed from Source/WebCore/platform/crypto/CryptoDigest.h.
* PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp: Renamed from Source/WebCore/platform/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp.
* PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp: Renamed from Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp.
* PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp: Renamed from Source/WebCore/platform/crypto/gnutls/CryptoDigestGnuTLS.cpp.
* PAL/pal/crypto/win/CryptoDigestWin.cpp: Renamed from Source/WebCore/platform/crypto/win/CryptoDigestWin.cpp.
* PlatformEfl.cmake:
* PlatformGTK.cmake:
* PlatformMac.cmake:
* PlatformWin.cmake:
* WebCore.xcodeproj/project.pbxproj: Create a project link so WebCore
knows that it needs to build PAL as a dependency.
* crypto/algorithms/CryptoAlgorithmSHA1.cpp:
(WebCore::CryptoAlgorithmSHA1::digest): Update #include and namespace.
* crypto/algorithms/CryptoAlgorithmSHA224.cpp:
(WebCore::CryptoAlgorithmSHA224::digest): Ditto.
* crypto/algorithms/CryptoAlgorithmSHA256.cpp:
(WebCore::CryptoAlgorithmSHA256::digest): Ditto.
* crypto/algorithms/CryptoAlgorithmSHA384.cpp:
(WebCore::CryptoAlgorithmSHA384::digest): Ditto.
* crypto/algorithms/CryptoAlgorithmSHA512.cpp:
(WebCore::CryptoAlgorithmSHA512::digest): Ditto.
* crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:
(WebCore::cryptoDigestAlgorithm): Ditto.
(WebCore::signRSASSA_PKCS1_v1_5): Ditto.
(WebCore::verifyRSASSA_PKCS1_v1_5): Ditto.
* inspector/InspectorDOMAgent.cpp:
(WebCore::computeContentSecurityPolicySHA256Hash): Ditto.
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::toCryptoDigestAlgorithm): Ditto.
(WebCore::ContentSecurityPolicy::findHashOfContentInPolicies): Ditto.
* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::HostTLSCertificateSet::computeCertificateHash): Ditto.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkCMakeListstxt">trunk/CMakeLists.txt</a></li>
<li><a href="#trunkChangeLog">trunk/ChangeLog</a></li>
<li><a href="#trunkSourceCMakeListstxt">trunk/Source/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebCoreConfigurationsWebCorexcconfig">trunk/Source/WebCore/Configurations/WebCore.xcconfig</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="#trunkSourceWebCorePlatformMaccmake">trunk/Source/WebCore/PlatformMac.cmake</a></li>
<li><a href="#trunkSourceWebCorePlatformWincmake">trunk/Source/WebCore/PlatformWin.cmake</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA1cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoAlgorithmRSASSA_PKCS1_v1_5Maccpp">trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicycpp">trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupSoupNetworkSessioncpp">trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp</a></li>
<li><a href="#trunkSourceWebKitCMakeListstxt">trunk/Source/WebKit/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourcecmakeOptionsWincmake">trunk/Source/cmake/OptionsWin.cmake</a></li>
<li><a href="#trunkSourcecmakeWebKitFScmake">trunk/Source/cmake/WebKitFS.cmake</a></li>
<li><a href="#trunkToolsScriptswebkitpystylecheckersfeaturedefinespy">trunk/Tools/Scripts/webkitpy/style/checkers/featuredefines.py</a></li>
<li><a href="#trunkToolsTestWebKitAPIConfigurationsFeatureDefinesxcconfig">trunk/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/Source/WebCore/PAL/</li>
<li>trunk/Source/WebCore/PAL/Configurations/</li>
<li><a href="#trunkSourceWebCorePALConfigurationsBasexcconfig">trunk/Source/WebCore/PAL/Configurations/Base.xcconfig</a></li>
<li><a href="#trunkSourceWebCorePALConfigurationsDebugReleasexcconfig">trunk/Source/WebCore/PAL/Configurations/DebugRelease.xcconfig</a></li>
<li><a href="#trunkSourceWebCorePALConfigurationsFeatureDefinesxcconfig">trunk/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebCorePALConfigurationsPALxcconfig">trunk/Source/WebCore/PAL/Configurations/PAL.xcconfig</a></li>
<li><a href="#trunkSourceWebCorePALConfigurationsVersionxcconfig">trunk/Source/WebCore/PAL/Configurations/Version.xcconfig</a></li>
<li>trunk/Source/WebCore/PAL/PAL.xcodeproj/</li>
<li><a href="#trunkSourceWebCorePALPALxcodeprojprojectpbxproj">trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorePALconfigh">trunk/Source/WebCore/PAL/config.h</a></li>
<li>trunk/Source/WebCore/PAL/pal/</li>
<li><a href="#trunkSourceWebCorePALpalCMakeListstxt">trunk/Source/WebCore/PAL/pal/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCorePALpalPlatformEflcmake">trunk/Source/WebCore/PAL/pal/PlatformEfl.cmake</a></li>
<li><a href="#trunkSourceWebCorePALpalPlatformGTKcmake">trunk/Source/WebCore/PAL/pal/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebCorePALpalPlatformMaccmake">trunk/Source/WebCore/PAL/pal/PlatformMac.cmake</a></li>
<li><a href="#trunkSourceWebCorePALpalPlatformWincmake">trunk/Source/WebCore/PAL/pal/PlatformWin.cmake</a></li>
<li>trunk/Source/WebCore/PAL/pal/crypto/</li>
<li><a href="#trunkSourceWebCorePALpalcryptoCryptoDigesth">trunk/Source/WebCore/PAL/pal/crypto/CryptoDigest.h</a></li>
<li>trunk/Source/WebCore/PAL/pal/crypto/commoncrypto/</li>
<li><a href="#trunkSourceWebCorePALpalcryptocommoncryptoCryptoDigestCommonCryptocpp">trunk/Source/WebCore/PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp</a></li>
<li>trunk/Source/WebCore/PAL/pal/crypto/gcrypt/</li>
<li><a href="#trunkSourceWebCorePALpalcryptogcryptCryptoDigestGCryptcpp">trunk/Source/WebCore/PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp</a></li>
<li>trunk/Source/WebCore/PAL/pal/crypto/gnutls/</li>
<li><a href="#trunkSourceWebCorePALpalcryptognutlsCryptoDigestGnuTLScpp">trunk/Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp</a></li>
<li>trunk/Source/WebCore/PAL/pal/crypto/win/</li>
<li><a href="#trunkSourceWebCorePALpalcryptowinCryptoDigestWincpp">trunk/Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li>trunk/Source/WebCore/platform/crypto/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/CMakeLists.txt (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/CMakeLists.txt        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/CMakeLists.txt        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -114,6 +114,7 @@
</span><span class="cx"> endif ()
</span><span class="cx"> 
</span><span class="cx"> set(JavaScriptCore_LIBRARY_TYPE SHARED)
</span><ins>+set(PAL_LIBRARY_TYPE STATIC)
</ins><span class="cx"> set(WebKit_LIBRARY_TYPE SHARED)
</span><span class="cx"> set(WebKit2_LIBRARY_TYPE SHARED)
</span><span class="cx"> set(WebCoreTestSupport_LIBRARY_TYPE STATIC)
</span></span></pre></div>
<a id="trunkChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/ChangeLog (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/ChangeLog        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/ChangeLog        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2017-01-22  Don Olmstead &lt;don.olmstead@am.sony.com&gt; and Myles C. Maxfield &lt;mmaxfield@apple.com&gt;
+
+        Introducing the Platform Abstraction Layer (PAL)
+        https://bugs.webkit.org/show_bug.cgi?id=143358
+
+        Reviewed by Alex Christensen.
+
+        * CMakeLists.txt:
+        * Source/CMakeLists.txt:
+        * Source/cmake/WebKitFS.cmake:
+
</ins><span class="cx"> 2017-01-20  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove outdated ENABLE(CSP_NEXT) build flag
</span></span></pre></div>
<a id="trunkSourceCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/CMakeLists.txt (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/CMakeLists.txt        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/CMakeLists.txt        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> WEBKIT_SET_EXTRA_COMPILER_FLAGS(JavaScriptCore ${ADDITIONAL_COMPILER_FLAGS})
</span><span class="cx"> 
</span><span class="cx"> if (ENABLE_WEBCORE)
</span><ins>+    WEBKIT_SET_EXTRA_COMPILER_FLAGS(PAL ${ADDITIONAL_COMPILER_FLAGS})
</ins><span class="cx">     WEBKIT_SET_EXTRA_COMPILER_FLAGS(WebCoreTestSupport ${ADDITIONAL_COMPILER_FLAGS})
</span><span class="cx">     WEBKIT_SET_EXTRA_COMPILER_FLAGS(WebCore ${ADDITIONAL_COMPILER_FLAGS})
</span><span class="cx">     WEBKIT_SET_EXTRA_COMPILER_FLAGS(WebCoreDerivedSources ${ADDITIONAL_COMPILER_FLAGS})
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-// Copyright (C) 2009, 2010, 2014, 2015, 2016 Apple Inc. All rights reserved.
</del><ins>+// Copyright (C) 2009, 2010, 2014, 2015, 2016, 2017 Apple Inc. All rights reserved.
</ins><span class="cx"> // Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx"> //
</span><span class="cx"> // Redistribution and use in source and binary forms, with or without
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/CMakeLists.txt        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> cmake_minimum_required(VERSION 2.8.12)
</span><span class="cx"> include(WebKitCommon)
</span><span class="cx"> set_property(DIRECTORY . PROPERTY FOLDER &quot;WebCore&quot;)
</span><ins>+add_subdirectory(PAL/pal)
</ins><span class="cx"> 
</span><span class="cx"> set(WebCore_INCLUDE_DIRECTORIES
</span><span class="cx">     &quot;${CMAKE_BINARY_DIR}&quot;
</span><span class="lines">@@ -2945,6 +2946,7 @@
</span><span class="cx"> set(WebCore_LIBRARIES
</span><span class="cx">     ${ICU_LIBRARIES}
</span><span class="cx">     JavaScriptCore${DEBUG_SUFFIX}
</span><ins>+    PAL${DEBUG_SUFFIX}
</ins><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> if (ENABLE_LEGACY_ENCRYPTED_MEDIA)
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/ChangeLog        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,3 +1,81 @@
</span><ins>+2017-01-22  Don Olmstead &lt;don.olmstead@am.sony.com&gt; and Myles C. Maxfield &lt;mmaxfield@apple.com&gt;
+
+        Introducing the Platform Abstraction Layer (PAL)
+        https://bugs.webkit.org/show_bug.cgi?id=143358
+
+        Reviewed by Alex Christensen.
+
+        In order to enforce layering and promote testability, WebCore/platform files
+        should be compiled in their own project. This new project can enforce layering
+        and can be tested with unit tests in addition to layout tests.
+
+        The name of this new project is the Platform Abstraction Layer, or &quot;PAL.&quot;
+        This comprises of a new directory in WebCore which will be the destination
+        for files migrated from WebCore/platform. This new folder, and its associated
+        project, will maintain layering invariants. These invariants are enforced at
+        build-time by setting the #include path for PAL to not include the rest of
+        WebCore (which is the same layering enforcement mechanism for WTF). Files will
+        be migrated into this new target/directory piece-by-piece, and the migration
+        of a file will be performed as soon as it can be migrated without violating
+        layering.
+
+        Within WebCore, files should include PAL files using the convention
+        #include &lt;pal/foo.h&gt;. Symbols within PAL are placed within a new top-level
+        namespace, &quot;PAL,&quot; and therefore when used should be referred to as PAL::Foo.
+
+        The first set of files to move into the new platform is the crypto/ subdirectory
+        because it is both simple but also includes platform-dependent files.
+
+        No new tests because there is no behavior change.
+
+        * CMakeLists.txt:
+        * Configurations/WebCore.xcconfig: Add PAL to the include path
+        * PAL/Configurations/Base.xcconfig: Added.
+        * PAL/Configurations/DebugRelease.xcconfig: Added.
+        * PAL/Configurations/PAL.xcconfig: Added. Sets up some PAL-specific
+        variables.
+        * PAL/Configurations/FeatureDefines.xcconfig: Added.
+        * PAL/Configurations/Version.xcconfig: Added.
+        * PAL/PAL.xcodeproj/project.pbxproj: Added. New project file.
+        * PAL/config.h: Added. Simplified from WebCore/config.h.
+        * PAL/pal/CMakeLists.txt: Added.
+        * PAL/pal/PlatformEfl.cmake: Added.
+        * PAL/pal/PlatformGTK.cmake: Added.
+        * PAL/pal/PlatformMac.cmake: Added.
+        * PAL/pal/PlatformWin.cmake: Added.
+        * PAL/pal/crypto/CryptoDigest.h: Renamed from Source/WebCore/platform/crypto/CryptoDigest.h.
+        * PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp: Renamed from Source/WebCore/platform/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp.
+        * PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp: Renamed from Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp.
+        * PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp: Renamed from Source/WebCore/platform/crypto/gnutls/CryptoDigestGnuTLS.cpp.
+        * PAL/pal/crypto/win/CryptoDigestWin.cpp: Renamed from Source/WebCore/platform/crypto/win/CryptoDigestWin.cpp.
+        * PlatformEfl.cmake:
+        * PlatformGTK.cmake:
+        * PlatformMac.cmake:
+        * PlatformWin.cmake:
+        * WebCore.xcodeproj/project.pbxproj: Create a project link so WebCore
+        knows that it needs to build PAL as a dependency.
+        * crypto/algorithms/CryptoAlgorithmSHA1.cpp:
+        (WebCore::CryptoAlgorithmSHA1::digest): Update #include and namespace.
+        * crypto/algorithms/CryptoAlgorithmSHA224.cpp:
+        (WebCore::CryptoAlgorithmSHA224::digest): Ditto.
+        * crypto/algorithms/CryptoAlgorithmSHA256.cpp:
+        (WebCore::CryptoAlgorithmSHA256::digest): Ditto.
+        * crypto/algorithms/CryptoAlgorithmSHA384.cpp:
+        (WebCore::CryptoAlgorithmSHA384::digest): Ditto.
+        * crypto/algorithms/CryptoAlgorithmSHA512.cpp:
+        (WebCore::CryptoAlgorithmSHA512::digest): Ditto.
+        * crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:
+        (WebCore::cryptoDigestAlgorithm): Ditto.
+        (WebCore::signRSASSA_PKCS1_v1_5): Ditto.
+        (WebCore::verifyRSASSA_PKCS1_v1_5): Ditto.
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::computeContentSecurityPolicySHA256Hash): Ditto.
+        * page/csp/ContentSecurityPolicy.cpp:
+        (WebCore::toCryptoDigestAlgorithm): Ditto.
+        (WebCore::ContentSecurityPolicy::findHashOfContentInPolicies): Ditto.
+        * platform/network/soup/SoupNetworkSession.cpp:
+        (WebCore::HostTLSCertificateSet::computeCertificateHash): Ditto.
+
</ins><span class="cx"> 2017-01-22  Zan Dobersek  &lt;zdobersek@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GStreamer] Clear out m_appsinkCaps in AppendPipeline::appsinkCapsChanged() before using outPtr()
</span></span></pre></div>
<a id="trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-// Copyright (C) 2009, 2010, 2014, 2015, 2016 Apple Inc. All rights reserved.
</del><ins>+// Copyright (C) 2009, 2010, 2014, 2015, 2016, 2017 Apple Inc. All rights reserved.
</ins><span class="cx"> // Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx"> //
</span><span class="cx"> // Redistribution and use in source and binary forms, with or without
</span></span></pre></div>
<a id="trunkSourceWebCoreConfigurationsWebCorexcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Configurations/WebCore.xcconfig (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Configurations/WebCore.xcconfig        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/Configurations/WebCore.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> WEBKITADDITIONS_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include/WebKitAdditions $(SDKROOT)/usr/local/include/WebKitAdditions;
</span><span class="cx"> 
</span><del>-HEADER_SEARCH_PATHS = ForwardingHeaders icu /usr/include/libxslt /usr/include/libxml2 &quot;$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore&quot; &quot;$(BUILT_PRODUCTS_DIR)/usr/local/include&quot; $(WEBKITADDITIONS_HEADER_SEARCH_PATHS) $(HEADER_SEARCH_PATHS);
</del><ins>+HEADER_SEARCH_PATHS = PAL ForwardingHeaders icu /usr/include/libxslt /usr/include/libxml2 &quot;$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore&quot; &quot;$(BUILT_PRODUCTS_DIR)/usr/local/include&quot; $(WEBKITADDITIONS_HEADER_SEARCH_PATHS) $(HEADER_SEARCH_PATHS);
</ins><span class="cx"> INFOPLIST_FILE = Info.plist;
</span><span class="cx"> INSTALL_PATH = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
</span><span class="cx"> INSTALL_PATH[sdk=macosx*] = $(WEBCORE_FRAMEWORKS_DIR);
</span></span></pre></div>
<a id="trunkSourceWebCorePALConfigurationsBasexcconfig"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/Configurations/Base.xcconfig (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/Configurations/Base.xcconfig                                (rev 0)
+++ trunk/Source/WebCore/PAL/Configurations/Base.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,121 @@
</span><ins>+// Copyright (C) 2017 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. ``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
+// 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;../../../../../Internal/Configurations/HaveInternalSDK.xcconfig&quot;
+
+USE_INTERNAL_SDK = $(USE_INTERNAL_SDK_$(CONFIGURATION));
+USE_INTERNAL_SDK_Production = YES;
+USE_INTERNAL_SDK_Debug = $(HAVE_INTERNAL_SDK);
+USE_INTERNAL_SDK_Release = $(HAVE_INTERNAL_SDK);
+
+CLANG_CXX_LANGUAGE_STANDARD = gnu++14;
+CLANG_CXX_LIBRARY = libc++;
+CLANG_WARN_BOOL_CONVERSION = YES;
+CLANG_WARN_CONSTANT_CONVERSION = YES;
+CLANG_WARN_CXX0X_EXTENSIONS = NO;
+CLANG_WARN_EMPTY_BODY = YES;
+CLANG_WARN_ENUM_CONVERSION = YES;
+CLANG_WARN_INFINITE_RECURSION = YES;
+CLANG_WARN_INT_CONVERSION = YES;
+CLANG_WARN_SUSPICIOUS_MOVE = YES;
+CLANG_WARN_UNREACHABLE_CODE = YES;
+CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+GCC_WARN_UNDECLARED_SELECTOR = YES;
+COMBINE_HIDPI_IMAGES = NO;
+DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
+ENABLE_STRICT_OBJC_MSGSEND = YES;
+GCC_C_LANGUAGE_STANDARD = gnu99;
+GCC_DEBUGGING_SYMBOLS = default;
+GCC_DYNAMIC_NO_PIC = NO;
+GCC_ENABLE_CPP_EXCEPTIONS = NO;
+GCC_ENABLE_CPP_RTTI = NO;
+GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+GCC_ENABLE_SYMBOL_SEPARATION = NO;
+GCC_FAST_OBJC_DISPATCH = YES;
+GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+GCC_NO_COMMON_BLOCKS = YES;
+GCC_OBJC_CALL_CXX_CDTORS = YES;
+GCC_PRECOMPILE_PREFIX_HEADER = YES;
+GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+GCC_THREADSAFE_STATICS = NO;
+GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+// FIXME: &lt;http://webkit.org/b/109846&gt; WebCore should build with -Wshorten-64-to-32
+GCC_WARN_64_TO_32_BIT_CONVERSION = $(GCC_WARN_64_TO_32_BIT_CONVERSION_$(CURRENT_ARCH));
+GCC_WARN_64_TO_32_BIT_CONVERSION_ = YES;
+GCC_WARN_64_TO_32_BIT_CONVERSION_armv7 = YES;
+GCC_WARN_64_TO_32_BIT_CONVERSION_armv7k = YES;
+GCC_WARN_64_TO_32_BIT_CONVERSION_armv7s = YES;
+GCC_WARN_64_TO_32_BIT_CONVERSION_arm64 = NO;
+GCC_WARN_64_TO_32_BIT_CONVERSION_i386 = YES;
+GCC_WARN_64_TO_32_BIT_CONVERSION_x86_64 = NO;
+GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
+GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
+GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+GCC_WARN_ABOUT_RETURN_TYPE = YES;
+GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
+GCC_WARN_SIGN_COMPARE = YES;
+GCC_WARN_UNINITIALIZED_AUTOS = YES;
+GCC_WARN_UNUSED_FUNCTION = YES;
+GCC_WARN_UNUSED_VARIABLE = YES;
+PREBINDING = NO;
+WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wno-unknown-warning-option;
+
+TARGET_MAC_OS_X_VERSION_MAJOR = $(TARGET_MAC_OS_X_VERSION_MAJOR$(MACOSX_DEPLOYMENT_TARGET:suffix:identifier));
+TARGET_MAC_OS_X_VERSION_MAJOR_10 = 101000;
+TARGET_MAC_OS_X_VERSION_MAJOR_11 = 101100;
+TARGET_MAC_OS_X_VERSION_MAJOR_12 = 101200;
+TARGET_MAC_OS_X_VERSION_MAJOR_13 = 101300;
+
+WK_TARGET_IOS_VERSION_MAJOR = $(IPHONEOS_DEPLOYMENT_TARGET:base); // iOS 9.3 =&gt; 9
+
+SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx appletvos appletvsimulator watchos watchsimulator;
+
+// DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL, STRIP_INSTALLED_PRODUCT and DEAD_CODE_STRIPPING vary between the debug and normal variants.
+// We set up the values for each variant here, and have the Debug configuration in the Xcode project use the _debug variant.
+DEBUG_DEFINES_debug = ;
+DEBUG_DEFINES_normal = NDEBUG;
+DEBUG_DEFINES = $(DEBUG_DEFINES_$(CURRENT_VARIANT));
+
+GCC_OPTIMIZATION_LEVEL = $(GCC_OPTIMIZATION_LEVEL_$(CURRENT_VARIANT));
+GCC_OPTIMIZATION_LEVEL_normal[sdk=iphone*] = 3;
+GCC_OPTIMIZATION_LEVEL_normal[sdk=macosx*] = 2;
+GCC_OPTIMIZATION_LEVEL_debug = 0;
+
+STRIP_INSTALLED_PRODUCT = $(STRIP_INSTALLED_PRODUCT_$(CURRENT_VARIANT));
+STRIP_INSTALLED_PRODUCT_normal = YES;
+STRIP_INSTALLED_PRODUCT_debug = NO;
+
+DEAD_CODE_STRIPPING_debug = NO;
+DEAD_CODE_STRIPPING_normal = YES;
+DEAD_CODE_STRIPPING = $(DEAD_CODE_STRIPPING_$(CURRENT_VARIANT));
+
+GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+CLANG_DEBUG_INFORMATION_LEVEL[sdk=macosx10.8*] = line-tables-only;
+CLANG_DEBUG_INFORMATION_LEVEL[sdk=macosx10.9*] = line-tables-only;
+
+SDKROOT = macosx.internal;
+
+OTHER_CFLAGS = $(ASAN_OTHER_CFLAGS);
+OTHER_CPLUSPLUSFLAGS = $(ASAN_OTHER_CPLUSPLUSFLAGS);
+OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS);
</ins></span></pre></div>
<a id="trunkSourceWebCorePALConfigurationsDebugReleasexcconfig"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/Configurations/DebugRelease.xcconfig (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/Configurations/DebugRelease.xcconfig                                (rev 0)
+++ trunk/Source/WebCore/PAL/Configurations/DebugRelease.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+// Copyright (C) 2017 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. ``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
+// 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;Base.xcconfig&quot;
+
+ARCHS = $(ARCHS_STANDARD_32_64_BIT);
+
+ONLY_ACTIVE_ARCH = YES;
+
+TARGET_MAC_OS_X_VERSION_MAJOR = $(MAC_OS_X_VERSION_MAJOR);
+
+MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(PLATFORM_NAME)_$(TARGET_MAC_OS_X_VERSION_MAJOR));
+MACOSX_DEPLOYMENT_TARGET_macosx_101000 = 10.10;
+MACOSX_DEPLOYMENT_TARGET_macosx_101100 = 10.11;
+MACOSX_DEPLOYMENT_TARGET_macosx_101200 = 10.12;
+MACOSX_DEPLOYMENT_TARGET_macosx_101300 = 10.13;
+
+GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
+DEBUG_INFORMATION_FORMAT = dwarf;
+
+CLANG_DEBUG_INFORMATION_LEVEL[sdk=macosx10.8*] = default;
+CLANG_DEBUG_INFORMATION_LEVEL[sdk=macosx10.9*] = default;
+
+SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
+SDKROOT_ = macosx;
+SDKROOT_YES = macosx.internal;
</ins></span></pre></div>
<a id="trunkSourceWebCorePALConfigurationsFeatureDefinesxcconfigfromrev211026trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig (from rev 211026, trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig) (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig                                (rev 0)
+++ trunk/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,219 @@
</span><ins>+// Copyright (C) 2009, 2010, 2014, 2015, 2016, 2017 Apple Inc. All rights reserved.
+// Copyright (C) 2009 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 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. ``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
+// 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.
+
+// The contents of this file must be kept in sync with FeatureDefines.xcconfig in JavaScriptCore,
+// WebCore, WebKit and WebKit2.  Also the default values of the ENABLE_FEATURE_NAME macros in
+// build-webkit should match the values below, but they do not need to be in the same order.
+
+// Keep this list of features (not enabled/disabled state) in sync with FeatureDefines.vsprops
+// and FeatureDefinesCairo.vsprops in WebKitLibraries/win/tools/vsprops.
+
+// Set any ENABLE_FEATURE_NAME macro to an empty string to disable that feature.
+
+TARGET_MAC_OS_X_VERSION_LESS_THAN_1012000 = $(TARGET_MAC_OS_X_VERSION_LESS_THAN_1012000_$(TARGET_MAC_OS_X_VERSION_MAJOR));
+TARGET_MAC_OS_X_VERSION_LESS_THAN_1012000_101000 = YES;
+TARGET_MAC_OS_X_VERSION_LESS_THAN_1012000_101100 = YES;
+
+ENABLE_3D_TRANSFORMS = ENABLE_3D_TRANSFORMS;
+ENABLE_ACCELERATED_2D_CANVAS = ;
+ENABLE_ACCELERATED_OVERFLOW_SCROLLING[sdk=iphone*] = ENABLE_ACCELERATED_OVERFLOW_SCROLLING;
+
+ENABLE_APPLE_PAY[sdk=iphone*] = $(ENABLE_APPLE_PAY_$(PLATFORM_NAME));
+ENABLE_APPLE_PAY_iphoneos = ENABLE_APPLE_PAY;
+ENABLE_APPLE_PAY_iphonesimulator = ENABLE_APPLE_PAY;
+ENABLE_APPLE_PAY[sdk=iphoneos9*] = ;
+ENABLE_APPLE_PAY[sdk=iphonesimulator9*] = ;
+
+DISABLE_APPLE_PAY_macosx = $(TARGET_MAC_OS_X_VERSION_LESS_THAN_1012000);
+ENABLE_APPLE_PAY[sdk=macosx*] = $(ENABLE_APPLE_PAY_IF_NOT_$(DISABLE_APPLE_PAY_macosx));
+ENABLE_APPLE_PAY_IF_NOT_ = $(ENABLE_APPLE_PAY_IF_NOT_NO);
+ENABLE_APPLE_PAY_IF_NOT_NO = ENABLE_APPLE_PAY;
+ENABLE_APPLE_PAY_IF_NOT_YES = ;
+
+ENABLE_ATTACHMENT_ELEMENT = ENABLE_ATTACHMENT_ELEMENT;
+ENABLE_AVF_CAPTIONS = ENABLE_AVF_CAPTIONS;
+ENABLE_CACHE_PARTITIONING = ENABLE_CACHE_PARTITIONING;
+ENABLE_CANVAS_PATH = ENABLE_CANVAS_PATH;
+ENABLE_CANVAS_PROXY = ;
+ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
+ENABLE_ENCRYPTED_MEDIA = ;
+ENABLE_CONTENT_FILTERING[sdk=appletv*] = ;
+ENABLE_CONTENT_FILTERING[sdk=iphone*] = ENABLE_CONTENT_FILTERING;
+ENABLE_CONTENT_FILTERING[sdk=macosx*] = ENABLE_CONTENT_FILTERING;
+ENABLE_CSS_ANIMATIONS_LEVEL_2 = ENABLE_CSS_ANIMATIONS_LEVEL_2;
+ENABLE_CSS_BOX_DECORATION_BREAK = ENABLE_CSS_BOX_DECORATION_BREAK;
+ENABLE_CSS_COMPOSITING = ENABLE_CSS_COMPOSITING;
+ENABLE_CSS_DEVICE_ADAPTATION = ;
+ENABLE_CSS_GRID_LAYOUT = ENABLE_CSS_GRID_LAYOUT;
+ENABLE_CSS_IMAGE_ORIENTATION = ;
+ENABLE_CSS_IMAGE_RESOLUTION = ;
+ENABLE_CSS_REGIONS = ENABLE_CSS_REGIONS;
+ENABLE_CSS_SELECTORS_LEVEL4 = ENABLE_CSS_SELECTORS_LEVEL4;
+ENABLE_CSS3_TEXT = ;
+ENABLE_CURSOR_VISIBILITY = ENABLE_CURSOR_VISIBILITY;
+ENABLE_CUSTOM_SCHEME_HANDLER = ;
+ENABLE_DASHBOARD_SUPPORT[sdk=macosx*] = ENABLE_DASHBOARD_SUPPORT;
+ENABLE_DATALIST_ELEMENT = ;
+ENABLE_DATA_TRANSFER_ITEMS = ;
+ENABLE_DEVICE_ORIENTATION[sdk=iphone*] = ENABLE_DEVICE_ORIENTATION;
+ENABLE_FETCH_API = ENABLE_FETCH_API;
+ENABLE_FILTERS_LEVEL_2 = ENABLE_FILTERS_LEVEL_2;
+ENABLE_FONT_LOAD_EVENTS = ;
+ENABLE_FULLSCREEN_API[sdk=macosx*] = ENABLE_FULLSCREEN_API;
+ENABLE_GAMEPAD = ENABLE_GAMEPAD;
+ENABLE_GAMEPAD[sdk=watch*] = ;
+ENABLE_GAMEPAD_DEPRECATED = ;
+ENABLE_GEOLOCATION = ENABLE_GEOLOCATION;
+ENABLE_ICONDATABASE[sdk=macosx*] = ENABLE_ICONDATABASE;
+ENABLE_INTERSECTION_OBSERVER = ENABLE_INTERSECTION_OBSERVER;
+ENABLE_SERVICE_CONTROLS[sdk=macosx*] = ENABLE_SERVICE_CONTROLS;
+ENABLE_INDEXED_DATABASE = ENABLE_INDEXED_DATABASE;
+ENABLE_INDEXED_DATABASE_IN_WORKERS = ENABLE_INDEXED_DATABASE_IN_WORKERS;
+ENABLE_INPUT_TYPE_COLOR[sdk=macosx*] = ENABLE_INPUT_TYPE_COLOR;
+ENABLE_INPUT_TYPE_COLOR_POPOVER[sdk=macosx*] = ENABLE_INPUT_TYPE_COLOR_POPOVER;
+ENABLE_INPUT_TYPE_DATE[sdk=iphone*] = ENABLE_INPUT_TYPE_DATE;
+ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE = ;
+ENABLE_INPUT_TYPE_DATETIMELOCAL[sdk=iphone*] = ENABLE_INPUT_TYPE_DATETIMELOCAL;
+ENABLE_INPUT_TYPE_MONTH[sdk=iphone*] = ENABLE_INPUT_TYPE_MONTH;
+ENABLE_INPUT_TYPE_TIME[sdk=iphone*] = ENABLE_INPUT_TYPE_TIME;
+ENABLE_INPUT_TYPE_WEEK[sdk=iphone*] = ENABLE_INPUT_TYPE_WEEK;
+
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+
+ENABLE_WIRELESS_PLAYBACK_TARGET[sdk=iphone*] = ENABLE_WIRELESS_PLAYBACK_TARGET;
+ENABLE_WIRELESS_PLAYBACK_TARGET[sdk=macosx*] = $(ENABLE_WIRELESS_PLAYBACK_TARGET_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR))
+ENABLE_WIRELESS_PLAYBACK_TARGET_macosx_101000 = ;
+ENABLE_WIRELESS_PLAYBACK_TARGET_macosx_101100 = ENABLE_WIRELESS_PLAYBACK_TARGET;
+ENABLE_WIRELESS_PLAYBACK_TARGET_macosx_101200 = ENABLE_WIRELESS_PLAYBACK_TARGET;
+ENABLE_WIRELESS_PLAYBACK_TARGET_macosx_101300 = ENABLE_WIRELESS_PLAYBACK_TARGET;
+
+ENABLE_INTL = ENABLE_INTL;
+
+ENABLE_IOS_GESTURE_EVENTS = ;
+ENABLE_IOS_GESTURE_EVENTS[sdk=iphone*] = $(ENABLE_IOS_GESTURE_EVENTS_ios_WITH_INTERNAL_SDK_$(USE_INTERNAL_SDK));
+ENABLE_IOS_GESTURE_EVENTS_ios_WITH_INTERNAL_SDK_YES = ENABLE_IOS_GESTURE_EVENTS;
+
+ENABLE_MAC_GESTURE_EVENTS = ;
+ENABLE_MAC_GESTURE_EVENTS[sdk=macosx*] = $(ENABLE_MAC_GESTURE_EVENTS_macosx_WITH_INTERNAL_SDK_$(USE_INTERNAL_SDK));
+ENABLE_MAC_GESTURE_EVENTS_macosx_WITH_INTERNAL_SDK_YES = ENABLE_MAC_GESTURE_EVENTS;
+
+ENABLE_TEXT_AUTOSIZING = ENABLE_TEXT_AUTOSIZING;
+ENABLE_DATA_DETECTION = ENABLE_DATA_DETECTION;
+
+ENABLE_IOS_TOUCH_EVENTS[sdk=iphone*] = $(ENABLE_IOS_TOUCH_EVENTS_ios_WITH_INTERNAL_SDK_$(USE_INTERNAL_SDK));
+ENABLE_IOS_TOUCH_EVENTS_ios_WITH_INTERNAL_SDK_YES = ENABLE_IOS_TOUCH_EVENTS;
+
+ENABLE_KEYBOARD_KEY_ATTRIBUTE = ENABLE_KEYBOARD_KEY_ATTRIBUTE;
+ENABLE_KEYBOARD_CODE_ATTRIBUTE = ENABLE_KEYBOARD_CODE_ATTRIBUTE;
+ENABLE_LEGACY_CSS_VENDOR_PREFIXES = ENABLE_LEGACY_CSS_VENDOR_PREFIXES;
+ENABLE_LEGACY_ENCRYPTED_MEDIA[sdk=macosx*] = ENABLE_LEGACY_ENCRYPTED_MEDIA;
+ENABLE_LEGACY_NOTIFICATIONS[sdk=macosx*] = ENABLE_LEGACY_NOTIFICATIONS;
+ENABLE_LEGACY_VENDOR_PREFIXES = ENABLE_LEGACY_VENDOR_PREFIXES;
+ENABLE_LETTERPRESS[sdk=iphone*] = ENABLE_LETTERPRESS;
+ENABLE_LINK_PREFETCH = ;
+ENABLE_MATHML = ENABLE_MATHML;
+ENABLE_MEDIA_CAPTURE[sdk=iphone*] = ENABLE_MEDIA_CAPTURE;
+ENABLE_MEDIA_CONTROLS_SCRIPT = ENABLE_MEDIA_CONTROLS_SCRIPT;
+ENABLE_MEDIA_SESSION = ;
+
+ENABLE_MEDIA_SOURCE[sdk=macosx*] = ENABLE_MEDIA_SOURCE;
+
+ENABLE_MEDIA_STATISTICS = ;
+ENABLE_MEDIA_STREAM = ENABLE_MEDIA_STREAM;
+ENABLE_METER_ELEMENT = ENABLE_METER_ELEMENT;
+ENABLE_MHTML = ;
+ENABLE_MOUSE_CURSOR_SCALE[sdk=macosx*] = ENABLE_MOUSE_CURSOR_SCALE;
+ENABLE_NAVIGATOR_CONTENT_UTILS = ;
+ENABLE_NAVIGATOR_HWCONCURRENCY = ENABLE_NAVIGATOR_HWCONCURRENCY;
+ENABLE_NOSNIFF = ;
+ENABLE_NOTIFICATIONS[sdk=macosx*] = ENABLE_NOTIFICATIONS;
+ENABLE_PDFKIT_PLUGIN[sdk=macosx*] = ENABLE_PDFKIT_PLUGIN;
+ENABLE_POINTER_LOCK[sdk=macosx*] = ENABLE_POINTER_LOCK;
+ENABLE_PROXIMITY_EVENTS = ;
+ENABLE_PUBLIC_SUFFIX_LIST = ENABLE_PUBLIC_SUFFIX_LIST;
+ENABLE_QUOTA = ;
+ENABLE_READABLE_STREAM_API = ENABLE_READABLE_STREAM_API;
+ENABLE_READABLE_BYTE_STREAM_API = ENABLE_READABLE_BYTE_STREAM_API;
+ENABLE_REQUEST_AUTOCOMPLETE = ;
+ENABLE_REMOTE_INSPECTOR = ENABLE_REMOTE_INSPECTOR;
+ENABLE_RESOLUTION_MEDIA_QUERY = ;
+ENABLE_RESOURCE_USAGE = ENABLE_RESOURCE_USAGE;
+ENABLE_RUBBER_BANDING[sdk=macosx*] = ENABLE_RUBBER_BANDING;
+ENABLE_CSS_SCROLL_SNAP = ENABLE_CSS_SCROLL_SNAP;
+ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
+ENABLE_SUBTLE_CRYPTO = ENABLE_SUBTLE_CRYPTO;
+ENABLE_SVG_FONTS = ENABLE_SVG_FONTS;
+ENABLE_WEB_RTC = ENABLE_WEB_RTC;
+ENABLE_WRITABLE_STREAM_API = ENABLE_WRITABLE_STREAM_API;
+
+ENABLE_TELEPHONE_NUMBER_DETECTION = ENABLE_TELEPHONE_NUMBER_DETECTION;
+
+ENABLE_CSS_TRAILING_WORD = ENABLE_CSS_TRAILING_WORD;
+
+// FIXME: Remove the USE_INTERNAL_SDK condition once we support touch events when building for iOS with
+// the public SDK. We will also need to update FeatureDefines.h.
+ENABLE_TOUCH_EVENTS[sdk=iphone*] = $(ENABLE_TOUCH_EVENTS_ios_WITH_INTERNAL_SDK_$(USE_INTERNAL_SDK));
+ENABLE_TOUCH_EVENTS_ios_WITH_INTERNAL_SDK_YES = ENABLE_TOUCH_EVENTS;
+
+ENABLE_TOUCH_ICON_LOADING = ;
+ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
+ENABLE_VIDEO = ENABLE_VIDEO;
+ENABLE_VIDEO_PRESENTATION_MODE[sdk=iphone*] = ENABLE_VIDEO_PRESENTATION_MODE;
+ENABLE_VIDEO_PRESENTATION_MODE[sdk=macosx*] = $(ENABLE_VIDEO_PRESENTATION_MODE_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR))
+ENABLE_VIDEO_PRESENTATION_MODE_macosx_101200 = ENABLE_VIDEO_PRESENTATION_MODE;
+ENABLE_VIDEO_PRESENTATION_MODE_macosx_101300 = ENABLE_VIDEO_PRESENTATION_MODE;
+ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
+ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
+ENABLE_VIEW_MODE_CSS_MEDIA = ;
+ENABLE_WEBASSEMBLY = ;
+ENABLE_WEBGL = ENABLE_WEBGL;
+ENABLE_WEBGL2 = ENABLE_WEBGL2;
+ENABLE_WEB_ANIMATIONS = ENABLE_WEB_ANIMATIONS;
+ENABLE_WEB_AUDIO = ENABLE_WEB_AUDIO;
+ENABLE_WEB_REPLAY = $(ENABLE_WEB_REPLAY_$(PLATFORM_NAME)_$(CONFIGURATION));
+ENABLE_WEB_REPLAY_macosx_Debug = ENABLE_WEB_REPLAY;
+ENABLE_WEB_REPLAY_macosx_Release = ENABLE_WEB_REPLAY;
+ENABLE_WEB_SOCKETS = ENABLE_WEB_SOCKETS;
+
+ENABLE_WEB_TIMING = ENABLE_WEB_TIMING;
+ENABLE_USER_TIMING = ;
+
+ENABLE_XSLT = ENABLE_XSLT;
+
+ENABLE_FTL_JIT[sdk=macosx*] = ENABLE_FTL_JIT;
+ENABLE_FTL_JIT[sdk=iphoneos*] = ENABLE_FTL_JIT;
+
+ENABLE_VARIATION_FONTS[sdk=iphone*] = $(ENABLE_VARIATION_FONTS_$(PLATFORM_NAME));
+ENABLE_VARIATION_FONTS_iphoneos = ENABLE_VARIATION_FONTS;
+ENABLE_VARIATION_FONTS_iphonesimulator = ENABLE_VARIATION_FONTS;
+ENABLE_VARIATION_FONTS[sdk=iphoneos9*] = ;
+ENABLE_VARIATION_FONTS[sdk=iphonesimulator9*] = ;
+
+DISABLE_VARIATION_FONTS_macosx = $(TARGET_MAC_OS_X_VERSION_LESS_THAN_1012000);
+ENABLE_VARIATION_FONTS[sdk=macosx*] = $(ENABLE_VARIATION_FONTS_IF_NOT_$(DISABLE_VARIATION_FONTS_macosx));
+ENABLE_VARIATION_FONTS_IF_NOT_ = $(ENABLE_VARIATION_FONTS_IF_NOT_NO);
+ENABLE_VARIATION_FONTS_IF_NOT_NO = ENABLE_VARIATION_FONTS;
+ENABLE_VARIATION_FONTS_IF_NOT_YES = ;
+
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS3_TEXT) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FTL_JIT) $(ENABLE_FULLSC
 REEN_API) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_E
 LEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_READABLE_STREAM_API) $(ENABLE_READABLE_BYTE_STREAM_API) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_RTC) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_USER_TIMING) $(EN
 ABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_WRITABLE_STREAM_API) $(ENABLE_XSLT);
</ins></span></pre></div>
<a id="trunkSourceWebCorePALConfigurationsPALxcconfig"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/Configurations/PAL.xcconfig (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/Configurations/PAL.xcconfig                                (rev 0)
+++ trunk/Source/WebCore/PAL/Configurations/PAL.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+// Copyright (C) 2017 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. ``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
+// 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;FeatureDefines.xcconfig&quot;
+#include &quot;Version.xcconfig&quot;
+
+GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(FEATURE_DEFINES) $(inherited);
+
+WK_XCODE_SUPPORTS_TEXT_BASED_STUBS = $(WK_NOT_$(WK_EMPTY_$(TAPI_VERIFY_MODE)));
+WK_PRIVATE_FRAMEWORKS_DIR = $(WK_PRIVATE_FRAMEWORKS_DIR_$(USE_INTERNAL_SDK));
+WK_PRIVATE_FRAMEWORKS_DIR_YES = $(PRODUCTION_FRAMEWORKS_DIR);
+WK_PRIVATE_FRAMEWORKS_DIR_[sdk=iphonesimulator*] = $(PRODUCTION_FRAMEWORKS_DIR);
+WK_PRIVATE_FRAMEWORKS_DIR_[sdk=iphoneos*] = $(WK_PRIVATE_FRAMEWORKS_DIR_iphoneos_$(WK_XCODE_SUPPORTS_TEXT_BASED_STUBS));
+WK_PRIVATE_FRAMEWORKS_DIR_iphoneos_YES = $(SRCROOT)/../../WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/$(WK_TARGET_IOS_VERSION_MAJOR);
+WK_PRIVATE_FRAMEWORKS_DIR_iphoneos_NO = $(PRODUCTION_FRAMEWORKS_DIR);
+
+FRAMEWORK_SEARCH_PATHS[sdk=iphone*] = $(FRAMEWORK_SEARCH_PATHS_ios_$(CONFIGURATION));
+FRAMEWORK_SEARCH_PATHS_ios_Debug = $(BUILT_PRODUCTS_DIR) $(WK_PRIVATE_FRAMEWORKS_DIR);
+FRAMEWORK_SEARCH_PATHS_ios_Release = $(FRAMEWORK_SEARCH_PATHS_ios_Debug);
+FRAMEWORK_SEARCH_PATHS_ios_Production = $(PRODUCTION_FRAMEWORKS_DIR);
+FRAMEWORK_SEARCH_PATHS[sdk=macosx*] = $(WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR) $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
+
+OTHER_CFLAGS = $(inherited) -iframework $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Frameworks -iframework $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks -iframework $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks -iframework $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks -iframework $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
+OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS);
+
+HEADER_SEARCH_PATHS = PAL ForwardingHeaders icu /usr/include/libxslt /usr/include/libxml2 &quot;$(BUILT_PRODUCTS_DIR)/usr/local/include&quot; $(HEADER_SEARCH_PATHS);
+INSTALL_PATH = $(INSTALL_PATH_$(CONFIGURATION));
+INSTALL_PATH_Production = /usr/local/lib;
+INSTALLHDRS_COPY_PHASE = YES;
+INSTALLHDRS_SCRIPT_PHASE = YES;
+PRODUCT_NAME = PAL;
+PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(PRODUCT_NAME:rfc1034identifier);
+
+WK_PREFIXED_IPHONEOS_DEPLOYMENT_TARGET = V$(IPHONEOS_DEPLOYMENT_TARGET);
+
+NORMAL_PRODUCTION_FRAMEWORKS_DIR[sdk=iphone*] = $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
+NORMAL_PRODUCTION_FRAMEWORKS_DIR[sdk=macosx*] = $(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks;
+
+PRODUCTION_FRAMEWORKS_DIR[sdk=iphone*] = $(NORMAL_PRODUCTION_FRAMEWORKS_DIR);
+PRODUCTION_FRAMEWORKS_DIR = $(PRODUCTION_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
+PRODUCTION_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(NORMAL_PRODUCTION_FRAMEWORKS_DIR);
+PRODUCTION_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
+
+EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*] = *.tiff *Cursor.png;
+EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*] = *IOS.h *IOS.cpp *IOS.mm;
+
+WK_EMPTY_ = YES;
+WK_NOT_ = YES;
+WK_NOT_YES = NO;
+
+WK_USE_OVERRIDE_FRAMEWORKS_DIR = $(WK_NOT_$(WK_EMPTY_$(WK_OVERRIDE_FRAMEWORKS_DIR)));
+
+WK_OVERRIDE_FRAMEWORKS_DIR = $(WK_OVERRIDE_FRAMEWORKS_DIR_USE_STAGING_INSTALL_PATH_$(USE_STAGING_INSTALL_PATH));
+WK_OVERRIDE_FRAMEWORKS_DIR_USE_STAGING_INSTALL_PATH_YES = $(SYSTEM_LIBRARY_DIR)/StagedFrameworks/Safari;
+
+WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR = $(WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
+WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR_YES = &quot;$(WK_OVERRIDE_FRAMEWORKS_DIR)&quot;;
+
+SKIP_INSTALL = $(SKIP_INSTALL_$(FORCE_TOOL_INSTALL));
+SKIP_INSTALL_ = YES;
+SKIP_INSTALL_NO = YES;
+SKIP_INSTALL_YES = NO;
+
+EXECUTABLE_PREFIX = lib;
</ins></span></pre></div>
<a id="trunkSourceWebCorePALConfigurationsVersionxcconfig"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/Configurations/Version.xcconfig (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/Configurations/Version.xcconfig                                (rev 0)
+++ trunk/Source/WebCore/PAL/Configurations/Version.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+// Copyright (C) 2017 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. ``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
+// 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. 
+
+MAJOR_VERSION = 604;
+MINOR_VERSION = 1;
+TINY_VERSION = 5;
+MICRO_VERSION = 0;
+NANO_VERSION = 0;
+FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(TINY_VERSION);
+
+// The bundle version and short version string are set based on the current build configuration, see below.
+BUNDLE_VERSION = $(BUNDLE_VERSION_$(CONFIGURATION));
+SHORT_VERSION_STRING = $(SHORT_VERSION_STRING_$(CONFIGURATION))
+
+// The system version prefix is based on the current system version.
+SYSTEM_VERSION_PREFIX[sdk=iphone*] = 8;
+SYSTEM_VERSION_PREFIX = $(SYSTEM_VERSION_PREFIX_$(PLATFORM_NAME)_$(TARGET_MAC_OS_X_VERSION_MAJOR));
+SYSTEM_VERSION_PREFIX_macosx_101000 = 10;
+SYSTEM_VERSION_PREFIX_macosx_101100 = 11;
+SYSTEM_VERSION_PREFIX_macosx_101200 = 12;
+SYSTEM_VERSION_PREFIX_macosx_101300 = 13;
+
+// The production build always uses the full version with a system version prefix.
+BUNDLE_VERSION_Production = $(SYSTEM_VERSION_PREFIX)$(FULL_VERSION);
+BUNDLE_VERSION_ = $(BUNDLE_VERSION_Production);
+
+// The production build always uses the major version with a system version prefix
+SHORT_VERSION_STRING_Production = $(SYSTEM_VERSION_PREFIX)$(MAJOR_VERSION);
+SHORT_VERSION_STRING_ = $(SHORT_VERSION_STRING_Production);
+
+// Local builds are the full version with a plus suffix.
+BUNDLE_VERSION_Release = $(FULL_VERSION)+;
+BUNDLE_VERSION_Debug = $(BUNDLE_VERSION_Release);
+
+// Local builds use the major version with a plus suffix
+SHORT_VERSION_STRING_Release = $(MAJOR_VERSION)+;
+SHORT_VERSION_STRING_Debug = $(SHORT_VERSION_STRING_Release);
+
+DYLIB_COMPATIBILITY_VERSION = 1;
+DYLIB_CURRENT_VERSION = $(FULL_VERSION);
</ins></span></pre></div>
<a id="trunkSourceWebCorePALPALxcodeprojprojectpbxproj"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj                                (rev 0)
+++ trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,247 @@
</span><ins>+// !$*UTF8*$!
+{
+        archiveVersion = 1;
+        classes = {
+        };
+        objectVersion = 46;
+        objects = {
+
+/* Begin PBXBuildFile section */
+                1C09D0531E31C44100725F18 /* CryptoDigest.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C09D0521E31C44100725F18 /* CryptoDigest.h */; };
+                1C09D0561E31C46500725F18 /* CryptoDigestCommonCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C09D0551E31C46500725F18 /* CryptoDigestCommonCrypto.cpp */; };
+                1C09D0581E31C57E00725F18 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C09D0571E31C57E00725F18 /* config.h */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+                1C09D03D1E31C32800725F18 /* libPAL.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPAL.a; sourceTree = BUILT_PRODUCTS_DIR; };
+                1C09D0521E31C44100725F18 /* CryptoDigest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoDigest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1C09D0551E31C46500725F18 /* CryptoDigestCommonCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CryptoDigestCommonCrypto.cpp; path = commoncrypto/CryptoDigestCommonCrypto.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1C09D0571E31C57E00725F18 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1C09D05D1E31C77A00725F18 /* PAL.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = PAL.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1C09D0621E31EC2800725F18 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1C09D0631E31EC3100725F18 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1C67CEA11E32EDA800F80F2E /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1C67CEA21E32EE2600F80F2E /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+                1C09D03A1E31C32800725F18 /* Frameworks */ = {
+                        isa = PBXFrameworksBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+                1C09D0341E31C32800725F18 = {
+                        isa = PBXGroup;
+                        children = (
+                                1C09D05C1E31C73300725F18 /* Configurations */,
+                                1C09D0571E31C57E00725F18 /* config.h */,
+                                1C09D03F1E31C32800725F18 /* pal */,
+                                1C09D03E1E31C32800725F18 /* Products */,
+                        );
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                1C09D03E1E31C32800725F18 /* Products */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1C09D03D1E31C32800725F18 /* libPAL.a */,
+                        );
+                        name = Products;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                1C09D03F1E31C32800725F18 /* pal */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1C09D0511E31C41200725F18 /* crypto */,
+                        );
+                        path = pal;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                1C09D0511E31C41200725F18 /* crypto */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1C09D0541E31C45200725F18 /* commoncrypto */,
+                                1C09D0521E31C44100725F18 /* CryptoDigest.h */,
+                        );
+                        path = crypto;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                1C09D0541E31C45200725F18 /* commoncrypto */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1C09D0551E31C46500725F18 /* CryptoDigestCommonCrypto.cpp */,
+                        );
+                        name = commoncrypto;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+                1C09D05C1E31C73300725F18 /* Configurations */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1C67CEA21E32EE2600F80F2E /* Version.xcconfig */,
+                                1C67CEA11E32EDA800F80F2E /* FeatureDefines.xcconfig */,
+                                1C09D05D1E31C77A00725F18 /* PAL.xcconfig */,
+                                1C09D0621E31EC2800725F18 /* DebugRelease.xcconfig */,
+                                1C09D0631E31EC3100725F18 /* Base.xcconfig */,
+                        );
+                        path = Configurations;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+                1C09D03B1E31C32800725F18 /* Headers */ = {
+                        isa = PBXHeadersBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                1C09D0581E31C57E00725F18 /* config.h in Headers */,
+                                1C09D0531E31C44100725F18 /* CryptoDigest.h in Headers */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+                1C09D03C1E31C32800725F18 /* PAL */ = {
+                        isa = PBXNativeTarget;
+                        buildConfigurationList = 1C09D0481E31C32800725F18 /* Build configuration list for PBXNativeTarget &quot;PAL&quot; */;
+                        buildPhases = (
+                                1C09D0391E31C32800725F18 /* Sources */,
+                                1C09D03A1E31C32800725F18 /* Frameworks */,
+                                1C09D03B1E31C32800725F18 /* Headers */,
+                        );
+                        buildRules = (
+                        );
+                        dependencies = (
+                        );
+                        name = PAL;
+                        productName = PAL;
+                        productReference = 1C09D03D1E31C32800725F18 /* libPAL.a */;
+                        productType = &quot;com.apple.product-type.library.static&quot;;
+                };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+                1C09D0351E31C32800725F18 /* Project object */ = {
+                        isa = PBXProject;
+                        attributes = {
+                                LastUpgradeCheck = 0830;
+                                TargetAttributes = {
+                                        1C09D03C1E31C32800725F18 = {
+                                                CreatedOnToolsVersion = 8.3;
+                                                ProvisioningStyle = Automatic;
+                                        };
+                                };
+                        };
+                        buildConfigurationList = 1C09D0381E31C32800725F18 /* Build configuration list for PBXProject &quot;PAL&quot; */;
+                        compatibilityVersion = &quot;Xcode 3.2&quot;;
+                        developmentRegion = English;
+                        hasScannedForEncodings = 1;
+                        knownRegions = (
+                                English,
+                                Japanese,
+                                French,
+                                German,
+                                Spanish,
+                                Dutch,
+                                Italian,
+                        );
+                        mainGroup = 1C09D0341E31C32800725F18;
+                        productRefGroup = 1C09D03E1E31C32800725F18 /* Products */;
+                        projectDirPath = &quot;&quot;;
+                        projectRoot = &quot;&quot;;
+                        targets = (
+                                1C09D03C1E31C32800725F18 /* PAL */,
+                        );
+                };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+                1C09D0391E31C32800725F18 /* Sources */ = {
+                        isa = PBXSourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                1C09D0561E31C46500725F18 /* CryptoDigestCommonCrypto.cpp in Sources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+                1C09D0461E31C32800725F18 /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C09D0621E31EC2800725F18 /* DebugRelease.xcconfig */;
+                        buildSettings = {
+                                DEAD_CODE_STRIPPING = &quot;$(DEAD_CODE_STRIPPING_debug)&quot;;
+                                DEBUG_DEFINES = &quot;$(DEBUG_DEFINES_debug)&quot;;
+                                GCC_OPTIMIZATION_LEVEL = &quot;$(GCC_OPTIMIZATION_LEVEL_debug)&quot;;
+                                STRIP_INSTALLED_PRODUCT = &quot;$(STRIP_INSTALLED_PRODUCT_debug)&quot;;
+                        };
+                        name = Debug;
+                };
+                1C09D0471E31C32800725F18 /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C09D0621E31EC2800725F18 /* DebugRelease.xcconfig */;
+                        buildSettings = {
+                                STRIP_INSTALLED_PRODUCT = NO;
+                        };
+                        name = Release;
+                };
+                1C09D0491E31C32800725F18 /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C09D05D1E31C77A00725F18 /* PAL.xcconfig */;
+                        buildSettings = {
+                        };
+                        name = Debug;
+                };
+                1C09D04A1E31C32800725F18 /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C09D05D1E31C77A00725F18 /* PAL.xcconfig */;
+                        buildSettings = {
+                        };
+                        name = Release;
+                };
+                1C09D05A1E31C6F000725F18 /* Production */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C09D0631E31EC3100725F18 /* Base.xcconfig */;
+                        buildSettings = {
+                        };
+                        name = Production;
+                };
+                1C09D05B1E31C6F000725F18 /* Production */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C09D05D1E31C77A00725F18 /* PAL.xcconfig */;
+                        buildSettings = {
+                        };
+                        name = Production;
+                };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+                1C09D0381E31C32800725F18 /* Build configuration list for PBXProject &quot;PAL&quot; */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                1C09D0461E31C32800725F18 /* Debug */,
+                                1C09D0471E31C32800725F18 /* Release */,
+                                1C09D05A1E31C6F000725F18 /* Production */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Production;
+                };
+                1C09D0481E31C32800725F18 /* Build configuration list for PBXNativeTarget &quot;PAL&quot; */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                1C09D0491E31C32800725F18 /* Debug */,
+                                1C09D04A1E31C32800725F18 /* Release */,
+                                1C09D05B1E31C6F000725F18 /* Production */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Production;
+                };
+/* End XCConfigurationList section */
+        };
+        rootObject = 1C09D0351E31C32800725F18 /* Project object */;
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorePALconfigh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/config.h (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/config.h                                (rev 0)
+++ trunk/Source/WebCore/PAL/config.h        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+/*
+ * Copyright (C) 2004, 2005, 2006, 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#if defined(HAVE_CONFIG_H) &amp;&amp; HAVE_CONFIG_H &amp;&amp; defined(BUILDING_WITH_CMAKE)
+#include &quot;cmakeconfig.h&quot;
+#endif
+
+#include &lt;wtf/Platform.h&gt;
+
+#include &lt;wtf/ExportMacros.h&gt;
+
+#ifdef __APPLE__
+#define HAVE_FUNC_USLEEP 1
+#endif /* __APPLE__ */
+
+#if OS(WINDOWS)
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x601
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0601
+#endif
+
+#endif /* OS(WINDOWS) */
+
+#ifdef __cplusplus
+
+// These undefs match up with defines in WebCorePrefix.h for Mac OS X.
+// Helps us catch if anyone uses new or delete by accident in code and doesn't include &quot;config.h&quot;.
+#undef new
+#undef delete
+#include &lt;wtf/FastMalloc.h&gt;
+
+#include &lt;ciso646&gt;
+
+#endif
+
+#include &lt;wtf/DisallowCType.h&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalCMakeListstxt"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/pal/CMakeLists.txt (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/CMakeLists.txt                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/CMakeLists.txt        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+set(PAL_SOURCES
+)
+
+set(PAL_INCLUDE_DIRECTORIES
+    &quot;${PAL_DIR}&quot;
+    &quot;${PAL_DIR}/pal&quot;
+    &quot;${PAL_DIR}/pal/crypto&quot;
+)
+
+set(PAL_LIBRARIES
+    WTF
+)
+
+WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+
+WEBKIT_WRAP_SOURCELIST(${PAL_SOURCES})
+WEBKIT_FRAMEWORK(PAL)
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalPlatformEflcmake"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/pal/PlatformEfl.cmake (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/PlatformEfl.cmake                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/PlatformEfl.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+list(APPEND PAL_SOURCES
+    crypto/gcrypt/CryptoDigestGCrypt.cpp
+)
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalPlatformGTKcmake"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/pal/PlatformGTK.cmake (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/PlatformGTK.cmake                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/PlatformGTK.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+list(APPEND PAL_SOURCES
+    crypto/gcrypt/CryptoDigestGCrypt.cpp
+)
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalPlatformMaccmake"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/pal/PlatformMac.cmake (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/PlatformMac.cmake                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/PlatformMac.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+list(APPEND PAL_SOURCES
+    crypto/commoncrypto/CryptoDigestCommonCrypto.cpp
+)
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalPlatformWincmake"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/PAL/pal/PlatformWin.cmake (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/PlatformWin.cmake                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/PlatformWin.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+list(APPEND PAL_SOURCES
+    crypto/win/CryptoDigestWin.cpp
+)
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalcryptoCryptoDigesthfromrev211026trunkSourceWebCoreplatformcryptoCryptoDigesth"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/PAL/pal/crypto/CryptoDigest.h (from rev 211026, trunk/Source/WebCore/platform/crypto/CryptoDigest.h) (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/crypto/CryptoDigest.h                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/crypto/CryptoDigest.h        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (C) 2013, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &lt;wtf/Noncopyable.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+namespace PAL {
+
+struct CryptoDigestContext;
+
+class CryptoDigest {
+    WTF_MAKE_NONCOPYABLE(CryptoDigest);
+public:
+    enum class Algorithm {
+        SHA_1,
+        SHA_224,
+        SHA_256,
+        SHA_384,
+        SHA_512,
+    };
+    static std::unique_ptr&lt;CryptoDigest&gt; create(Algorithm);
+    ~CryptoDigest();
+
+    void addBytes(const void* input, size_t length);
+    Vector&lt;uint8_t&gt; computeHash();
+
+private:
+    CryptoDigest();
+
+    std::unique_ptr&lt;CryptoDigestContext&gt; m_context;
+};
+
+} // namespace PAL
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalcryptocommoncryptoCryptoDigestCommonCryptocppfromrev211026trunkSourceWebCoreplatformcryptocommoncryptoCryptoDigestCommonCryptocpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp (from rev 211026, trunk/Source/WebCore/platform/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp) (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,179 @@
</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;CryptoDigest.h&quot;
+
+#include &lt;CommonCrypto/CommonCrypto.h&gt;
+
+namespace PAL {
+
+struct CryptoDigestContext {
+    CryptoDigest::Algorithm algorithm;
+    void* ccContext;
+};
+
+inline CC_SHA1_CTX* toSHA1Context(CryptoDigestContext* context)
+{
+    ASSERT(context-&gt;algorithm == CryptoDigest::Algorithm::SHA_1);
+    return static_cast&lt;CC_SHA1_CTX*&gt;(context-&gt;ccContext);
+}
+inline CC_SHA256_CTX* toSHA224Context(CryptoDigestContext* context)
+{
+    ASSERT(context-&gt;algorithm == CryptoDigest::Algorithm::SHA_224);
+    return static_cast&lt;CC_SHA256_CTX*&gt;(context-&gt;ccContext);
+}
+inline CC_SHA256_CTX* toSHA256Context(CryptoDigestContext* context)
+{
+    ASSERT(context-&gt;algorithm == CryptoDigest::Algorithm::SHA_256);
+    return static_cast&lt;CC_SHA256_CTX*&gt;(context-&gt;ccContext);
+}
+inline CC_SHA512_CTX* toSHA384Context(CryptoDigestContext* context)
+{
+    ASSERT(context-&gt;algorithm == CryptoDigest::Algorithm::SHA_384);
+    return static_cast&lt;CC_SHA512_CTX*&gt;(context-&gt;ccContext);
+}
+inline CC_SHA512_CTX* toSHA512Context(CryptoDigestContext* context)
+{
+    ASSERT(context-&gt;algorithm == CryptoDigest::Algorithm::SHA_512);
+    return static_cast&lt;CC_SHA512_CTX*&gt;(context-&gt;ccContext);
+}
+
+CryptoDigest::CryptoDigest()
+    : m_context(new CryptoDigestContext)
+{
+}
+
+CryptoDigest::~CryptoDigest()
+{
+    switch (m_context-&gt;algorithm) {
+    case CryptoDigest::Algorithm::SHA_1:
+        delete toSHA1Context(m_context.get());
+        return;
+    case CryptoDigest::Algorithm::SHA_224:
+        delete toSHA224Context(m_context.get());
+        return;
+    case CryptoDigest::Algorithm::SHA_256:
+        delete toSHA256Context(m_context.get());
+        return;
+    case CryptoDigest::Algorithm::SHA_384:
+        delete toSHA384Context(m_context.get());
+        return;
+    case CryptoDigest::Algorithm::SHA_512:
+        delete toSHA512Context(m_context.get());
+        return;
+    }
+}
+
+
+std::unique_ptr&lt;CryptoDigest&gt; CryptoDigest::create(CryptoDigest::Algorithm algorithm)
+{
+    std::unique_ptr&lt;CryptoDigest&gt; digest(new CryptoDigest);
+    digest-&gt;m_context-&gt;algorithm = algorithm;
+
+    switch (algorithm) {
+    case CryptoDigest::Algorithm::SHA_1: {
+        CC_SHA1_CTX* context = new CC_SHA1_CTX;
+        digest-&gt;m_context-&gt;ccContext = context;
+        CC_SHA1_Init(context);
+        return digest;
+    }
+    case CryptoDigest::Algorithm::SHA_224: {
+        CC_SHA256_CTX* context = new CC_SHA256_CTX;
+        digest-&gt;m_context-&gt;ccContext = context;
+        CC_SHA224_Init(context);
+        return digest;
+    }
+    case CryptoDigest::Algorithm::SHA_256: {
+        CC_SHA256_CTX* context = new CC_SHA256_CTX;
+        digest-&gt;m_context-&gt;ccContext = context;
+        CC_SHA256_Init(context);
+        return digest;
+    }
+    case CryptoDigest::Algorithm::SHA_384: {
+        CC_SHA512_CTX* context = new CC_SHA512_CTX;
+        digest-&gt;m_context-&gt;ccContext = context;
+        CC_SHA384_Init(context);
+        return digest;
+    }
+    case CryptoDigest::Algorithm::SHA_512: {
+        CC_SHA512_CTX* context = new CC_SHA512_CTX;
+        digest-&gt;m_context-&gt;ccContext = context;
+        CC_SHA512_Init(context);
+        return digest;
+    }
+    }
+}
+
+void CryptoDigest::addBytes(const void* input, size_t length)
+{
+    switch (m_context-&gt;algorithm) {
+    case CryptoDigest::Algorithm::SHA_1:
+        CC_SHA1_Update(toSHA1Context(m_context.get()), input, length);
+        return;
+    case CryptoDigest::Algorithm::SHA_224:
+        CC_SHA224_Update(toSHA224Context(m_context.get()), input, length);
+        return;
+    case CryptoDigest::Algorithm::SHA_256:
+        CC_SHA256_Update(toSHA256Context(m_context.get()), input, length);
+        return;
+    case CryptoDigest::Algorithm::SHA_384:
+        CC_SHA384_Update(toSHA384Context(m_context.get()), input, length);
+        return;
+    case CryptoDigest::Algorithm::SHA_512:
+        CC_SHA512_Update(toSHA512Context(m_context.get()), input, length);
+        return;
+    }
+}
+
+Vector&lt;uint8_t&gt; CryptoDigest::computeHash()
+{
+    Vector&lt;uint8_t&gt; result;
+    switch (m_context-&gt;algorithm) {
+    case CryptoDigest::Algorithm::SHA_1:
+        result.resize(CC_SHA1_DIGEST_LENGTH);
+        CC_SHA1_Final(result.data(), toSHA1Context(m_context.get()));
+        break;
+    case CryptoDigest::Algorithm::SHA_224:
+        result.resize(CC_SHA224_DIGEST_LENGTH);
+        CC_SHA224_Final(result.data(), toSHA224Context(m_context.get()));
+        break;
+    case CryptoDigest::Algorithm::SHA_256:
+        result.resize(CC_SHA256_DIGEST_LENGTH);
+        CC_SHA256_Final(result.data(), toSHA256Context(m_context.get()));
+        break;
+    case CryptoDigest::Algorithm::SHA_384:
+        result.resize(CC_SHA384_DIGEST_LENGTH);
+        CC_SHA384_Final(result.data(), toSHA384Context(m_context.get()));
+        break;
+    case CryptoDigest::Algorithm::SHA_512:
+        result.resize(CC_SHA512_DIGEST_LENGTH);
+        CC_SHA512_Final(result.data(), toSHA512Context(m_context.get()));
+        break;
+    }
+    return result;
+}
+
+} // namespace PAL
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalcryptogcryptCryptoDigestGCryptcppfromrev211026trunkSourceWebCoreplatformcryptogcryptCryptoDigestGCryptcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp (from rev 211026, trunk/Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp) (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,97 @@
</span><ins>+/*
+ * Copyright (C) 2014 Igalia S.L.
+ * Copyright (C) 2016 SoftAtHome
+ *
+ * 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;CryptoDigest.h&quot;
+
+#include &lt;gcrypt.h&gt;
+
+namespace PAL {
+
+struct CryptoDigestContext {
+    int algorithm;
+    gcry_md_hd_t md;
+};
+
+CryptoDigest::CryptoDigest()
+    : m_context(new CryptoDigestContext)
+{
+}
+
+CryptoDigest::~CryptoDigest()
+{
+}
+
+std::unique_ptr&lt;CryptoDigest&gt; CryptoDigest::create(CryptoDigest::Algorithm algorithm)
+{
+    int gcryptAlgorithm;
+
+    switch (algorithm) {
+    case CryptoDigest::Algorithm::SHA_1:
+        gcryptAlgorithm = GCRY_MD_SHA1;
+        break;
+    case CryptoDigest::Algorithm::SHA_224:
+        gcryptAlgorithm = GCRY_MD_SHA224;
+        break;
+    case CryptoDigest::Algorithm::SHA_256:
+        gcryptAlgorithm = GCRY_MD_SHA256;
+        break;
+    case CryptoDigest::Algorithm::SHA_384:
+        gcryptAlgorithm = GCRY_MD_SHA384;
+        break;
+    case CryptoDigest::Algorithm::SHA_512:
+        gcryptAlgorithm = GCRY_MD_SHA512;
+        break;
+    }
+
+    std::unique_ptr&lt;CryptoDigest&gt; digest(new CryptoDigest);
+    digest-&gt;m_context-&gt;algorithm = gcryptAlgorithm;
+
+    gcry_md_open(&amp;digest-&gt;m_context-&gt;md, gcryptAlgorithm, 0);
+    if (!digest-&gt;m_context-&gt;md)
+        return nullptr;
+
+    return digest;
+}
+
+void CryptoDigest::addBytes(const void* input, size_t length)
+{
+    gcry_md_write(m_context-&gt;md, input, length);
+}
+
+Vector&lt;uint8_t&gt; CryptoDigest::computeHash()
+{
+    int digestLen = gcry_md_get_algo_dlen(m_context-&gt;algorithm);
+    Vector&lt;uint8_t&gt; result(digestLen);
+
+    gcry_md_final(m_context-&gt;md);
+    memcpy(result.data(), gcry_md_read(m_context-&gt;md, 0), digestLen);
+    gcry_md_close(m_context-&gt;md);
+
+    return result;
+}
+
+} // namespace PAL
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalcryptognutlsCryptoDigestGnuTLScppfromrev211026trunkSourceWebCoreplatformcryptognutlsCryptoDigestGnuTLScpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp (from rev 211026, trunk/Source/WebCore/platform/crypto/gnutls/CryptoDigestGnuTLS.cpp) (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,102 @@
</span><ins>+/*
+ * Copyright (C) 2014 Igalia S.L. 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;CryptoDigest.h&quot;
+
+#include &lt;gnutls/gnutls.h&gt;
+#include &lt;gnutls/crypto.h&gt;
+
+namespace PAL {
+
+struct CryptoDigestContext {
+    gnutls_digest_algorithm_t algorithm;
+    gnutls_hash_hd_t hash;
+};
+
+CryptoDigest::CryptoDigest()
+    : m_context(new CryptoDigestContext)
+{
+}
+
+CryptoDigest::~CryptoDigest()
+{
+    gnutls_hash_deinit(m_context-&gt;hash, 0);
+}
+
+std::unique_ptr&lt;CryptoDigest&gt; CryptoDigest::create(CryptoDigest::Algorithm algorithm)
+{
+    gnutls_digest_algorithm_t gnutlsAlgorithm;
+
+    switch (algorithm) {
+    case CryptoDigest::Algorithm::SHA_1: {
+        gnutlsAlgorithm = GNUTLS_DIG_SHA1;
+        break;
+    }
+    case CryptoDigest::Algorithm::SHA_224: {
+        gnutlsAlgorithm = GNUTLS_DIG_SHA224;
+        break;
+    }
+    case CryptoDigest::Algorithm::SHA_256: {
+        gnutlsAlgorithm = GNUTLS_DIG_SHA256;
+        break;
+    }
+    case CryptoDigest::Algorithm::SHA_384: {
+        gnutlsAlgorithm = GNUTLS_DIG_SHA384;
+        break;
+    }
+    case CryptoDigest::Algorithm::SHA_512: {
+        gnutlsAlgorithm = GNUTLS_DIG_SHA512;
+        break;
+    }
+    }
+
+    std::unique_ptr&lt;CryptoDigest&gt; digest(new CryptoDigest);
+    digest-&gt;m_context-&gt;algorithm = gnutlsAlgorithm;
+
+    int ret = gnutls_hash_init(&amp;digest-&gt;m_context-&gt;hash, gnutlsAlgorithm);
+    if (ret != GNUTLS_E_SUCCESS)
+        return nullptr;
+
+    return digest;
+}
+
+void CryptoDigest::addBytes(const void* input, size_t length)
+{
+    gnutls_hash(m_context-&gt;hash, input, length);
+}
+
+Vector&lt;uint8_t&gt; CryptoDigest::computeHash()
+{
+    Vector&lt;uint8_t&gt; result;
+    int digestLen = gnutls_hash_get_len(m_context-&gt;algorithm);
+    result.resize(digestLen);
+
+    gnutls_hash_output(m_context-&gt;hash, result.data());
+
+    return result;
+}
+
+} // namespace PAL
</ins></span></pre></div>
<a id="trunkSourceWebCorePALpalcryptowinCryptoDigestWincppfromrev211026trunkSourceWebCoreplatformcryptowinCryptoDigestWincpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp (from rev 211026, trunk/Source/WebCore/platform/crypto/win/CryptoDigestWin.cpp) (0 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp                                (rev 0)
+++ trunk/Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -0,0 +1,104 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoDigest.h&quot;
+
+#include &lt;windows.h&gt;
+#include &lt;wincrypt.h&gt;
+
+namespace PAL {
+
+struct CryptoDigestContext {
+    CryptoDigest::Algorithm algorithm;
+    HCRYPTPROV hContext { 0 };
+    HCRYPTHASH hHash { 0 };
+};
+
+CryptoDigest::CryptoDigest()
+    : m_context(new CryptoDigestContext)
+{
+}
+
+CryptoDigest::~CryptoDigest()
+{
+    if (HCRYPTHASH hHash = m_context-&gt;hHash)
+        CryptDestroyHash(hHash);
+    if (HCRYPTPROV hContext = m_context-&gt;hContext)
+        CryptReleaseContext(hContext, 0);
+}
+
+std::unique_ptr&lt;CryptoDigest&gt; CryptoDigest::create(Algorithm algorithm)
+{
+    std::unique_ptr&lt;CryptoDigest&gt; digest(new CryptoDigest);
+    digest-&gt;m_context-&gt;algorithm = algorithm;
+    if (!CryptAcquireContext(&amp;digest-&gt;m_context-&gt;hContext, nullptr, nullptr /* use default provider */, PROV_RSA_AES, CRYPT_VERIFYCONTEXT))
+        return nullptr;
+    bool succeeded = false;
+    switch (algorithm) {
+    case CryptoDigest::Algorithm::SHA_1: {
+        succeeded = CryptCreateHash(digest-&gt;m_context-&gt;hContext, CALG_SHA1, 0, 0, &amp;digest-&gt;m_context-&gt;hHash);
+        break;
+    }
+    case CryptoDigest::Algorithm::SHA_256: {
+        succeeded = CryptCreateHash(digest-&gt;m_context-&gt;hContext, CALG_SHA_256, 0, 0, &amp;digest-&gt;m_context-&gt;hHash);
+        break;
+    }
+    case CryptoDigest::Algorithm::SHA_384: {
+        succeeded = CryptCreateHash(digest-&gt;m_context-&gt;hContext, CALG_SHA_384, 0, 0, &amp;digest-&gt;m_context-&gt;hHash);
+        break;
+    }
+    case CryptoDigest::Algorithm::SHA_512: {
+        succeeded = CryptCreateHash(digest-&gt;m_context-&gt;hContext, CALG_SHA_512, 0, 0, &amp;digest-&gt;m_context-&gt;hHash);
+        break;
+    }
+    }
+    if (succeeded)
+        return digest;
+    return nullptr;
+}
+
+void CryptoDigest::addBytes(const void* input, size_t length)
+{
+    if (!input || !length)
+        return;
+    RELEASE_ASSERT(CryptHashData(m_context-&gt;hHash, reinterpret_cast&lt;const BYTE*&gt;(input), length, 0));
+}
+
+Vector&lt;uint8_t&gt; CryptoDigest::computeHash()
+{
+    Vector&lt;uint8_t&gt; result;
+    DWORD digestLengthBuffer;
+    DWORD digestLengthBufferSize = sizeof(digestLengthBuffer);
+
+    RELEASE_ASSERT(CryptGetHashParam(m_context-&gt;hHash, HP_HASHSIZE, reinterpret_cast&lt;BYTE*&gt;(&amp;digestLengthBuffer), &amp;digestLengthBufferSize, 0));
+    result.resize(digestLengthBuffer);
+
+    RELEASE_ASSERT(CryptGetHashParam(m_context-&gt;hHash, HP_HASHVAL, result.data(), &amp;digestLengthBuffer, 0));
+    RELEASE_ASSERT(result.size() == digestLengthBuffer);
+    return result;
+}
+
+} // namespace PAL
</ins></span></pre></div>
<a id="trunkSourceWebCorePlatformEflcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformEfl.cmake (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformEfl.cmake        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/PlatformEfl.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -69,8 +69,6 @@
</span><span class="cx"> 
</span><span class="cx">     platform/audio/efl/AudioBusEfl.cpp
</span><span class="cx"> 
</span><del>-    platform/crypto/gcrypt/CryptoDigestGCrypt.cpp
-
</del><span class="cx">     platform/efl/CursorEfl.cpp
</span><span class="cx">     platform/efl/DragDataEfl.cpp
</span><span class="cx">     platform/efl/DragImageEfl.cpp
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformGTK.cmake (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformGTK.cmake        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/PlatformGTK.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -68,8 +68,6 @@
</span><span class="cx"> 
</span><span class="cx">     platform/audio/glib/AudioBusGLib.cpp
</span><span class="cx"> 
</span><del>-    platform/crypto/gcrypt/CryptoDigestGCrypt.cpp
-
</del><span class="cx">     platform/gamepad/glib/GamepadsGlib.cpp
</span><span class="cx"> 
</span><span class="cx">     platform/geoclue/GeolocationProviderGeoclue1.cpp
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformMaccmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformMac.cmake (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformMac.cmake        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/PlatformMac.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -333,8 +333,6 @@
</span><span class="cx">     platform/cocoa/ThemeCocoa.mm
</span><span class="cx">     platform/cocoa/WebCoreNSErrorExtras.mm
</span><span class="cx"> 
</span><del>-    platform/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp
-
</del><span class="cx">     platform/gamepad/mac/HIDGamepad.cpp
</span><span class="cx">     platform/gamepad/mac/HIDGamepadProvider.cpp
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformWincmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformWin.cmake (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformWin.cmake        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/PlatformWin.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -73,8 +73,6 @@
</span><span class="cx"> 
</span><span class="cx">     platform/cf/win/CertificateCFWin.cpp
</span><span class="cx"> 
</span><del>-    platform/crypto/win/CryptoDigestWin.cpp
-
</del><span class="cx">     platform/graphics/GraphicsContext3DPrivate.cpp
</span><span class="cx"> 
</span><span class="cx">     platform/graphics/egl/GLContextEGL.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -977,6 +977,7 @@
</span><span class="cx">                 1C010701192594DF008A4201 /* InlineTextBoxStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0106FF192594DF008A4201 /* InlineTextBoxStyle.h */; };
</span><span class="cx">                 1C0939EA1A13E12900B788E5 /* CachedSVGFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C0939E81A13E12900B788E5 /* CachedSVGFont.cpp */; };
</span><span class="cx">                 1C0939EB1A13E12900B788E5 /* CachedSVGFont.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0939E91A13E12900B788E5 /* CachedSVGFont.h */; };
</span><ins>+                1C09D0591E31C6A900725F18 /* libPAL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C09D0501E31C32900725F18 /* libPAL.a */; };
</ins><span class="cx">                 1C18DA58181AF6A500C4EF22 /* TextPainter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C18DA56181AF6A500C4EF22 /* TextPainter.cpp */; };
</span><span class="cx">                 1C18DA59181AF6A500C4EF22 /* TextPainter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C18DA57181AF6A500C4EF22 /* TextPainter.h */; };
</span><span class="cx">                 1C21E57C183ED1FF001C289D /* IOSurfacePool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C21E57A183ED1FF001C289D /* IOSurfacePool.cpp */; };
</span><span class="lines">@@ -6263,8 +6264,6 @@
</span><span class="cx">                 E1F80B8818317252007885C3 /* CryptoKeyPair.h in Headers */ = {isa = PBXBuildFile; fileRef = E1F80B8618317252007885C3 /* CryptoKeyPair.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E1F80B8D183172B5007885C3 /* JSCryptoKeyPair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1F80B8B183172B5007885C3 /* JSCryptoKeyPair.cpp */; };
</span><span class="cx">                 E1F80B8E183172B5007885C3 /* JSCryptoKeyPair.h in Headers */ = {isa = PBXBuildFile; fileRef = E1F80B8C183172B5007885C3 /* JSCryptoKeyPair.h */; };
</span><del>-                E1FE13641834351100892F13 /* CryptoDigestCommonCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1FE13621834351100892F13 /* CryptoDigestCommonCrypto.cpp */; };
-                E1FE136718343A1000892F13 /* CryptoDigest.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FE136618343A1000892F13 /* CryptoDigest.h */; };
</del><span class="cx">                 E1FE136A183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1FE1368183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.cpp */; };
</span><span class="cx">                 E1FE136B183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FE1369183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.h */; };
</span><span class="cx">                 E1FE1370183FECF000892F13 /* CryptoAlgorithmRSA_OAEPMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1FE136E183FECF000892F13 /* CryptoAlgorithmRSA_OAEPMac.cpp */; };
</span><span class="lines">@@ -6889,6 +6888,20 @@
</span><span class="cx"> /* End PBXBuildFile section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXContainerItemProxy section */
</span><ins>+                1C09D04F1E31C32900725F18 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 1C09D04B1E31C32800725F18 /* PAL.xcodeproj */;
+                        proxyType = 2;
+                        remoteGlobalIDString = 1C09D03D1E31C32800725F18;
+                        remoteInfo = PAL;
+                };
+                1C09D0671E32079D00725F18 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 1C09D04B1E31C32800725F18 /* PAL.xcodeproj */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 1C09D03C1E31C32800725F18;
+                        remoteInfo = PAL;
+                };
</ins><span class="cx">                 417DA6D413734E0D007C57FB /* PBXContainerItemProxy */ = {
</span><span class="cx">                         isa = PBXContainerItemProxy;
</span><span class="cx">                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
</span><span class="lines">@@ -8055,6 +8068,7 @@
</span><span class="cx">                 1C0106FF192594DF008A4201 /* InlineTextBoxStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineTextBoxStyle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1C0939E81A13E12900B788E5 /* CachedSVGFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedSVGFont.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1C0939E91A13E12900B788E5 /* CachedSVGFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedSVGFont.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                1C09D04B1E31C32800725F18 /* PAL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = PAL.xcodeproj; path = PAL/PAL.xcodeproj; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 1C18DA56181AF6A500C4EF22 /* TextPainter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextPainter.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1C18DA57181AF6A500C4EF22 /* TextPainter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextPainter.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1C21E57A183ED1FF001C289D /* IOSurfacePool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IOSurfacePool.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14274,8 +14288,6 @@
</span><span class="cx">                 E1F80B8618317252007885C3 /* CryptoKeyPair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoKeyPair.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1F80B8B183172B5007885C3 /* JSCryptoKeyPair.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCryptoKeyPair.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1F80B8C183172B5007885C3 /* JSCryptoKeyPair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCryptoKeyPair.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                E1FE13621834351100892F13 /* CryptoDigestCommonCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoDigestCommonCrypto.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                E1FE136618343A1000892F13 /* CryptoDigest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoDigest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 E1FE1368183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRSA_OAEP.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1FE1369183FE1AB00892F13 /* CryptoAlgorithmRSA_OAEP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRSA_OAEP.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1FE136E183FECF000892F13 /* CryptoAlgorithmRSA_OAEPMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRSA_OAEPMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14989,6 +15001,7 @@
</span><span class="cx">                         isa = PBXFrameworksBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                1C09D0591E31C6A900725F18 /* libPAL.a in Frameworks */,
</ins><span class="cx">                                 FD2DBF1212B048A300ED98C6 /* Accelerate.framework in Frameworks */,
</span><span class="cx">                                 FD2DBF1312B048A300ED98C6 /* AudioToolbox.framework in Frameworks */,
</span><span class="cx">                                 1AB33DA512551E320024457A /* IOKit.framework in Frameworks */,
</span><span class="lines">@@ -15404,6 +15417,7 @@
</span><span class="cx">                 0867D691FE84028FC02AAC07 /* WebKit */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                1C09D04B1E31C32800725F18 /* PAL.xcodeproj */,
</ins><span class="cx">                                 65C97AF208EA908800ACD273 /* config.h */,
</span><span class="cx">                                 EDEC98020AED7E170059137F /* WebCorePrefix.h */,
</span><span class="cx">                                 9307061309E0CA8200B17FE4 /* DerivedSources.make */,
</span><span class="lines">@@ -16085,6 +16099,14 @@
</span><span class="cx">                         path = mac;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><ins>+                1C09D04C1E31C32800725F18 /* Products */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1C09D0501E31C32900725F18 /* libPAL.a */,
+                        );
+                        name = Products;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 1C5FAECA0DCFD8C900D58F78 /* Inspector */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -22499,7 +22521,6 @@
</span><span class="cx">                                 FD31604012B026A300C1A359 /* audio */,
</span><span class="cx">                                 1AE42F670AA4B8CB00C8612D /* cf */,
</span><span class="cx">                                 A5C974CE11485FDA0066F2AB /* cocoa */,
</span><del>-                                CE50D8CE1C8932ED0072EA5A /* crypto */,
</del><span class="cx">                                 515BE1871D54F5DB00DD7C68 /* gamepad */,
</span><span class="cx">                                 B2A015910AF6CD53006BCE0E /* graphics */,
</span><span class="cx">                                 A59E3C1B11580F340072928E /* ios */,
</span><span class="lines">@@ -22943,23 +22964,6 @@
</span><span class="cx">                         path = ios;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><del>-                CE50D8CE1C8932ED0072EA5A /* crypto */ = {
-                        isa = PBXGroup;
-                        children = (
-                                CE50D8CF1C8932FB0072EA5A /* commoncrypto */,
-                                E1FE136618343A1000892F13 /* CryptoDigest.h */,
-                        );
-                        path = crypto;
-                        sourceTree = &quot;&lt;group&gt;&quot;;
-                };
-                CE50D8CF1C8932FB0072EA5A /* commoncrypto */ = {
-                        isa = PBXGroup;
-                        children = (
-                                E1FE13621834351100892F13 /* CryptoDigestCommonCrypto.cpp */,
-                        );
-                        path = commoncrypto;
-                        sourceTree = &quot;&lt;group&gt;&quot;;
-                };
</del><span class="cx">                 DF9AFD6F13FC31B00015FEB7 /* objc */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -25253,7 +25257,6 @@
</span><span class="cx">                                 E19AC3F11824DC7900349426 /* CryptoAlgorithmSHA256.h in Headers */,
</span><span class="cx">                                 E19AC3F31824DC7900349426 /* CryptoAlgorithmSHA384.h in Headers */,
</span><span class="cx">                                 E19AC3F51824DC7900349426 /* CryptoAlgorithmSHA512.h in Headers */,
</span><del>-                                E1FE136718343A1000892F13 /* CryptoDigest.h in Headers */,
</del><span class="cx">                                 E157A8E518173A3A009F821D /* CryptoKey.h in Headers */,
</span><span class="cx">                                 E125F84E1824289D00D84CD9 /* CryptoKeyAES.h in Headers */,
</span><span class="cx">                                 E125F85E182C2DF600D84CD9 /* CryptoKeyData.h in Headers */,
</span><span class="lines">@@ -28508,6 +28511,7 @@
</span><span class="cx">                         buildRules = (
</span><span class="cx">                         );
</span><span class="cx">                         dependencies = (
</span><ins>+                                1C09D0681E32079D00725F18 /* PBXTargetDependency */,
</ins><span class="cx">                                 DD041FF109D9E3250010AF2A /* PBXTargetDependency */,
</span><span class="cx">                         );
</span><span class="cx">                         name = WebCore;
</span><span class="lines">@@ -28560,6 +28564,12 @@
</span><span class="cx">                         mainGroup = 0867D691FE84028FC02AAC07 /* WebKit */;
</span><span class="cx">                         productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
</span><span class="cx">                         projectDirPath = &quot;&quot;;
</span><ins>+                        projectReferences = (
+                                {
+                                        ProductGroup = 1C09D04C1E31C32800725F18 /* Products */;
+                                        ProjectRef = 1C09D04B1E31C32800725F18 /* PAL.xcodeproj */;
+                                },
+                        );
</ins><span class="cx">                         projectRoot = &quot;&quot;;
</span><span class="cx">                         targets = (
</span><span class="cx">                                 41816F7913859C550057AAA4 /* All */,
</span><span class="lines">@@ -28571,6 +28581,16 @@
</span><span class="cx">                 };
</span><span class="cx"> /* End PBXProject section */
</span><span class="cx"> 
</span><ins>+/* Begin PBXReferenceProxy section */
+                1C09D0501E31C32900725F18 /* libPAL.a */ = {
+                        isa = PBXReferenceProxy;
+                        fileType = archive.ar;
+                        path = libPAL.a;
+                        remoteRef = 1C09D04F1E31C32900725F18 /* PBXContainerItemProxy */;
+                        sourceTree = BUILT_PRODUCTS_DIR;
+                };
+/* End PBXReferenceProxy section */
+
</ins><span class="cx"> /* Begin PBXResourcesBuildPhase section */
</span><span class="cx">                 93F199FD08245E59001E9ABC /* Resources */ = {
</span><span class="cx">                         isa = PBXResourcesBuildPhase;
</span><span class="lines">@@ -29097,7 +29117,6 @@
</span><span class="cx">                                 E19AC3F01824DC7900349426 /* CryptoAlgorithmSHA256.cpp in Sources */,
</span><span class="cx">                                 E19AC3F21824DC7900349426 /* CryptoAlgorithmSHA384.cpp in Sources */,
</span><span class="cx">                                 E19AC3F41824DC7900349426 /* CryptoAlgorithmSHA512.cpp in Sources */,
</span><del>-                                E1FE13641834351100892F13 /* CryptoDigestCommonCrypto.cpp in Sources */,
</del><span class="cx">                                 E157A8E418173A3A009F821D /* CryptoKey.cpp in Sources */,
</span><span class="cx">                                 E125F84D1824289D00D84CD9 /* CryptoKeyAES.cpp in Sources */,
</span><span class="cx">                                 E125F863182C303A00D84CD9 /* CryptoKeyDataOctetSequence.cpp in Sources */,
</span><span class="lines">@@ -31929,6 +31948,11 @@
</span><span class="cx"> /* End PBXSourcesBuildPhase section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXTargetDependency section */
</span><ins>+                1C09D0681E32079D00725F18 /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        name = PAL;
+                        targetProxy = 1C09D0671E32079D00725F18 /* PBXContainerItemProxy */;
+                };
</ins><span class="cx">                 417DA6D513734E0D007C57FB /* PBXTargetDependency */ = {
</span><span class="cx">                         isa = PBXTargetDependency;
</span><span class="cx">                         target = 93F198A508245E59001E9ABC /* WebCore */;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA1cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx"> 
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CryptoAlgorithmSHA1::digest(Vector&lt;uint8_t&gt;&amp;&amp; message, VectorCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext&amp; context, WorkQueue&amp; workQueue)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_1);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_1);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         exceptionCallback(OperationError);
</span><span class="cx">         return;
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; CryptoAlgorithmSHA1::digest(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoOperationData&amp; data, VectorCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_1);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_1);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         failureCallback();
</span><span class="cx">         return { };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx"> 
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CryptoAlgorithmSHA224::digest(Vector&lt;uint8_t&gt;&amp;&amp; message, VectorCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext&amp; context, WorkQueue&amp; workQueue)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_224);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_224);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         exceptionCallback(OperationError);
</span><span class="cx">         return;
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; CryptoAlgorithmSHA224::digest(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoOperationData&amp; data, VectorCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_224);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_224);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         failureCallback();
</span><span class="cx">         return { };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx"> 
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CryptoAlgorithmSHA256::digest(Vector&lt;uint8_t&gt;&amp;&amp; message, VectorCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext&amp; context, WorkQueue&amp; workQueue)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_256);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_256);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         exceptionCallback(OperationError);
</span><span class="cx">         return;
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; CryptoAlgorithmSHA256::digest(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoOperationData&amp; data, VectorCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_256);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_256);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         failureCallback();
</span><span class="cx">         return { };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx"> 
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CryptoAlgorithmSHA384::digest(Vector&lt;uint8_t&gt;&amp;&amp; message, VectorCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext&amp; context, WorkQueue&amp; workQueue)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_384);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_384);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         exceptionCallback(OperationError);
</span><span class="cx">         return;
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; CryptoAlgorithmSHA384::digest(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoOperationData&amp; data, VectorCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_384);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_384);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         failureCallback();
</span><span class="cx">         return { };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx"> 
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CryptoAlgorithmSHA512::digest(Vector&lt;uint8_t&gt;&amp;&amp; message, VectorCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext&amp; context, WorkQueue&amp; workQueue)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_512);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_512);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         exceptionCallback(OperationError);
</span><span class="cx">         return;
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; CryptoAlgorithmSHA512::digest(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoOperationData&amp; data, VectorCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback)
</span><span class="cx"> {
</span><del>-    auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_512);
</del><ins>+    auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_512);
</ins><span class="cx">     if (!digest) {
</span><span class="cx">         failureCallback();
</span><span class="cx">         return { };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoAlgorithmRSASSA_PKCS1_v1_5Maccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -30,26 +30,26 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CommonCryptoUtilities.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmRsaSsaParamsDeprecated.h&quot;
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;CryptoKeyRSA.h&quot;
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-inline std::optional&lt;CryptoDigest::Algorithm&gt; cryptoDigestAlgorithm(CryptoAlgorithmIdentifier hashFunction)
</del><ins>+inline std::optional&lt;PAL::CryptoDigest::Algorithm&gt; cryptoDigestAlgorithm(CryptoAlgorithmIdentifier hashFunction)
</ins><span class="cx"> {
</span><span class="cx">     switch (hashFunction) {
</span><span class="cx">     case CryptoAlgorithmIdentifier::SHA_1:
</span><del>-        return CryptoDigest::Algorithm::SHA_1;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_1;
</ins><span class="cx">     case CryptoAlgorithmIdentifier::SHA_224:
</span><del>-        return CryptoDigest::Algorithm::SHA_224;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_224;
</ins><span class="cx">     case CryptoAlgorithmIdentifier::SHA_256:
</span><del>-        return CryptoDigest::Algorithm::SHA_256;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_256;
</ins><span class="cx">     case CryptoAlgorithmIdentifier::SHA_384:
</span><del>-        return CryptoDigest::Algorithm::SHA_384;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_384;
</ins><span class="cx">     case CryptoAlgorithmIdentifier::SHA_512:
</span><del>-        return CryptoDigest::Algorithm::SHA_512;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_512;
</ins><span class="cx">     default:
</span><span class="cx">         return std::nullopt;
</span><span class="cx">     }
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">     auto cryptoDigestAlgorithm = WebCore::cryptoDigestAlgorithm(hash);
</span><span class="cx">     if (!cryptoDigestAlgorithm)
</span><span class="cx">         return Exception { OperationError };
</span><del>-    auto digest = CryptoDigest::create(*cryptoDigestAlgorithm);
</del><ins>+    auto digest = PAL::CryptoDigest::create(*cryptoDigestAlgorithm);
</ins><span class="cx">     if (!digest)
</span><span class="cx">         return Exception { OperationError };
</span><span class="cx">     digest-&gt;addBytes(data, dataLength);
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">     auto cryptoDigestAlgorithm = WebCore::cryptoDigestAlgorithm(hash);
</span><span class="cx">     if (!cryptoDigestAlgorithm)
</span><span class="cx">         return Exception { OperationError };
</span><del>-    auto digest = CryptoDigest::create(*cryptoDigestAlgorithm);
</del><ins>+    auto digest = PAL::CryptoDigest::create(*cryptoDigestAlgorithm);
</ins><span class="cx">     if (!digest)
</span><span class="cx">         return Exception { OperationError };
</span><span class="cx">     digest-&gt;addBytes(data, dataLength);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx"> #include &quot;ContainerNode.h&quot;
</span><span class="cx"> #include &quot;Cookie.h&quot;
</span><span class="cx"> #include &quot;CookieJar.h&quot;
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;DOMEditor.h&quot;
</span><span class="cx"> #include &quot;DOMPatchSupport.h&quot;
</span><span class="cx"> #include &quot;DOMWindow.h&quot;
</span><span class="lines">@@ -96,6 +95,7 @@
</span><span class="cx"> #include &lt;inspector/IdentifiersFactory.h&gt;
</span><span class="cx"> #include &lt;inspector/InjectedScript.h&gt;
</span><span class="cx"> #include &lt;inspector/InjectedScriptManager.h&gt;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> #include &lt;runtime/JSCInlines.h&gt;
</span><span class="cx"> #include &lt;wtf/text/Base64.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="lines">@@ -1316,7 +1316,7 @@
</span><span class="cx">     TextEncoding documentEncoding = element.document().textEncoding();
</span><span class="cx">     const TextEncoding&amp; encodingToUse = documentEncoding.isValid() ? documentEncoding : UTF8Encoding();
</span><span class="cx">     CString content = encodingToUse.encode(TextNodeTraversal::contentsAsString(element), EntitiesForUnencodables);
</span><del>-    auto cryptoDigest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_256);
</del><ins>+    auto cryptoDigest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_256);
</ins><span class="cx">     cryptoDigest-&gt;addBytes(content.data(), content.length());
</span><span class="cx">     Vector&lt;uint8_t&gt; digest = cryptoDigest-&gt;computeHash();
</span><span class="cx">     return makeString(&quot;sha256-&quot;, base64Encode(digest.data(), digest.size()));
</span></span></pre></div>
<a id="trunkSourceWebCorepagecspContentSecurityPolicycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/page/csp/ContentSecurityPolicy.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx"> #include &quot;ContentSecurityPolicyHash.h&quot;
</span><span class="cx"> #include &quot;ContentSecurityPolicySource.h&quot;
</span><span class="cx"> #include &quot;ContentSecurityPolicySourceList.h&quot;
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;DOMStringList.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentLoader.h&quot;
</span><span class="lines">@@ -57,6 +56,7 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;inspector/ScriptCallStack.h&gt;
</span><span class="cx"> #include &lt;inspector/ScriptCallStackFactory.h&gt;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> #include &lt;wtf/SetForScope.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> #include &lt;wtf/text/TextPosition.h&gt;
</span><span class="lines">@@ -301,18 +301,18 @@
</span><span class="cx">     return isAllowed;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static CryptoDigest::Algorithm toCryptoDigestAlgorithm(ContentSecurityPolicyHashAlgorithm algorithm)
</del><ins>+static PAL::CryptoDigest::Algorithm toCryptoDigestAlgorithm(ContentSecurityPolicyHashAlgorithm algorithm)
</ins><span class="cx"> {
</span><span class="cx">     switch (algorithm) {
</span><span class="cx">     case ContentSecurityPolicyHashAlgorithm::SHA_256:
</span><del>-        return CryptoDigest::Algorithm::SHA_256;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_256;
</ins><span class="cx">     case ContentSecurityPolicyHashAlgorithm::SHA_384:
</span><del>-        return CryptoDigest::Algorithm::SHA_384;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_384;
</ins><span class="cx">     case ContentSecurityPolicyHashAlgorithm::SHA_512:
</span><del>-        return CryptoDigest::Algorithm::SHA_512;
</del><ins>+        return PAL::CryptoDigest::Algorithm::SHA_512;
</ins><span class="cx">     }
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><del>-    return CryptoDigest::Algorithm::SHA_512;
</del><ins>+    return PAL::CryptoDigest::Algorithm::SHA_512;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename Predicate&gt;
</span><span class="lines">@@ -333,7 +333,7 @@
</span><span class="cx">     bool foundHashInEnforcedPolicies = false;
</span><span class="cx">     bool foundHashInReportOnlyPolicies = false;
</span><span class="cx">     for (auto algorithm : algorithms) {
</span><del>-        auto cryptoDigest = CryptoDigest::create(toCryptoDigestAlgorithm(algorithm));
</del><ins>+        auto cryptoDigest = PAL::CryptoDigest::create(toCryptoDigestAlgorithm(algorithm));
</ins><span class="cx">         cryptoDigest-&gt;addBytes(contentCString.data(), contentCString.length());
</span><span class="cx">         ContentSecurityPolicyHash hash = { algorithm, cryptoDigest-&gt;computeHash() };
</span><span class="cx">         if (!foundHashInEnforcedPolicies &amp;&amp; allPoliciesWithDispositionAllow(ContentSecurityPolicy::Disposition::Enforce, std::forward&lt;Predicate&gt;(predicate), hash))
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworksoupSoupNetworkSessioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> #include &quot;SoupNetworkSession.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AuthenticationChallenge.h&quot;
</span><del>-#include &quot;CryptoDigest.h&quot;
</del><span class="cx"> #include &quot;FileSystem.h&quot;
</span><span class="cx"> #include &quot;GUniquePtrSoup.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="lines">@@ -38,6 +37,7 @@
</span><span class="cx"> #include &quot;SoupNetworkProxySettings.h&quot;
</span><span class="cx"> #include &lt;glib/gstdio.h&gt;
</span><span class="cx"> #include &lt;libsoup/soup.h&gt;
</span><ins>+#include &lt;pal/crypto/CryptoDigest.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> #include &lt;wtf/text/Base64.h&gt;
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">         if (!certificateData)
</span><span class="cx">             return String();
</span><span class="cx"> 
</span><del>-        auto digest = CryptoDigest::create(CryptoDigest::Algorithm::SHA_256);
</del><ins>+        auto digest = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_256);
</ins><span class="cx">         digest-&gt;addBytes(certificateData-&gt;data, certificateData-&gt;len);
</span><span class="cx"> 
</span><span class="cx">         auto hash = digest-&gt;computeHash();
</span></span></pre></div>
<a id="trunkSourceWebKitCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/CMakeLists.txt (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/CMakeLists.txt        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebKit/CMakeLists.txt        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> set(WebKit_LIBRARIES
</span><span class="cx">     PRIVATE JavaScriptCore${DEBUG_SUFFIX}
</span><span class="cx">     PRIVATE WebCore${DEBUG_SUFFIX}
</span><ins>+    PRIVATE PAL${DEBUG_SUFFIX}
</ins><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
</span></span></pre></div>
<a id="trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-// Copyright (C) 2009, 2010, 2014, 2015, 2016 Apple Inc. All rights reserved.
</del><ins>+// Copyright (C) 2009, 2010, 2014, 2015, 2016, 2017 Apple Inc. All rights reserved.
</ins><span class="cx"> // Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx"> //
</span><span class="cx"> // Redistribution and use in source and binary forms, with or without
</span></span></pre></div>
<a id="trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-// Copyright (C) 2009, 2010, 2014, 2015, 2016 Apple Inc. All rights reserved.
</del><ins>+// Copyright (C) 2009, 2010, 2014, 2015, 2016, 2017 Apple Inc. All rights reserved.
</ins><span class="cx"> // Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx"> //
</span><span class="cx"> // Redistribution and use in source and binary forms, with or without
</span></span></pre></div>
<a id="trunkSourcecmakeOptionsWincmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/OptionsWin.cmake (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/OptionsWin.cmake        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/cmake/OptionsWin.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -182,5 +182,6 @@
</span><span class="cx"> set(PORT Win)
</span><span class="cx"> set(JavaScriptCore_LIBRARY_TYPE SHARED)
</span><span class="cx"> set(WTF_LIBRARY_TYPE SHARED)
</span><ins>+set(PAL_LIBRARY_TYPE STATIC)
</ins><span class="cx"> 
</span><span class="cx"> find_package(ICU REQUIRED)
</span></span></pre></div>
<a id="trunkSourcecmakeWebKitFScmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/WebKitFS.cmake (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/WebKitFS.cmake        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Source/cmake/WebKitFS.cmake        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -10,6 +10,9 @@
</span><span class="cx"> if (NOT WEBCORE_DIR)
</span><span class="cx">     set(WEBCORE_DIR &quot;${CMAKE_SOURCE_DIR}/Source/WebCore&quot;)
</span><span class="cx"> endif ()
</span><ins>+if (NOT PAL_DIR)
+    set(PAL_DIR &quot;${CMAKE_SOURCE_DIR}/Source/WebCore/PAL&quot;)
+endif ()
</ins><span class="cx"> if (NOT WEBKIT_DIR)
</span><span class="cx">     set(WEBKIT_DIR &quot;${CMAKE_SOURCE_DIR}/Source/WebKit&quot;)
</span><span class="cx"> endif ()
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpystylecheckersfeaturedefinespy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/style/checkers/featuredefines.py (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/style/checkers/featuredefines.py        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Tools/Scripts/webkitpy/style/checkers/featuredefines.py        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx">         feature_defines_files = [
</span><span class="cx">             &quot;Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig&quot;,
</span><span class="cx">             &quot;Source/WebCore/Configurations/FeatureDefines.xcconfig&quot;,
</span><ins>+            &quot;Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig&quot;,
</ins><span class="cx">             &quot;Source/WebKit/mac/Configurations/FeatureDefines.xcconfig&quot;,
</span><span class="cx">             &quot;Source/WebKit2/Configurations/FeatureDefines.xcconfig&quot;,
</span><span class="cx">             &quot;Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig&quot;,
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPIConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig (211026 => 211027)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig        2017-01-22 08:29:30 UTC (rev 211026)
+++ trunk/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig        2017-01-22 17:24:51 UTC (rev 211027)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-// Copyright (C) 2009, 2010, 2014, 2015, 2016 Apple Inc. All rights reserved.
</del><ins>+// Copyright (C) 2009, 2010, 2014, 2015, 2016, 2017 Apple Inc. All rights reserved.
</ins><span class="cx"> // Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx"> //
</span><span class="cx"> // Redistribution and use in source and binary forms, with or without
</span></span></pre>
</div>
</div>

</body>
</html>