<!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>[180110] 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/180110">180110</a></dd>
<dt>Author</dt> <dd>ap@apple.com</dd>
<dt>Date</dt> <dd>2015-02-14 10:16:00 -0800 (Sat, 14 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>rel=&quot;noreferrer&quot; should make window.opener null
https://bugs.webkit.org/show_bug.cgi?id=141579

Reviewed by Darin Adler.

Source/WebCore:

Tests: http/tests/navigation/target-blank-opener-post.html
       http/tests/navigation/target-blank-opener.html

We used to avoid passing window.opener policy by temporarily storing it in a FrameLoader
member variable. This works for some clients - ones that invoke delegate callbacks
synchronously - but not in the general case.

So, changed to passing the policy explicitly.

* WebCore.exp.in:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::FrameLoader):
(WebCore::FrameLoader::urlSelected):
(WebCore::FrameLoader::loadURLIntoChildFrame):
(WebCore::FrameLoader::loadFrameRequest):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
* loader/FrameLoader.h:
(WebCore::FrameLoader::suppressOpenerInNewFrame): Deleted.
* loader/FrameLoaderTypes.h:
* loader/NavigationScheduler.cpp:
* page/ContextMenuController.cpp:
(WebCore::openNewWindow):
(WebCore::ContextMenuController::contextMenuItemSelected):

Source/WebKit/ios:

* WebView/WebPDFViewPlaceholder.mm:
(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]): Updated for a new WebCore
function signature. There is no rel=&quot;noreferrer&quot; in PDF, so we can just always allow.

Source/WebKit/mac:

* WebView/WebPDFView.mm:
(-[WebPDFView PDFViewWillClickOnLink:withURL:]): Updated for a new WebCore
function signature. There is no rel=&quot;noreferrer&quot; in PDF, so we can just always allow.

LayoutTests:

Unfortunately, these tests are not quite real, because they pass even without the
fix. There reason is that delegates respond synchronously in WKTR and DRT.

But if there is any large refactoring, there is a non-zero chance that the tests
will catch future mistakes.

* http/tests/navigation/resources/target-blank-opener-post-window.php: Added.
* http/tests/navigation/resources/target-blank-opener-window.php: Added.
* http/tests/navigation/target-blank-opener-expected.txt: Added.
* http/tests/navigation/target-blank-opener-post-expected.txt: Added.
* http/tests/navigation/target-blank-opener-post.html: Added.
* http/tests/navigation/target-blank-opener.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<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="#trunkSourceWebCoreloaderFrameLoadercpp">trunk/Source/WebCore/loader/FrameLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoaderh">trunk/Source/WebCore/loader/FrameLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoaderTypesh">trunk/Source/WebCore/loader/FrameLoaderTypes.h</a></li>
<li><a href="#trunkSourceWebCoreloaderNavigationSchedulercpp">trunk/Source/WebCore/loader/NavigationScheduler.cpp</a></li>
<li><a href="#trunkSourceWebCorepageContextMenuControllercpp">trunk/Source/WebCore/page/ContextMenuController.cpp</a></li>
<li><a href="#trunkSourceWebKitiosChangeLog">trunk/Source/WebKit/ios/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitiosWebViewWebPDFViewPlaceholdermm">trunk/Source/WebKit/ios/WebView/WebPDFViewPlaceholder.mm</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebPDFViewmm">trunk/Source/WebKit/mac/WebView/WebPDFView.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestshttptestsnavigationresourcestargetblankopenerpostwindowphp">trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-post-window.php</a></li>
<li><a href="#trunkLayoutTestshttptestsnavigationresourcestargetblankopenerwindowphp">trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-window.php</a></li>
<li><a href="#trunkLayoutTestshttptestsnavigationtargetblankopenerexpectedtxt">trunk/LayoutTests/http/tests/navigation/target-blank-opener-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestsnavigationtargetblankopenerpostexpectedtxt">trunk/LayoutTests/http/tests/navigation/target-blank-opener-post-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestsnavigationtargetblankopenerposthtml">trunk/LayoutTests/http/tests/navigation/target-blank-opener-post.html</a></li>
<li><a href="#trunkLayoutTestshttptestsnavigationtargetblankopenerhtml">trunk/LayoutTests/http/tests/navigation/target-blank-opener.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/LayoutTests/ChangeLog        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2015-02-14  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        rel=&quot;noreferrer&quot; should make window.opener null
+        https://bugs.webkit.org/show_bug.cgi?id=141579
+
+        Reviewed by Darin Adler.
+
+        Unfortunately, these tests are not quite real, because they pass even without the
+        fix. There reason is that delegates respond synchronously in WKTR and DRT.
+
+        But if there is any large refactoring, there is a non-zero chance that the tests
+        will catch future mistakes.
+
+        * http/tests/navigation/resources/target-blank-opener-post-window.php: Added.
+        * http/tests/navigation/resources/target-blank-opener-window.php: Added.
+        * http/tests/navigation/target-blank-opener-expected.txt: Added.
+        * http/tests/navigation/target-blank-opener-post-expected.txt: Added.
+        * http/tests/navigation/target-blank-opener-post.html: Added.
+        * http/tests/navigation/target-blank-opener.html: Added.
+
</ins><span class="cx"> 2015-02-14  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Re-ordering expectations.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsnavigationresourcestargetblankopenerpostwindowphp"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-post-window.php (0 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-post-window.php                                (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-post-window.php        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;p&gt;Referrer: &lt;?php echo $_SERVER['HTTP_REFERER'] ?&gt;&lt;/p&gt;
+&lt;script&gt;
+console.log(&quot;Referrer: &lt;?php echo $_SERVER['HTTP_REFERER'] ?&gt;&quot;);
+
+var result = &quot;window.opener: &quot; + (window.opener ? &quot;PASS&quot; : &quot;FAIL&quot;);
+document.write(result);
+console.log(result);
+if (window.testRunner)
+    testRunner.notifyDone();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsnavigationresourcestargetblankopenerwindowphp"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-window.php (0 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-window.php                                (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/resources/target-blank-opener-window.php        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;p&gt;Referrer: &lt;?php echo $_SERVER['HTTP_REFERER'] ?&gt;&lt;/p&gt;
+&lt;script&gt;
+console.log(&quot;Referrer: &lt;?php echo $_SERVER['HTTP_REFERER'] ?&gt;&quot;);
+
+var result = &quot;window.opener: &quot; + (window.opener ? &quot;FAIL&quot; : &quot;PASS&quot;);
+document.write(result);
+console.log(result);
+if (window.testRunner)
+    testRunner.notifyDone();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsnavigationtargetblankopenerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/navigation/target-blank-opener-expected.txt (0 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/navigation/target-blank-opener-expected.txt                                (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/target-blank-opener-expected.txt        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 3: Referrer: 
+CONSOLE MESSAGE: line 7: window.opener: PASS
+Test that a new window opened via &lt;a target='_blank'&gt; with rel=&quot;noreferrer&quot; has a null opener.
+
+Click me to test.
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsnavigationtargetblankopenerpostexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/navigation/target-blank-opener-post-expected.txt (0 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/navigation/target-blank-opener-post-expected.txt                                (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/target-blank-opener-post-expected.txt        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 3: Referrer: http://127.0.0.1:8000/navigation/target-blank-opener-post.html
+CONSOLE MESSAGE: line 7: window.opener: PASS
+Test that rel=&quot;noreferrer&quot; is unsupported by form elements, and that window.opener is available when form submission opens a new window.
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsnavigationtargetblankopenerposthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/navigation/target-blank-opener-post.html (0 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/navigation/target-blank-opener-post.html                                (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/target-blank-opener-post.html        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test that rel=&quot;noreferrer&quot; is unsupported by form elements, and that window.opener is available when form submission opens a new window.&lt;/p&gt;
+&lt;form id=&quot;testForm&quot; action=&quot;resources/target-blank-opener-post-window.php&quot; target=&quot;_blank&quot; rel=&quot;noreferrer&quot; method=&quot;post&quot;&gt;
+&lt;input type=&quot;submit&quot; value=&quot;Test&quot;&gt;&lt;/input&gt;
+&lt;form&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.waitUntilDone();
+    testRunner.setCanOpenWindows(true);
+}
+
+document.forms[0].submit();
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsnavigationtargetblankopenerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/navigation/target-blank-opener.html (0 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/navigation/target-blank-opener.html                                (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/target-blank-opener.html        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test that a new window opened via &amp;lt;a target='_blank'&amp;gt; with rel=&quot;noreferrer&quot; has a null opener.&lt;/p&gt;
+&lt;a id=&quot;testLink&quot; href=&quot;resources/target-blank-opener-window.php&quot; target=&quot;_blank&quot; rel=&quot;noreferrer&quot;&gt;Click me to test.&lt;/a&gt;
+&lt;script&gt;
+if (window.testRunner) {
+    testRunner.waitUntilDone();
+    testRunner.setCanOpenWindows(true);
+}
+
+document.getElementById(&quot;testLink&quot;).click();
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebCore/ChangeLog        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2015-02-14  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        rel=&quot;noreferrer&quot; should make window.opener null
+        https://bugs.webkit.org/show_bug.cgi?id=141579
+
+        Reviewed by Darin Adler.
+
+        Tests: http/tests/navigation/target-blank-opener-post.html
+               http/tests/navigation/target-blank-opener.html
+
+        We used to avoid passing window.opener policy by temporarily storing it in a FrameLoader
+        member variable. This works for some clients - ones that invoke delegate callbacks
+        synchronously - but not in the general case.
+
+        So, changed to passing the policy explicitly.
+
+        * WebCore.exp.in:
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::FrameLoader):
+        (WebCore::FrameLoader::urlSelected):
+        (WebCore::FrameLoader::loadURLIntoChildFrame):
+        (WebCore::FrameLoader::loadFrameRequest):
+        (WebCore::FrameLoader::loadURL):
+        (WebCore::FrameLoader::load):
+        (WebCore::FrameLoader::loadPostRequest):
+        (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
+        * loader/FrameLoader.h:
+        (WebCore::FrameLoader::suppressOpenerInNewFrame): Deleted.
+        * loader/FrameLoaderTypes.h:
+        * loader/NavigationScheduler.cpp:
+        * page/ContextMenuController.cpp:
+        (WebCore::openNewWindow):
+        (WebCore::ContextMenuController::contextMenuItemSelected):
+
</ins><span class="cx"> 2015-02-14  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r180082): WebCore build on Mountain Lion fails due to weak export for i386
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebCore/WebCore.exp.in        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx"> __ZN7WebCore11FrameLoader14detachChildrenEv
</span><span class="cx"> __ZN7WebCore11FrameLoader14stopAllLoadersENS_26ClearProvisionalItemPolicyE
</span><span class="cx"> __ZN7WebCore11FrameLoader16detachFromParentEv
</span><del>-__ZN7WebCore11FrameLoader16loadFrameRequestERKNS_16FrameLoadRequestENS_11LockHistoryENS_19LockBackForwardListEN3WTF10PassRefPtrINS_5EventEEENS7_INS_9FormStateEEENS_18ShouldSendReferrerENS_27AllowNavigationToInvalidURLE
</del><ins>+__ZN7WebCore11FrameLoader16loadFrameRequestERKNS_16FrameLoadRequestENS_11LockHistoryENS_19LockBackForwardListEN3WTF10PassRefPtrINS_5EventEEENS7_INS_9FormStateEEENS_18ShouldSendReferrerENS_27AllowNavigationToInvalidURLENS_20NewFrameOpenerPolicyE
</ins><span class="cx"> __ZN7WebCore11FrameLoader17stopForUserCancelEb
</span><span class="cx"> __ZN7WebCore11FrameLoader21loadURLIntoChildFrameERKNS_3URLERKN3WTF6StringEPNS_5FrameE
</span><span class="cx"> __ZN7WebCore11FrameLoader22findFrameForNavigationERKN3WTF12AtomicStringEPNS_8DocumentE
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.cpp        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -235,7 +235,6 @@
</span><span class="cx">     , m_shouldCallCheckLoadComplete(false)
</span><span class="cx">     , m_opener(nullptr)
</span><span class="cx">     , m_loadingFromCachedPage(false)
</span><del>-    , m_suppressOpenerInNewFrame(false)
</del><span class="cx">     , m_currentNavigationHasShownBeforeUnloadConfirmPanel(false)
</span><span class="cx">     , m_loadsSynchronously(false)
</span><span class="cx">     , m_forcedSandboxFlags(SandboxNone)
</span><span class="lines">@@ -330,8 +329,6 @@
</span><span class="cx"> // corresponding parameter from ScriptController::executeIfJavaScriptURL() is addressed.
</span><span class="cx"> void FrameLoader::urlSelected(const FrameLoadRequest&amp; passedRequest, PassRefPtr&lt;Event&gt; triggeringEvent, LockHistory lockHistory, LockBackForwardList lockBackForwardList, ShouldSendReferrer shouldSendReferrer, ShouldReplaceDocumentIfJavaScriptURL shouldReplaceDocumentIfJavaScriptURL, AllowNavigationToInvalidURL allowNavigationToInvalidURL)
</span><span class="cx"> {
</span><del>-    ASSERT(!m_suppressOpenerInNewFrame);
-
</del><span class="cx">     Ref&lt;Frame&gt; protect(m_frame);
</span><span class="cx">     FrameLoadRequest frameRequest(passedRequest);
</span><span class="cx"> 
</span><span class="lines">@@ -341,13 +338,11 @@
</span><span class="cx">     if (frameRequest.frameName().isEmpty())
</span><span class="cx">         frameRequest.setFrameName(m_frame.document()-&gt;baseTarget());
</span><span class="cx"> 
</span><del>-    if (shouldSendReferrer == NeverSendReferrer)
-        m_suppressOpenerInNewFrame = true;
</del><span class="cx">     addHTTPOriginIfNeeded(frameRequest.resourceRequest(), outgoingOrigin());
</span><span class="cx"> 
</span><del>-    loadFrameRequest(frameRequest, lockHistory, lockBackForwardList, triggeringEvent, 0, shouldSendReferrer, allowNavigationToInvalidURL);
</del><ins>+    NewFrameOpenerPolicy openerPolicy = (shouldSendReferrer == NeverSendReferrer) ? NewFrameOpenerPolicy::Suppress : NewFrameOpenerPolicy::Allow;
</ins><span class="cx"> 
</span><del>-    m_suppressOpenerInNewFrame = false;
</del><ins>+    loadFrameRequest(frameRequest, lockHistory, lockBackForwardList, triggeringEvent, 0, shouldSendReferrer, allowNavigationToInvalidURL, openerPolicy);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::submitForm(PassRefPtr&lt;FormSubmission&gt; submission)
</span><span class="lines">@@ -925,7 +920,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    childFrame-&gt;loader().loadURL(url, referer, &quot;_self&quot;, LockHistory::No, FrameLoadType::RedirectWithLockedBackForwardList, 0, 0, AllowNavigationToInvalidURL::Yes);
</del><ins>+    childFrame-&gt;loader().loadURL(url, referer, &quot;_self&quot;, LockHistory::No, FrameLoadType::RedirectWithLockedBackForwardList, 0, 0, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
</span><span class="lines">@@ -1150,7 +1145,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::loadFrameRequest(const FrameLoadRequest&amp; request, LockHistory lockHistory, LockBackForwardList lockBackForwardList,
</span><del>-    PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;FormState&gt; formState, ShouldSendReferrer shouldSendReferrer, AllowNavigationToInvalidURL allowNavigationToInvalidURL)
</del><ins>+    PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;FormState&gt; formState, ShouldSendReferrer shouldSendReferrer, AllowNavigationToInvalidURL allowNavigationToInvalidURL, NewFrameOpenerPolicy openerPolicy)
</ins><span class="cx"> {    
</span><span class="cx">     // Protect frame from getting blown away inside dispatchBeforeLoadEvent in loadWithDocumentLoader.
</span><span class="cx">     Ref&lt;Frame&gt; protect(m_frame);
</span><span class="lines">@@ -1180,9 +1175,9 @@
</span><span class="cx">         loadType = FrameLoadType::Standard;
</span><span class="cx"> 
</span><span class="cx">     if (request.resourceRequest().httpMethod() == &quot;POST&quot;)
</span><del>-        loadPostRequest(request.resourceRequest(), referrer, request.frameName(), lockHistory, loadType, event, formState.get(), allowNavigationToInvalidURL);
</del><ins>+        loadPostRequest(request.resourceRequest(), referrer, request.frameName(), lockHistory, loadType, event, formState.get(), allowNavigationToInvalidURL, openerPolicy);
</ins><span class="cx">     else
</span><del>-        loadURL(request.resourceRequest().url(), referrer, request.frameName(), lockHistory, loadType, event, formState.get(), allowNavigationToInvalidURL);
</del><ins>+        loadURL(request.resourceRequest().url(), referrer, request.frameName(), lockHistory, loadType, event, formState.get(), allowNavigationToInvalidURL, openerPolicy);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: It's possible this targetFrame will not be the same frame that was targeted by the actual
</span><span class="cx">     // load if frame names have changed.
</span><span class="lines">@@ -1197,7 +1192,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::loadURL(const URL&amp; newURL, const String&amp; referrer, const String&amp; frameName, LockHistory lockHistory, FrameLoadType newLoadType,
</span><del>-    PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;FormState&gt; prpFormState, AllowNavigationToInvalidURL allowNavigationToInvalidURL)
</del><ins>+    PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;FormState&gt; prpFormState, AllowNavigationToInvalidURL allowNavigationToInvalidURL, NewFrameOpenerPolicy openerPolicy)
</ins><span class="cx"> {
</span><span class="cx">     if (m_inStopAllLoaders)
</span><span class="cx">         return;
</span><span class="lines">@@ -1226,7 +1221,7 @@
</span><span class="cx">     // The search for a target frame is done earlier in the case of form submission.
</span><span class="cx">     Frame* targetFrame = isFormSubmission ? 0 : findFrameForNavigation(frameName);
</span><span class="cx">     if (targetFrame &amp;&amp; targetFrame != &amp;m_frame) {
</span><del>-        targetFrame-&gt;loader().loadURL(newURL, referrer, &quot;_self&quot;, lockHistory, newLoadType, event, formState.release(), allowNavigationToInvalidURL);
</del><ins>+        targetFrame-&gt;loader().loadURL(newURL, referrer, &quot;_self&quot;, lockHistory, newLoadType, event, formState.release(), allowNavigationToInvalidURL, openerPolicy);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1236,8 +1231,8 @@
</span><span class="cx">     NavigationAction action(request, newLoadType, isFormSubmission, event);
</span><span class="cx"> 
</span><span class="cx">     if (!targetFrame &amp;&amp; !frameName.isEmpty()) {
</span><del>-        policyChecker().checkNewWindowPolicy(action, request, formState.release(), frameName, [this, allowNavigationToInvalidURL](const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue) {
-            continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, allowNavigationToInvalidURL);
</del><ins>+        policyChecker().checkNewWindowPolicy(action, request, formState.release(), frameName, [this, allowNavigationToInvalidURL, openerPolicy](const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue) {
+            continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, allowNavigationToInvalidURL, openerPolicy);
</ins><span class="cx">         });
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -1306,7 +1301,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (request.shouldCheckNewWindowPolicy()) {
</span><span class="cx">         policyChecker().checkNewWindowPolicy(NavigationAction(request.resourceRequest(), NavigationTypeOther), request.resourceRequest(), nullptr, request.frameName(), [this](const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue) {
</span><del>-            continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, AllowNavigationToInvalidURL::Yes);
</del><ins>+            continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress);
</ins><span class="cx">         });
</span><span class="cx"> 
</span><span class="cx">         return;
</span><span class="lines">@@ -2612,7 +2607,7 @@
</span><span class="cx">     request.setHTTPOrigin(origin);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FrameLoader::loadPostRequest(const ResourceRequest&amp; inRequest, const String&amp; referrer, const String&amp; frameName, LockHistory lockHistory, FrameLoadType loadType, PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;FormState&gt; prpFormState, AllowNavigationToInvalidURL allowNavigationToInvalidURL)
</del><ins>+void FrameLoader::loadPostRequest(const ResourceRequest&amp; inRequest, const String&amp; referrer, const String&amp; frameName, LockHistory lockHistory, FrameLoadType loadType, PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;FormState&gt; prpFormState, AllowNavigationToInvalidURL allowNavigationToInvalidURL, NewFrameOpenerPolicy openerPolicy)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;FormState&gt; formState = prpFormState;
</span><span class="cx"> 
</span><span class="lines">@@ -2644,8 +2639,8 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        policyChecker().checkNewWindowPolicy(action, workingResourceRequest, formState.release(), frameName, [this, allowNavigationToInvalidURL](const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue) {
-            continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, allowNavigationToInvalidURL);
</del><ins>+        policyChecker().checkNewWindowPolicy(action, workingResourceRequest, formState.release(), frameName, [this, allowNavigationToInvalidURL, openerPolicy](const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue) {
+            continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, allowNavigationToInvalidURL, openerPolicy);
</ins><span class="cx">         });
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -2962,7 +2957,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::continueLoadAfterNewWindowPolicy(const ResourceRequest&amp; request,
</span><del>-    PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue, AllowNavigationToInvalidURL allowNavigationToInvalidURL)
</del><ins>+    PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue, AllowNavigationToInvalidURL allowNavigationToInvalidURL, NewFrameOpenerPolicy openerPolicy)
</ins><span class="cx"> {
</span><span class="cx">     if (!shouldContinue)
</span><span class="cx">         return;
</span><span class="lines">@@ -2977,7 +2972,7 @@
</span><span class="cx"> 
</span><span class="cx">     mainFrame-&gt;page()-&gt;setOpenedByDOM();
</span><span class="cx">     mainFrame-&gt;loader().m_client.dispatchShow();
</span><del>-    if (!m_suppressOpenerInNewFrame) {
</del><ins>+    if (openerPolicy == NewFrameOpenerPolicy::Allow) {
</ins><span class="cx">         mainFrame-&gt;loader().setOpener(frame.ptr());
</span><span class="cx">         mainFrame-&gt;document()-&gt;setReferrerPolicy(frame-&gt;document()-&gt;referrerPolicy());
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.h (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.h        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebCore/loader/FrameLoader.h        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">     // FIXME: These are all functions which start loads. We have too many.
</span><span class="cx">     WEBCORE_EXPORT void loadURLIntoChildFrame(const URL&amp;, const String&amp; referer, Frame*);
</span><span class="cx">     WEBCORE_EXPORT void loadFrameRequest(const FrameLoadRequest&amp;, LockHistory, LockBackForwardList, // Called by submitForm, calls loadPostRequest and loadURL.
</span><del>-        PassRefPtr&lt;Event&gt;, PassRefPtr&lt;FormState&gt;, ShouldSendReferrer, AllowNavigationToInvalidURL);
</del><ins>+        PassRefPtr&lt;Event&gt;, PassRefPtr&lt;FormState&gt;, ShouldSendReferrer, AllowNavigationToInvalidURL, NewFrameOpenerPolicy);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void load(const FrameLoadRequest&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -265,8 +265,6 @@
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void setOriginalURLForDownloadRequest(ResourceRequest&amp;);
</span><span class="cx"> 
</span><del>-    bool suppressOpenerInNewFrame() const { return m_suppressOpenerInNewFrame; }
-
</del><span class="cx">     bool quickRedirectComing() const { return m_quickRedirectComing; }
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT bool shouldClose();
</span><span class="lines">@@ -318,7 +316,7 @@
</span><span class="cx">     bool handleBeforeUnloadEvent(Chrome&amp;, FrameLoader* frameLoaderBeingNavigated);
</span><span class="cx"> 
</span><span class="cx">     void continueLoadAfterNavigationPolicy(const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, bool shouldContinue, AllowNavigationToInvalidURL);
</span><del>-    void continueLoadAfterNewWindowPolicy(const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, const String&amp; frameName, const NavigationAction&amp;, bool shouldContinue, AllowNavigationToInvalidURL);
</del><ins>+    void continueLoadAfterNewWindowPolicy(const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, const String&amp; frameName, const NavigationAction&amp;, bool shouldContinue, AllowNavigationToInvalidURL, NewFrameOpenerPolicy);
</ins><span class="cx">     void continueFragmentScrollAfterNavigationPolicy(const ResourceRequest&amp;, bool shouldContinue);
</span><span class="cx"> 
</span><span class="cx">     bool shouldPerformFragmentNavigation(bool isFormSubmission, const String&amp; httpMethod, FrameLoadType, const URL&amp;);
</span><span class="lines">@@ -348,9 +346,9 @@
</span><span class="cx">         LockHistory, FrameLoadType, PassRefPtr&lt;FormState&gt;, AllowNavigationToInvalidURL);
</span><span class="cx"> 
</span><span class="cx">     void loadPostRequest(const ResourceRequest&amp;, const String&amp; referrer,                // Called by loadFrameRequest, calls loadWithNavigationAction
</span><del>-        const String&amp; frameName, LockHistory, FrameLoadType, PassRefPtr&lt;Event&gt;, PassRefPtr&lt;FormState&gt;, AllowNavigationToInvalidURL);
</del><ins>+        const String&amp; frameName, LockHistory, FrameLoadType, PassRefPtr&lt;Event&gt;, PassRefPtr&lt;FormState&gt;, AllowNavigationToInvalidURL, NewFrameOpenerPolicy);
</ins><span class="cx">     void loadURL(const URL&amp;, const String&amp; referrer, const String&amp; frameName,          // Called by loadFrameRequest, calls loadWithNavigationAction or dispatches to navigation policy delegate
</span><del>-        LockHistory, FrameLoadType, PassRefPtr&lt;Event&gt;, PassRefPtr&lt;FormState&gt;, AllowNavigationToInvalidURL);
</del><ins>+        LockHistory, FrameLoadType, PassRefPtr&lt;Event&gt;, PassRefPtr&lt;FormState&gt;, AllowNavigationToInvalidURL, NewFrameOpenerPolicy);
</ins><span class="cx"> 
</span><span class="cx">     bool shouldReload(const URL&amp; currentURL, const URL&amp; destinationURL);
</span><span class="cx"> 
</span><span class="lines">@@ -429,7 +427,6 @@
</span><span class="cx">     HashSet&lt;Frame*&gt; m_openedFrames;
</span><span class="cx"> 
</span><span class="cx">     bool m_loadingFromCachedPage;
</span><del>-    bool m_suppressOpenerInNewFrame;
</del><span class="cx"> 
</span><span class="cx">     bool m_currentNavigationHasShownBeforeUnloadConfirmPanel;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoaderTypesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoaderTypes.h (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoaderTypes.h        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebCore/loader/FrameLoaderTypes.h        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -57,6 +57,11 @@
</span><span class="cx">     ReloadFromOrigin,
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+enum class NewFrameOpenerPolicy {
+    Suppress,
+    Allow
+};
+
</ins><span class="cx">     enum NavigationType {
</span><span class="cx">         NavigationTypeLinkClicked,
</span><span class="cx">         NavigationTypeFormSubmitted,
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderNavigationSchedulercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/NavigationScheduler.cpp (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/NavigationScheduler.cpp        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebCore/loader/NavigationScheduler.cpp        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -246,7 +246,7 @@
</span><span class="cx">             return;
</span><span class="cx">         FrameLoadRequest frameRequest(requestingDocument-&gt;securityOrigin());
</span><span class="cx">         m_submission-&gt;populateFrameLoadRequest(frameRequest);
</span><del>-        frame.loader().loadFrameRequest(frameRequest, lockHistory(), lockBackForwardList(), m_submission-&gt;event(), m_submission-&gt;state(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes);
</del><ins>+        frame.loader().loadFrameRequest(frameRequest, lockHistory(), lockBackForwardList(), m_submission-&gt;event(), m_submission-&gt;state(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow);
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     virtual void didStartTimer(Frame&amp; frame, Timer&amp; timer) override
</span></span></pre></div>
<a id="trunkSourceWebCorepageContextMenuControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ContextMenuController.cpp (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ContextMenuController.cpp        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebCore/page/ContextMenuController.cpp        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx">     if (!newPage)
</span><span class="cx">         return;
</span><span class="cx">     newPage-&gt;chrome().show();
</span><del>-    newPage-&gt;mainFrame().loader().loadFrameRequest(request, LockHistory::No, LockBackForwardList::No, 0, 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes);
</del><ins>+    newPage-&gt;mainFrame().loader().loadFrameRequest(request, LockHistory::No, LockBackForwardList::No, 0, 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(GTK)
</span><span class="lines">@@ -401,12 +401,12 @@
</span><span class="cx">         break;
</span><span class="cx">     case ContextMenuItemTagOpenLink:
</span><span class="cx">         if (Frame* targetFrame = m_context.hitTestResult().targetFrame())
</span><del>-            targetFrame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(m_context.hitTestResult().absoluteLinkURL(), frame-&gt;loader().outgoingReferrer())), LockHistory::No, LockBackForwardList::No, 0, 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes);
</del><ins>+            targetFrame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(m_context.hitTestResult().absoluteLinkURL(), frame-&gt;loader().outgoingReferrer())), LockHistory::No, LockBackForwardList::No, 0, 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress);
</ins><span class="cx">         else
</span><span class="cx">             openNewWindow(m_context.hitTestResult().absoluteLinkURL(), frame);
</span><span class="cx">         break;
</span><span class="cx">     case ContextMenuItemTagOpenLinkInThisWindow:
</span><del>-        frame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(m_context.hitTestResult().absoluteLinkURL(), frame-&gt;loader().outgoingReferrer())), LockHistory::No, LockBackForwardList::No, 0, 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes);
</del><ins>+        frame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(m_context.hitTestResult().absoluteLinkURL(), frame-&gt;loader().outgoingReferrer())), LockHistory::No, LockBackForwardList::No, 0, 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress);
</ins><span class="cx">         break;
</span><span class="cx">     case ContextMenuItemTagBold:
</span><span class="cx">         frame-&gt;editor().command(&quot;ToggleBold&quot;).execute();
</span></span></pre></div>
<a id="trunkSourceWebKitiosChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ios/ChangeLog (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ios/ChangeLog        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebKit/ios/ChangeLog        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2015-02-14  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        rel=&quot;noreferrer&quot; should make window.opener null
+        https://bugs.webkit.org/show_bug.cgi?id=141579
+
+        Reviewed by Darin Adler.
+
+        * WebView/WebPDFViewPlaceholder.mm:
+        (-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]): Updated for a new WebCore
+        function signature. There is no rel=&quot;noreferrer&quot; in PDF, so we can just always allow.
+
</ins><span class="cx"> 2015-02-03  Enrica Casucci  &lt;enrica@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Add support for deleteFromInputWithFlags.
</span></span></pre></div>
<a id="trunkSourceWebKitiosWebViewWebPDFViewPlaceholdermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ios/WebView/WebPDFViewPlaceholder.mm (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ios/WebView/WebPDFViewPlaceholder.mm        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebKit/ios/WebView/WebPDFViewPlaceholder.mm        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -475,7 +475,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Call to the frame loader because this is where our security checks are made.
</span><span class="cx">     Frame* frame = core([_dataSource webFrame]);
</span><del>-    frame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(URL)), LockHistory::No, LockBackForwardList::No, event.get(), 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes);
</del><ins>+    frame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(URL)), LockHistory::No, LockBackForwardList::No, event.get(), 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebKit/mac/ChangeLog        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2015-02-14  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        rel=&quot;noreferrer&quot; should make window.opener null
+        https://bugs.webkit.org/show_bug.cgi?id=141579
+
+        Reviewed by Darin Adler.
+
+        * WebView/WebPDFView.mm:
+        (-[WebPDFView PDFViewWillClickOnLink:withURL:]): Updated for a new WebCore
+        function signature. There is no rel=&quot;noreferrer&quot; in PDF, so we can just always allow.
+
</ins><span class="cx"> 2015-02-05  Youenn Fablet  &lt;youenn.fablet@crf.canon.fr&gt; and Xabier Rodriguez Calvar &lt;calvaris@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Streams API] Implement a barebone ReadableStream interface
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebPDFViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebPDFView.mm (180109 => 180110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebPDFView.mm        2015-02-14 17:16:08 UTC (rev 180109)
+++ trunk/Source/WebKit/mac/WebView/WebPDFView.mm        2015-02-14 18:16:00 UTC (rev 180110)
</span><span class="lines">@@ -1032,7 +1032,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Call to the frame loader because this is where our security checks are made.
</span><span class="cx">     Frame* frame = core([dataSource webFrame]);
</span><del>-    frame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(URL)), LockHistory::No, LockBackForwardList::No, event.get(), 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes);
</del><ins>+    frame-&gt;loader().loadFrameRequest(FrameLoadRequest(frame-&gt;document()-&gt;securityOrigin(), ResourceRequest(URL)), LockHistory::No, LockBackForwardList::No, event.get(), 0, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)PDFViewOpenPDFInNativeApplication:(PDFView *)sender
</span></span></pre>
</div>
</div>

</body>
</html>