<!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>[163121] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/163121">163121</a></dd>
<dt>Author</dt> <dd>jpfau@apple.com</dd>
<dt>Date</dt> <dd>2014-01-30 15:02:39 -0800 (Thu, 30 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add a method for schemes to be registered as supporting cache partitioning
https://bugs.webkit.org/show_bug.cgi?id=127739

Reviewed by Darin Adler.

Source/WebCore:

Currently, this assumes that schemes supporting cache partitioning
also support (scheme, host) doubles for the scheme. Furthermore,
the scheme is currently discarded when partitioning and is only
checked to ensure that partitioning is supported for that scheme: it
is assumed that all origins with the same host double should be binned
together, regardless of scheme.

* WebCore.exp.in:
* page/SecurityOrigin.cpp:
(WebCore::SecurityOrigin::cachePartition):
* platform/SchemeRegistry.cpp:
(WebCore::CachePartitioningSchemes):
(WebCore::SchemeRegistry::registerURLSchemeAsCachePartitioned):
(WebCore::SchemeRegistry::shouldPartitionCacheForURLScheme):
* platform/SchemeRegistry.h:

Source/WebKit2:

Pipe information about cache partitioned scheme through WebKit2.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextRegisterURLSchemeAsCachePartitioned):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/WebContext.cpp:
(WebKit::WebContext::createNewWebProcess):
(WebKit::WebContext::registerURLSchemeAsCachePartitioned):
* UIProcess/WebContext.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::registerURLSchemeAsCachePartitioned):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOrigincpp">trunk/Source/WebCore/page/SecurityOrigin.cpp</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOriginh">trunk/Source/WebCore/page/SecurityOrigin.h</a></li>
<li><a href="#trunkSourceWebCoreplatformSchemeRegistrycpp">trunk/Source/WebCore/platform/SchemeRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformSchemeRegistryh">trunk/Source/WebCore/platform/SchemeRegistry.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedWebProcessCreationParameterscpp">trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedWebProcessCreationParametersh">trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKContextcpp">trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKContextPrivateh">trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebContextcpp">trunk/Source/WebKit2/UIProcess/WebContext.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebContexth">trunk/Source/WebKit2/UIProcess/WebContext.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebProcesscpp">trunk/Source/WebKit2/WebProcess/WebProcess.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebProcessh">trunk/Source/WebKit2/WebProcess/WebProcess.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebProcessmessagesin">trunk/Source/WebKit2/WebProcess/WebProcess.messages.in</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebCore/ChangeLog        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2014-01-27  Jeffrey Pfau  &lt;jpfau@apple.com&gt;
+
+        Add a method for schemes to be registered as supporting cache partitioning
+        https://bugs.webkit.org/show_bug.cgi?id=127739
+
+        Reviewed by Darin Adler.
+
+        Currently, this assumes that schemes supporting cache partitioning
+        also support (scheme, host) doubles for the scheme. Furthermore,
+        the scheme is currently discarded when partitioning and is only
+        checked to ensure that partitioning is supported for that scheme: it
+        is assumed that all origins with the same host double should be binned
+        together, regardless of scheme.
+
+        * WebCore.exp.in:
+        * page/SecurityOrigin.cpp:
+        (WebCore::SecurityOrigin::cachePartition):
+        * platform/SchemeRegistry.cpp:
+        (WebCore::CachePartitioningSchemes):
+        (WebCore::SchemeRegistry::registerURLSchemeAsCachePartitioned):
+        (WebCore::SchemeRegistry::shouldPartitionCacheForURLScheme):
+        * platform/SchemeRegistry.h:
+
</ins><span class="cx"> 2014-01-30  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Convert blocks to lambdas in iOS Fullscreen code.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -386,6 +386,7 @@
</span><span class="cx"> __ZN7WebCore14SchemeRegistry32registerURLSchemeAsEmptyDocumentERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore14SchemeRegistry34registerURLSchemeAsDisplayIsolatedERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore14SchemeRegistry34shouldLoadURLSchemeAsEmptyDocumentERKN3WTF6StringE
</span><ins>+__ZN7WebCore14SchemeRegistry35registerURLSchemeAsCachePartitionedERKN3WTF6StringE
</ins><span class="cx"> __ZN7WebCore14SchemeRegistry40setDomainRelaxationForbiddenForURLSchemeEbRKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore14SchemeRegistry41allowsLocalStorageAccessInPrivateBrowsingERKN3WTF6StringE
</span><span class="cx"> __ZN7WebCore14SchemeRegistry49registerURLSchemeAsBypassingContentSecurityPolicyERKN3WTF6StringE
</span></span></pre></div>
<a id="trunkSourceWebCorepageSecurityOrigincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/SecurityOrigin.cpp (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/SecurityOrigin.cpp        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebCore/page/SecurityOrigin.cpp        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -444,10 +444,13 @@
</span><span class="cx">     if (m_storageBlockingPolicy != BlockThirdPartyStorage)
</span><span class="cx">         return String();
</span><span class="cx"> 
</span><del>-    if (m_protocol != &quot;http&quot; &amp;&amp; m_protocol != &quot;https&quot;)
-        return String();
</del><ins>+    if (isHTTPFamily())
+        return host();
</ins><span class="cx"> 
</span><del>-    return host();
</del><ins>+    if (SchemeRegistry::shouldPartitionCacheForURLScheme(m_protocol))
+        return host();
+
+    return String();
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageSecurityOriginh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/SecurityOrigin.h (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/SecurityOrigin.h        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebCore/page/SecurityOrigin.h        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -215,6 +215,10 @@
</span><span class="cx">     // FIXME: Rename this function to something more semantic.
</span><span class="cx">     bool passesFileCheck(const SecurityOrigin*) const;
</span><span class="cx">     bool isThirdParty(const SecurityOrigin*) const;
</span><ins>+
+    // This method checks that the scheme for this origin is an HTTP-family
+    // scheme, e.g. HTTP and HTTPS.
+    bool isHTTPFamily() const { return m_protocol == &quot;http&quot; || m_protocol == &quot;https&quot;; }
</ins><span class="cx">     
</span><span class="cx">     enum ShouldAllowFromThirdParty { AlwaysAllowFromThirdParty, MaybeAllowFromThirdParty };
</span><span class="cx">     bool canAccessStorage(const SecurityOrigin*, ShouldAllowFromThirdParty = MaybeAllowFromThirdParty) const;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformSchemeRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/SchemeRegistry.cpp (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/SchemeRegistry.cpp        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebCore/platform/SchemeRegistry.cpp        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SchemeRegistry.h&quot;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><ins>+#include &lt;wtf/NeverDestroyed.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -164,6 +165,14 @@
</span><span class="cx">     return schemes;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+static URLSchemesMap&amp; cachePartitioningSchemes()
+{
+    static NeverDestroyed&lt;URLSchemesMap&gt; schemes;
+    return schemes;
+}
+#endif
+
</ins><span class="cx"> bool SchemeRegistry::shouldTreatURLSchemeAsLocal(const String&amp; scheme)
</span><span class="cx"> {
</span><span class="cx">     if (scheme.isEmpty())
</span><span class="lines">@@ -323,4 +332,18 @@
</span><span class="cx">     return equalIgnoringCase(scheme, &quot;data&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+void SchemeRegistry::registerURLSchemeAsCachePartitioned(const String&amp; scheme)
+{
+    cachePartitioningSchemes().add(scheme);
+}
+
+bool SchemeRegistry::shouldPartitionCacheForURLScheme(const String&amp; scheme)
+{
+    if (scheme.isEmpty())
+        return false;
+    return cachePartitioningSchemes().contains(scheme);
+}
+#endif
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformSchemeRegistryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/SchemeRegistry.h (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/SchemeRegistry.h        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebCore/platform/SchemeRegistry.h        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -91,6 +91,12 @@
</span><span class="cx">     
</span><span class="cx">     // Schemes whose responses can be cached indefinitely.
</span><span class="cx">     static bool shouldCacheResponsesFromURLSchemeIndefinitely(const String&amp; scheme);
</span><ins>+
+#if ENABLE(CACHE_PARTITIONING)
+    // Schemes whose requests should be partitioned in the cache
+    static void registerURLSchemeAsCachePartitioned(const String&amp; scheme);
+    static bool shouldPartitionCacheForURLScheme(const String&amp; scheme);
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/ChangeLog        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2014-01-27  Jeffrey Pfau  &lt;jpfau@apple.com&gt;
+
+        Add a method for schemes to be registered as supporting cache partitioning
+        https://bugs.webkit.org/show_bug.cgi?id=127739
+
+        Reviewed by Darin Adler.
+
+        Pipe information about cache partitioned scheme through WebKit2.
+
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextRegisterURLSchemeAsCachePartitioned):
+        * UIProcess/API/C/WKContextPrivate.h:
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::createNewWebProcess):
+        (WebKit::WebContext::registerURLSchemeAsCachePartitioned):
+        * UIProcess/WebContext.h:
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::initializeWebProcess):
+        (WebKit::WebProcess::registerURLSchemeAsCachePartitioned):
+        * WebProcess/WebProcess.h:
+        * WebProcess/WebProcess.messages.in:
+
</ins><span class="cx"> 2014-01-30  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Lots of API test assertion failures after r163093
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebProcessCreationParameterscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -70,6 +70,9 @@
</span><span class="cx">     encoder &lt;&lt; urlSchemesRegisteredAsNoAccess;
</span><span class="cx">     encoder &lt;&lt; urlSchemesRegisteredAsDisplayIsolated;
</span><span class="cx">     encoder &lt;&lt; urlSchemesRegisteredAsCORSEnabled;
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    encoder &lt;&lt; urlSchemesRegisteredAsCachePartitioned;
+#endif
</ins><span class="cx"> #if ENABLE(CUSTOM_PROTOCOLS)
</span><span class="cx">     encoder &lt;&lt; urlSchemesRegisteredForCustomProtocols;
</span><span class="cx"> #endif
</span><span class="lines">@@ -162,6 +165,10 @@
</span><span class="cx">         return false;
</span><span class="cx">     if (!decoder.decode(parameters.urlSchemesRegisteredAsCORSEnabled))
</span><span class="cx">         return false;
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    if (!decoder.decode(parameters.urlSchemesRegisteredAsCachePartitioned))
+        return false;
+#endif
</ins><span class="cx"> #if ENABLE(CUSTOM_PROTOCOLS)
</span><span class="cx">     if (!decoder.decode(parameters.urlSchemesRegisteredForCustomProtocols))
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebProcessCreationParametersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -78,6 +78,9 @@
</span><span class="cx">     Vector&lt;String&gt; urlSchemesRegisteredAsNoAccess;
</span><span class="cx">     Vector&lt;String&gt; urlSchemesRegisteredAsDisplayIsolated;
</span><span class="cx">     Vector&lt;String&gt; urlSchemesRegisteredAsCORSEnabled;
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    Vector&lt;String&gt; urlSchemesRegisteredAsCachePartitioned;
+#endif
</ins><span class="cx"> #if ENABLE(CUSTOM_PROTOCOLS)
</span><span class="cx">     Vector&lt;String&gt; urlSchemesRegisteredForCustomProtocols;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -186,6 +186,16 @@
</span><span class="cx">     toImpl(contextRef)-&gt;registerURLSchemeAsSecure(toImpl(urlScheme)-&gt;string());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WKContextRegisterURLSchemeAsCachePartitioned(WKContextRef contextRef, WKStringRef urlScheme)
+{
+#if ENABLE(CACHE_PARTITIONING)
+    toImpl(contextRef)-&gt;registerURLSchemeAsCachePartitioned(toImpl(urlScheme)-&gt;string());
+#else
+    UNUSED_PARAM(contextRef);
+    UNUSED_PARAM(urlScheme);
+#endif
+}
+
</ins><span class="cx"> void WKContextSetDomainRelaxationForbiddenForURLScheme(WKContextRef contextRef, WKStringRef urlScheme)
</span><span class="cx"> {
</span><span class="cx">     toImpl(contextRef)-&gt;setDomainRelaxationForbiddenForURLScheme(toImpl(urlScheme)-&gt;string());
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKContextPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -52,6 +52,8 @@
</span><span class="cx"> 
</span><span class="cx"> WK_EXPORT void WKContextRegisterURLSchemeAsSecure(WKContextRef context, WKStringRef urlScheme);
</span><span class="cx"> 
</span><ins>+WK_EXPORT void WKContextRegisterURLSchemeAsCachePartitioned(WKContextRef context, WKStringRef urlScheme);
+
</ins><span class="cx"> WK_EXPORT void WKContextSetDomainRelaxationForbiddenForURLScheme(WKContextRef context, WKStringRef urlScheme);
</span><span class="cx"> 
</span><span class="cx"> WK_EXPORT void WKContextSetIconDatabasePath(WKContextRef context, WKStringRef iconDatabasePath);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebContext.cpp        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -576,6 +576,9 @@
</span><span class="cx">     copyToVector(m_schemesToRegisterAsNoAccess, parameters.urlSchemesRegisteredAsNoAccess);
</span><span class="cx">     copyToVector(m_schemesToRegisterAsDisplayIsolated, parameters.urlSchemesRegisteredAsDisplayIsolated);
</span><span class="cx">     copyToVector(m_schemesToRegisterAsCORSEnabled, parameters.urlSchemesRegisteredAsCORSEnabled);
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    copyToVector(m_schemesToRegisterAsCachePartitioned, parameters.urlSchemesRegisteredAsCachePartitioned);
+#endif
</ins><span class="cx"> 
</span><span class="cx">     parameters.shouldAlwaysUseComplexTextCodePath = m_alwaysUsesComplexTextCodePath;
</span><span class="cx">     parameters.shouldUseFontSmoothing = m_shouldUseFontSmoothing;
</span><span class="lines">@@ -938,6 +941,14 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+void WebContext::registerURLSchemeAsCachePartitioned(const String&amp; urlScheme)
+{
+    m_schemesToRegisterAsCachePartitioned.add(urlScheme);
+    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCachePartitioned(urlScheme));
+}
+#endif
+
</ins><span class="cx"> void WebContext::setCacheModel(CacheModel cacheModel)
</span><span class="cx"> {
</span><span class="cx">     m_cacheModel = cacheModel;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebContext.h        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -189,6 +189,9 @@
</span><span class="cx">     void registerURLSchemeAsNoAccess(const String&amp;);
</span><span class="cx">     void registerURLSchemeAsDisplayIsolated(const String&amp;);
</span><span class="cx">     void registerURLSchemeAsCORSEnabled(const String&amp;);
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    void registerURLSchemeAsCachePartitioned(const String&amp;);
+#endif
</ins><span class="cx"> 
</span><span class="cx">     void addVisitedLink(const String&amp;);
</span><span class="cx">     void addVisitedLinkHash(WebCore::LinkHash);
</span><span class="lines">@@ -452,6 +455,9 @@
</span><span class="cx">     HashSet&lt;String&gt; m_schemesToRegisterAsNoAccess;
</span><span class="cx">     HashSet&lt;String&gt; m_schemesToRegisterAsDisplayIsolated;
</span><span class="cx">     HashSet&lt;String&gt; m_schemesToRegisterAsCORSEnabled;
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    HashSet&lt;String&gt; m_schemesToRegisterAsCachePartitioned;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     bool m_alwaysUsesComplexTextCodePath;
</span><span class="cx">     bool m_shouldUseFontSmoothing;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebProcesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -327,6 +327,11 @@
</span><span class="cx">     for (size_t i = 0; i &lt; parameters.urlSchemesRegisteredAsCORSEnabled.size(); ++i)
</span><span class="cx">         registerURLSchemeAsCORSEnabled(parameters.urlSchemesRegisteredAsCORSEnabled[i]);
</span><span class="cx"> 
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    for (auto&amp; scheme : parameters.urlSchemesRegisteredAsCachePartitioned)
+        registerURLSchemeAsCORSEnabled(scheme);
+#endif
+
</ins><span class="cx">     setDefaultRequestTimeoutInterval(parameters.defaultRequestTimeoutInterval);
</span><span class="cx"> 
</span><span class="cx">     if (parameters.shouldAlwaysUseComplexTextCodePath)
</span><span class="lines">@@ -429,6 +434,13 @@
</span><span class="cx">     SchemeRegistry::registerURLSchemeAsCORSEnabled(urlScheme);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+void WebProcess::registerURLSchemeAsCachePartitioned(const String&amp; urlScheme) const
+{
+    SchemeRegistry::registerURLSchemeAsCachePartitioned(urlScheme);
+}
+#endif
+
</ins><span class="cx"> void WebProcess::setDefaultRequestTimeoutInterval(double timeoutInterval)
</span><span class="cx"> {
</span><span class="cx">     ResourceRequest::setDefaultTimeoutInterval(timeoutInterval);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebProcessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebProcess.h        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -203,6 +203,9 @@
</span><span class="cx">     void registerURLSchemeAsNoAccess(const String&amp;) const;
</span><span class="cx">     void registerURLSchemeAsDisplayIsolated(const String&amp;) const;
</span><span class="cx">     void registerURLSchemeAsCORSEnabled(const String&amp;) const;
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    void registerURLSchemeAsCachePartitioned(const String&amp;) const;
+#endif
</ins><span class="cx">     void setDefaultRequestTimeoutInterval(double);
</span><span class="cx">     void setAlwaysUsesComplexTextCodePath(bool);
</span><span class="cx">     void setShouldUseFontSmoothing(bool);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebProcessmessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebProcess.messages.in (163120 => 163121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebProcess.messages.in        2014-01-30 23:01:20 UTC (rev 163120)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.messages.in        2014-01-30 23:02:39 UTC (rev 163121)
</span><span class="lines">@@ -42,6 +42,9 @@
</span><span class="cx">     RegisterURLSchemeAsNoAccess(String scheme)
</span><span class="cx">     RegisterURLSchemeAsDisplayIsolated(String scheme)
</span><span class="cx">     RegisterURLSchemeAsCORSEnabled(String scheme)
</span><ins>+#if ENABLE(CACHE_PARTITIONING)
+    RegisterURLSchemeAsCachePartitioned(String scheme)
+#endif
</ins><span class="cx">     SetDefaultRequestTimeoutInterval(double timeoutInterval)
</span><span class="cx">     SetAlwaysUsesComplexTextCodePath(bool alwaysUseComplexText)
</span><span class="cx">     SetShouldUseFontSmoothing(bool useFontSmoothing)
</span></span></pre>
</div>
</div>

</body>
</html>