<!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>[205407] 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/205407">205407</a></dd>
<dt>Author</dt> <dd>bweinstein@apple.com</dd>
<dt>Date</dt> <dd>2016-09-03 12:58:28 -0700 (Sat, 03 Sep 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Source/WebCore:
Consult with the FrameLoaderClient about whether or not content extensions should be enabled when loading this URL.
https://bugs.webkit.org/show_bug.cgi?id=161441

Reviewed by Darin Adler.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::startLoadingMainResource): If content extensions aren't already disabled, consult with the
FrameLoaderClient about whether or not we should use content extensions for this URL.
* loader/FrameLoaderClient.h: Add the FrameLoaderClient call to determine if we should use content extensions for a given
URL...
* loader/EmptyClients.h: ... And add a stub implementation.

Source/WebKit/mac:
Implement a stub version of FrameLoaderClient::shouldUseContentExtensionsForURL.
https://bugs.webkit.org/show_bug.cgi?id=16144

Reviewed by Darin Adler.

* WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKit2:
Implement WebFrameLoaderClient::shouldUseContentExtensionsForURL and consult the InjectedBundlePageLoaderClient.
https://bugs.webkit.org/show_bug.cgi?id=161441

Reviewed by Darin Adler.

WebFrameLoaderClient::shouldUseContentExtensionsForURL only consults the injected bundle, because we don't want to
defer the loading of every main resource to consult with the UI Process about whether or not we should use content
extensions for the load.

* WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h: Bump the latest version to WKBundlePageLoaderClientV9 and
add WKBundlePageShouldUseContentExtensionsForURLCallback.
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
(WebKit::InjectedBundlePageLoaderClient::shouldUseContentExtensionsForURL): Ask the client if we should use content
extensions for this URL.
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::shouldUseContentExtensionsForURL): Only consult with the injected bundle about whether
or not we should use content extensions for this URL.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentLoadercpp">trunk/Source/WebCore/loader/DocumentLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientsh">trunk/Source/WebCore/loader/EmptyClients.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoaderClienth">trunk/Source/WebCore/loader/FrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePageLoaderClienth">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlePageLoaderClientcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlePageLoaderClienth">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebCore/ChangeLog        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-09-03  Brian Weinstein  &lt;bweinstein@apple.com&gt;
+
+        Consult with the FrameLoaderClient about whether or not content extensions should be enabled when loading this URL.
+        https://bugs.webkit.org/show_bug.cgi?id=161441
+
+        Reviewed by Darin Adler.
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::startLoadingMainResource): If content extensions aren't already disabled, consult with the
+        FrameLoaderClient about whether or not we should use content extensions for this URL.
+        * loader/FrameLoaderClient.h: Add the FrameLoaderClient call to determine if we should use content extensions for a given
+        URL...
+        * loader/EmptyClients.h: ... And add a stub implementation.
+
</ins><span class="cx"> 2016-09-03  Michael Catanzaro  &lt;mcatanzaro@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Silence -Wparentheses warning triggered by r205266
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderDocumentLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/DocumentLoader.cpp        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -1478,6 +1478,11 @@
</span><span class="cx">     m_contentFilter = !m_substituteData.isValid() ? ContentFilter::create(*this) : nullptr;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTENT_EXTENSIONS)
+    if (m_userContentExtensionsEnabled)
+        m_userContentExtensionsEnabled = frameLoader()-&gt;client().shouldUseContentExtensionsForURL(m_request.url());
+#endif
+
</ins><span class="cx">     // FIXME: Is there any way the extra fields could have not been added by now?
</span><span class="cx">     // If not, it would be great to remove this line of code.
</span><span class="cx">     // Note that currently, some requests may have incorrect extra fields even if this function has been called,
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.h (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.h        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebCore/loader/EmptyClients.h        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -303,6 +303,10 @@
</span><span class="cx">     void dispatchDidFinishLoad() override { }
</span><span class="cx">     void dispatchDidReachLayoutMilestone(LayoutMilestones) override { }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTENT_EXTENSIONS)
+    bool shouldUseContentExtensionsForURL(const URL&amp;) override { return true; }
+#endif
+
</ins><span class="cx">     Frame* dispatchCreatePage(const NavigationAction&amp;) override { return nullptr; }
</span><span class="cx">     void dispatchShow() override { }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoaderClient.h (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoaderClient.h        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebCore/loader/FrameLoaderClient.h        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -173,6 +173,10 @@
</span><span class="cx">         virtual void dispatchDidFinishDataDetection(NSArray *detectionResults) = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTENT_EXTENSIONS)
+        virtual bool shouldUseContentExtensionsForURL(const URL&amp;) = 0;
+#endif
+
</ins><span class="cx">         virtual void dispatchDidLayout() { }
</span><span class="cx">         virtual void dispatchDidReachLayoutMilestone(LayoutMilestones) { }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2016-09-03  Brian Weinstein  &lt;bweinstein@apple.com&gt;
+
+        Implement a stub version of FrameLoaderClient::shouldUseContentExtensionsForURL.
+        https://bugs.webkit.org/show_bug.cgi?id=16144
+
+        Reviewed by Darin Adler.
+
+        * WebCoreSupport/WebFrameLoaderClient.h:
+
</ins><span class="cx"> 2016-09-02  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Need to updateEditorState if an element change edit-ability without changing 
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -118,6 +118,10 @@
</span><span class="cx">     void dispatchDidFinishLoad() override;
</span><span class="cx">     void dispatchDidReachLayoutMilestone(WebCore::LayoutMilestones) override;
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTENT_EXTENSIONS)
+    bool shouldUseContentExtensionsForURL(const WebCore::URL&amp;) override { return true; }
+#endif
+
</ins><span class="cx">     WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&amp;) override;
</span><span class="cx">     void dispatchShow() override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit2/ChangeLog        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-09-03  Brian Weinstein  &lt;bweinstein@apple.com&gt;
+
+        Implement WebFrameLoaderClient::shouldUseContentExtensionsForURL and consult the InjectedBundlePageLoaderClient.
+        https://bugs.webkit.org/show_bug.cgi?id=161441
+
+        Reviewed by Darin Adler.
+
+        WebFrameLoaderClient::shouldUseContentExtensionsForURL only consults the injected bundle, because we don't want to
+        defer the loading of every main resource to consult with the UI Process about whether or not we should use content
+        extensions for the load.
+
+        * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h: Bump the latest version to WKBundlePageLoaderClientV9 and
+        add WKBundlePageShouldUseContentExtensionsForURLCallback.
+        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
+        (WebKit::InjectedBundlePageLoaderClient::shouldUseContentExtensionsForURL): Ask the client if we should use content
+        extensions for this URL.
+        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::shouldUseContentExtensionsForURL): Only consult with the injected bundle about whether
+        or not we should use content extensions for this URL.
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
+
</ins><span class="cx"> 2016-09-03  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Move WebKit2 WebInspector files to #pragma once
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePageLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -62,6 +62,7 @@
</span><span class="cx"> typedef void (*WKBundlePageWillLoadURLRequestCallback)(WKBundlePageRef page, WKURLRequestRef request, WKTypeRef userData, const void *clientInfo);
</span><span class="cx"> typedef void (*WKBundlePageWillLoadDataRequestCallback)(WKBundlePageRef page, WKURLRequestRef request, WKDataRef data, WKStringRef MIMEType, WKStringRef encodingName, WKURLRef unreachableURL, WKTypeRef userData, const void *clientInfo);
</span><span class="cx"> typedef WKStringRef (*WKBundlePageUserAgentForURLCallback)(WKBundleFrameRef frame, WKURLRef url, const void *clientInfo);
</span><ins>+typedef bool (*WKBundlePageShouldUseContentExtensionsForURLCallback)(WKBundlePageRef page, WKURLRef url, const void *clientInfo);
</ins><span class="cx"> 
</span><span class="cx"> typedef struct WKBundlePageLoaderClientBase {
</span><span class="cx">     int                                                                     version;
</span><span class="lines">@@ -464,4 +465,66 @@
</span><span class="cx">     WKBundlePageUserAgentForURLCallback                                     userAgentForURL;
</span><span class="cx"> } WKBundlePageLoaderClientV8;
</span><span class="cx"> 
</span><ins>+typedef struct WKBundlePageLoaderClientV9 {
+    WKBundlePageLoaderClientBase                                            base;
+    
+    // Version 0.
+    WKBundlePageDidStartProvisionalLoadForFrameCallback                     didStartProvisionalLoadForFrame;
+    WKBundlePageDidReceiveServerRedirectForProvisionalLoadForFrameCallback  didReceiveServerRedirectForProvisionalLoadForFrame;
+    WKBundlePageDidFailProvisionalLoadWithErrorForFrameCallback             didFailProvisionalLoadWithErrorForFrame;
+    WKBundlePageDidCommitLoadForFrameCallback                               didCommitLoadForFrame;
+    WKBundlePageDidFinishDocumentLoadForFrameCallback                       didFinishDocumentLoadForFrame;
+    WKBundlePageDidFinishLoadForFrameCallback                               didFinishLoadForFrame;
+    WKBundlePageDidFailLoadWithErrorForFrameCallback                        didFailLoadWithErrorForFrame;
+    WKBundlePageDidSameDocumentNavigationForFrameCallback                   didSameDocumentNavigationForFrame;
+    WKBundlePageDidReceiveTitleForFrameCallback                             didReceiveTitleForFrame;
+    WKBundlePageDidFirstLayoutForFrameCallback                              didFirstLayoutForFrame;
+    WKBundlePageDidFirstVisuallyNonEmptyLayoutForFrameCallback              didFirstVisuallyNonEmptyLayoutForFrame;
+    WKBundlePageDidRemoveFrameFromHierarchyCallback                         didRemoveFrameFromHierarchy;
+    WKBundlePageDidDisplayInsecureContentForFrameCallback                   didDisplayInsecureContentForFrame;
+    WKBundlePageDidRunInsecureContentForFrameCallback                       didRunInsecureContentForFrame;
+    WKBundlePageDidClearWindowObjectForFrameCallback                        didClearWindowObjectForFrame;
+    WKBundlePageDidCancelClientRedirectForFrameCallback                     didCancelClientRedirectForFrame;
+    WKBundlePageWillPerformClientRedirectForFrameCallback                   willPerformClientRedirectForFrame;
+    WKBundlePageDidHandleOnloadEventsForFrameCallback                       didHandleOnloadEventsForFrame;
+    
+    // Version 1.
+    WKBundlePageDidLayoutForFrameCallback                                   didLayoutForFrame;
+    void *                                                                  didNewFirstVisuallyNonEmptyLayout_unavailable;
+    WKBundlePageDidDetectXSSForFrameCallback                                didDetectXSSForFrame;
+    WKBundlePageShouldGoToBackForwardListItemCallback                       shouldGoToBackForwardListItem;
+    WKBundlePageGlobalObjectIsAvailableForFrameCallback                     globalObjectIsAvailableForFrame;
+    WKBundlePageWillDisconnectDOMWindowExtensionFromGlobalObjectCallback    willDisconnectDOMWindowExtensionFromGlobalObject;
+    WKBundlePageDidReconnectDOMWindowExtensionToGlobalObjectCallback        didReconnectDOMWindowExtensionToGlobalObject;
+    WKBundlePageWillDestroyGlobalObjectForDOMWindowExtensionCallback        willDestroyGlobalObjectForDOMWindowExtension;
+    
+    // Version 2
+    WKBundlePageDidFinishProgressCallback                                   didFinishProgress;
+    WKBundlePageShouldForceUniversalAccessFromLocalURLCallback              shouldForceUniversalAccessFromLocalURL;
+    
+    // Version 3
+    void *                                                                  didReceiveIntentForFrame_unavailable;
+    void *                                                                  registerIntentServiceForFrame_unavailable;
+    
+    // Version 4
+    WKBundlePageDidLayoutCallback                                           didLayout;
+    
+    // Version 5
+    WKBundlePageFeaturesUsedInPageCallback                                  featuresUsedInPage;
+    
+    // Version 6
+    WKBundlePageWillLoadURLRequestCallback                                  willLoadURLRequest;
+    WKBundlePageWillLoadDataRequestCallback                                 willLoadDataRequest;
+    
+    // Version 7
+    void *                                                                  willDestroyFrame_unavailable;
+    
+    // Version 8
+    WKBundlePageUserAgentForURLCallback                                     userAgentForURL;
+
+    // Version 9
+    WKBundlePageShouldUseContentExtensionsForURLCallback                    shouldUseContentExtensionsForURL;
+} WKBundlePageLoaderClientV9;
+
+
</ins><span class="cx"> #endif // WKBundlePageLoaderClient_h
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlePageLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -356,5 +356,15 @@
</span><span class="cx">     WKStringRef userAgent = m_client.userAgentForURL(toAPI(frame), toAPI(url), m_client.base.clientInfo);
</span><span class="cx">     return toImpl(userAgent);
</span><span class="cx"> }
</span><del>-    
</del><ins>+
+#if ENABLE(CONTENT_EXTENSIONS)
+bool InjectedBundlePageLoaderClient::shouldUseContentExtensionsForURL(WebPage* page, API::URL* url) const
+{
+    if (!m_client.shouldUseContentExtensionsForURL)
+        return true;
+
+    return m_client.shouldUseContentExtensionsForURL(toAPI(page), toAPI(url), m_client.base.clientInfo);
+}
+#endif
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlePageLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> class Object;
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; struct ClientTraits&lt;WKBundlePageLoaderClientBase&gt; {
</span><del>-    typedef std::tuple&lt;WKBundlePageLoaderClientV0, WKBundlePageLoaderClientV1, WKBundlePageLoaderClientV2, WKBundlePageLoaderClientV3, WKBundlePageLoaderClientV4, WKBundlePageLoaderClientV5, WKBundlePageLoaderClientV6, WKBundlePageLoaderClientV7, WKBundlePageLoaderClientV8&gt; Versions;
</del><ins>+    typedef std::tuple&lt;WKBundlePageLoaderClientV0, WKBundlePageLoaderClientV1, WKBundlePageLoaderClientV2, WKBundlePageLoaderClientV3, WKBundlePageLoaderClientV4, WKBundlePageLoaderClientV5, WKBundlePageLoaderClientV6, WKBundlePageLoaderClientV7, WKBundlePageLoaderClientV8, WKBundlePageLoaderClientV9&gt; Versions;
</ins><span class="cx"> };
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -102,6 +102,10 @@
</span><span class="cx"> 
</span><span class="cx">     void willDestroyFrame(WebPage*, WebFrame*);
</span><span class="cx">     API::String* userAgentForURL(WebFrame*, API::URL*) const;
</span><ins>+
+#if ENABLE(CONTENT_EXTENSIONS)
+    bool shouldUseContentExtensionsForURL(WebPage*, API::URL*) const;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -635,6 +635,18 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTENT_EXTENSIONS)
+bool WebFrameLoaderClient::shouldUseContentExtensionsForURL(const URL&amp; url)
+{
+    WebPage* webPage = m_frame-&gt;page();
+    if (!webPage)
+        return true;
+
+    // Just send the request to the injected bundle client because we don't have time to wait for a response from the UI Process.
+    return webPage-&gt;injectedBundleLoaderClient().shouldUseContentExtensionsForURL(webPage, API::URL::create(url.string()).ptr());
+}
+#endif
+
</ins><span class="cx"> Frame* WebFrameLoaderClient::dispatchCreatePage(const NavigationAction&amp; navigationAction)
</span><span class="cx"> {
</span><span class="cx">     WebPage* webPage = m_frame-&gt;page();
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h (205406 => 205407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h        2016-09-03 15:21:54 UTC (rev 205406)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h        2016-09-03 19:58:28 UTC (rev 205407)
</span><span class="lines">@@ -105,6 +105,10 @@
</span><span class="cx">     void dispatchDidReachLayoutMilestone(WebCore::LayoutMilestones) override;
</span><span class="cx">     void dispatchDidLayout() override;
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTENT_EXTENSIONS)
+    bool shouldUseContentExtensionsForURL(const WebCore::URL&amp;) override;
+#endif
+
</ins><span class="cx">     WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&amp;) override;
</span><span class="cx">     void dispatchShow() override;
</span><span class="cx">     
</span></span></pre>
</div>
</div>

</body>
</html>