<!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>[208602] 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/208602">208602</a></dd>
<dt>Author</dt> <dd>jiewen_tan@apple.com</dd>
<dt>Date</dt> <dd>2016-11-11 12:12:00 -0800 (Fri, 11 Nov 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Rename CryptoKeyUsage to CryptoKeyUsageBitmap and CryptoKey::Usage to CryptoKeyUsage
https://bugs.webkit.org/show_bug.cgi?id=164624
&lt;rdar://problem/29210140&gt;

Reviewed by Brent Fulgham.

Source/WebCore:

This patch allows IDLType CryptoKeyUsage to be shared among different IDLs, i.e. CryptoKey.idl,
SubtleCrypto.idl and JsonWebKey.idl such that it can simplify the customized binding codes.

Covered by existing tests.

* CMakeLists.txt:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSCryptoKeySerializationJWK.cpp:
* bindings/js/JSCryptoKeySerializationJWK.h:
* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::toCryptoKeyUsageBitmap):
(WebCore::cryptoKeyUsageBitmapFromJSValue):
(WebCore::toKeyData):
(WebCore::jsSubtleCryptoFunctionGenerateKeyPromise):
(WebCore::jsSubtleCryptoFunctionImportKeyPromise):
(WebCore::cryptoKeyUsageFromString): Deleted.
(WebCore::cryptoKeyUsagesFromJSValue): Deleted.
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
* bindings/js/SerializedScriptValue.cpp:
* crypto/CryptoAlgorithm.cpp:
* crypto/CryptoAlgorithm.h:
* crypto/CryptoKey.cpp:
* crypto/CryptoKey.h:
* crypto/CryptoKey.idl:
* crypto/CryptoKeySerialization.h:
* crypto/CryptoKeyUsage.h:
* crypto/CryptoKeyUsage.idl: Added.
* crypto/gnutls/CryptoKeyRSAGnuTLS.cpp:
* crypto/JsonWebKey.h:
* crypto/JsonWebKey.idl:
* crypto/SubtleCrypto.idl:
* crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
* crypto/algorithms/CryptoAlgorithmAES_CBC.h:
* crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
* crypto/algorithms/CryptoAlgorithmAES_KW.h:
* crypto/algorithms/CryptoAlgorithmHMAC.cpp:
* crypto/algorithms/CryptoAlgorithmHMAC.h:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
* crypto/keys/CryptoKeyAES.cpp:
* crypto/keys/CryptoKeyAES.h:
* crypto/keys/CryptoKeyHMAC.cpp:
* crypto/keys/CryptoKeyHMAC.h:
* crypto/keys/CryptoKeyRSA.cpp:
* crypto/keys/CryptoKeyRSA.h:
* crypto/keys/CryptoKeySerializationRaw.cpp:
* crypto/keys/CryptoKeySerializationRaw.h:
* crypto/mac/CryptoKeyRSAMac.cpp:

LayoutTests:

* crypto/subtle/generate-key-malformed-parameters-expected.txt:
* crypto/subtle/import-key-malformed-parameters-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestscryptosubtlegeneratekeymalformedparametersexpectedtxt">trunk/LayoutTests/crypto/subtle/generate-key-malformed-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtleimportkeymalformedparametersexpectedtxt">trunk/LayoutTests/crypto/subtle/import-key-malformed-parameters-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCryptoKeySerializationJWKcpp">trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCryptoKeySerializationJWKh">trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsSerializedScriptValuecpp">trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmcpp">trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmh">trunk/Source/WebCore/crypto/CryptoAlgorithm.h</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoKeycpp">trunk/Source/WebCore/crypto/CryptoKey.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoKeyh">trunk/Source/WebCore/crypto/CryptoKey.h</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoKeyidl">trunk/Source/WebCore/crypto/CryptoKey.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoKeySerializationh">trunk/Source/WebCore/crypto/CryptoKeySerialization.h</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoKeyUsageh">trunk/Source/WebCore/crypto/CryptoKeyUsage.h</a></li>
<li><a href="#trunkSourceWebCorecryptoJsonWebKeyh">trunk/Source/WebCore/crypto/JsonWebKey.h</a></li>
<li><a href="#trunkSourceWebCorecryptoJsonWebKeyidl">trunk/Source/WebCore/crypto/JsonWebKey.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoSubtleCryptoidl">trunk/Source/WebCore/crypto/SubtleCrypto.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h</a></li>
<li><a href="#trunkSourceWebCorecryptognutlsCryptoKeyRSAGnuTLScpp">trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyAEScpp">trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyAESh">trunk/Source/WebCore/crypto/keys/CryptoKeyAES.h</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyHMACcpp">trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyHMACh">trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.h</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyRSAcpp">trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyRSAh">trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeySerializationRawcpp">trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeySerializationRawh">trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.h</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoKeyRSAMaccpp">trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorecryptoCryptoKeyUsageidl">trunk/Source/WebCore/crypto/CryptoKeyUsage.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/LayoutTests/ChangeLog        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2016-11-10  Jiewen Tan  &lt;jiewen_tan@apple.com&gt;
+
+        Rename CryptoKeyUsage to CryptoKeyUsageBitmap and CryptoKey::Usage to CryptoKeyUsage
+        https://bugs.webkit.org/show_bug.cgi?id=164624
+        &lt;rdar://problem/29210140&gt;
+
+        Reviewed by Brent Fulgham.
+
+        * crypto/subtle/generate-key-malformed-parameters-expected.txt:
+        * crypto/subtle/import-key-malformed-parameters-expected.txt:
+
</ins><span class="cx"> 2016-11-11  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add ios-simulator baseline for compositing/tiling/visiblerect-accumulated-offset.html.
</span></span></pre></div>
<a id="trunkLayoutTestscryptosubtlegeneratekeymalformedparametersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/crypto/subtle/generate-key-malformed-parameters-expected.txt (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/generate-key-malformed-parameters-expected.txt        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/LayoutTests/crypto/subtle/generate-key-malformed-parameters-expected.txt        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -32,14 +32,14 @@
</span><span class="cx"> PASS crypto.subtle.generateKey({name: &quot;SHA-256&quot;}, 2, 3) rejected promise  with NotSupportedError (DOM Exception 9): The operation is not supported..
</span><span class="cx"> PASS crypto.subtle.generateKey({name: &quot;SHA-384&quot;}, 2, 3) rejected promise  with NotSupportedError (DOM Exception 9): The operation is not supported..
</span><span class="cx"> PASS crypto.subtle.generateKey({name: &quot;SHA-512&quot;}, 2, 3) rejected promise  with NotSupportedError (DOM Exception 9): The operation is not supported..
</span><del>-PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, 3) rejected promise  with TypeError: Type error.
-PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, true) rejected promise  with TypeError: Type error.
-PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, null) rejected promise  with TypeError: null is not an object (evaluating 'crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, null)').
-PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, undefined) rejected promise  with TypeError: undefined is not an object (evaluating 'crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, undefined)').
-PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, Symbol()) rejected promise  with TypeError: Type error.
</del><ins>+PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, 3) rejected promise  with TypeError: Value is not a sequence.
+PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, true) rejected promise  with TypeError: Value is not a sequence.
+PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, null) rejected promise  with TypeError: Value is not a sequence.
+PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, undefined) rejected promise  with TypeError: Value is not a sequence.
+PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, Symbol()) rejected promise  with TypeError: Value is not a sequence.
</ins><span class="cx"> PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, { }) rejected promise  with TypeError: Type error.
</span><del>-PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, &quot;foo&quot;) rejected promise  with TypeError: Invalid KeyUsages.
-PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, [&quot;foo&quot;]) rejected promise  with TypeError: Invalid KeyUsages.
</del><ins>+PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, &quot;foo&quot;) rejected promise  with TypeError: Value is not a sequence.
+PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, [&quot;foo&quot;]) rejected promise  with TypeError: Type error.
</ins><span class="cx"> PASS crypto.subtle.generateKey({name: &quot;AES-CBC&quot;, length: 128}, extractable, [ ]) rejected promise  with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
</span><span class="cx"> PASS crypto.subtle.generateKey({name: &quot;RSAES-PKCS1-v1_5&quot;, modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01])}, extractable, [ ]) rejected promise  with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestscryptosubtleimportkeymalformedparametersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/crypto/subtle/import-key-malformed-parameters-expected.txt (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/import-key-malformed-parameters-expected.txt        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/LayoutTests/crypto/subtle/import-key-malformed-parameters-expected.txt        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> PASS crypto.subtle.importKey(&quot;raw&quot;, rawKey, &quot;aes-cbc&quot;, extractable, [ ]) rejected promise  with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
</span><span class="cx"> PASS crypto.subtle.importKey(&quot;jwk&quot;, jwkPrivateKey, &quot;rsaes-pkcs1-v1_5&quot;, extractable, [ ]) rejected promise  with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
</span><span class="cx"> PASS crypto.subtle.importKey(&quot;jwk&quot;, {kty: undefined}, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;, &quot;unwrapKey&quot;]) rejected promise  with TypeError: Member JsonWebKey.kty is required and must be an instance of DOMString.
</span><del>-PASS crypto.subtle.importKey(&quot;jwk&quot;, {kty: &quot;oct&quot;, key_ops: [&quot;foo&quot;]}, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;, &quot;unwrapKey&quot;]) rejected promise  with TypeError: Invalid key_ops.
</del><ins>+PASS crypto.subtle.importKey(&quot;jwk&quot;, {kty: &quot;oct&quot;, key_ops: [&quot;foo&quot;]}, &quot;aes-cbc&quot;, extractable, [&quot;encrypt&quot;, &quot;decrypt&quot;, &quot;wrapKey&quot;, &quot;unwrapKey&quot;]) rejected promise  with TypeError: Type error.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -327,6 +327,7 @@
</span><span class="cx">     crypto/CryptoAlgorithmParameters.idl
</span><span class="cx">     crypto/CryptoKey.idl
</span><span class="cx">     crypto/CryptoKeyPair.idl
</span><ins>+    crypto/CryptoKeyUsage.idl
</ins><span class="cx">     crypto/JsonWebKey.idl
</span><span class="cx">     crypto/RsaOtherPrimesInfo.idl
</span><span class="cx">     crypto/SubtleCrypto.idl
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/ChangeLog        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -1,3 +1,65 @@
</span><ins>+2016-11-10  Jiewen Tan  &lt;jiewen_tan@apple.com&gt;
+
+        Rename CryptoKeyUsage to CryptoKeyUsageBitmap and CryptoKey::Usage to CryptoKeyUsage
+        https://bugs.webkit.org/show_bug.cgi?id=164624
+        &lt;rdar://problem/29210140&gt;
+
+        Reviewed by Brent Fulgham.
+
+        This patch allows IDLType CryptoKeyUsage to be shared among different IDLs, i.e. CryptoKey.idl,
+        SubtleCrypto.idl and JsonWebKey.idl such that it can simplify the customized binding codes.
+
+        Covered by existing tests.
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSCryptoKeySerializationJWK.cpp:
+        * bindings/js/JSCryptoKeySerializationJWK.h:
+        * bindings/js/JSSubtleCryptoCustom.cpp:
+        (WebCore::toCryptoKeyUsageBitmap):
+        (WebCore::cryptoKeyUsageBitmapFromJSValue):
+        (WebCore::toKeyData):
+        (WebCore::jsSubtleCryptoFunctionGenerateKeyPromise):
+        (WebCore::jsSubtleCryptoFunctionImportKeyPromise):
+        (WebCore::cryptoKeyUsageFromString): Deleted.
+        (WebCore::cryptoKeyUsagesFromJSValue): Deleted.
+        * bindings/js/JSWebKitSubtleCryptoCustom.cpp:
+        * bindings/js/SerializedScriptValue.cpp:
+        * crypto/CryptoAlgorithm.cpp:
+        * crypto/CryptoAlgorithm.h:
+        * crypto/CryptoKey.cpp:
+        * crypto/CryptoKey.h:
+        * crypto/CryptoKey.idl:
+        * crypto/CryptoKeySerialization.h:
+        * crypto/CryptoKeyUsage.h:
+        * crypto/CryptoKeyUsage.idl: Added.
+        * crypto/gnutls/CryptoKeyRSAGnuTLS.cpp:
+        * crypto/JsonWebKey.h:
+        * crypto/JsonWebKey.idl:
+        * crypto/SubtleCrypto.idl:
+        * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
+        * crypto/algorithms/CryptoAlgorithmAES_CBC.h:
+        * crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
+        * crypto/algorithms/CryptoAlgorithmAES_KW.h:
+        * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
+        * crypto/algorithms/CryptoAlgorithmHMAC.h:
+        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
+        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
+        * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
+        * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
+        * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
+        * crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
+        * crypto/keys/CryptoKeyAES.cpp:
+        * crypto/keys/CryptoKeyAES.h:
+        * crypto/keys/CryptoKeyHMAC.cpp:
+        * crypto/keys/CryptoKeyHMAC.h:
+        * crypto/keys/CryptoKeyRSA.cpp:
+        * crypto/keys/CryptoKeyRSA.h:
+        * crypto/keys/CryptoKeySerializationRaw.cpp:
+        * crypto/keys/CryptoKeySerializationRaw.h:
+        * crypto/mac/CryptoKeyRSAMac.cpp:
+
</ins><span class="cx"> 2016-11-11  Dave Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Parser] Fix basic shape parsing
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/DerivedSources.make        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -252,6 +252,7 @@
</span><span class="cx">     $(WebCore)/crypto/CryptoAlgorithmParameters.idl \
</span><span class="cx">     $(WebCore)/crypto/CryptoKey.idl \
</span><span class="cx">     $(WebCore)/crypto/CryptoKeyPair.idl \
</span><ins>+    $(WebCore)/crypto/CryptoKeyUsage.idl \
</ins><span class="cx">     $(WebCore)/crypto/JsonWebKey.idl \
</span><span class="cx">     $(WebCore)/crypto/parameters/AesKeyGenParams.idl \
</span><span class="cx">     $(WebCore)/crypto/parameters/HmacKeyParams.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -2377,6 +2377,8 @@
</span><span class="cx">                 5778BD841DA4817B009E3009 /* SubtleCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5778BD831DA4817B009E3009 /* SubtleCrypto.cpp */; };
</span><span class="cx">                 579F6E051DCD7EE400546D80 /* CryptoAlgorithmRsaHashedKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E233741DCD6D3B00F28D01 /* CryptoAlgorithmRsaHashedKeyGenParams.h */; };
</span><span class="cx">                 57A9C88E1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57A9C88D1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp */; };
</span><ins>+                57D0018D1DD5413200ED19D9 /* JSCryptoKeyUsage.h in Headers */ = {isa = PBXBuildFile; fileRef = 57D0018C1DD5413200ED19D9 /* JSCryptoKeyUsage.h */; };
+                57D0018F1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57D0018E1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp */; };
</ins><span class="cx">                 57E2335B1DC7D5E500F28D01 /* JSJsonWebKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E2335A1DC7D5E500F28D01 /* JSJsonWebKey.h */; };
</span><span class="cx">                 57E2335D1DC7D60800F28D01 /* JSRsaOtherPrimesInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E2335C1DC7D60800F28D01 /* JSRsaOtherPrimesInfo.h */; };
</span><span class="cx">                 57E2335F1DC7D67B00F28D01 /* JSJsonWebKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57E2335E1DC7D67B00F28D01 /* JSJsonWebKey.cpp */; };
</span><span class="lines">@@ -6972,7 +6974,7 @@
</span><span class="cx">                 06027CAC0B1CBFC000884B2D /* ContextMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenuItem.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 062287830B4DB322000C34DF /* FocusDirection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FocusDirection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 065AD4F20B0C2EDA005A2B1D /* ContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenuClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                065AD4F30B0C2EDA005A2B1D /* ContextMenuController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = ContextMenuController.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                065AD4F30B0C2EDA005A2B1D /* ContextMenuController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenuController.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 065AD4F40B0C2EDA005A2B1D /* ContextMenuController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenuController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0668E1890ADD9624004128E0 /* PopupMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PopupMenu.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 066C772A0AB603B700238CC4 /* FileChooser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileChooser.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7661,7 +7663,7 @@
</span><span class="cx">                 14D64B5A134A5B6B00E58FDA /* TreeScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TreeScope.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14D64B5B134A5B6B00E58FDA /* TreeScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreeScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14D823500AF92A790004F057 /* Chrome.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Chrome.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                14D8238A0AF92DF60004F057 /* Chrome.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = Chrome.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                14D8238A0AF92DF60004F057 /* Chrome.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Chrome.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 14D824060AF93AEB0004F057 /* ChromeClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChromeClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14DC0D0B09FECFA4007B0235 /* Node.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Node.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14DC0D3509FED073007B0235 /* JSNode.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNode.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7867,7 +7869,7 @@
</span><span class="cx">                 1A8F6B010DB53006001DB794 /* SubstituteResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubstituteResource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A8F6BB10DB55CDC001DB794 /* ApplicationCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A8F6BB20DB55CDC001DB794 /* ApplicationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                1A8F6BB30DB55CDC001DB794 /* ApplicationCacheGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = ApplicationCacheGroup.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                1A8F6BB30DB55CDC001DB794 /* ApplicationCacheGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCacheGroup.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 1A8F6BB40DB55CDC001DB794 /* ApplicationCacheGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheGroup.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A8F6BB50DB55CDC001DB794 /* ApplicationCacheResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCacheResource.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A8F6BB60DB55CDC001DB794 /* ApplicationCacheResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheResource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8222,7 +8224,7 @@
</span><span class="cx">                 2981CAA2131822EC00D12F2A /* AccessibilityListBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityListBox.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2981CAA3131822EC00D12F2A /* AccessibilityListBoxOption.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityListBoxOption.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2981CAA4131822EC00D12F2A /* AccessibilityMediaControls.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityMediaControls.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                2981CAA5131822EC00D12F2A /* AccessibilityObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = AccessibilityObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                2981CAA5131822EC00D12F2A /* AccessibilityObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 2981CAA6131822EC00D12F2A /* AccessibilityRenderObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityRenderObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2981CAA7131822EC00D12F2A /* AccessibilityScrollbar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityScrollbar.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2981CAA8131822EC00D12F2A /* AccessibilityScrollView.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityScrollView.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8499,8 +8501,8 @@
</span><span class="cx">                 3146FE6718442087001A937C /* OESTextureFloatLinear.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OESTextureFloatLinear.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3146FE7018442367001A937C /* JSOESTextureFloatLinear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESTextureFloatLinear.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3146FE7118442367001A937C /* JSOESTextureFloatLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESTextureFloatLinear.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                314BE3A01B30F6B700141982 /* CSSNamedImageValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CSSNamedImageValue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                314BE3A21B30F6D100141982 /* CSSNamedImageValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CSSNamedImageValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                314BE3A01B30F6B700141982 /* CSSNamedImageValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSNamedImageValue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                314BE3A21B30F6D100141982 /* CSSNamedImageValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSNamedImageValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 314BE3A41B3103FB00141982 /* NamedImageGeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NamedImageGeneratedImage.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 314BE3A51B3103FB00141982 /* NamedImageGeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NamedImageGeneratedImage.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 316023EF1532C40C00D50FF4 /* Dictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Dictionary.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8638,7 +8640,7 @@
</span><span class="cx">                 37BAAE571980D1DD005DFE71 /* ProtectionSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProtectionSpace.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 37C2360E1097EE7700EF9F72 /* ComplexTextController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComplexTextController.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 37C2360F1097EE7700EF9F72 /* ComplexTextController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComplexTextController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                37C238201098C84200EF9F72 /* ComplexTextControllerCoreText.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ComplexTextControllerCoreText.mm; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
</del><ins>+                37C238201098C84200EF9F72 /* ComplexTextControllerCoreText.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ComplexTextControllerCoreText.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 37D456FB1A9A50B6003330A1 /* LocalizableStrings.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = LocalizableStrings.pm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 37DDCD9213844FD50008B793 /* MIMEHeader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MIMEHeader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 37DDCD9313844FD50008B793 /* MIMEHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MIMEHeader.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9442,7 +9444,7 @@
</span><span class="cx">                 51BA4AC91BBC5B9E00DF3D6D /* MemoryIDBBackingStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryIDBBackingStore.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51BE37DE0DAEE00E001085FC /* StorageArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageArea.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51C0AA380F2AA10A001648C2 /* CachedFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFrame.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CachedFrame.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedFrame.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 51C81B870C4422F70019ECE3 /* FTPDirectoryParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FTPDirectoryParser.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51C81B880C4422F70019ECE3 /* FTPDirectoryParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FTPDirectoryParser.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51CBFC980D10E483002DBF51 /* CachedFramePlatformData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFramePlatformData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9599,6 +9601,9 @@
</span><span class="cx">                 5778BD811DA4802C009E3009 /* SubtleCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubtleCrypto.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5778BD831DA4817B009E3009 /* SubtleCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubtleCrypto.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 57A9C88D1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSubtleCryptoCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                57D0018B1DD3DBA400ED19D9 /* CryptoKeyUsage.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CryptoKeyUsage.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                57D0018C1DD5413200ED19D9 /* JSCryptoKeyUsage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSCryptoKeyUsage.h; path = JSCryptoKeyUsage.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                57D0018E1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSCryptoKeyUsage.cpp; path = JSCryptoKeyUsage.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 57E233571DC7D24800F28D01 /* JsonWebKey.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = JsonWebKey.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 57E233591DC7D37200F28D01 /* RsaOtherPrimesInfo.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RsaOtherPrimesInfo.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 57E2335A1DC7D5E500F28D01 /* JSJsonWebKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSJsonWebKey.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9816,7 +9821,7 @@
</span><span class="cx">                 65653F2C0D9727D200CA9723 /* SVGAltGlyphElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGAltGlyphElement.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 656580EE09D12B20000E61D7 /* CSSPropertyNames.gperf */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSPropertyNames.gperf; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 656580EF09D12B20000E61D7 /* CSSPropertyNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSPropertyNames.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                6565814409D13043000E61D7 /* CSSGrammar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CSSGrammar.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                6565814409D13043000E61D7 /* CSSGrammar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CSSGrammar.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 6565814709D13043000E61D7 /* CSSValueKeywords.gperf */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CSSValueKeywords.gperf; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6565814809D13043000E61D7 /* CSSValueKeywords.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSValueKeywords.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 656581AC09D14EE6000E61D7 /* CharsetData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CharsetData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9844,7 +9849,7 @@
</span><span class="cx">                 658436850AE01B7400E53753 /* FrameLoadRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FrameLoadRequest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6593923509AE4346002C531F /* URL.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = URL.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 6593923609AE4346002C531F /* URL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = URL.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                6593923909AE435C002C531F /* URLMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = URLMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
</del><ins>+                6593923909AE435C002C531F /* URLMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = URLMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 659A7D120B6DB4D9001155B3 /* SubstituteData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SubstituteData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 659DDC8009E198BA001BF3C6 /* JSDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocument.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 659DDC8109E198BA001BF3C6 /* JSDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDocument.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -10746,7 +10751,7 @@
</span><span class="cx">                 930705D909E0C9BF00B17FE4 /* JSCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCounter.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 930705E809E0C9F000B17FE4 /* JSCSSPrimitiveValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSPrimitiveValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 930705EA09E0C9F600B17FE4 /* JSCSSPrimitiveValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSPrimitiveValue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                9307061309E0CA8200B17FE4 /* DerivedSources.make */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; lineEnding = 0; path = DerivedSources.make; sourceTree = &quot;&lt;group&gt;&quot;; usesTabs = 1; xcLanguageSpecificationIdentifier = xcode.lang.simpleColoring; };
</del><ins>+                9307061309E0CA8200B17FE4 /* DerivedSources.make */ = {isa = PBXFileReference; explicitFileType = sourcecode.make; fileEncoding = 4; path = DerivedSources.make; sourceTree = &quot;&lt;group&gt;&quot;; usesTabs = 1; };
</ins><span class="cx">                 9307F1D50AF2D59000DBA31A /* HitTestResult.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HitTestResult.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9307F1D60AF2D59000DBA31A /* HitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HitTestResult.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 930841331CDDB15500B0958C /* JSDOMConvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMConvert.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -10770,7 +10775,7 @@
</span><span class="cx">                 932E16080AF578340025F408 /* FrameLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93309D87099E64910056E581 /* AppendNodeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppendNodeCommand.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93309D88099E64910056E581 /* AppendNodeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppendNodeCommand.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                93309D89099E64910056E581 /* ApplyStyleCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = ApplyStyleCommand.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                93309D89099E64910056E581 /* ApplyStyleCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplyStyleCommand.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 93309D8A099E64910056E581 /* ApplyStyleCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplyStyleCommand.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93309D8B099E64910056E581 /* BreakBlockquoteCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BreakBlockquoteCommand.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93309D8C099E64910056E581 /* BreakBlockquoteCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BreakBlockquoteCommand.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12094,7 +12099,7 @@
</span><span class="cx">                 AA4739CF1757AFEC00E76767 /* UIRequestEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UIRequestEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 AA4739D01757AFEC00E76767 /* UIRequestEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIRequestEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 AA478A7D16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAccessibilityObjectWrapperMac.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                AA478A7E16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; lineEnding = 0; path = WebAccessibilityObjectWrapperMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
</del><ins>+                AA478A7E16CD70C3007D1BB4 /* WebAccessibilityObjectWrapperMac.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = WebAccessibilityObjectWrapperMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 AA4C3A740B2B1679002334A2 /* InlineStyleSheetOwner.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = InlineStyleSheetOwner.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 AA4C3A750B2B1679002334A2 /* InlineStyleSheetOwner.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = InlineStyleSheetOwner.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 AA5F3B9016CC5BEB00455EB0 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
</span><span class="lines">@@ -13032,7 +13037,7 @@
</span><span class="cx">                 BC3C39B40C0D3D8D005F4D7A /* JSMediaList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaList.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC3C39B50C0D3D8D005F4D7A /* JSMediaList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMediaList.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC4368E70C226E32005EFB5F /* Rect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Rect.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BC46C1ED0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JSCSSRuleCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                BC46C1ED0C0DDBDF0020CFC3 /* JSCSSRuleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSRuleCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 BC46C1F20C0DDC8F0020CFC3 /* JSCSSFontFaceRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSFontFaceRule.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC46C1F30C0DDC8F0020CFC3 /* JSCSSFontFaceRule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCSSFontFaceRule.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC46C1F40C0DDC8F0020CFC3 /* JSCSSImportRule.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSImportRule.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -13252,7 +13257,7 @@
</span><span class="cx">                 BCB16C0B0979C3BD00467741 /* CachedScript.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedScript.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCB16C0E0979C3BD00467741 /* CachedXSLStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedXSLStyleSheet.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCB16C0F0979C3BD00467741 /* CachedXSLStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedXSLStyleSheet.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BCB16C100979C3BD00467741 /* CachedResourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CachedResourceLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                BCB16C100979C3BD00467741 /* CachedResourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;;  };
</ins><span class="cx">                 BCB16C110979C3BD00467741 /* CachedResourceLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceLoader.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCB92D4E1293550B00C8387F /* FontBaseline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontBaseline.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCBB8AB513F1AFB000734DF0 /* PODInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODInterval.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14130,13 +14135,13 @@
</span><span class="cx">                 E1BA67161742BDE000C20251 /* libWebCoreTestShim.dylib */ = {isa = PBXFileReference; explicitFileType = &quot;compiled.mach-o.dylib&quot;; includeInIndex = 0; path = libWebCoreTestShim.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 E1BA67191742BEF400C20251 /* WebCoreTestShimLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreTestShimLibrary.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1BB84AC1822CA7400525043 /* CryptoAlgorithmRegistryMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRegistryMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                E1BD3317182D8DDD00C05D9F /* CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
-                E1BD3318182D8DDD00C05D9F /* CryptoAlgorithmRSASSA_PKCS1_v1_5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CryptoAlgorithmRSASSA_PKCS1_v1_5.h; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
-                E1BD331B182D8EE900C05D9F /* CryptoAlgorithmRsaSsaParamsDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CryptoAlgorithmRsaSsaParamsDeprecated.h; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
</del><ins>+                E1BD3317182D8DDD00C05D9F /* CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E1BD3318182D8DDD00C05D9F /* CryptoAlgorithmRSASSA_PKCS1_v1_5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRSASSA_PKCS1_v1_5.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E1BD331B182D8EE900C05D9F /* CryptoAlgorithmRsaSsaParamsDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRsaSsaParamsDeprecated.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E1BD331D182D8F4200C05D9F /* CryptoAlgorithmRsaKeyGenParamsDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRsaKeyGenParamsDeprecated.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1BE512B0CF6C512002EA959 /* XSLTUnicodeSort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XSLTUnicodeSort.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1BE512C0CF6C512002EA959 /* XSLTUnicodeSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XSLTUnicodeSort.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                E1C266D618317AB4003F8B33 /* CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                E1C266D618317AB4003F8B33 /* CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E1C266DA18319935003F8B33 /* CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C266DC18319F31003F8B33 /* CryptoKeyDataRSAComponents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoKeyDataRSAComponents.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C266DD18319F31003F8B33 /* CryptoKeyDataRSAComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoKeyDataRSAComponents.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14152,12 +14157,12 @@
</span><span class="cx">                 E1C416160F6563180092D2FB /* CrossOriginAccessControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossOriginAccessControl.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C4DE680EA75C1E0023CCD6 /* ActiveDOMObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActiveDOMObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C4DE6D0EA75C650023CCD6 /* ActiveDOMObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActiveDOMObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                E1C657101815F9DD00256CDD /* JSCryptoAlgorithmDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JSCryptoAlgorithmDictionary.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</del><ins>+                E1C657101815F9DD00256CDD /* JSCryptoAlgorithmDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCryptoAlgorithmDictionary.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E1C657111815F9DD00256CDD /* JSCryptoAlgorithmDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCryptoAlgorithmDictionary.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C6571E1816E50300256CDD /* CryptoAlgorithmHmacParamsDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmHmacParamsDeprecated.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C657241816E69D00256CDD /* CryptoAlgorithmIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmIdentifier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C657261816F9FE00256CDD /* CryptoAlgorithmParametersDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmParametersDeprecated.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                E1C6CFC21746D293007B87A1 /* DOMWindowConstructors.idl */ = {isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; path = DOMWindowConstructors.idl; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = &quot;&lt;none&gt;&quot;; };
</del><ins>+                E1C6CFC21746D293007B87A1 /* DOMWindowConstructors.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = DOMWindowConstructors.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E1C8BE5C0E8BD15A0064CB7D /* JSWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorker.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1C94AF7191303F000D5A893 /* BlobPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobPart.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1CA5CBB0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWorkerCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14562,7 +14567,7 @@
</span><span class="cx">                 FC9A0F73164094CF003D6B8D /* DOMCSSNamespace.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DOMCSSNamespace.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FC9E0E4B16419C1E00392BE3 /* JSDOMCSSNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMCSSNamespace.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FCEBCD711623A7910029965E /* CSSGrammar.y.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; path = CSSGrammar.y.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                FCEBCD721623A7910029965E /* CSSGrammar.y.includes */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; lineEnding = 0; path = CSSGrammar.y.includes; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = &quot;&lt;none&gt;&quot;; };
</del><ins>+                FCEBCD721623A7910029965E /* CSSGrammar.y.includes */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; path = CSSGrammar.y.includes; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 FD00D7A214A3F61900734011 /* SincResampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SincResampler.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FD00D7A314A3F61900734011 /* SincResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SincResampler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FD06DFA3134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DefaultAudioDestinationNode.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -23052,6 +23057,7 @@
</span><span class="cx">                                 E125F855182C0F8300D84CD9 /* CryptoKeySerialization.h */,
</span><span class="cx">                                 E19727151820549E00592D51 /* CryptoKeyType.h */,
</span><span class="cx">                                 E172AF6F180F289500FBADB9 /* CryptoKeyUsage.h */,
</span><ins>+                                57D0018B1DD3DBA400ED19D9 /* CryptoKeyUsage.idl */,
</ins><span class="cx">                                 57E233641DC7DB1F00F28D01 /* JsonWebKey.h */,
</span><span class="cx">                                 57E233571DC7D24800F28D01 /* JsonWebKey.idl */,
</span><span class="cx">                                 57E233621DC7DA2400F28D01 /* RsaOtherPrimesInfo.h */,
</span><span class="lines">@@ -23078,6 +23084,8 @@
</span><span class="cx">                                 E157A8DF1817331C009F821D /* JSCryptoKey.h */,
</span><span class="cx">                                 E1F80B8B183172B5007885C3 /* JSCryptoKeyPair.cpp */,
</span><span class="cx">                                 E1F80B8C183172B5007885C3 /* JSCryptoKeyPair.h */,
</span><ins>+                                57D0018E1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp */,
+                                57D0018C1DD5413200ED19D9 /* JSCryptoKeyUsage.h */,
</ins><span class="cx">                                 57E233681DCAB24300F28D01 /* JSHmacKeyParams.cpp */,
</span><span class="cx">                                 57E233661DCAB21C00F28D01 /* JSHmacKeyParams.h */,
</span><span class="cx">                                 57E2335E1DC7D67B00F28D01 /* JSJsonWebKey.cpp */,
</span><span class="lines">@@ -25226,7 +25234,6 @@
</span><span class="cx">                                 CD19A2681A13E700008D650E /* DiagnosticLoggingClient.h in Headers */,
</span><span class="cx">                                 46FCB6181A70820E00C5A21E /* DiagnosticLoggingKeys.h in Headers */,
</span><span class="cx">                                 8372DB311A6780A800C697C5 /* DiagnosticLoggingResultType.h in Headers */,
</span><del>-                                51E269371DD3BD9B006B6A58 /* IDBIterateCursorData.h in Headers */,
</del><span class="cx">                                 CECADFC7153778FF00E37068 /* DictationAlternative.h in Headers */,
</span><span class="cx">                                 CECADFC9153778FF00E37068 /* DictationCommand.h in Headers */,
</span><span class="cx">                                 D0BD4F5D1408850F006839B6 /* DictationCommandIOS.h in Headers */,
</span><span class="lines">@@ -25274,8 +25281,8 @@
</span><span class="cx">                                 BC1BDF25156C18C7001C1243 /* DOMError.h in Headers */,
</span><span class="cx">                                 2ED609BD1145B07100C8684E /* DOMFormData.h in Headers */,
</span><span class="cx">                                 A8185F3B09765766005826D9 /* DOMImplementation.h in Headers */,
</span><ins>+                                E3C99A091DC3D41C00794AD3 /* DOMJITCheckDOM.h in Headers */,
</ins><span class="cx">                                 E3150EA71DA7219300194012 /* DOMJITHelpers.h in Headers */,
</span><del>-                                E3C99A091DC3D41C00794AD3 /* DOMJITCheckDOM.h in Headers */,
</del><span class="cx">                                 E3A776671DC85D2800B690D8 /* DOMJITIDLConvert.h in Headers */,
</span><span class="cx">                                 E3A776681DC85D2800B690D8 /* DOMJITIDLType.h in Headers */,
</span><span class="cx">                                 E35802B61DC8435D00A9773C /* DOMJITIDLTypeFilter.h in Headers */,
</span><span class="lines">@@ -25403,7 +25410,6 @@
</span><span class="cx">                                 84730D891248F0B300D3A9C9 /* FESpecularLighting.h in Headers */,
</span><span class="cx">                                 416E6FE81BBD12DF000A6023 /* FetchInternalsBuiltins.h in Headers */,
</span><span class="cx">                                 41AD753A1CEF6BD100A31486 /* FetchOptions.h in Headers */,
</span><del>-                                413E00791DB0E4F2002341D2 /* MemoryRelease.h in Headers */,
</del><span class="cx">                                 84730D8B1248F0B300D3A9C9 /* FETile.h in Headers */,
</span><span class="cx">                                 84730D8D1248F0B300D3A9C9 /* FETurbulence.h in Headers */,
</span><span class="cx">                                 FD31609512B026F700C1A359 /* FFTConvolver.h in Headers */,
</span><span class="lines">@@ -25718,6 +25724,7 @@
</span><span class="cx">                                 5185FC8F1BB4C4E80012898F /* IDBGetResult.h in Headers */,
</span><span class="cx">                                 5185FC911BB4C4E80012898F /* IDBIndex.h in Headers */,
</span><span class="cx">                                 51F798F01BE880E7008AE491 /* IDBIndexInfo.h in Headers */,
</span><ins>+                                51E269371DD3BD9B006B6A58 /* IDBIterateCursorData.h in Headers */,
</ins><span class="cx">                                 5185FC951BB4C4E80012898F /* IDBKey.h in Headers */,
</span><span class="cx">                                 5185FC971BB4C4E80012898F /* IDBKeyData.h in Headers */,
</span><span class="cx">                                 5185FC991BB4C4E80012898F /* IDBKeyPath.h in Headers */,
</span><span class="lines">@@ -26076,6 +26083,7 @@
</span><span class="cx">                                 A80E7E990A1A83E3007FB8C5 /* JSHTMLOptionElement.h in Headers */,
</span><span class="cx">                                 448A29BF0A46D9CB0030759F /* JSHTMLOptionsCollection.h in Headers */,
</span><span class="cx">                                 4AD0173D127E82860015035F /* JSHTMLOutputElement.h in Headers */,
</span><ins>+                                57D0018D1DD5413200ED19D9 /* JSCryptoKeyUsage.h in Headers */,
</ins><span class="cx">                                 1AE2ABA70A1CE90500B42B25 /* JSHTMLParagraphElement.h in Headers */,
</span><span class="cx">                                 1AE2ABA90A1CE90500B42B25 /* JSHTMLParamElement.h in Headers */,
</span><span class="cx">                                 BC3D85BC1C0E2E7A00D3B610 /* JSHTMLPictureElement.h in Headers */,
</span><span class="lines">@@ -26694,6 +26702,7 @@
</span><span class="cx">                                 51771DFF1BDB485000CAE8E4 /* MemoryObjectStore.h in Headers */,
</span><span class="cx">                                 517139061BF64DEC000D5F01 /* MemoryObjectStoreCursor.h in Headers */,
</span><span class="cx">                                 6571DCC81385E6A400702DD0 /* MemoryPressureHandler.h in Headers */,
</span><ins>+                                413E00791DB0E4F2002341D2 /* MemoryRelease.h in Headers */,
</ins><span class="cx">                                 93309DFA099E64920056E581 /* MergeIdenticalElementsCommand.h in Headers */,
</span><span class="cx">                                 E1ADECCE0E76AD8B004A1A5E /* MessageChannel.h in Headers */,
</span><span class="cx">                                 75793E840D0CE0B3007FC0AC /* MessageEvent.h in Headers */,
</span><span class="lines">@@ -26807,6 +26816,7 @@
</span><span class="cx">                                 933C7A751C0FBC440034FB97 /* NSSpellCheckerSPI.h in Headers */,
</span><span class="cx">                                 CE1252531A1BEC0600864480 /* NSStringSPI.h in Headers */,
</span><span class="cx">                                 2D77AC2B1BF2B9870072470A /* NSTextFinderSPI.h in Headers */,
</span><ins>+                                9335B49D1DCBEF7C00ED468E /* NSTouchBarSPI.h in Headers */,
</ins><span class="cx">                                 31B313DB1B69871600F2AABC /* NSURLConnectionSPI.h in Headers */,
</span><span class="cx">                                 CE1252551A1BEC0E00864480 /* NSURLDownloadSPI.h in Headers */,
</span><span class="cx">                                 658F540319A1C9240088FC92 /* NSURLFileTypeMappingsSPI.h in Headers */,
</span><span class="lines">@@ -27005,9 +27015,9 @@
</span><span class="cx">                                 F55B3DCE1251F12D003EF269 /* RangeInputType.h in Headers */,
</span><span class="cx">                                 6E84E9E117668BF100815B68 /* RasterShape.h in Headers */,
</span><span class="cx">                                 A84D827C11D333ED00972990 /* RawDataDocumentParser.h in Headers */,
</span><ins>+                                416E6FE81BBD12DF000A6043 /* ReadableByteStreamInternalsBuiltins.h in Headers */,
+                                416E6FE91BBD12E5000A6043 /* ReadableStreamBuiltins.h in Headers */,
</ins><span class="cx">                                 416E6FE81BBD12DF000A3F64 /* ReadableStreamInternalsBuiltins.h in Headers */,
</span><del>-                                416E6FE91BBD12E5000A6043 /* ReadableStreamBuiltins.h in Headers */,
-                                416E6FE81BBD12DF000A6043 /* ReadableByteStreamInternalsBuiltins.h in Headers */,
</del><span class="cx">                                 FD31603C12B0267600C1A359 /* RealtimeAnalyser.h in Headers */,
</span><span class="cx">                                 4A4F65711AA997F100E38CDD /* RealtimeMediaSource.h in Headers */,
</span><span class="cx">                                 4A4F65721AA997F100E38CDD /* RealtimeMediaSourceCapabilities.h in Headers */,
</span><span class="lines">@@ -28087,7 +28097,6 @@
</span><span class="cx">                                 1CAF34810A6C405200ABE06E /* WebScriptObject.h in Headers */,
</span><span class="cx">                                 1CAF34830A6C405200ABE06E /* WebScriptObjectPrivate.h in Headers */,
</span><span class="cx">                                 1A569D1B0D7E2B82007C3983 /* WebScriptObjectProtocol.h in Headers */,
</span><del>-                                9335B49D1DCBEF7C00ED468E /* NSTouchBarSPI.h in Headers */,
</del><span class="cx">                                 97AABD1B14FA09D5007457AE /* WebSocket.h in Headers */,
</span><span class="cx">                                 97AABD1E14FA09D5007457AE /* WebSocketChannel.h in Headers */,
</span><span class="cx">                                 97AABD1F14FA09D5007457AE /* WebSocketChannelClient.h in Headers */,
</span><span class="lines">@@ -28517,6 +28526,7 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                57D0018F1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp in Sources */,
</ins><span class="cx">                                 41E1B1D00FF5986900576B3B /* AbstractWorker.cpp in Sources */,
</span><span class="cx">                                 37F57AB91A50726900876F98 /* AccessibilityARIAGrid.cpp in Sources */,
</span><span class="cx">                                 37F57ABA1A50726F00876F98 /* AccessibilityARIAGridCell.cpp in Sources */,
</span><span class="lines">@@ -28724,7 +28734,6 @@
</span><span class="cx">                                 CDE8B5EC1A69777300B4B66A /* CDMPrivateClearKey.cpp in Sources */,
</span><span class="cx">                                 CDCA98EB18B2C8EB00C12FF9 /* CDMPrivateMediaPlayer.cpp in Sources */,
</span><span class="cx">                                 CD318622199F1E2A0030A0F7 /* CDMPrivateMediaSourceAVFObjC.mm in Sources */,
</span><del>-                                413E007C1DB0E70A002341D2 /* MemoryReleaseCocoa.mm in Sources */,
</del><span class="cx">                                 CDE595951BF16DF300A1CBE8 /* CDMSessionAVContentKeySession.mm in Sources */,
</span><span class="cx">                                 CDDE02ED18B3ED6D00CF7FF1 /* CDMSessionAVFoundationObjC.mm in Sources */,
</span><span class="cx">                                 CDDE02F018B5651300CF7FF1 /* CDMSessionAVStreamSession.mm in Sources */,
</span><span class="lines">@@ -29083,7 +29092,6 @@
</span><span class="cx">                                 FD6ED2C3136B8E42003CF072 /* DynamicsCompressorNode.cpp in Sources */,
</span><span class="cx">                                 93309DE3099E64920056E581 /* EditCommand.cpp in Sources */,
</span><span class="cx">                                 9BAB6C6D12550631001626D4 /* EditingStyle.cpp in Sources */,
</span><del>-                                51E269331DD3BC4E006B6A58 /* JSIDBTransactionCustom.cpp in Sources */,
</del><span class="cx">                                 4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */,
</span><span class="cx">                                 9B55EEE91B3E8898005342BC /* EditorCocoa.mm in Sources */,
</span><span class="cx">                                 93A38B4B0D0E5808006872C2 /* EditorCommand.cpp in Sources */,
</span><span class="lines">@@ -29435,6 +29443,7 @@
</span><span class="cx">                                 512F1A781C07EB6600908239 /* IDBGetResult.cpp in Sources */,
</span><span class="cx">                                 5185FC901BB4C4E80012898F /* IDBIndex.cpp in Sources */,
</span><span class="cx">                                 51F798EF1BE880E7008AE491 /* IDBIndexInfo.cpp in Sources */,
</span><ins>+                                51E269361DD3BD97006B6A58 /* IDBIterateCursorData.cpp in Sources */,
</ins><span class="cx">                                 5185FC941BB4C4E80012898F /* IDBKey.cpp in Sources */,
</span><span class="cx">                                 5185FC961BB4C4E80012898F /* IDBKeyData.cpp in Sources */,
</span><span class="cx">                                 5185FC981BB4C4E80012898F /* IDBKeyPath.cpp in Sources */,
</span><span class="lines">@@ -29873,6 +29882,7 @@
</span><span class="cx">                                 511EF2C917F0FD3500E4FA16 /* JSIDBRequest.cpp in Sources */,
</span><span class="cx">                                 934F31B51CC0737200DB43DC /* JSIDBRequestCustom.cpp in Sources */,
</span><span class="cx">                                 511EF2CA17F0FD3500E4FA16 /* JSIDBTransaction.cpp in Sources */,
</span><ins>+                                51E269331DD3BC4E006B6A58 /* JSIDBTransactionCustom.cpp in Sources */,
</ins><span class="cx">                                 838EF53B1DC14A7C008F0C39 /* JSIDBTransactionMode.cpp in Sources */,
</span><span class="cx">                                 511EF2CB17F0FD3500E4FA16 /* JSIDBVersionChangeEvent.cpp in Sources */,
</span><span class="cx">                                 BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */,
</span><span class="lines">@@ -30268,7 +30278,6 @@
</span><span class="cx">                                 6F995A371A70833700A735F4 /* JSWebGLTransformFeedback.cpp in Sources */,
</span><span class="cx">                                 0C45342710CDBBFA00869157 /* JSWebGLUniformLocation.cpp in Sources */,
</span><span class="cx">                                 6F995A391A70833700A735F4 /* JSWebGLVertexArrayObject.cpp in Sources */,
</span><del>-                                51E269361DD3BD97006B6A58 /* IDBIterateCursorData.cpp in Sources */,
</del><span class="cx">                                 77EF62F312F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp in Sources */,
</span><span class="cx">                                 31C0FF3D0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp in Sources */,
</span><span class="cx">                                 4983913F0F1E767500C23782 /* JSWebKitCSSMatrix.cpp in Sources */,
</span><span class="lines">@@ -30476,7 +30485,6 @@
</span><span class="cx">                                 078E090317D14CEE00420AA1 /* MediaStreamTrackEvent.cpp in Sources */,
</span><span class="cx">                                 07FFDE68181AED420072D409 /* MediaStreamTrackPrivate.cpp in Sources */,
</span><span class="cx">                                 CD641EBF1819B36000EE4C41 /* MediaTimeAVFoundation.cpp in Sources */,
</span><del>-                                413E007A1DB0E4F9002341D2 /* MemoryRelease.cpp in Sources */,
</del><span class="cx">                                 CD60C0C6193E87C7003C656B /* MediaTimeQTKit.mm in Sources */,
</span><span class="cx">                                 0705853A17FE0770005F2BCB /* MediaTrackConstraint.cpp in Sources */,
</span><span class="cx">                                 0705852317FDC140005F2BCB /* MediaTrackConstraints.cpp in Sources */,
</span><span class="lines">@@ -30492,6 +30500,8 @@
</span><span class="cx">                                 517139051BF64DEC000D5F01 /* MemoryObjectStoreCursor.cpp in Sources */,
</span><span class="cx">                                 657EDA081385CB97004E0645 /* MemoryPressureHandler.cpp in Sources */,
</span><span class="cx">                                 ADB6B29818FB90240081963E /* MemoryPressureHandlerCocoa.mm in Sources */,
</span><ins>+                                413E007A1DB0E4F9002341D2 /* MemoryRelease.cpp in Sources */,
+                                413E007C1DB0E70A002341D2 /* MemoryReleaseCocoa.mm in Sources */,
</ins><span class="cx">                                 93309DF9099E64920056E581 /* MergeIdenticalElementsCommand.cpp in Sources */,
</span><span class="cx">                                 E1ADECCF0E76AD8B004A1A5E /* MessageChannel.cpp in Sources */,
</span><span class="cx">                                 75793E830D0CE0B3007FC0AC /* MessageEvent.cpp in Sources */,
</span><span class="lines">@@ -31146,6 +31156,7 @@
</span><span class="cx">                                 24D912B013CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp in Sources */,
</span><span class="cx">                                 65653F2D0D9727D200CA9723 /* SVGAltGlyphElement.cpp in Sources */,
</span><span class="cx">                                 24D912B713CA9A6900D21915 /* SVGAltGlyphItemElement.cpp in Sources */,
</span><ins>+                                7C8F22441DD3C2F600E92DA3 /* SVGAngleValue.cpp in Sources */,
</ins><span class="cx">                                 B22279790D00BF220071B782 /* SVGAnimateColorElement.cpp in Sources */,
</span><span class="cx">                                 4362C7B913AC6F1A00344BEB /* SVGAnimatedAngle.cpp in Sources */,
</span><span class="cx">                                 431A308813B8F978007791E4 /* SVGAnimatedBoolean.cpp in Sources */,
</span><span class="lines">@@ -31349,7 +31360,6 @@
</span><span class="cx">                                 CECADFCD1537791D00E37068 /* TextInsertionBaseCommand.cpp in Sources */,
</span><span class="cx">                                 93309E1B099E64920056E581 /* TextIterator.cpp in Sources */,
</span><span class="cx">                                 E4D988B617BFEB210084FB88 /* TextNodeTraversal.cpp in Sources */,
</span><del>-                                7C8F22441DD3C2F600E92DA3 /* SVGAngleValue.cpp in Sources */,
</del><span class="cx">                                 1C18DA58181AF6A500C4EF22 /* TextPainter.cpp in Sources */,
</span><span class="cx">                                 E4C91A101802343900A17F6D /* TextPaintStyle.cpp in Sources */,
</span><span class="cx">                                 93F19A9D08245E59001E9ABC /* TextResourceDecoder.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoKeySerializationJWKcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -269,7 +269,7 @@
</span><span class="cx">     return CryptoAlgorithmPair { suggestedAlgorithm, suggestedParameters };
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool tryJWKKeyOpsValue(ExecState* exec, CryptoKeyUsage&amp; usages, const String&amp; operation, const String&amp; tryOperation, CryptoKeyUsage tryUsage)
</del><ins>+static bool tryJWKKeyOpsValue(ExecState* exec, CryptoKeyUsageBitmap&amp; usages, const String&amp; operation, const String&amp; tryOperation, CryptoKeyUsageBitmap tryUsage)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -284,12 +284,12 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSCryptoKeySerializationJWK::reconcileUsages(CryptoKeyUsage&amp; suggestedUsages) const
</del><ins>+void JSCryptoKeySerializationJWK::reconcileUsages(CryptoKeyUsageBitmap&amp; suggestedUsages) const
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = m_exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><del>-    CryptoKeyUsage jwkUsages = 0;
</del><ins>+    CryptoKeyUsageBitmap jwkUsages = 0;
</ins><span class="cx"> 
</span><span class="cx">     JSArray* keyOps;
</span><span class="cx">     if (getJSArrayFromJSON(m_exec, m_json.get(), &quot;key_ops&quot;, keyOps)) {
</span><span class="lines">@@ -686,7 +686,7 @@
</span><span class="cx">     addToJSON(exec, json, &quot;alg&quot;, jwkAlgorithm);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void addUsagesToJSON(ExecState* exec, JSObject* json, CryptoKeyUsage usages)
</del><ins>+static void addUsagesToJSON(ExecState* exec, JSObject* json, CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoKeySerializationJWKh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> private:
</span><span class="cx">     Optional&lt;CryptoAlgorithmPair&gt; reconcileAlgorithm(CryptoAlgorithm*, CryptoAlgorithmParametersDeprecated*) const override;
</span><span class="cx"> 
</span><del>-    void reconcileUsages(CryptoKeyUsage&amp;) const override;
</del><ins>+    void reconcileUsages(CryptoKeyUsageBitmap&amp;) const override;
</ins><span class="cx">     void reconcileExtractable(bool&amp;) const override;
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;CryptoKeyData&gt; keyData() const override;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -194,48 +194,43 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static CryptoKeyUsage cryptoKeyUsageFromString(const String&amp; usageString)
</del><ins>+static CryptoKeyUsageBitmap toCryptoKeyUsageBitmap(const CryptoKeyUsage usage)
</ins><span class="cx"> {
</span><del>-    CryptoKeyUsage result = 0;
-    if (usageString == &quot;encrypt&quot;)
-        result = CryptoKeyUsageEncrypt;
-    else if (usageString == &quot;decrypt&quot;)
-        result = CryptoKeyUsageDecrypt;
-    else if (usageString == &quot;sign&quot;)
-        result = CryptoKeyUsageSign;
-    else if (usageString == &quot;verify&quot;)
-        result = CryptoKeyUsageVerify;
-    else if (usageString == &quot;deriveKey&quot;)
-        result = CryptoKeyUsageDeriveKey;
-    else if (usageString == &quot;deriveBits&quot;)
-        result = CryptoKeyUsageDeriveBits;
-    else if (usageString == &quot;wrapKey&quot;)
-        result = CryptoKeyUsageWrapKey;
-    else if (usageString == &quot;unwrapKey&quot;)
-        result = CryptoKeyUsageUnwrapKey;
</del><ins>+    switch (usage) {
+    case CryptoKeyUsage::Encrypt:
+        return CryptoKeyUsageEncrypt;
+    case CryptoKeyUsage::Decrypt:
+        return CryptoKeyUsageDecrypt;
+    case CryptoKeyUsage::Sign:
+        return CryptoKeyUsageSign;
+    case CryptoKeyUsage::Verify:
+        return CryptoKeyUsageVerify;
+    case CryptoKeyUsage::DeriveKey:
+        return CryptoKeyUsageDeriveKey;
+    case CryptoKeyUsage::DeriveBits:
+        return CryptoKeyUsageDeriveBits;
+    case CryptoKeyUsage::WrapKey:
+        return CryptoKeyUsageWrapKey;
+    case CryptoKeyUsage::UnwrapKey:
+        return CryptoKeyUsageUnwrapKey;
+    }
</ins><span class="cx"> 
</span><del>-    return result;
</del><ins>+    ASSERT_NOT_REACHED();
+    return 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static CryptoKeyUsage cryptoKeyUsagesFromJSValue(ExecState&amp; state, JSValue iterable)
</del><ins>+static CryptoKeyUsageBitmap cryptoKeyUsageBitmapFromJSValue(ExecState&amp; state, JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state.vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><del>-    CryptoKeyUsage result = 0;
-    forEachInIterable(&amp;state, iterable, [&amp;result](VM&amp; vm, ExecState* state, JSValue nextItem) {
-        auto scope = DECLARE_THROW_SCOPE(vm);
</del><ins>+    CryptoKeyUsageBitmap result = 0;
+    auto usages = convert&lt;IDLSequence&lt;IDLEnumeration&lt;CryptoKeyUsage&gt;&gt;&gt;(state, value);
+    RETURN_IF_EXCEPTION(scope, 0);
+    // Maybe we shouldn't silently bypass duplicated usages?
+    for (auto usage : usages)
+        result |= toCryptoKeyUsageBitmap(usage);
</ins><span class="cx"> 
</span><del>-        String usageString = nextItem.toWTFString(state);
-        RETURN_IF_EXCEPTION(scope, void());
-        CryptoKeyUsage usage = cryptoKeyUsageFromString(usageString);
-        if (!usage)
-            throwTypeError(state, scope, ASCIILiteral(&quot;Invalid KeyUsages&quot;));
-
-        // Maybe we shouldn't silently bypass duplicated usages?
-        result |= usage;
-    });
-    RETURN_IF_EXCEPTION(scope, 0);
</del><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -298,15 +293,11 @@
</span><span class="cx">     case SubtleCrypto::KeyFormat::Jwk: {
</span><span class="cx">         result = convertDictionary&lt;JsonWebKey&gt;(state, value);
</span><span class="cx">         RETURN_IF_EXCEPTION(scope, result);
</span><del>-        CryptoKeyUsage usages = 0;
</del><ins>+        CryptoKeyUsageBitmap usages = 0;
</ins><span class="cx">         if (WTF::get&lt;JsonWebKey&gt;(result).key_ops) {
</span><del>-            for (auto usageString : WTF::get&lt;JsonWebKey&gt;(result).key_ops.value()) {
-                CryptoKeyUsage usage = cryptoKeyUsageFromString(usageString);
-                if (!usage)
-                    throwTypeError(&amp;state, scope, ASCIILiteral(&quot;Invalid key_ops&quot;));
-                // Maybe we shouldn't silently bypass duplicated usages?
-                usages |= cryptoKeyUsageFromString(usageString);
-            }
</del><ins>+            // Maybe we shouldn't silently bypass duplicated usages?
+            for (auto usage : WTF::get&lt;JsonWebKey&gt;(result).key_ops.value())
+                usages |= toCryptoKeyUsageBitmap(usage);
</ins><span class="cx">         }
</span><span class="cx">         WTF::get&lt;JsonWebKey&gt;(result).usages = usages;
</span><span class="cx">         return result;
</span><span class="lines">@@ -332,7 +323,7 @@
</span><span class="cx">     auto extractable = state.uncheckedArgument(1).toBoolean(&amp;state);
</span><span class="cx">     RETURN_IF_EXCEPTION(scope, void());
</span><span class="cx"> 
</span><del>-    auto keyUsages = cryptoKeyUsagesFromJSValue(state, state.uncheckedArgument(2));
</del><ins>+    auto keyUsages = cryptoKeyUsageBitmapFromJSValue(state, state.uncheckedArgument(2));
</ins><span class="cx">     RETURN_IF_EXCEPTION(scope, void());
</span><span class="cx"> 
</span><span class="cx">     auto algorithm = createAlgorithm(state, params-&gt;identifier);
</span><span class="lines">@@ -387,7 +378,7 @@
</span><span class="cx">     auto extractable = state.uncheckedArgument(3).toBoolean(&amp;state);
</span><span class="cx">     RETURN_IF_EXCEPTION(scope, void());
</span><span class="cx"> 
</span><del>-    auto keyUsages = cryptoKeyUsagesFromJSValue(state, state.uncheckedArgument(4));
</del><ins>+    auto keyUsages = cryptoKeyUsageBitmapFromJSValue(state, state.uncheckedArgument(4));
</ins><span class="cx">     RETURN_IF_EXCEPTION(scope, void());
</span><span class="cx"> 
</span><span class="cx">     auto algorithm = createAlgorithm(state, params-&gt;identifier);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -101,7 +101,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool cryptoKeyUsagesFromJSValue(ExecState&amp; state, JSValue value, CryptoKeyUsage&amp; result)
</del><ins>+static bool cryptoKeyUsagesFromJSValue(ExecState&amp; state, JSValue value, CryptoKeyUsageBitmap&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state.vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -423,7 +423,7 @@
</span><span class="cx">         RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    CryptoKeyUsage keyUsages = 0;
</del><ins>+    CryptoKeyUsageBitmap keyUsages = 0;
</ins><span class="cx">     if (state.argumentCount() &gt;= 3) {
</span><span class="cx">         auto success = cryptoKeyUsagesFromJSValue(state, state.argument(2), keyUsages);
</span><span class="cx">         ASSERT(scope.exception() || success);
</span><span class="lines">@@ -455,7 +455,7 @@
</span><span class="cx">     return promise;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void importKey(ExecState&amp; state, CryptoKeyFormat keyFormat, CryptoOperationData data, RefPtr&lt;CryptoAlgorithm&gt; algorithm, RefPtr&lt;CryptoAlgorithmParametersDeprecated&gt; parameters, bool extractable, CryptoKeyUsage keyUsages, CryptoAlgorithm::KeyCallback callback, CryptoAlgorithm::VoidCallback failureCallback)
</del><ins>+static void importKey(ExecState&amp; state, CryptoKeyFormat keyFormat, CryptoOperationData data, RefPtr&lt;CryptoAlgorithm&gt; algorithm, RefPtr&lt;CryptoAlgorithmParametersDeprecated&gt; parameters, bool extractable, CryptoKeyUsageBitmap keyUsages, CryptoAlgorithm::KeyCallback callback, CryptoAlgorithm::VoidCallback failureCallback)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state.vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -553,7 +553,7 @@
</span><span class="cx">         RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    CryptoKeyUsage keyUsages = 0;
</del><ins>+    CryptoKeyUsageBitmap keyUsages = 0;
</ins><span class="cx">     if (state.argumentCount() &gt;= 5) {
</span><span class="cx">         auto success = cryptoKeyUsagesFromJSValue(state, state.argument(4), keyUsages);
</span><span class="cx">         ASSERT(scope.exception() || success);
</span><span class="lines">@@ -772,7 +772,7 @@
</span><span class="cx">         RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    CryptoKeyUsage keyUsages = 0;
</del><ins>+    CryptoKeyUsageBitmap keyUsages = 0;
</ins><span class="cx">     if (state.argumentCount() &gt;= 7) {
</span><span class="cx">         auto success = cryptoKeyUsagesFromJSValue(state, state.argument(6), keyUsages);
</span><span class="cx">         ASSERT(scope.exception() || success);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsSerializedScriptValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -229,7 +229,7 @@
</span><span class="cx"> };
</span><span class="cx"> const uint8_t cryptoAlgorithmIdentifierTagMaximumValue = 21;
</span><span class="cx"> 
</span><del>-static unsigned countUsages(CryptoKeyUsage usages)
</del><ins>+static unsigned countUsages(CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     // Fast bit count algorithm for sparse bit maps.
</span><span class="cx">     unsigned count = 0;
</span><span class="lines">@@ -1158,7 +1158,7 @@
</span><span class="cx"> 
</span><span class="cx">         write(key-&gt;extractable());
</span><span class="cx"> 
</span><del>-        CryptoKeyUsage usages = key-&gt;usagesBitmap();
</del><ins>+        CryptoKeyUsageBitmap usages = key-&gt;usagesBitmap();
</ins><span class="cx">         write(countUsages(usages));
</span><span class="cx">         if (usages &amp; CryptoKeyUsageEncrypt)
</span><span class="cx">             write(CryptoKeyUsageTag::Encrypt);
</span><span class="lines">@@ -2000,7 +2000,7 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool readHMACKey(bool extractable, CryptoKeyUsage usages, RefPtr&lt;CryptoKey&gt;&amp; result)
</del><ins>+    bool readHMACKey(bool extractable, CryptoKeyUsageBitmap usages, RefPtr&lt;CryptoKey&gt;&amp; result)
</ins><span class="cx">     {
</span><span class="cx">         Vector&lt;uint8_t&gt; keyData;
</span><span class="cx">         if (!read(keyData))
</span><span class="lines">@@ -2012,7 +2012,7 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool readAESKey(bool extractable, CryptoKeyUsage usages, RefPtr&lt;CryptoKey&gt;&amp; result)
</del><ins>+    bool readAESKey(bool extractable, CryptoKeyUsageBitmap usages, RefPtr&lt;CryptoKey&gt;&amp; result)
</ins><span class="cx">     {
</span><span class="cx">         CryptoAlgorithmIdentifier algorithm;
</span><span class="cx">         if (!read(algorithm))
</span><span class="lines">@@ -2026,7 +2026,7 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool readRSAKey(bool extractable, CryptoKeyUsage usages, RefPtr&lt;CryptoKey&gt;&amp; result)
</del><ins>+    bool readRSAKey(bool extractable, CryptoKeyUsageBitmap usages, RefPtr&lt;CryptoKey&gt;&amp; result)
</ins><span class="cx">     {
</span><span class="cx">         CryptoAlgorithmIdentifier algorithm;
</span><span class="cx">         if (!read(algorithm))
</span><span class="lines">@@ -2118,7 +2118,7 @@
</span><span class="cx">         if (!read(usagesCount))
</span><span class="cx">             return false;
</span><span class="cx"> 
</span><del>-        CryptoKeyUsage usages = 0;
</del><ins>+        CryptoKeyUsageBitmap usages = 0;
</ins><span class="cx">         for (uint32_t i = 0; i &lt; usagesCount; ++i) {
</span><span class="cx">             CryptoKeyUsageTag usage;
</span><span class="cx">             if (!read(usage))
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -40,12 +40,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithm::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithm::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     exceptionCallback(NOT_SUPPORTED_ERR);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithm::importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp; exceptionCallback)
</del><ins>+void CryptoAlgorithm::importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp; exceptionCallback)
</ins><span class="cx"> {
</span><span class="cx">     exceptionCallback(NOT_SUPPORTED_ERR);
</span><span class="cx"> }
</span><span class="lines">@@ -75,12 +75,12 @@
</span><span class="cx">     ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithm::generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp;, ExceptionCode&amp; ec, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithm::generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp;, ExceptionCode&amp; ec, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithm::deriveKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, CryptoAlgorithm*, bool, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</del><ins>+void CryptoAlgorithm::deriveKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, CryptoAlgorithm*, bool, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> }
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx">     ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithm::importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</del><ins>+void CryptoAlgorithm::importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoAlgorithm.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithm.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithm.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -67,8 +67,8 @@
</span><span class="cx">     using VoidCallback = WTF::Function&lt;void()&gt;;
</span><span class="cx">     using ExceptionCallback = WTF::Function&lt;void(ExceptionCode)&gt;;
</span><span class="cx"> 
</span><del>-    virtual void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*);
-    virtual void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;);
</del><ins>+    virtual void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*);
+    virtual void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // The following will be deprecated.
</span><span class="cx">     virtual void encrypt(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</span><span class="lines">@@ -76,10 +76,10 @@
</span><span class="cx">     virtual void sign(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</span><span class="cx">     virtual void verify(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp; signature, const CryptoOperationData&amp;, BoolCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</span><span class="cx">     virtual void digest(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</span><del>-    virtual void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*);
-    virtual void deriveKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp; baseKey, CryptoAlgorithm* derivedKeyType, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</del><ins>+    virtual void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*);
+    virtual void deriveKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp; baseKey, CryptoAlgorithm* derivedKeyType, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</ins><span class="cx">     virtual void deriveBits(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp; baseKey, unsigned long length, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</span><del>-    virtual void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</del><ins>+    virtual void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // These are only different from encrypt/decrypt because some algorithms may not expose encrypt/decrypt.
</span><span class="cx">     virtual void encryptForWrapKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoKey.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKey.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/CryptoKey.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-CryptoKey::CryptoKey(CryptoAlgorithmIdentifier algorithmIdentifier, Type type, bool extractable, CryptoKeyUsage usages)
</del><ins>+CryptoKey::CryptoKey(CryptoAlgorithmIdentifier algorithmIdentifier, Type type, bool extractable, CryptoKeyUsageBitmap usages)
</ins><span class="cx">     : m_algorithmIdentifier(algorithmIdentifier)
</span><span class="cx">     , m_type(type)
</span><span class="cx">     , m_extractable(extractable)
</span><span class="lines">@@ -45,26 +45,26 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-auto CryptoKey::usages() const -&gt; Vector&lt;Usage&gt;
</del><ins>+auto CryptoKey::usages() const -&gt; Vector&lt;CryptoKeyUsage&gt;
</ins><span class="cx"> {
</span><span class="cx">     // The result is ordered alphabetically.
</span><del>-    Vector&lt;Usage&gt; result;
</del><ins>+    Vector&lt;CryptoKeyUsage&gt; result;
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageDecrypt)
</span><del>-        result.append(Usage::Decrypt);
</del><ins>+        result.append(CryptoKeyUsage::Decrypt);
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageDeriveBits)
</span><del>-        result.append(Usage::DeriveBits);
</del><ins>+        result.append(CryptoKeyUsage::DeriveBits);
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageDeriveKey)
</span><del>-        result.append(Usage::DeriveKey);
</del><ins>+        result.append(CryptoKeyUsage::DeriveKey);
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageEncrypt)
</span><del>-        result.append(Usage::Encrypt);
</del><ins>+        result.append(CryptoKeyUsage::Encrypt);
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageSign)
</span><del>-        result.append(Usage::Sign);
</del><ins>+        result.append(CryptoKeyUsage::Sign);
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageUnwrapKey)
</span><del>-        result.append(Usage::UnwrapKey);
</del><ins>+        result.append(CryptoKeyUsage::UnwrapKey);
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageVerify)
</span><del>-        result.append(Usage::Verify);
</del><ins>+        result.append(CryptoKeyUsage::Verify);
</ins><span class="cx">     if (m_usages &amp; CryptoKeyUsageWrapKey)
</span><del>-        result.append(Usage::WrapKey);
</del><ins>+        result.append(CryptoKeyUsage::WrapKey);
</ins><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoKey.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKey.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/CryptoKey.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx"> class CryptoKey : public RefCounted&lt;CryptoKey&gt; {
</span><span class="cx"> public:
</span><span class="cx">     using Type = CryptoKeyType;
</span><del>-    CryptoKey(CryptoAlgorithmIdentifier, Type, bool extractable, CryptoKeyUsage);
</del><ins>+    CryptoKey(CryptoAlgorithmIdentifier, Type, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx">     virtual ~CryptoKey();
</span><span class="cx"> 
</span><span class="cx">     virtual CryptoKeyClass keyClass() const = 0;
</span><span class="lines">@@ -87,16 +87,13 @@
</span><span class="cx">     bool extractable() const { return m_extractable; }
</span><span class="cx">     virtual std::unique_ptr&lt;KeyAlgorithm&gt; buildAlgorithm() const = 0;
</span><span class="cx"> 
</span><del>-    // FIXME: Confusing to have CryptoKeyUsage and CryptoKey::Usage named almost the same, but be slightly different.
-    // CryptoKeyUsage values are bit masks so they can be combined with &quot;or&quot;, while this is a normal enum that must
-    // match what is defined in the IDL. Maybe we can rename CryptoKeyUsage to CryptoKey::UsagesBitmap?
-    enum class Usage { Encrypt, Decrypt, Sign, Verify, DeriveKey, DeriveBits, WrapKey, UnwrapKey };
-    Vector&lt;Usage&gt; usages() const;
</del><ins>+    // Only for binding purpose.
+    Vector&lt;CryptoKeyUsage&gt; usages() const;
</ins><span class="cx"> 
</span><span class="cx">     CryptoAlgorithmIdentifier algorithmIdentifier() const { return m_algorithmIdentifier; }
</span><del>-    CryptoKeyUsage usagesBitmap() const { return m_usages; }
-    void setUsagesBitmap(CryptoKeyUsage usage) { m_usages = usage; };
-    bool allows(CryptoKeyUsage usage) const { return usage == (m_usages &amp; usage); }
</del><ins>+    CryptoKeyUsageBitmap usagesBitmap() const { return m_usages; }
+    void setUsagesBitmap(CryptoKeyUsageBitmap usage) { m_usages = usage; };
+    bool allows(CryptoKeyUsageBitmap usage) const { return usage == (m_usages &amp; usage); }
</ins><span class="cx"> 
</span><span class="cx">     virtual std::unique_ptr&lt;CryptoKeyData&gt; exportData() const = 0;
</span><span class="cx"> 
</span><span class="lines">@@ -106,7 +103,7 @@
</span><span class="cx">     CryptoAlgorithmIdentifier m_algorithmIdentifier;
</span><span class="cx">     Type m_type;
</span><span class="cx">     bool m_extractable;
</span><del>-    CryptoKeyUsage m_usages;
</del><ins>+    CryptoKeyUsageBitmap m_usages;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline auto CryptoKey::type() const -&gt; Type
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeyidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoKey.idl (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKey.idl        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/CryptoKey.idl        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -29,17 +29,6 @@
</span><span class="cx">     &quot;secret&quot;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-enum KeyUsage {
-    &quot;encrypt&quot;,
-    &quot;decrypt&quot;,
-    &quot;sign&quot;,
-    &quot;verify&quot;,
-    &quot;deriveKey&quot;,
-    &quot;deriveBits&quot;,
-    &quot;wrapKey&quot;,
-    &quot;unwrapKey&quot;
-};
-
</del><span class="cx"> [
</span><span class="cx">     Conditional=SUBTLE_CRYPTO,
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="lines">@@ -49,5 +38,5 @@
</span><span class="cx">     readonly attribute KeyType type;
</span><span class="cx">     readonly attribute boolean extractable;
</span><span class="cx">     [CachedAttribute, CustomGetter] readonly attribute object algorithm;
</span><del>-    [CachedAttribute] readonly attribute sequence&lt;KeyUsage&gt; usages;
</del><ins>+    [CachedAttribute] readonly attribute sequence&lt;CryptoKeyUsage&gt; usages;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeySerializationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoKeySerialization.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKeySerialization.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/CryptoKeySerialization.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">     // Returns false if suggested algorithm was not compatible with one stored in the serialization.
</span><span class="cx">     virtual Optional&lt;CryptoAlgorithmPair&gt; reconcileAlgorithm(CryptoAlgorithm*, CryptoAlgorithmParametersDeprecated*) const = 0;
</span><span class="cx"> 
</span><del>-    virtual void reconcileUsages(CryptoKeyUsage&amp;) const = 0;
</del><ins>+    virtual void reconcileUsages(CryptoKeyUsageBitmap&amp;) const = 0;
</ins><span class="cx">     virtual void reconcileExtractable(bool&amp;) const = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual std::unique_ptr&lt;CryptoKeyData&gt; keyData() const = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeyUsageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoKeyUsage.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKeyUsage.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/CryptoKeyUsage.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -41,8 +41,20 @@
</span><span class="cx">     CryptoKeyUsageUnwrapKey = 1 &lt;&lt; 7
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-typedef int CryptoKeyUsage;
</del><ins>+typedef int CryptoKeyUsageBitmap;
</ins><span class="cx"> 
</span><ins>+// Only for binding purpose.
+enum class CryptoKeyUsage {
+    Encrypt,
+    Decrypt,
+    Sign,
+    Verify,
+    DeriveKey,
+    DeriveBits,
+    WrapKey,
+    UnwrapKey
+};
+
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeyUsageidlfromrev208601trunkSourceWebCorecryptoCryptoKeyidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/CryptoKeyUsage.idl (from rev 208601, trunk/Source/WebCore/crypto/CryptoKey.idl) (0 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKeyUsage.idl                                (rev 0)
+++ trunk/Source/WebCore/crypto/CryptoKeyUsage.idl        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -0,0 +1,37 @@
</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.
+ */
+
+[
+    Conditional=SUBTLE_CRYPTO,
+] enum CryptoKeyUsage {
+    &quot;encrypt&quot;,
+    &quot;decrypt&quot;,
+    &quot;sign&quot;,
+    &quot;verify&quot;,
+    &quot;deriveKey&quot;,
+    &quot;deriveBits&quot;,
+    &quot;wrapKey&quot;,
+    &quot;unwrapKey&quot;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoJsonWebKeyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/JsonWebKey.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/JsonWebKey.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/JsonWebKey.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -37,8 +37,8 @@
</span><span class="cx">     String kty;
</span><span class="cx">     Optional&lt;String&gt; use;
</span><span class="cx">     // FIXME: Consider merging key_ops and usages.
</span><del>-    Optional&lt;Vector&lt;String&gt;&gt; key_ops;
-    CryptoKeyUsage usages;
</del><ins>+    Optional&lt;Vector&lt;CryptoKeyUsage&gt;&gt; key_ops;
+    CryptoKeyUsageBitmap usages;
</ins><span class="cx">     Optional&lt;String&gt; alg;
</span><span class="cx"> 
</span><span class="cx">     Optional&lt;bool&gt; ext;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoJsonWebKeyidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/JsonWebKey.idl (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/JsonWebKey.idl        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/JsonWebKey.idl        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     // The following fields are defined in Section 3.1 of JSON Web Key
</span><span class="cx">     required DOMString kty;
</span><span class="cx">     DOMString use;
</span><del>-    sequence&lt;DOMString&gt; key_ops;
</del><ins>+    sequence&lt;CryptoKeyUsage&gt; key_ops;
</ins><span class="cx">     DOMString alg;
</span><span class="cx"> 
</span><span class="cx">     // The following fields are defined in JSON Web Key Parameters Registration
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoSubtleCryptoidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/SubtleCrypto.idl (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/SubtleCrypto.idl        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/SubtleCrypto.idl        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -32,6 +32,6 @@
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx"> ] interface SubtleCrypto {
</span><span class="cx">     // FIXME: Should this return a Promise&lt;(CryptoKey or CryptoKeyPair)&gt;?
</span><del>-    [Custom] Promise&lt;any&gt; generateKey(AlgorithmIdentifier algorithm, boolean extractable, sequence&lt;KeyUsage&gt; keyUsages);
-    [Custom] Promise&lt;CryptoKey&gt; importKey(KeyFormat format, (BufferSource or JsonWebKey) keyData, AlgorithmIdentifier algorithm, boolen extractable, sequence&lt;KeyUsage&gt; keyUsages);
</del><ins>+    [Custom] Promise&lt;any&gt; generateKey(AlgorithmIdentifier algorithm, boolean extractable, sequence&lt;CryptoKeyUsage&gt; keyUsages);
+    [Custom] Promise&lt;CryptoKey&gt; importKey(KeyFormat format, (BufferSource or JsonWebKey) keyData, AlgorithmIdentifier algorithm, boolen extractable, sequence&lt;CryptoKeyUsage&gt; keyUsages);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> 
</span><span class="cx"> const char* const CryptoAlgorithmAES_CBC::s_name = &quot;AES-CBC&quot;;
</span><span class="cx"> 
</span><del>-static inline bool usagesAreInvalidForCryptoAlgorithmAES_CBC(CryptoKeyUsage usages)
</del><ins>+static inline bool usagesAreInvalidForCryptoAlgorithmAES_CBC(CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     return usages &amp; (CryptoKeyUsageSign | CryptoKeyUsageVerify | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits);
</span><span class="cx"> }
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_CBC::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithmAES_CBC::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; aesParameters = downcast&lt;CryptoAlgorithmAesKeyGenParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx">     callback(result.get(), nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_CBC::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</del><ins>+void CryptoAlgorithmAES_CBC::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</ins><span class="cx"> {
</span><span class="cx">     if (usagesAreInvalidForCryptoAlgorithmAES_CBC(usages)) {
</span><span class="cx">         exceptionCallback(SYNTAX_ERR);
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx">     platformDecrypt(aesCBCParameters, downcast&lt;CryptoKeyAES&gt;(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_CBC::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithmAES_CBC::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmAesKeyGenParamsDeprecated&amp; aesParameters = downcast&lt;CryptoAlgorithmAesKeyGenParamsDeprecated&gt;(parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx">     callback(result.get(), nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_CBC::importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</del><ins>+void CryptoAlgorithmAES_CBC::importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!is&lt;CryptoKeyDataOctetSequence&gt;(keyData)) {
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -44,14 +44,14 @@
</span><span class="cx"> 
</span><span class="cx">     CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx"> 
</span><del>-    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
-    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</del><ins>+    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
+    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     // The following will be deprecated.
</span><span class="cx">     void encrypt(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><span class="cx">     void decrypt(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><del>-    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
-    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</del><ins>+    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
+    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CryptoAlgorithmAES_CBC();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> const char* const CryptoAlgorithmAES_KW::s_name = &quot;AES-KW&quot;;
</span><span class="cx"> 
</span><del>-static inline bool usagesAreInvalidForCryptoAlgorithmAES_KW(CryptoKeyUsage usages)
</del><ins>+static inline bool usagesAreInvalidForCryptoAlgorithmAES_KW(CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     return usages &amp; (CryptoKeyUsageSign | CryptoKeyUsageVerify | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits | CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt);
</span><span class="cx"> }
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_KW::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithmAES_KW::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; aesParameters = downcast&lt;CryptoAlgorithmAesKeyGenParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">     callback(result.get(), nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_KW::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</del><ins>+void CryptoAlgorithmAES_KW::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</ins><span class="cx"> {
</span><span class="cx">     if (usagesAreInvalidForCryptoAlgorithmAES_KW(usages)) {
</span><span class="cx">         exceptionCallback(SYNTAX_ERR);
</span><span class="lines">@@ -147,7 +147,7 @@
</span><span class="cx">     platformDecrypt(downcast&lt;CryptoKeyAES&gt;(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_KW::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithmAES_KW::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmAesKeyGenParamsDeprecated&amp; aesParameters = downcast&lt;CryptoAlgorithmAesKeyGenParamsDeprecated&gt;(parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx">     callback(result.get(), nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmAES_KW::importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</del><ins>+void CryptoAlgorithmAES_KW::importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!is&lt;CryptoKeyDataOctetSequence&gt;(keyData)) {
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -43,14 +43,14 @@
</span><span class="cx"> 
</span><span class="cx">     CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx"> 
</span><del>-    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
-    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</del><ins>+    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
+    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     // The following will be deprecated.
</span><span class="cx">     void encryptForWrapKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><span class="cx">     void decryptForUnwrapKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><del>-    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
-    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</del><ins>+    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
+    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CryptoAlgorithmAES_KW();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> 
</span><span class="cx"> const char* const CryptoAlgorithmHMAC::s_name = &quot;HMAC&quot;;
</span><span class="cx"> 
</span><del>-static inline bool usagesAreInvalidForCryptoAlgorithmHMAC(CryptoKeyUsage usages)
</del><ins>+static inline bool usagesAreInvalidForCryptoAlgorithmHMAC(CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     return usages &amp; (CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits | CryptoKeyUsageWrapKey | CryptoKeyUsageUnwrapKey);
</span><span class="cx"> }
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmHMAC::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithmHMAC::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; hmacParameters = downcast&lt;CryptoAlgorithmHmacKeyParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">     callback(result.get(), nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmHMAC::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</del><ins>+void CryptoAlgorithmHMAC::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; hmacParameters = downcast&lt;CryptoAlgorithmHmacKeyParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -167,7 +167,7 @@
</span><span class="cx">     platformVerify(hmacParameters, downcast&lt;CryptoKeyHMAC&gt;(key), expectedSignature, data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmHMAC::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*)
</del><ins>+void CryptoAlgorithmHMAC::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmHmacKeyParamsDeprecated&amp; hmacParameters = downcast&lt;CryptoAlgorithmHmacKeyParamsDeprecated&gt;(parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx">     callback(result.get(), nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmHMAC::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</del><ins>+void CryptoAlgorithmHMAC::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp;, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!is&lt;CryptoKeyDataOctetSequence&gt;(keyData)) {
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -44,14 +44,14 @@
</span><span class="cx"> 
</span><span class="cx">     CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx"> 
</span><del>-    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
-    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</del><ins>+    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
+    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     // The following will be deprecated.
</span><span class="cx">     void sign(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><span class="cx">     void verify(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp; signature, const CryptoOperationData&amp;, BoolCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><del>-    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
-    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</del><ins>+    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
+    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CryptoAlgorithmHMAC();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext* context)
</del><ins>+void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaKeyGenParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">     CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, CryptoAlgorithmIdentifier::SHA_1, false, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</del><ins>+void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;CryptoKeyRSA&gt; result;
</span><span class="cx">     switch (format) {
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx">     platformDecrypt(downcast&lt;CryptoKeyRSA&gt;(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext* context)
</del><ins>+void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmRsaKeyGenParamsDeprecated&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaKeyGenParamsDeprecated&gt;(parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx">     CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;)
</del><ins>+void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmRsaKeyParamsWithHashDeprecated&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaKeyParamsWithHashDeprecated&gt;(parameters);
</span><span class="cx">     const CryptoKeyDataRSAComponents&amp; rsaComponents = downcast&lt;CryptoKeyDataRSAComponents&gt;(keyData);
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5h"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -44,14 +44,14 @@
</span><span class="cx"> 
</span><span class="cx">     CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx"> 
</span><del>-    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
-    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</del><ins>+    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
+    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     // The following will be deprecated.
</span><span class="cx">     void encrypt(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><span class="cx">     void decrypt(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><del>-    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
-    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</del><ins>+    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
+    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CryptoAlgorithmRSAES_PKCS1_v1_5();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext* context)
</del><ins>+void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaHashedKeyGenParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">     CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</del><ins>+void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaHashedImportParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx">     platformVerify(rsaSSAParameters,  downcast&lt;CryptoKeyRSA&gt;(key), signature, data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext* context)
</del><ins>+void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmRsaKeyGenParamsDeprecated&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaKeyGenParamsDeprecated&gt;(parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">     CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;)
</del><ins>+void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmRsaKeyParamsWithHashDeprecated&amp; rsaKeyParameters = downcast&lt;CryptoAlgorithmRsaKeyParamsWithHashDeprecated&gt;(parameters);
</span><span class="cx">     const CryptoKeyDataRSAComponents&amp; rsaComponents = downcast&lt;CryptoKeyDataRSAComponents&gt;(keyData);
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5h"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -44,14 +44,14 @@
</span><span class="cx"> 
</span><span class="cx">     CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx"> 
</span><del>-    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
-    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</del><ins>+    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
+    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     // The following will be deprecated.
</span><span class="cx">     void sign(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><span class="cx">     void verify(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp; signature, const CryptoOperationData&amp;, BoolCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><del>-    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
-    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</del><ins>+    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
+    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CryptoAlgorithmRSASSA_PKCS1_v1_5();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSA_OAEP::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext* context)
</del><ins>+void CryptoAlgorithmRSA_OAEP::generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaHashedKeyGenParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">     CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSA_OAEP::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</del><ins>+void CryptoAlgorithmRSA_OAEP::importKey(SubtleCrypto::KeyFormat format, KeyData&amp;&amp; data, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&amp;&amp; callback, ExceptionCallback&amp;&amp; exceptionCallback)
</ins><span class="cx"> {
</span><span class="cx">     const auto&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaHashedImportParams&gt;(*parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">     platformDecrypt(rsaOAEPParameters, downcast&lt;CryptoKeyRSA&gt;(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSA_OAEP::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext* context)
</del><ins>+void CryptoAlgorithmRSA_OAEP::generateKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmRsaKeyGenParamsDeprecated&amp; rsaParameters = downcast&lt;CryptoAlgorithmRsaKeyGenParamsDeprecated&gt;(parameters);
</span><span class="cx"> 
</span><span class="lines">@@ -196,7 +196,7 @@
</span><span class="cx">     CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoAlgorithmRSA_OAEP::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;)
</del><ins>+void CryptoAlgorithmRSA_OAEP::importKey(const CryptoAlgorithmParametersDeprecated&amp; parameters, const CryptoKeyData&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage, KeyCallback&amp;&amp; callback, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;)
</ins><span class="cx"> {
</span><span class="cx">     const CryptoAlgorithmRsaKeyParamsWithHashDeprecated&amp; rsaKeyParameters = downcast&lt;CryptoAlgorithmRsaKeyParamsWithHashDeprecated&gt;(parameters);
</span><span class="cx">     const CryptoKeyDataRSAComponents&amp; rsaComponents = downcast&lt;CryptoKeyDataRSAComponents&gt;(keyData);
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -44,14 +44,14 @@
</span><span class="cx"> 
</span><span class="cx">     CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx"> 
</span><del>-    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
-    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</del><ins>+    void generateKey(const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext*) final;
+    void importKey(SubtleCrypto::KeyFormat, KeyData&amp;&amp;, const std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, ExceptionCallback&amp;&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     // The following will be deprecated.
</span><span class="cx">     void encrypt(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><span class="cx">     void decrypt(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKey&amp;, const CryptoOperationData&amp;, VectorCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</span><del>-    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
-    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsage, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</del><ins>+    void generateKey(const CryptoAlgorithmParametersDeprecated&amp;, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;, ScriptExecutionContext*) override;
+    void importKey(const CryptoAlgorithmParametersDeprecated&amp;, const CryptoKeyData&amp;, bool extractable, CryptoKeyUsageBitmap, KeyCallback&amp;&amp;, VoidCallback&amp;&amp; failureCallback, ExceptionCode&amp;) override;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CryptoAlgorithmRSA_OAEP();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptognutlsCryptoKeyRSAGnuTLScpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> struct _PlatformRSAKeyGnuTLS {
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-CryptoKeyRSA::CryptoKeyRSA(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKey platformKey, bool extractable, CryptoKeyUsage usage)
</del><ins>+CryptoKeyRSA::CryptoKeyRSA(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKey platformKey, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     : CryptoKey(identifier, type, extractable, usage)
</span><span class="cx">     , m_platformKey(platformKey)
</span><span class="cx">     , m_restrictedToSpecificHash(hasHash)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyRSA&gt; CryptoKeyRSA::create(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, const CryptoKeyDataRSAComponents&amp; keyData, bool extractable, CryptoKeyUsage usage)
</del><ins>+RefPtr&lt;CryptoKeyRSA&gt; CryptoKeyRSA::create(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, const CryptoKeyDataRSAComponents&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx">     UNUSED_PARAM(identifier);
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector&lt;uint8_t&gt;&amp; publicExponent, bool extractable, CryptoKeyUsage usage, KeyPairCallback callback, VoidCallback failureCallback, ScriptExecutionContext* context)
</del><ins>+void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector&lt;uint8_t&gt;&amp; publicExponent, bool extractable, CryptoKeyUsageBitmap usage, KeyPairCallback callback, VoidCallback failureCallback, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx">     failureCallback();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyAEScpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">     return (length == CryptoKeyAES::s_length128) || (length == CryptoKeyAES::s_length192) || (length == CryptoKeyAES::s_length256);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CryptoKeyAES::CryptoKeyAES(CryptoAlgorithmIdentifier algorithm, const Vector&lt;uint8_t&gt;&amp; key, bool extractable, CryptoKeyUsage usage)
</del><ins>+CryptoKeyAES::CryptoKeyAES(CryptoAlgorithmIdentifier algorithm, const Vector&lt;uint8_t&gt;&amp; key, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     : CryptoKey(algorithm, CryptoKeyType::Secret, extractable, usage)
</span><span class="cx">     , m_key(key)
</span><span class="cx"> {
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     ASSERT(isValidAESAlgorithm(algorithm));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CryptoKeyAES::CryptoKeyAES(CryptoAlgorithmIdentifier algorithm, Vector&lt;uint8_t&gt;&amp;&amp; key, bool extractable, CryptoKeyUsage usage)
</del><ins>+CryptoKeyAES::CryptoKeyAES(CryptoAlgorithmIdentifier algorithm, Vector&lt;uint8_t&gt;&amp;&amp; key, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     : CryptoKey(algorithm, CryptoKeyType::Secret, extractable, usage)
</span><span class="cx">     , m_key(WTFMove(key))
</span><span class="cx"> {
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">         || algorithm == CryptoAlgorithmIdentifier::AES_KW;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyAES&gt; CryptoKeyAES::generate(CryptoAlgorithmIdentifier algorithm, size_t lengthBits, bool extractable, CryptoKeyUsage usages)
</del><ins>+RefPtr&lt;CryptoKeyAES&gt; CryptoKeyAES::generate(CryptoAlgorithmIdentifier algorithm, size_t lengthBits, bool extractable, CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     if (!lengthIsValid(lengthBits))
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx">     return adoptRef(new CryptoKeyAES(algorithm, randomData(lengthBits / 8), extractable, usages));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyAES&gt; CryptoKeyAES::importRaw(CryptoAlgorithmIdentifier algorithm, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsage usages)
</del><ins>+RefPtr&lt;CryptoKeyAES&gt; CryptoKeyAES::importRaw(CryptoAlgorithmIdentifier algorithm, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     if (!lengthIsValid(keyData.size() * 8))
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx">     return adoptRef(new CryptoKeyAES(algorithm, WTFMove(keyData), extractable, usages));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyAES&gt; CryptoKeyAES::importJwk(CryptoAlgorithmIdentifier algorithm, JsonWebKey&amp;&amp; keyData, bool extractable, CryptoKeyUsage usages, CheckAlgCallback&amp;&amp; callback)
</del><ins>+RefPtr&lt;CryptoKeyAES&gt; CryptoKeyAES::importJwk(CryptoAlgorithmIdentifier algorithm, JsonWebKey&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages, CheckAlgCallback&amp;&amp; callback)
</ins><span class="cx"> {
</span><span class="cx">     if (keyData.kty != &quot;oct&quot;)
</span><span class="cx">         return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyAESh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyAES.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyAES.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyAES.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     static const int s_length192 = 192;
</span><span class="cx">     static const int s_length256 = 256;
</span><span class="cx"> 
</span><del>-    static Ref&lt;CryptoKeyAES&gt; create(CryptoAlgorithmIdentifier algorithm, const Vector&lt;uint8_t&gt;&amp; key, bool extractable, CryptoKeyUsage usage)
</del><ins>+    static Ref&lt;CryptoKeyAES&gt; create(CryptoAlgorithmIdentifier algorithm, const Vector&lt;uint8_t&gt;&amp; key, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(*new CryptoKeyAES(algorithm, key, extractable, usage));
</span><span class="cx">     }
</span><span class="lines">@@ -67,10 +67,10 @@
</span><span class="cx"> 
</span><span class="cx">     static bool isValidAESAlgorithm(CryptoAlgorithmIdentifier);
</span><span class="cx"> 
</span><del>-    static RefPtr&lt;CryptoKeyAES&gt; generate(CryptoAlgorithmIdentifier, size_t lengthBits, bool extractable, CryptoKeyUsage);
-    static RefPtr&lt;CryptoKeyAES&gt; importRaw(CryptoAlgorithmIdentifier, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsage);
</del><ins>+    static RefPtr&lt;CryptoKeyAES&gt; generate(CryptoAlgorithmIdentifier, size_t lengthBits, bool extractable, CryptoKeyUsageBitmap);
+    static RefPtr&lt;CryptoKeyAES&gt; importRaw(CryptoAlgorithmIdentifier, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx">     using CheckAlgCallback = WTF::Function&lt;bool(size_t, const Optional&lt;String&gt;&amp;)&gt;;
</span><del>-    static RefPtr&lt;CryptoKeyAES&gt; importJwk(CryptoAlgorithmIdentifier, JsonWebKey&amp;&amp;, bool extractable, CryptoKeyUsage, CheckAlgCallback&amp;&amp;);
</del><ins>+    static RefPtr&lt;CryptoKeyAES&gt; importJwk(CryptoAlgorithmIdentifier, JsonWebKey&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, CheckAlgCallback&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     CryptoKeyClass keyClass() const final { return CryptoKeyClass::AES; }
</span><span class="cx"> 
</span><span class="lines">@@ -77,8 +77,8 @@
</span><span class="cx">     const Vector&lt;uint8_t&gt;&amp; key() const { return m_key; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    CryptoKeyAES(CryptoAlgorithmIdentifier, const Vector&lt;uint8_t&gt;&amp; key, bool extractable, CryptoKeyUsage);
-    CryptoKeyAES(CryptoAlgorithmIdentifier, Vector&lt;uint8_t&gt;&amp;&amp; key, bool extractable, CryptoKeyUsage);
</del><ins>+    CryptoKeyAES(CryptoAlgorithmIdentifier, const Vector&lt;uint8_t&gt;&amp; key, bool extractable, CryptoKeyUsageBitmap);
+    CryptoKeyAES(CryptoAlgorithmIdentifier, Vector&lt;uint8_t&gt;&amp;&amp; key, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;KeyAlgorithm&gt; buildAlgorithm() const final;
</span><span class="cx">     std::unique_ptr&lt;CryptoKeyData&gt; exportData() const final;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyHMACcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-CryptoKeyHMAC::CryptoKeyHMAC(const Vector&lt;uint8_t&gt;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage usage)
</del><ins>+CryptoKeyHMAC::CryptoKeyHMAC(const Vector&lt;uint8_t&gt;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     : CryptoKey(CryptoAlgorithmIdentifier::HMAC, CryptoKeyType::Secret, extractable, usage)
</span><span class="cx">     , m_hash(hash)
</span><span class="cx">     , m_key(key)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CryptoKeyHMAC::CryptoKeyHMAC(Vector&lt;uint8_t&gt;&amp;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage usage)
</del><ins>+CryptoKeyHMAC::CryptoKeyHMAC(Vector&lt;uint8_t&gt;&amp;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     : CryptoKey(CryptoAlgorithmIdentifier::HMAC, CryptoKeyType::Secret, extractable, usage)
</span><span class="cx">     , m_hash(hash)
</span><span class="cx">     , m_key(WTFMove(key))
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyHMAC&gt; CryptoKeyHMAC::generate(size_t lengthBits, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage usages)
</del><ins>+RefPtr&lt;CryptoKeyHMAC&gt; CryptoKeyHMAC::generate(size_t lengthBits, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     if (!lengthBits) {
</span><span class="cx">         switch (hash) {
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">     return adoptRef(new CryptoKeyHMAC(randomData(lengthBits / 8), hash, extractable, usages));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyHMAC&gt; CryptoKeyHMAC::importRaw(size_t lengthBits, CryptoAlgorithmIdentifier hash, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsage usages)
</del><ins>+RefPtr&lt;CryptoKeyHMAC&gt; CryptoKeyHMAC::importRaw(size_t lengthBits, CryptoAlgorithmIdentifier hash, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     size_t length = keyData.size() * 8;
</span><span class="cx">     if (!length)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">     return adoptRef(new CryptoKeyHMAC(WTFMove(keyData), hash, extractable, usages));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyHMAC&gt; CryptoKeyHMAC::importJwk(size_t lengthBits, CryptoAlgorithmIdentifier hash, JsonWebKey&amp;&amp; keyData, bool extractable, CryptoKeyUsage usages, CheckAlgCallback&amp;&amp; callback)
</del><ins>+RefPtr&lt;CryptoKeyHMAC&gt; CryptoKeyHMAC::importJwk(size_t lengthBits, CryptoAlgorithmIdentifier hash, JsonWebKey&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages, CheckAlgCallback&amp;&amp; callback)
</ins><span class="cx"> {
</span><span class="cx">     if (keyData.kty != &quot;oct&quot;)
</span><span class="cx">         return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyHMACh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -57,16 +57,16 @@
</span><span class="cx"> 
</span><span class="cx"> class CryptoKeyHMAC final : public CryptoKey {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;CryptoKeyHMAC&gt; create(const Vector&lt;uint8_t&gt;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage usage)
</del><ins>+    static Ref&lt;CryptoKeyHMAC&gt; create(const Vector&lt;uint8_t&gt;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(*new CryptoKeyHMAC(key, hash, extractable, usage));
</span><span class="cx">     }
</span><span class="cx">     virtual ~CryptoKeyHMAC();
</span><span class="cx"> 
</span><del>-    static RefPtr&lt;CryptoKeyHMAC&gt; generate(size_t lengthBits, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage);
-    static RefPtr&lt;CryptoKeyHMAC&gt; importRaw(size_t lengthBits, CryptoAlgorithmIdentifier hash, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsage);
</del><ins>+    static RefPtr&lt;CryptoKeyHMAC&gt; generate(size_t lengthBits, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap);
+    static RefPtr&lt;CryptoKeyHMAC&gt; importRaw(size_t lengthBits, CryptoAlgorithmIdentifier hash, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx">     using CheckAlgCallback = WTF::Function&lt;bool(CryptoAlgorithmIdentifier, const Optional&lt;String&gt;&amp;)&gt;;
</span><del>-    static RefPtr&lt;CryptoKeyHMAC&gt; importJwk(size_t lengthBits, CryptoAlgorithmIdentifier hash, JsonWebKey&amp;&amp;, bool extractable, CryptoKeyUsage, CheckAlgCallback&amp;&amp;);
</del><ins>+    static RefPtr&lt;CryptoKeyHMAC&gt; importJwk(size_t lengthBits, CryptoAlgorithmIdentifier hash, JsonWebKey&amp;&amp;, bool extractable, CryptoKeyUsageBitmap, CheckAlgCallback&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     CryptoKeyClass keyClass() const final { return CryptoKeyClass::HMAC; }
</span><span class="cx"> 
</span><span class="lines">@@ -75,8 +75,8 @@
</span><span class="cx">     CryptoAlgorithmIdentifier hashAlgorithmIdentifier() const { return m_hash; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    CryptoKeyHMAC(const Vector&lt;uint8_t&gt;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage);
-    CryptoKeyHMAC(Vector&lt;uint8_t&gt;&amp;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage);
</del><ins>+    CryptoKeyHMAC(const Vector&lt;uint8_t&gt;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap);
+    CryptoKeyHMAC(Vector&lt;uint8_t&gt;&amp;&amp; key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;KeyAlgorithm&gt; buildAlgorithm() const final;
</span><span class="cx">     std::unique_ptr&lt;CryptoKeyData&gt; exportData() const final;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyRSAcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyRSA&gt; CryptoKeyRSA::importJwk(CryptoAlgorithmIdentifier algorithm, Optional&lt;CryptoAlgorithmIdentifier&gt; hash, JsonWebKey&amp;&amp; keyData, bool extractable, CryptoKeyUsage usages)
</del><ins>+RefPtr&lt;CryptoKeyRSA&gt; CryptoKeyRSA::importJwk(CryptoAlgorithmIdentifier algorithm, Optional&lt;CryptoAlgorithmIdentifier&gt; hash, JsonWebKey&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)
</ins><span class="cx"> {
</span><span class="cx">     if (keyData.kty != &quot;RSA&quot;)
</span><span class="cx">         return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyRSAh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -87,11 +87,11 @@
</span><span class="cx"> 
</span><span class="cx"> class CryptoKeyRSA final : public CryptoKey {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;CryptoKeyRSA&gt; create(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKey platformKey, bool extractable, CryptoKeyUsage usage)
</del><ins>+    static Ref&lt;CryptoKeyRSA&gt; create(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKey platformKey, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(*new CryptoKeyRSA(identifier, hash, hasHash, type, platformKey, extractable, usage));
</span><span class="cx">     }
</span><del>-    static RefPtr&lt;CryptoKeyRSA&gt; create(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, const CryptoKeyDataRSAComponents&amp;, bool extractable, CryptoKeyUsage);
</del><ins>+    static RefPtr&lt;CryptoKeyRSA&gt; create(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, const CryptoKeyDataRSAComponents&amp;, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx">     virtual ~CryptoKeyRSA();
</span><span class="cx"> 
</span><span class="cx">     bool isRestrictedToHash(CryptoAlgorithmIdentifier&amp;) const;
</span><span class="lines">@@ -100,13 +100,13 @@
</span><span class="cx"> 
</span><span class="cx">     using KeyPairCallback = WTF::Function&lt;void(CryptoKeyPair&amp;)&gt;;
</span><span class="cx">     using VoidCallback = WTF::Function&lt;void()&gt;;
</span><del>-    static void generatePair(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector&lt;uint8_t&gt;&amp; publicExponent, bool extractable, CryptoKeyUsage, KeyPairCallback, VoidCallback failureCallback, ScriptExecutionContext*);
-    static RefPtr&lt;CryptoKeyRSA&gt; importJwk(CryptoAlgorithmIdentifier, Optional&lt;CryptoAlgorithmIdentifier&gt; hash, JsonWebKey&amp;&amp;, bool extractable, CryptoKeyUsage);
</del><ins>+    static void generatePair(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector&lt;uint8_t&gt;&amp; publicExponent, bool extractable, CryptoKeyUsageBitmap, KeyPairCallback, VoidCallback failureCallback, ScriptExecutionContext*);
+    static RefPtr&lt;CryptoKeyRSA&gt; importJwk(CryptoAlgorithmIdentifier, Optional&lt;CryptoAlgorithmIdentifier&gt; hash, JsonWebKey&amp;&amp;, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx"> 
</span><span class="cx">     PlatformRSAKey platformKey() const { return m_platformKey; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    CryptoKeyRSA(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType, PlatformRSAKey, bool extractable, CryptoKeyUsage);
</del><ins>+    CryptoKeyRSA(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType, PlatformRSAKey, bool extractable, CryptoKeyUsageBitmap);
</ins><span class="cx"> 
</span><span class="cx">     CryptoKeyClass keyClass() const final { return CryptoKeyClass::RSA; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeySerializationRawcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     return CryptoAlgorithmPair { algorithm, parameters };
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoKeySerializationRaw::reconcileUsages(CryptoKeyUsage&amp;) const
</del><ins>+void CryptoKeySerializationRaw::reconcileUsages(CryptoKeyUsageBitmap&amp;) const
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeySerializationRawh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.h (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.h        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeySerializationRaw.h        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> 
</span><span class="cx">     Optional&lt;CryptoAlgorithmPair&gt; reconcileAlgorithm(CryptoAlgorithm*, CryptoAlgorithmParametersDeprecated*) const override;
</span><span class="cx"> 
</span><del>-    void reconcileUsages(CryptoKeyUsage&amp;) const override;
</del><ins>+    void reconcileUsages(CryptoKeyUsageBitmap&amp;) const override;
</ins><span class="cx">     void reconcileExtractable(bool&amp;) const override;
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;CryptoKeyData&gt; keyData() const override;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoKeyRSAMaccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp (208601 => 208602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp        2016-11-11 19:46:04 UTC (rev 208601)
+++ trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp        2016-11-11 20:12:00 UTC (rev 208602)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">     return status;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CryptoKeyRSA::CryptoKeyRSA(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKey platformKey, bool extractable, CryptoKeyUsage usage)
</del><ins>+CryptoKeyRSA::CryptoKeyRSA(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKey platformKey, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx">     : CryptoKey(identifier, type, extractable, usage)
</span><span class="cx">     , m_platformKey(platformKey)
</span><span class="cx">     , m_restrictedToSpecificHash(hasHash)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;CryptoKeyRSA&gt; CryptoKeyRSA::create(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, const CryptoKeyDataRSAComponents&amp; keyData, bool extractable, CryptoKeyUsage usage)
</del><ins>+RefPtr&lt;CryptoKeyRSA&gt; CryptoKeyRSA::create(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, const CryptoKeyDataRSAComponents&amp; keyData, bool extractable, CryptoKeyUsageBitmap usage)
</ins><span class="cx"> {
</span><span class="cx">     if (keyData.type() == CryptoKeyDataRSAComponents::Type::Private &amp;&amp; !keyData.hasAdditionalPrivateKeyParameters()) {
</span><span class="cx">         // &lt;rdar://problem/15452324&gt; tracks adding support.
</span><span class="lines">@@ -230,7 +230,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector&lt;uint8_t&gt;&amp; publicExponent, bool extractable, CryptoKeyUsage usage, KeyPairCallback callback, VoidCallback failureCallback, ScriptExecutionContext* context)
</del><ins>+void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector&lt;uint8_t&gt;&amp; publicExponent, bool extractable, CryptoKeyUsageBitmap usage, KeyPairCallback callback, VoidCallback failureCallback, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx">     uint32_t e;
</span><span class="cx">     if (!bigIntegerToUInt32(publicExponent, e)) {
</span></span></pre>
</div>
</div>

</body>
</html>