<!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>[185072] 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/185072">185072</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2015-06-01 12:57:16 -0700 (Mon, 01 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add WKTR support for &quot;should open external URLs&quot;.
https://bugs.webkit.org/show_bug.cgi?id=145505

Reviewed by Darin Adler.

Source/WebKit2:

Expose C-spi to allow WKTR to set this bit on new loads:
* UIProcess/API/C/WKPage.cpp:
(WKPageLoadURLWithShouldOpenExternalURLsPolicy):
* UIProcess/API/C/WKPagePrivate.h:

Expose the bit on NavigationAction for the policy delegate:
* WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp:
(WKBundleNavigationActionGetShouldOpenExternalURLs):
* WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h: Copied from Tools/WebKitTestRunner/WorkQueueManager.h.

* WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
* WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
(WebKit::InjectedBundleNavigationAction::shouldOpenExternalURLs):

* WebKit2.xcodeproj/project.pbxproj:

Tools:

- Add a new option to &quot;queueLoad&quot; to allow javascript to queue a load that has the
  &quot;should open external URLs&quot; bit set.

- Add a new &quot;dumpPolicyDelegateCallbacks&quot; call to dump the NavigationAction in
  the policy delegate, including whether or not the bit was set.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::queueLoad):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::dumpPolicyDelegateCallbacks):
(WTR::TestRunner::shouldDumpPolicyCallbacks):

* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::queueLoad):
* WebKitTestRunner/InjectedBundle/InjectedBundle.h:

* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::decidePolicyForNavigationAction):

* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

* WebKitTestRunner/WorkQueueManager.cpp:
(WTR::WorkQueueManager::queueLoad):
* WebKitTestRunner/WorkQueueManager.h:

LayoutTests:

* loader/navigation-policy/resources/notify-done.html: Added.
* loader/navigation-policy/should-load-external-urls-set-by-api-basic-expected.txt: Added.
* loader/navigation-policy/should-load-external-urls-set-by-api-basic.html: Added.
* loader/navigation-policy/should-not-load-external-urls-set-by-api-basic-expected.txt: Added.
* loader/navigation-policy/should-not-load-external-urls-set-by-api-basic.html: Added.

* platform/ios-simulator-wk1/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk1TestExpectations">trunk/LayoutTests/platform/ios-simulator-wk1/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1TestExpectations">trunk/LayoutTests/platform/mac-wk1/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformwinTestExpectations">trunk/LayoutTests/platform/win/TestExpectations</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagePrivateh">trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNavigationActioncpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActioncpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActionh">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleBindingsTestRunneridl">trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleInjectedBundlecpp">trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleInjectedBundleh">trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleInjectedBundlePagecpp">trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleTestRunnercpp">trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleTestRunnerh">trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestInvocationcpp">trunk/Tools/WebKitTestRunner/TestInvocation.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWorkQueueManagercpp">trunk/Tools/WebKitTestRunner/WorkQueueManager.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWorkQueueManagerh">trunk/Tools/WebKitTestRunner/WorkQueueManager.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/loader/navigation-policy/</li>
<li>trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/</li>
<li><a href="#trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapidoesnotsetflagbasicexpectedtxt">trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapidoesnotsetflagbasichtml">trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic.html</a></li>
<li><a href="#trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapisetsflagbasicexpectedtxt">trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapisetsflagbasichtml">trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic.html</a></li>
<li>trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/resources/</li>
<li><a href="#trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsresourcesnotifydonehtml">trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/resources/notify-done.html</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNavigationActionPrivateh">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/LayoutTests/ChangeLog        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2015-06-01  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Add WKTR support for &quot;should open external URLs&quot;.
+        https://bugs.webkit.org/show_bug.cgi?id=145505
+
+        Reviewed by Darin Adler.
+
+        * loader/navigation-policy/resources/notify-done.html: Added.
+        * loader/navigation-policy/should-load-external-urls-set-by-api-basic-expected.txt: Added.
+        * loader/navigation-policy/should-load-external-urls-set-by-api-basic.html: Added.
+        * loader/navigation-policy/should-not-load-external-urls-set-by-api-basic-expected.txt: Added.
+        * loader/navigation-policy/should-not-load-external-urls-set-by-api-basic.html: Added.
+
+        * platform/ios-simulator-wk1/TestExpectations:
+        * platform/mac-wk1/TestExpectations:
+        * platform/win/TestExpectations:
+
</ins><span class="cx"> 2015-06-01  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         ASSERT(revalidatingResource.inCache()) in MemoryCache when reloading tumblr.com
</span></span></pre></div>
<a id="trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapidoesnotsetflagbasicexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic-expected.txt (0 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic-expected.txt                                (rev 0)
+++ trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic-expected.txt        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+ - decidePolicyForNavigationAction 
+&lt;NSURLRequest URL resources/notify-done.html, main document URL resources/notify-done.html, http method GET&gt; is main frame - yes should open URLs externally - no
+
</ins></span></pre></div>
<a id="trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapidoesnotsetflagbasichtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic.html (0 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic.html                                (rev 0)
+++ trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-does-not-set-flag-basic.html        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.dumpPolicyDelegateCallbacks();
+    testRunner.queueLoad(&quot;resources/notify-done.html&quot;);
+}
+&lt;/script&gt;
+This test dumps the NavigationPolicy passed to the decidePolicyForNavigationAction delegate call.&lt;br&gt;
+It only makes sense to run this in WebKitTestRunner.
</ins></span></pre></div>
<a id="trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapisetsflagbasicexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic-expected.txt (0 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic-expected.txt                                (rev 0)
+++ trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic-expected.txt        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+ - decidePolicyForNavigationAction 
+&lt;NSURLRequest URL resources/notify-done.html, main document URL resources/notify-done.html, http method GET&gt; is main frame - yes should open URLs externally - yes
+
</ins></span></pre></div>
<a id="trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsapisetsflagbasichtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic.html (0 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic.html                                (rev 0)
+++ trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/api-sets-flag-basic.html        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.dumpPolicyDelegateCallbacks();
+    testRunner.queueLoad(&quot;resources/notify-done.html&quot;, &quot;&quot;, true);
+}
+&lt;/script&gt;
+This test dumps the NavigationPolicy passed to the decidePolicyForNavigationAction delegate call.&lt;br&gt;
+It only makes sense to run this in WebKitTestRunner.
</ins></span></pre></div>
<a id="trunkLayoutTestsloadernavigationpolicyshouldopenexternalurlsresourcesnotifydonehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/resources/notify-done.html (0 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/resources/notify-done.html                                (rev 0)
+++ trunk/LayoutTests/loader/navigation-policy/should-open-external-urls/resources/notify-done.html        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;script&gt;
+if (window.testRunner)
+    testRunner.notifyDone();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk1TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk1/TestExpectations (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk1/TestExpectations        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/LayoutTests/platform/ios-simulator-wk1/TestExpectations        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -1446,3 +1446,6 @@
</span><span class="cx"> crypto/subtle/rsa-indexeddb.html
</span><span class="cx"> fast/history/page-cache-indexed-closed-db.html
</span><span class="cx"> fast/history/page-cache-indexed-opened-db.html
</span><ins>+
+# ShouldOpenExternalURLs not yet supported in WK1
+loader/navigation-policy [ Skip ]
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/TestExpectations        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -102,5 +102,8 @@
</span><span class="cx"> 
</span><span class="cx"> [ Yosemite+ ] platform/mac/fast/ruby/ruby-expansion-cjk-2.html [ ImageOnlyFailure ]
</span><span class="cx"> 
</span><ins>+# ShouldOpenExternalURLs not yet supported in WK1
+loader/navigation-policy [ Skip ]
+
</ins><span class="cx"> ### END OF (2) Failures without bug reports
</span><span class="cx"> ########################################
</span></span></pre></div>
<a id="trunkLayoutTestsplatformwinTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/win/TestExpectations (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/win/TestExpectations        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/LayoutTests/platform/win/TestExpectations        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -3101,3 +3101,6 @@
</span><span class="cx"> 
</span><span class="cx"> # Seems to be font metrics dependent.
</span><span class="cx"> fast/text/simple-line-layout-text-stroke-width.html [ Failure ]
</span><ins>+
+# ShouldOpenExternalURLs not yet supported in WK1
+loader/navigation-policy [ Skip ]
</ins></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Source/WebKit2/ChangeLog        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2015-06-01  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Add WKTR support for &quot;should open external URLs&quot;.
+        https://bugs.webkit.org/show_bug.cgi?id=145505
+
+        Reviewed by Darin Adler.
+
+        Expose C-spi to allow WKTR to set this bit on new loads:
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageLoadURLWithShouldOpenExternalURLsPolicy):
+        * UIProcess/API/C/WKPagePrivate.h:
+        
+        Expose the bit on NavigationAction for the policy delegate:        
+        * WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp:
+        (WKBundleNavigationActionGetShouldOpenExternalURLs):
+        * WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h: Copied from Tools/WebKitTestRunner/WorkQueueManager.h.
+
+        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
+        (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
+        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
+        (WebKit::InjectedBundleNavigationAction::shouldOpenExternalURLs):
+    
+        * WebKit2.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2015-06-01  Gavin Barraclough  &lt;barraclough@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         PDFs always think they're visible on iOS.
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -126,6 +126,12 @@
</span><span class="cx">     toImpl(pageRef)-&gt;loadRequest(URL(URL(), toWTFString(URLRef)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WKPageLoadURLWithShouldOpenExternalURLsPolicy(WKPageRef pageRef, WKURLRef URLRef, bool shouldOpenExternalURLs)
+{
+    ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy = shouldOpenExternalURLs ? ShouldOpenExternalURLsPolicy::ShouldAllow : ShouldOpenExternalURLsPolicy::ShouldNotAllow;
+    toImpl(pageRef)-&gt;loadRequest(URL(URL(), toWTFString(URLRef)), shouldOpenExternalURLsPolicy);
+}
+
</ins><span class="cx"> void WKPageLoadURLWithUserData(WKPageRef pageRef, WKURLRef URLRef, WKTypeRef userDataRef)
</span><span class="cx"> {
</span><span class="cx">     toImpl(pageRef)-&gt;loadRequest(URL(URL(), toWTFString(URLRef)), ShouldOpenExternalURLsPolicy::ShouldNotAllow, toImpl(userDataRef));
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagePrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -111,6 +111,8 @@
</span><span class="cx"> WK_EXPORT bool WKPageIsPlayingAudio(WKPageRef page);
</span><span class="cx"> WK_EXPORT void WKPageSetMuted(WKPageRef page, bool muted);
</span><span class="cx"> 
</span><ins>+WK_EXPORT void WKPageLoadURLWithShouldOpenExternalURLsPolicy(WKPageRef page, WKURLRef url, bool shouldOpenExternalURLs);
+
</ins><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -1001,6 +1001,7 @@
</span><span class="cx">                 51A555F6128C6C47009ABCEC /* WKContextMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A555F4128C6C47009ABCEC /* WKContextMenuItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51A55601128C6D92009ABCEC /* WKContextMenuItemTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A55600128C6D92009ABCEC /* WKContextMenuItemTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51A60B2A180CCEB500F3BF50 /* DatabaseProcess.app in Copy Files */ = {isa = PBXBuildFile; fileRef = 51FA1E28180CCADE00C44BE9 /* DatabaseProcess.app */; };
</span><ins>+                51A728DE1B1BAD3800102EEE /* WKBundleNavigationActionPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A728DC1B1BAD2D00102EEE /* WKBundleNavigationActionPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 51A7F2F3125BF820008AEB1D /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A7F2F2125BF820008AEB1D /* Logging.h */; };
</span><span class="cx">                 51A7F2F5125BF8D4008AEB1D /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A7F2F4125BF8D4008AEB1D /* Logging.cpp */; };
</span><span class="cx">                 51A84CE3127F386B00CA6EA4 /* WebContextMenuProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A84CE2127F386B00CA6EA4 /* WebContextMenuProxy.cpp */; };
</span><span class="lines">@@ -3199,6 +3200,7 @@
</span><span class="cx">                 51A60B27180CCD9000F3BF50 /* DatabaseProcess.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DatabaseProcess.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A60B28180CCD9000F3BF50 /* DatabaseService.Development.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DatabaseService.Development.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A60B29180CCD9000F3BF50 /* DatabaseService.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DatabaseService.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                51A728DC1B1BAD2D00102EEE /* WKBundleNavigationActionPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBundleNavigationActionPrivate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 51A7F2F2125BF820008AEB1D /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logging.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A7F2F4125BF8D4008AEB1D /* Logging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Logging.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A84CE2127F386B00CA6EA4 /* WebContextMenuProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebContextMenuProxy.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -6706,6 +6708,7 @@
</span><span class="cx">                                 65B86F1812F11D7B00B7DD8A /* WKBundleInspector.h */,
</span><span class="cx">                                 BC7043CB12F75EE0006472B9 /* WKBundleNavigationAction.cpp */,
</span><span class="cx">                                 BC7043CA12F75EE0006472B9 /* WKBundleNavigationAction.h */,
</span><ins>+                                51A728DC1B1BAD2D00102EEE /* WKBundleNavigationActionPrivate.h */,
</ins><span class="cx">                                 BC4BEFE0120A1A4C00FBA0C7 /* WKBundleNodeHandle.cpp */,
</span><span class="cx">                                 BC4BEFDF120A1A4C00FBA0C7 /* WKBundleNodeHandle.h */,
</span><span class="cx">                                 BC57450B1263B155006F0F12 /* WKBundleNodeHandlePrivate.h */,
</span><span class="lines">@@ -7907,6 +7910,7 @@
</span><span class="cx">                                 1A2BB6D114117B4D000F35D4 /* PluginProcessConnectionMessages.h in Headers */,
</span><span class="cx">                                 1A2D90D21281C966001EB962 /* PluginProcessCreationParameters.h in Headers */,
</span><span class="cx">                                 1A0EC603124A9F2C007EF4A5 /* PluginProcessManager.h in Headers */,
</span><ins>+                                51A728DE1B1BAD3800102EEE /* WKBundleNavigationActionPrivate.h in Headers */,
</ins><span class="cx">                                 1A0EC6C0124BBD9B007EF4A5 /* PluginProcessMessages.h in Headers */,
</span><span class="cx">                                 1A0EC75E124BC7B2007EF4A5 /* PluginProcessProxy.h in Headers */,
</span><span class="cx">                                 1A043B5E124D5E9D00FFBFB5 /* PluginProcessProxyMessages.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNavigationActioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WKBundleNavigationAction.h&quot;
</span><ins>+#include &quot;WKBundleNavigationActionPrivate.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;InjectedBundleHitTestResult.h&quot;
</span><span class="cx"> #include &quot;InjectedBundleNavigationAction.h&quot;
</span><span class="lines">@@ -65,3 +66,8 @@
</span><span class="cx">     RefPtr&lt;InjectedBundleNodeHandle&gt; formElement = toImpl(navigationActionRef)-&gt;formElement();
</span><span class="cx">     return toAPI(formElement.release().leakRef());
</span><span class="cx"> }
</span><ins>+
+bool WKBundleNavigationActionGetShouldOpenExternalURLs(WKBundleNavigationActionRef navigationActionRef)
+{
+    return toImpl(navigationActionRef)-&gt;shouldOpenExternalURLs();
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundleNavigationActionPrivatehfromrev185071trunkToolsWebKitTestRunnerWorkQueueManagerh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h (from rev 185071, trunk/Tools/WebKitTestRunner/WorkQueueManager.h) (0 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h                                (rev 0)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKBundleNavigationActionPrivate_h
+#define WKBundleNavigationActionPrivate_h
+
+#include &lt;WebKit/WKBase.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+WK_EXPORT bool WKBundleNavigationActionGetShouldOpenExternalURLs(WKBundleNavigationActionRef);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKBundleNavigationActionPrivate_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -90,6 +90,7 @@
</span><span class="cx">     : m_navigationType(navigationAction.type())
</span><span class="cx">     , m_modifiers(modifiersForNavigationAction(navigationAction))
</span><span class="cx">     , m_mouseButton(WebMouseEvent::NoButton)
</span><ins>+    , m_shouldOpenExternalURLs(navigationAction.shouldOpenExternalURLsPolicy() == ShouldOpenExternalURLsPolicy::ShouldAllow)
</ins><span class="cx"> {
</span><span class="cx">     if (const MouseEvent* mouseEvent = mouseEventForNavigationAction(navigationAction)) {
</span><span class="cx">         m_hitTestResult = InjectedBundleHitTestResult::create(frame-&gt;coreFrame()-&gt;eventHandler().hitTestResultAtPoint(mouseEvent-&gt;absoluteLocation()));
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -56,6 +56,8 @@
</span><span class="cx">     InjectedBundleHitTestResult* hitTestResult() const { return m_hitTestResult.get(); }
</span><span class="cx">     InjectedBundleNodeHandle* formElement() const { return m_formElement.get(); }
</span><span class="cx"> 
</span><ins>+    bool shouldOpenExternalURLs() const { return m_shouldOpenExternalURLs; }
+
</ins><span class="cx"> private:
</span><span class="cx">     InjectedBundleNavigationAction(WebFrame*, const WebCore::NavigationAction&amp;, PassRefPtr&lt;WebCore::FormState&gt;);
</span><span class="cx"> 
</span><span class="lines">@@ -64,6 +66,7 @@
</span><span class="cx">     WebMouseEvent::Button m_mouseButton;
</span><span class="cx">     RefPtr&lt;InjectedBundleHitTestResult&gt; m_hitTestResult;
</span><span class="cx">     RefPtr&lt;InjectedBundleNodeHandle&gt; m_formElement;
</span><ins>+    bool m_shouldOpenExternalURLs;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/ChangeLog        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2015-06-01  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Add WKTR support for &quot;should open external URLs&quot;.
+        https://bugs.webkit.org/show_bug.cgi?id=145505
+
+        Reviewed by Darin Adler.
+
+        - Add a new option to &quot;queueLoad&quot; to allow javascript to queue a load that has the
+          &quot;should open external URLs&quot; bit set.
+        
+        - Add a new &quot;dumpPolicyDelegateCallbacks&quot; call to dump the NavigationAction in
+          the policy delegate, including whether or not the bit was set.
+        
+        * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
+        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
+        (WTR::TestRunner::queueLoad):
+        * WebKitTestRunner/InjectedBundle/TestRunner.h:
+        (WTR::TestRunner::dumpPolicyDelegateCallbacks):
+        (WTR::TestRunner::shouldDumpPolicyCallbacks):
+        
+        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
+        (WTR::InjectedBundle::queueLoad):
+        * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
+
+        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
+        (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
+
+        * WebKitTestRunner/TestInvocation.cpp:
+        (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
+
+        * WebKitTestRunner/WorkQueueManager.cpp:
+        (WTR::WorkQueueManager::queueLoad):
+        * WebKitTestRunner/WorkQueueManager.h:
+
</ins><span class="cx"> 2015-06-01  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         build-jsc's --cloop option is broken.
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleBindingsTestRunneridl"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx">     void dumpApplicationCacheDelegateCallbacks();
</span><span class="cx">     void dumpDatabaseCallbacks();
</span><span class="cx">     void dumpDOMAsWebArchive();
</span><ins>+    void dumpPolicyDelegateCallbacks();
</ins><span class="cx"> 
</span><span class="cx">     // Special options.
</span><span class="cx">     void keepWebHistory();
</span><span class="lines">@@ -180,7 +181,7 @@
</span><span class="cx">     // Work queue.
</span><span class="cx">     void queueBackNavigation(unsigned long howFarBackward);
</span><span class="cx">     void queueForwardNavigation(unsigned long howFarForward);
</span><del>-    void queueLoad(DOMString url, DOMString target);
</del><ins>+    void queueLoad(DOMString url, DOMString target, optional boolean shouldOpenExternalURLs);
</ins><span class="cx">     void queueLoadHTMLString(DOMString content, optional DOMString baseURL, optional DOMString unreachableURL);
</span><span class="cx">     void queueReload();
</span><span class="cx">     void queueLoadingScript(DOMString script);
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleInjectedBundlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -544,7 +544,7 @@
</span><span class="cx">     WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedBundle::queueLoad(WKStringRef url, WKStringRef target)
</del><ins>+void InjectedBundle::queueLoad(WKStringRef url, WKStringRef target, bool shouldOpenExternalURLs)
</ins><span class="cx"> {
</span><span class="cx">     m_useWorkQueue = true;
</span><span class="cx"> 
</span><span class="lines">@@ -558,6 +558,10 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; targetKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;target&quot;));
</span><span class="cx">     WKDictionarySetItem(loadData.get(), targetKey.get(), target);
</span><span class="cx"> 
</span><ins>+    WKRetainPtr&lt;WKStringRef&gt; shouldOpenExternalURLsKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;shouldOpenExternalURLs&quot;));
+    WKRetainPtr&lt;WKBooleanRef&gt; shouldOpenExternalURLsValue(AdoptWK, WKBooleanCreate(shouldOpenExternalURLs));
+    WKDictionarySetItem(loadData.get(), shouldOpenExternalURLsKey.get(), shouldOpenExternalURLsValue.get());
+
</ins><span class="cx">     WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), loadData.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleInjectedBundleh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">     void processWorkQueue();
</span><span class="cx">     void queueBackNavigation(unsigned howFarBackward);
</span><span class="cx">     void queueForwardNavigation(unsigned howFarForward);
</span><del>-    void queueLoad(WKStringRef url, WKStringRef target);
</del><ins>+    void queueLoad(WKStringRef url, WKStringRef target, bool shouldOpenExternalURLs = false);
</ins><span class="cx">     void queueLoadHTMLString(WKStringRef content, WKStringRef baseURL = 0, WKStringRef unreachableURL = 0);
</span><span class="cx">     void queueReload();
</span><span class="cx">     void queueLoadingScript(WKStringRef script);
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleInjectedBundlePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx"> #include &lt;WebKit/WKBundleFramePrivate.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKBundleHitTestResult.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKBundleNavigationAction.h&gt;
</span><ins>+#include &lt;WebKit/WKBundleNavigationActionPrivate.h&gt;
</ins><span class="cx"> #include &lt;WebKit/WKBundleNodeHandlePrivate.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKBundlePagePrivate.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKBundlePrivate.h&gt;
</span><span class="lines">@@ -1262,6 +1263,18 @@
</span><span class="cx">     if (!injectedBundle.isTestRunning())
</span><span class="cx">         return WKBundlePagePolicyActionUse;
</span><span class="cx"> 
</span><ins>+    if (injectedBundle.testRunner()-&gt;shouldDumpPolicyCallbacks()) {
+        StringBuilder stringBuilder;
+        stringBuilder.appendLiteral(&quot; - decidePolicyForNavigationAction \n&quot;);
+        dumpRequestDescriptionSuitableForTestResult(request, stringBuilder);
+        stringBuilder.appendLiteral(&quot; is main frame - &quot;);
+        stringBuilder.append(WKBundleFrameIsMainFrame(frame) ? &quot;yes&quot; : &quot;no&quot;);
+        stringBuilder.appendLiteral(&quot; should open URLs externally - &quot;);
+        stringBuilder.append(WKBundleNavigationActionGetShouldOpenExternalURLs(navigationAction) ? &quot;yes&quot; : &quot;no&quot;);
+        stringBuilder.append('\n');
+        injectedBundle.outputText(stringBuilder.toString());
+    }
+
</ins><span class="cx">     if (!injectedBundle.testRunner()-&gt;isPolicyDelegateEnabled())
</span><span class="cx">         return WKBundlePagePolicyActionUse;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleTestRunnercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -764,14 +764,14 @@
</span><span class="cx">     InjectedBundle::singleton().queueForwardNavigation(howFarForward);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestRunner::queueLoad(JSStringRef url, JSStringRef target)
</del><ins>+void TestRunner::queueLoad(JSStringRef url, JSStringRef target, bool shouldOpenExternalURLs)
</ins><span class="cx"> {
</span><span class="cx">     auto&amp; injectedBundle = InjectedBundle::singleton();
</span><span class="cx">     WKRetainPtr&lt;WKURLRef&gt; baseURLWK(AdoptWK, WKBundleFrameCopyURL(WKBundlePageGetMainFrame(injectedBundle.page()-&gt;page())));
</span><span class="cx">     WKRetainPtr&lt;WKURLRef&gt; urlWK(AdoptWK, WKURLCreateWithBaseURL(baseURLWK.get(), toWTFString(toWK(url)).utf8().data()));
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; urlStringWK(AdoptWK, WKURLCopyString(urlWK.get()));
</span><span class="cx"> 
</span><del>-    injectedBundle.queueLoad(urlStringWK.get(), toWK(target).get());
</del><ins>+    injectedBundle.queueLoad(urlStringWK.get(), toWK(target).get(), shouldOpenExternalURLs);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestRunner::queueLoadHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleTestRunnerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -82,6 +82,7 @@
</span><span class="cx">     void dumpApplicationCacheDelegateCallbacks() { m_dumpApplicationCacheDelegateCallbacks = true; }
</span><span class="cx">     void dumpDatabaseCallbacks() { m_dumpDatabaseCallbacks = true; }
</span><span class="cx">     void dumpDOMAsWebArchive() { m_whatToDump = DOMAsWebArchive; }
</span><ins>+    void dumpPolicyDelegateCallbacks() { m_dumpPolicyCallbacks = true; }
</ins><span class="cx"> 
</span><span class="cx">     void setShouldDumpFrameLoadCallbacks(bool value) { m_dumpFrameLoadCallbacks = value; }
</span><span class="cx">     void setShouldDumpProgressFinishedCallback(bool value) { m_dumpProgressFinishedCallback = value; }
</span><span class="lines">@@ -179,6 +180,7 @@
</span><span class="cx">     bool shouldDumpApplicationCacheDelegateCallbacks() const { return m_dumpApplicationCacheDelegateCallbacks; }
</span><span class="cx">     bool shouldDumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; }
</span><span class="cx">     bool shouldDumpSelectionRect() const { return m_dumpSelectionRect; }
</span><ins>+    bool shouldDumpPolicyCallbacks() const { return m_dumpPolicyCallbacks; }
</ins><span class="cx"> 
</span><span class="cx">     bool isPolicyDelegateEnabled() const { return m_policyDelegateEnabled; }
</span><span class="cx">     bool isPolicyDelegatePermissive() const { return m_policyDelegatePermissive; }
</span><span class="lines">@@ -268,7 +270,7 @@
</span><span class="cx">     // Work queue.
</span><span class="cx">     void queueBackNavigation(unsigned howFarBackward);
</span><span class="cx">     void queueForwardNavigation(unsigned howFarForward);
</span><del>-    void queueLoad(JSStringRef url, JSStringRef target);
</del><ins>+    void queueLoad(JSStringRef url, JSStringRef target, bool shouldOpenExternalURLs);
</ins><span class="cx">     void queueLoadHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL);
</span><span class="cx">     void queueReload();
</span><span class="cx">     void queueLoadingScript(JSStringRef script);
</span><span class="lines">@@ -307,6 +309,7 @@
</span><span class="cx">     bool m_dumpWillCacheResponse;
</span><span class="cx">     bool m_dumpApplicationCacheDelegateCallbacks;
</span><span class="cx">     bool m_dumpDatabaseCallbacks;
</span><ins>+    bool m_dumpPolicyCallbacks { false };
</ins><span class="cx">     bool m_disallowIncreaseForApplicationCacheQuota;
</span><span class="cx">     bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.
</span><span class="cx">     bool m_testRepaint;
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestInvocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestInvocation.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -557,7 +557,10 @@
</span><span class="cx">         WKRetainPtr&lt;WKStringRef&gt; targetKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;target&quot;));
</span><span class="cx">         WKStringRef targetWK = static_cast&lt;WKStringRef&gt;(WKDictionaryGetItemForKey(loadDataDictionary, targetKey.get()));
</span><span class="cx"> 
</span><del>-        TestController::singleton().workQueueManager().queueLoad(toWTFString(urlWK), toWTFString(targetWK));
</del><ins>+        WKRetainPtr&lt;WKStringRef&gt; shouldOpenExternalURLsKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;shouldOpenExternalURLs&quot;));
+        WKBooleanRef shouldOpenExternalURLsValueWK = static_cast&lt;WKBooleanRef&gt;(WKDictionaryGetItemForKey(loadDataDictionary, shouldOpenExternalURLsKey.get()));
+
+        TestController::singleton().workQueueManager().queueLoad(toWTFString(urlWK), toWTFString(targetWK), WKBooleanGetValue(shouldOpenExternalURLsValueWK));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWorkQueueManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/WorkQueueManager.cpp (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WorkQueueManager.cpp        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/WorkQueueManager.cpp        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;PlatformWebView.h&quot;
</span><span class="cx"> #include &quot;TestController.h&quot;
</span><span class="cx"> #include &lt;WebKit/WKPage.h&gt;
</span><ins>+#include &lt;WebKit/WKPagePrivate.h&gt;
</ins><span class="cx"> #include &lt;WebKit/WKRetainPtr.h&gt;
</span><span class="cx"> #include &lt;stdio.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="lines">@@ -125,13 +126,14 @@
</span><span class="cx">     return !m_processing;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WorkQueueManager::queueLoad(const String&amp; url, const String&amp; target)
</del><ins>+void WorkQueueManager::queueLoad(const String&amp; url, const String&amp; target, bool shouldOpenExternalURLs)
</ins><span class="cx"> {
</span><span class="cx">     class LoadItem : public WorkQueueItem {
</span><span class="cx">     public:
</span><del>-        LoadItem(const String&amp; url, const String&amp; target)
</del><ins>+        LoadItem(const String&amp; url, const String&amp; target, bool shouldOpenExternalURLs)
</ins><span class="cx">             : m_url(AdoptWK, WKURLCreateWithUTF8CString(url.utf8().data()))
</span><span class="cx">             , m_target(target)
</span><ins>+            , m_shouldOpenExternalURLs(shouldOpenExternalURLs)
</ins><span class="cx">         {
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -142,15 +144,16 @@
</span><span class="cx">                 fprintf(stderr, &quot;queueLoad for a specific target is not implemented.\n&quot;);
</span><span class="cx">                 return WorkQueueItem::NonLoading;
</span><span class="cx">             }
</span><del>-            WKPageLoadURL(mainPage(), m_url.get());
</del><ins>+            WKPageLoadURLWithShouldOpenExternalURLsPolicy(mainPage(), m_url.get(), m_shouldOpenExternalURLs);
</ins><span class="cx">             return WorkQueueItem::Loading;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         WKRetainPtr&lt;WKURLRef&gt; m_url;
</span><span class="cx">         String m_target;
</span><ins>+        bool m_shouldOpenExternalURLs;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><del>-    enqueue(new LoadItem(url, target));
</del><ins>+    enqueue(new LoadItem(url, target, shouldOpenExternalURLs));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WorkQueueManager::queueLoadHTMLString(const String&amp; content, const String&amp; baseURL, const String&amp; unreachableURL)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWorkQueueManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/WorkQueueManager.h (185071 => 185072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WorkQueueManager.h        2015-06-01 19:42:43 UTC (rev 185071)
+++ trunk/Tools/WebKitTestRunner/WorkQueueManager.h        2015-06-01 19:57:16 UTC (rev 185072)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">     void clearWorkQueue();
</span><span class="cx">     bool processWorkQueue(); // Returns 'true' if queue is processed (no new loading is started), returns 'false' otherwise.
</span><span class="cx"> 
</span><del>-    void queueLoad(const String&amp; url, const String&amp; target);
</del><ins>+    void queueLoad(const String&amp; url, const String&amp; target, bool shouldOpenExternalURLs);
</ins><span class="cx">     void queueLoadHTMLString(const String&amp; content, const String&amp; baseURL, const String&amp; unreachableURL);
</span><span class="cx">     void queueBackNavigation(unsigned howFarBackward);
</span><span class="cx">     void queueForwardNavigation(unsigned howFarForward);
</span></span></pre>
</div>
</div>

</body>
</html>