<!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>[185877] 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/185877">185877</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2015-06-23 10:28:20 -0700 (Tue, 23 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>WKFrameInfo should have an accessor for the Frame's current security origin.
https://bugs.webkit.org/show_bug.cgi?id=146162

Reviewed by Dan Bernstein.

Source/WebKit2:

This patch:
- Promotes _WKSecurityOrigin to API.
- Makes the WKSecurityOrigin Cocoa API object work with API::SecurityOrigin.
- Adds a WKSecurityOrigin accessor to WKFrameInfo.
- Changes IPC messaging so every handler that calls out with a WKFrameInfo object
  gets a relevant SecurityOrigin to wrap.

* Shared/API/APISecurityOrigin.h:
(API::SecurityOrigin::create):
(API::SecurityOrigin::SecurityOrigin):

* Shared/API/Cocoa/WebKit.h:

* Shared/API/c/WKSharedAPICast.h:
(WebKit::toCopiedAPI):

* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):

* Shared/SecurityOriginData.cpp:
(WebKit::SecurityOriginData::fromFrame):
* Shared/SecurityOriginData.h:

* UIProcess/API/APIFrameInfo.cpp:
(API::FrameInfo::FrameInfo):
* UIProcess/API/APIFrameInfo.h:

* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::didFailProvisionalLoadInSubframeWithError):

* UIProcess/API/APIUIClient.h:
(API::UIClient::createNewPage):
(API::UIClient::runJavaScriptAlert):
(API::UIClient::runJavaScriptConfirm):
(API::UIClient::runJavaScriptPrompt):

* UIProcess/API/C/WKApplicationCacheManager.cpp:
(WKApplicationCacheManagerGetApplicationCacheOrigins):

* UIProcess/API/C/WKKeyValueStorageManager.cpp:
(WKKeyValueStorageManagerGetKeyValueStorageOrigins):

* UIProcess/API/C/WKOriginDataManager.cpp:
(WKOriginDataManagerGetOrigins):

* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
(WKPageSetPageNavigationClient):

* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerGetCacheOrigins):

* UIProcess/API/Cocoa/WKFrameInfo.h:
* UIProcess/API/Cocoa/WKFrameInfo.mm:
(-[WKFrameInfo securityOrigin]):

* UIProcess/API/Cocoa/WKSecurityOrigin.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.h.
* UIProcess/API/Cocoa/WKSecurityOrigin.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.mm.
(-[WKSecurityOrigin dealloc]):
(-[WKSecurityOrigin description]):
(-[WKSecurityOrigin protocol]):
(-[WKSecurityOrigin host]):
(-[WKSecurityOrigin port]):
(-[WKSecurityOrigin _apiObject]):
* UIProcess/API/Cocoa/WKSecurityOriginInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOriginInternal.h.
(API::wrapper):

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

* UIProcess/API/Cocoa/WKUserContentController.mm:

* UIProcess/API/Cocoa/_WKSecurityOrigin.h:
* UIProcess/API/Cocoa/_WKSecurityOrigin.mm:
(-[_WKSecurityOrigin _initWithSecurityOrigin:]): Deleted.
(-[_WKSecurityOrigin protocol]): Deleted.
(-[_WKSecurityOrigin host]): Deleted.
(-[_WKSecurityOrigin port]): Deleted.

* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::didFailProvisionalLoadInSubframeWithError):

* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPage):
(WebKit::UIDelegate::UIClient::runJavaScriptAlert):
(WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
(WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
(WebKit::UIDelegate::UIClient::exceededDatabaseQuota):
(WebKit::UIDelegate::UIClient::reachedApplicationCacheOriginQuota):

* UIProcess/UserContent/WebScriptMessageHandler.h:

* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::didPostMessage):
* UIProcess/UserContent/WebUserContentControllerProxy.h:
* UIProcess/UserContent/WebUserContentControllerProxy.messages.in:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::decidePolicyForResponseSync):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):
(WebKit::WebPageProxy::runJavaScriptPrompt):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:

* WebKit2.xcodeproj/project.pbxproj:

* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::WebUserMessageHandlerDescriptorProxy::didPostMessage):

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createWindow):
(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html: Added.
* TestWebKitAPI/Tests/WebKit2Cocoa/ModalAlerts.mm: Added.
(sawDialog):
(-[ModalAlertsUIDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(-[ModalAlertsUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[ModalAlertsUIDelegate webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[ModalAlertsUIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:]):
(TEST):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIAPISecurityOriginh">trunk/Source/WebKit2/Shared/API/APISecurityOrigin.h</a></li>
<li><a href="#trunkSourceWebKit2SharedAPICocoaWebKith">trunk/Source/WebKit2/Shared/API/Cocoa/WebKit.h</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIcWKSharedAPICasth">trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h</a></li>
<li><a href="#trunkSourceWebKit2SharedCocoaAPIObjectmm">trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm</a></li>
<li><a href="#trunkSourceWebKit2SharedSecurityOriginDatacpp">trunk/Source/WebKit2/Shared/SecurityOriginData.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedSecurityOriginDatah">trunk/Source/WebKit2/Shared/SecurityOriginData.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIFrameInfocpp">trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIFrameInfoh">trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPINavigationClienth">trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIUIClienth">trunk/Source/WebKit2/UIProcess/API/APIUIClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKApplicationCacheManagercpp">trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKKeyValueStorageManagercpp">trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKOriginDataManagercpp">trunk/Source/WebKit2/UIProcess/API/C/WKOriginDataManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKResourceCacheManagercpp">trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKFrameInfoh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKFrameInfomm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKUIDelegatePrivateh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKUserContentControllermm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoa_WKSecurityOriginh">trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoa_WKSecurityOriginmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCocoaNavigationStateh">trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCocoaNavigationStatemm">trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCocoaUIDelegateh">trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCocoaUIDelegatemm">trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessUserContentWebScriptMessageHandlerh">trunk/Source/WebKit2/UIProcess/UserContent/WebScriptMessageHandler.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxycpp">trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxyh">trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxymessagesin">trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxymessagesin">trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessUserContentWebUserContentControllercpp">trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsTestWebKitAPITestWebKitAPIxcodeprojprojectpbxproj">trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKSecurityOriginh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKSecurityOriginmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKSecurityOriginInternalh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOriginInternal.h</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebKit2modalalertsinnewaboutblankwindowhtml">trunk/Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebKit2CocoaModalAlertsmm">trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ModalAlerts.mm</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoa_WKSecurityOriginInternalh">trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOriginInternal.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/ChangeLog        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -1,3 +1,138 @@
</span><ins>+2015-06-23  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        WKFrameInfo should have an accessor for the Frame's current security origin.
+        https://bugs.webkit.org/show_bug.cgi?id=146162
+
+        Reviewed by Dan Bernstein.
+
+        This patch:
+        - Promotes _WKSecurityOrigin to API.
+        - Makes the WKSecurityOrigin Cocoa API object work with API::SecurityOrigin.
+        - Adds a WKSecurityOrigin accessor to WKFrameInfo.
+        - Changes IPC messaging so every handler that calls out with a WKFrameInfo object
+          gets a relevant SecurityOrigin to wrap.
+
+        * Shared/API/APISecurityOrigin.h:
+        (API::SecurityOrigin::create):
+        (API::SecurityOrigin::SecurityOrigin):
+
+        * Shared/API/Cocoa/WebKit.h:
+
+        * Shared/API/c/WKSharedAPICast.h:
+        (WebKit::toCopiedAPI):
+
+        * Shared/Cocoa/APIObject.mm:
+        (API::Object::newObject):
+
+        * Shared/SecurityOriginData.cpp:
+        (WebKit::SecurityOriginData::fromFrame):
+        * Shared/SecurityOriginData.h:
+
+        * UIProcess/API/APIFrameInfo.cpp:
+        (API::FrameInfo::FrameInfo):
+        * UIProcess/API/APIFrameInfo.h:
+
+        * UIProcess/API/APINavigationClient.h:
+        (API::NavigationClient::didFailProvisionalLoadInSubframeWithError):
+
+        * UIProcess/API/APIUIClient.h:
+        (API::UIClient::createNewPage):
+        (API::UIClient::runJavaScriptAlert):
+        (API::UIClient::runJavaScriptConfirm):
+        (API::UIClient::runJavaScriptPrompt):
+
+        * UIProcess/API/C/WKApplicationCacheManager.cpp:
+        (WKApplicationCacheManagerGetApplicationCacheOrigins):
+
+        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
+        (WKKeyValueStorageManagerGetKeyValueStorageOrigins):
+
+        * UIProcess/API/C/WKOriginDataManager.cpp:
+        (WKOriginDataManagerGetOrigins):
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageSetPageUIClient):
+        (WKPageSetPageNavigationClient):
+
+        * UIProcess/API/C/WKResourceCacheManager.cpp:
+        (WKResourceCacheManagerGetCacheOrigins):
+
+        * UIProcess/API/Cocoa/WKFrameInfo.h:
+        * UIProcess/API/Cocoa/WKFrameInfo.mm:
+        (-[WKFrameInfo securityOrigin]):
+
+        * UIProcess/API/Cocoa/WKSecurityOrigin.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.h.
+        * UIProcess/API/Cocoa/WKSecurityOrigin.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.mm.
+        (-[WKSecurityOrigin dealloc]):
+        (-[WKSecurityOrigin description]):
+        (-[WKSecurityOrigin protocol]):
+        (-[WKSecurityOrigin host]):
+        (-[WKSecurityOrigin port]):
+        (-[WKSecurityOrigin _apiObject]):
+        * UIProcess/API/Cocoa/WKSecurityOriginInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOriginInternal.h.
+        (API::wrapper):
+
+        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+
+        * UIProcess/API/Cocoa/WKUserContentController.mm:
+
+        * UIProcess/API/Cocoa/_WKSecurityOrigin.h:
+        * UIProcess/API/Cocoa/_WKSecurityOrigin.mm:
+        (-[_WKSecurityOrigin _initWithSecurityOrigin:]): Deleted.
+        (-[_WKSecurityOrigin protocol]): Deleted.
+        (-[_WKSecurityOrigin host]): Deleted.
+        (-[_WKSecurityOrigin port]): Deleted.
+
+        * UIProcess/Cocoa/NavigationState.h:
+        * UIProcess/Cocoa/NavigationState.mm:
+        (WebKit::NavigationState::NavigationClient::didFailProvisionalLoadInSubframeWithError):
+
+        * UIProcess/Cocoa/UIDelegate.h:
+        * UIProcess/Cocoa/UIDelegate.mm:
+        (WebKit::UIDelegate::UIClient::createNewPage):
+        (WebKit::UIDelegate::UIClient::runJavaScriptAlert):
+        (WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
+        (WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
+        (WebKit::UIDelegate::UIClient::exceededDatabaseQuota):
+        (WebKit::UIDelegate::UIClient::reachedApplicationCacheOriginQuota):
+
+        * UIProcess/UserContent/WebScriptMessageHandler.h:
+
+        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
+        (WebKit::WebUserContentControllerProxy::didPostMessage):
+        * UIProcess/UserContent/WebUserContentControllerProxy.h:
+        * UIProcess/UserContent/WebUserContentControllerProxy.messages.in:
+
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
+        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
+        (WebKit::WebPageProxy::decidePolicyForResponse):
+        (WebKit::WebPageProxy::decidePolicyForResponseSync):
+        (WebKit::WebPageProxy::createNewPage):
+        (WebKit::WebPageProxy::runJavaScriptAlert):
+        (WebKit::WebPageProxy::runJavaScriptConfirm):
+        (WebKit::WebPageProxy::runJavaScriptPrompt):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+
+        * WebKit2.xcodeproj/project.pbxproj:
+
+        * WebProcess/UserContent/WebUserContentController.cpp:
+        (WebKit::WebUserMessageHandlerDescriptorProxy::didPostMessage):
+
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::createWindow):
+        (WebKit::WebChromeClient::runJavaScriptAlert):
+        (WebKit::WebChromeClient::runJavaScriptConfirm):
+        (WebKit::WebChromeClient::runJavaScriptPrompt):
+
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+
</ins><span class="cx"> 2015-06-23  Dan Bernstein  &lt;mitz@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         &lt;rdar://problem/21342465&gt; Make -[WKWebView _certificateChain] public.
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPIAPISecurityOriginh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/API/APISecurityOrigin.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/API/APISecurityOrigin.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/Shared/API/APISecurityOrigin.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -44,10 +44,8 @@
</span><span class="cx">         return create(WebCore::SecurityOrigin::create(protocol, host, port));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static RefPtr&lt;SecurityOrigin&gt; create(PassRefPtr&lt;WebCore::SecurityOrigin&gt; securityOrigin)
</del><ins>+    static RefPtr&lt;SecurityOrigin&gt; create(const WebCore::SecurityOrigin&amp; securityOrigin)
</ins><span class="cx">     {
</span><del>-        if (!securityOrigin)
-            return nullptr;
</del><span class="cx">         return adoptRef(new SecurityOrigin(securityOrigin));
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -59,6 +57,11 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    SecurityOrigin(const WebCore::SecurityOrigin&amp; securityOrigin)
+        : m_securityOrigin(securityOrigin.isolatedCopy())
+    {
+    }
+
</ins><span class="cx">     RefPtr&lt;WebCore::SecurityOrigin&gt; m_securityOrigin;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPICocoaWebKith"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/API/Cocoa/WebKit.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/API/Cocoa/WebKit.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/Shared/API/Cocoa/WebKit.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #import &lt;WebKit/WKProcessPool.h&gt;
</span><span class="cx"> #import &lt;WebKit/WKScriptMessage.h&gt;
</span><span class="cx"> #import &lt;WebKit/WKScriptMessageHandler.h&gt;
</span><ins>+#import &lt;WebKit/WKSecurityOrigin.h&gt;
</ins><span class="cx"> #import &lt;WebKit/WKUIDelegate.h&gt;
</span><span class="cx"> #import &lt;WebKit/WKUserContentController.h&gt;
</span><span class="cx"> #import &lt;WebKit/WKUserScript.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPIcWKSharedAPICasth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -215,7 +215,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (!origin)
</span><span class="cx">         return 0;
</span><del>-    return toAPI(API::SecurityOrigin::create(origin).leakRef());
</del><ins>+    return toAPI(API::SecurityOrigin::create(*origin).leakRef());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /* Geometry conversions */
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedCocoaAPIObjectmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx"> #import &quot;WKNavigationResponseInternal.h&quot;
</span><span class="cx"> #import &quot;WKPreferencesInternal.h&quot;
</span><span class="cx"> #import &quot;WKProcessPoolInternal.h&quot;
</span><ins>+#import &quot;WKSecurityOriginInternal.h&quot;
</ins><span class="cx"> #import &quot;WKUserContentControllerInternal.h&quot;
</span><span class="cx"> #import &quot;WKUserScriptInternal.h&quot;
</span><span class="cx"> #import &quot;WKWebProcessPlugInBrowserContextControllerInternal.h&quot;
</span><span class="lines">@@ -172,6 +173,10 @@
</span><span class="cx">         wrapper = [WKBrowsingContextGroup alloc];
</span><span class="cx">         break;
</span><span class="cx"> 
</span><ins>+    case Type::SecurityOrigin:
+        wrapper = [WKSecurityOrigin alloc];
+        break;
+
</ins><span class="cx">     case Type::String:
</span><span class="cx">         wrapper = NSAllocateObject([WKNSString class], size, nullptr);
</span><span class="cx">         break;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedSecurityOriginDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/SecurityOriginData.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/SecurityOriginData.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/Shared/SecurityOriginData.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -27,8 +27,11 @@
</span><span class="cx"> #include &quot;SecurityOriginData.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIArray.h&quot;
</span><ins>+#include &quot;APISecurityOrigin.h&quot;
</ins><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><del>-#include &quot;APISecurityOrigin.h&quot;
</del><ins>+#include &quot;WebFrame.h&quot;
+#include &lt;WebCore/Document.h&gt;
+#include &lt;WebCore/Frame.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="lines">@@ -46,6 +49,30 @@
</span><span class="cx">     return securityOriginData;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+SecurityOriginData SecurityOriginData::fromFrame(WebFrame* frame)
+{
+    if (!frame)
+        return SecurityOriginData();
+    
+    return SecurityOriginData::fromFrame(frame-&gt;coreFrame());
+}
+
+SecurityOriginData SecurityOriginData::fromFrame(Frame* frame)
+{
+    if (!frame)
+        return SecurityOriginData();
+    
+    Document* document = frame-&gt;document();
+    if (!document)
+        return SecurityOriginData();
+
+    SecurityOrigin* origin = document-&gt;securityOrigin();
+    if (!origin)
+        return SecurityOriginData();
+    
+    return SecurityOriginData::fromSecurityOrigin(*origin);
+}
+
</ins><span class="cx"> Ref&lt;SecurityOrigin&gt; SecurityOriginData::securityOrigin() const
</span><span class="cx"> {
</span><span class="cx">     return SecurityOrigin::create(protocol.isolatedCopy(), host.isolatedCopy(), port);
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedSecurityOriginDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/SecurityOriginData.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/SecurityOriginData.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/Shared/SecurityOriginData.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -35,13 +35,19 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><ins>+class Frame;
</ins><span class="cx"> class SecurityOrigin;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+class WebFrame;
+
</ins><span class="cx"> struct SecurityOriginData {
</span><span class="cx">     static SecurityOriginData fromSecurityOrigin(const WebCore::SecurityOrigin&amp;);
</span><ins>+    static SecurityOriginData fromFrame(WebFrame*);
+    static SecurityOriginData fromFrame(WebCore::Frame*);
+
</ins><span class="cx">     Ref&lt;WebCore::SecurityOrigin&gt; securityOrigin() const;
</span><span class="cx"> 
</span><span class="cx">     void encode(IPC::ArgumentEncoder&amp;) const;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIFrameInfocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -31,9 +31,10 @@
</span><span class="cx"> namespace API {
</span><span class="cx"> 
</span><span class="cx"> // FIXME: This should use the full request of the frame, not just the URL.
</span><del>-FrameInfo::FrameInfo(const WebKit::WebFrameProxy&amp; frame)
</del><ins>+FrameInfo::FrameInfo(const WebKit::WebFrameProxy&amp; frame, const WebCore::SecurityOrigin&amp; securityOrigin)
</ins><span class="cx">     : m_isMainFrame(frame.isMainFrame())
</span><span class="cx">     , m_request(WebCore::ResourceRequest(frame.url()))
</span><ins>+    , m_securityOrigin(adoptRef(*SecurityOrigin::create(securityOrigin).leakRef()))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIFrameInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/APIFrameInfo.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -27,7 +27,9 @@
</span><span class="cx"> #define APIFrameInfo_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIObject.h&quot;
</span><ins>+#include &quot;APISecurityOrigin.h&quot;
</ins><span class="cx"> #include &lt;WebCore/ResourceRequest.h&gt;
</span><ins>+#include &lt;WebCore/SecurityOrigin.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> class WebFrameProxy;
</span><span class="lines">@@ -37,19 +39,21 @@
</span><span class="cx"> 
</span><span class="cx"> class FrameInfo final : public ObjectImpl&lt;Object::Type::FrameInfo&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;FrameInfo&gt; create(const WebKit::WebFrameProxy&amp; frame)
</del><ins>+    static Ref&lt;FrameInfo&gt; create(const WebKit::WebFrameProxy&amp; frame, const WebCore::SecurityOrigin&amp; securityOrigin)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new FrameInfo(frame));
</del><ins>+        return adoptRef(*new FrameInfo(frame, securityOrigin));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    explicit FrameInfo(const WebKit::WebFrameProxy&amp;);
</del><ins>+    FrameInfo(const WebKit::WebFrameProxy&amp;, const WebCore::SecurityOrigin&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool isMainFrame() const { return m_isMainFrame; }
</span><span class="cx">     const WebCore::ResourceRequest&amp; request() const { return m_request; }
</span><ins>+    SecurityOrigin&amp; securityOrigin() { return m_securityOrigin.get(); }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     bool m_isMainFrame;
</span><span class="cx">     WebCore::ResourceRequest m_request;
</span><ins>+    Ref&lt;SecurityOrigin&gt; m_securityOrigin;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace API
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPINavigationClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -50,6 +50,7 @@
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> class WebProtectionSpace;
</span><span class="cx"> struct NavigationActionData;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> struct WebNavigationDataStore;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -68,7 +69,7 @@
</span><span class="cx">     virtual void didStartProvisionalNavigation(WebKit::WebPageProxy&amp;, API::Navigation*, API::Object*) { }
</span><span class="cx">     virtual void didReceiveServerRedirectForProvisionalNavigation(WebKit::WebPageProxy&amp;, API::Navigation*, API::Object*) { }
</span><span class="cx">     virtual void didFailProvisionalNavigationWithError(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) { }
</span><del>-    virtual void didFailProvisionalLoadInSubframeWithError(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) { }
</del><ins>+    virtual void didFailProvisionalLoadInSubframeWithError(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, const WebKit::SecurityOriginData&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) { }
</ins><span class="cx">     virtual void didCommitNavigation(WebKit::WebPageProxy&amp;, API::Navigation*, API::Object*) { }
</span><span class="cx">     virtual void didFinishDocumentLoad(WebKit::WebPageProxy&amp;, API::Navigation*, API::Object*) { }
</span><span class="cx">     virtual void didFinishNavigation(WebKit::WebPageProxy&amp;, API::Navigation*, API::Object*) { }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIUIClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APIUIClient.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIUIClient.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/APIUIClient.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -56,6 +56,7 @@
</span><span class="cx"> class WebOpenPanelResultListenerProxy;
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> struct NavigationActionData;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="lines">@@ -69,7 +70,7 @@
</span><span class="cx"> public:
</span><span class="cx">     virtual ~UIClient() { }
</span><span class="cx"> 
</span><del>-    virtual PassRefPtr&lt;WebKit::WebPageProxy&gt; createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, const WebKit::NavigationActionData&amp;) { return nullptr; }
</del><ins>+    virtual PassRefPtr&lt;WebKit::WebPageProxy&gt; createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, const WebKit::NavigationActionData&amp;) { return nullptr; }
</ins><span class="cx">     virtual void showPage(WebKit::WebPageProxy*) { }
</span><span class="cx">     virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) { }
</span><span class="cx">     virtual void didEnterFullscreen(WebKit::WebPageProxy*) { }
</span><span class="lines">@@ -80,9 +81,9 @@
</span><span class="cx">     virtual void focus(WebKit::WebPageProxy*) { }
</span><span class="cx">     virtual void unfocus(WebKit::WebPageProxy*) { }
</span><span class="cx"> 
</span><del>-    virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, std::function&lt;void ()&gt; completionHandler) { completionHandler(); }
-    virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, std::function&lt;void (bool)&gt; completionHandler) { completionHandler(false); }
-    virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy*, std::function&lt;void (const WTF::String&amp;)&gt; completionHandler) { completionHandler(WTF::String()); }
</del><ins>+    virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, std::function&lt;void ()&gt; completionHandler) { completionHandler(); }
+    virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, std::function&lt;void (bool)&gt; completionHandler) { completionHandler(false); }
+    virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, std::function&lt;void (const WTF::String&amp;)&gt; completionHandler) { completionHandler(WTF::String()); }
</ins><span class="cx"> 
</span><span class="cx">     virtual void setStatusText(WebKit::WebPageProxy*, const WTF::String&amp;) { }
</span><span class="cx">     virtual void mouseDidMoveOverElement(WebKit::WebPageProxy*, const WebKit::WebHitTestResult::Data&amp;, WebKit::WebEvent::Modifiers, API::Object*) { }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKApplicationCacheManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; securityOrigins;
</span><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><del>-                securityOrigins.append(API::SecurityOrigin::create(origin));
</del><ins>+                securityOrigins.append(API::SecurityOrigin::create(*origin));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         callback(toAPI(API::Array::create(WTF::move(securityOrigins)).ptr()), nullptr, context);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKKeyValueStorageManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; webSecurityOrigins;
</span><span class="cx">         webSecurityOrigins.reserveInitialCapacity(securityOrigins.size());
</span><span class="cx">         for (auto&amp; origin : securityOrigins)
</span><del>-            webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(origin));
</del><ins>+            webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(*origin));
</ins><span class="cx"> 
</span><span class="cx">         callback(toAPI(API::Array::create(WTF::move(webSecurityOrigins)).ptr()), nullptr, context);
</span><span class="cx">     });
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKOriginDataManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKOriginDataManager.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKOriginDataManager.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKOriginDataManager.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; securityOrigins;
</span><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><del>-                securityOrigins.append(API::SecurityOrigin::create(origin));
</del><ins>+                securityOrigins.append(API::SecurityOrigin::create(*origin));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         callback(toAPI(API::Array::create(WTF::move(securityOrigins)).ptr()), nullptr, context);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx"> #include &quot;NavigationActionData.h&quot;
</span><span class="cx"> #include &quot;PluginInformation.h&quot;
</span><span class="cx"> #include &quot;PrintInfo.h&quot;
</span><ins>+#include &quot;SecurityOriginData.h&quot;
</ins><span class="cx"> #include &quot;WKAPICast.h&quot;
</span><span class="cx"> #include &quot;WKPagePolicyClientInternal.h&quot;
</span><span class="cx"> #include &quot;WKPageRenderingProgressEventsInternal.h&quot;
</span><span class="lines">@@ -1333,7 +1334,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        virtual PassRefPtr&lt;WebPageProxy&gt; createNewPage(WebPageProxy* page, WebFrameProxy*, const ResourceRequest&amp; resourceRequest, const WindowFeatures&amp; windowFeatures, const NavigationActionData&amp; navigationActionData) override
</del><ins>+        virtual PassRefPtr&lt;WebPageProxy&gt; createNewPage(WebPageProxy* page, WebFrameProxy*, const SecurityOriginData&amp;, const ResourceRequest&amp; resourceRequest, const WindowFeatures&amp; windowFeatures, const NavigationActionData&amp; navigationActionData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.base.version &amp;&amp; !m_client.createNewPage_deprecatedForUseWithV0)
</span><span class="cx">                 return 0;
</span><span class="lines">@@ -1407,7 +1408,7 @@
</span><span class="cx">             m_client.unfocus(toAPI(page), m_client.base.clientInfo);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void runJavaScriptAlert(WebPageProxy* page, const String&amp; message, WebFrameProxy* frame, std::function&lt;void ()&gt; completionHandler) override
</del><ins>+        virtual void runJavaScriptAlert(WebPageProxy* page, const String&amp; message, WebFrameProxy* frame, const SecurityOriginData&amp;, std::function&lt;void ()&gt; completionHandler) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.runJavaScriptAlert) {
</span><span class="cx">                 completionHandler();
</span><span class="lines">@@ -1418,7 +1419,7 @@
</span><span class="cx">             completionHandler();
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void runJavaScriptConfirm(WebPageProxy* page, const String&amp; message, WebFrameProxy* frame, std::function&lt;void (bool)&gt; completionHandler) override
</del><ins>+        virtual void runJavaScriptConfirm(WebPageProxy* page, const String&amp; message, WebFrameProxy* frame, const SecurityOriginData&amp;, std::function&lt;void (bool)&gt; completionHandler) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.runJavaScriptConfirm) {
</span><span class="cx">                 completionHandler(false);
</span><span class="lines">@@ -1429,7 +1430,7 @@
</span><span class="cx">             completionHandler(result);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void runJavaScriptPrompt(WebPageProxy* page, const String&amp; message, const String&amp; defaultValue, WebFrameProxy* frame, std::function&lt;void (const String&amp;)&gt; completionHandler) override
</del><ins>+        virtual void runJavaScriptPrompt(WebPageProxy* page, const String&amp; message, const String&amp; defaultValue, WebFrameProxy* frame, const SecurityOriginData&amp;, std::function&lt;void (const String&amp;)&gt; completionHandler) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.runJavaScriptPrompt) {
</span><span class="cx">                 completionHandler(String());
</span><span class="lines">@@ -1853,11 +1854,11 @@
</span><span class="cx">             m_client.didFailNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(error), toAPI(userData), m_client.base.clientInfo);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFailProvisionalLoadInSubframeWithError(WebPageProxy&amp; page, WebFrameProxy&amp; subframe, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object* userData) override
</del><ins>+        virtual void didFailProvisionalLoadInSubframeWithError(WebPageProxy&amp; page, WebFrameProxy&amp; subframe, const WebKit::SecurityOriginData&amp; securityOriginData, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFailProvisionalLoadInSubframe)
</span><span class="cx">                 return;
</span><del>-            m_client.didFailProvisionalLoadInSubframe(toAPI(&amp;page), toAPI(navigation), toAPI(API::FrameInfo::create(subframe).ptr()), toAPI(error), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didFailProvisionalLoadInSubframe(toAPI(&amp;page), toAPI(navigation), toAPI(API::FrameInfo::create(subframe, securityOriginData.securityOrigin()).ptr()), toAPI(error), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         virtual void didFinishDocumentLoad(WebPageProxy&amp; page, API::Navigation* navigation, API::Object* userData) override
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKResourceCacheManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; securityOrigins;
</span><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><del>-                securityOrigins.append(API::SecurityOrigin::create(origin));
</del><ins>+                securityOrigins.append(API::SecurityOrigin::create(*origin));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         callback(toAPI(API::Array::create(WTF::move(securityOrigins)).ptr()), nullptr, context);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKFrameInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2014 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><span class="cx"> #import &lt;Foundation/Foundation.h&gt;
</span><ins>+#import &lt;WebKit/WKSecurityOrigin.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> /*! A WKFrameInfo object contains information about a frame on a webpage.
</span><span class="cx">  @discussion An instance of this class is a transient, data-only object;
</span><span class="lines">@@ -48,6 +49,10 @@
</span><span class="cx">  */
</span><span class="cx"> @property (nonatomic, readonly, copy) NSURLRequest *request;
</span><span class="cx"> 
</span><ins>+/*! @abstract The frame's current security origin.
+ */
+@property (nonatomic, readonly) WKSecurityOrigin *securityOrigin WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> WK_ASSUME_NONNULL_END
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKFrameInfomm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -28,6 +28,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><ins>+#import &quot;WKSecurityOriginInternal.h&quot;
+
</ins><span class="cx"> @implementation WKFrameInfo
</span><span class="cx"> 
</span><span class="cx"> - (void)dealloc
</span><span class="lines">@@ -52,6 +54,11 @@
</span><span class="cx">     return _frameInfo-&gt;request().nsURLRequest(WebCore::DoNotUpdateHTTPBody);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (WKSecurityOrigin *)securityOrigin
+{
+    return wrapper(_frameInfo-&gt;securityOrigin());
+}
+
</ins><span class="cx"> - (id)copyWithZone:(NSZone *)zone
</span><span class="cx"> {
</span><span class="cx">     return [self retain];
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKSecurityOriginhfromrev185876trunkSourceWebKit2UIProcessAPICocoaWKFrameInfoh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.h (from rev 185876, trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.h) (0 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -0,0 +1,60 @@
</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.
+ */
+
+#import &lt;WebKit/WKFoundation.h&gt;
+
+#if WK_API_ENABLED
+
+#import &lt;Foundation/Foundation.h&gt;
+
+/*! A WKSecurityOrigin object contains information about a security origin.
+ @discussion An instance of this class is a transient, data-only object;
+ it does not uniquely identify a security origin across multiple delegate method
+ calls.
+ */
+WK_ASSUME_NONNULL_BEGIN
+
+WK_CLASS_AVAILABLE(WK_MAC_TBA, WK_MAC_TBA)
+@interface WKSecurityOrigin : NSObject
+
+- (instancetype)init WK_UNAVAILABLE;
+
+/*! @abstract The security origin's protocol.
+ */
+@property (nonatomic, readonly, copy) NSString *protocol;
+
+/*! @abstract The security origin's host.
+ */
+@property (nonatomic, readonly, copy) NSString *host;
+
+/*! @abstract The security origin's port.
+ */
+@property (nonatomic, readonly) NSInteger port;
+
+@end
+
+WK_ASSUME_NONNULL_END
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKSecurityOriginmmfromrev185876trunkSourceWebKit2UIProcessAPICocoaWKFrameInfomm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.mm (from rev 185876, trunk/Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm) (0 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOrigin.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -0,0 +1,73 @@
</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.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKSecurityOriginInternal.h&quot;
+
+#if WK_API_ENABLED
+
+#import &lt;WebCore/ResourceRequest.h&gt;
+#import &lt;WebCore/SecurityOrigin.h&gt;
+#import &lt;wtf/RefPtr.h&gt;
+
+@implementation WKSecurityOrigin
+
+- (void)dealloc
+{
+    _securityOrigin-&gt;~SecurityOrigin();
+
+    [super dealloc];
+}
+
+- (NSString *)description
+{
+    return [NSString stringWithFormat:@&quot;&lt;%@: %p; protocol = %@; host = %@; port = %li&gt;&quot;, NSStringFromClass(self.class), self, self.protocol, self.host, (long)self.port];
+}
+
+- (NSString *)protocol
+{
+    return _securityOrigin-&gt;securityOrigin().protocol();
+}
+
+- (NSString *)host
+{
+    return _securityOrigin-&gt;securityOrigin().host();
+}
+
+- (NSInteger)port
+{
+    return _securityOrigin-&gt;securityOrigin().port();
+}
+
+#pragma mark WKObject protocol implementation
+
+- (API::Object&amp;)_apiObject
+{
+    return *_securityOrigin;
+}
+
+@end
+
+#endif // WK_API_ENABLED
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKSecurityOriginInternalhfromrev185876trunkSourceWebKit2UIProcessAPICocoa_WKSecurityOriginInternalh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOriginInternal.h (from rev 185876, trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOriginInternal.h) (0 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOriginInternal.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKSecurityOriginInternal.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -0,0 +1,48 @@
</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.
+ */
+
+#import &quot;WKSecurityOrigin.h&quot;
+
+#if WK_API_ENABLED
+
+#import &quot;APISecurityOrigin.h&quot;
+
+namespace API {
+
+inline WKSecurityOrigin *wrapper(API::SecurityOrigin&amp; securityOrigin)
+{
+    ASSERT([securityOrigin.wrapper() isKindOfClass:[WKSecurityOrigin self]]);
+    return (WKSecurityOrigin *)securityOrigin.wrapper();
+}
+
+}
+
+@interface WKSecurityOrigin () &lt;WKObject&gt; {
+@package
+    API::ObjectStorage&lt;API::SecurityOrigin&gt; _securityOrigin;
+}
+@end
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKUIDelegatePrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -27,8 +27,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><ins>+#import &lt;WebKit/WKSecurityOrigin.h&gt;
</ins><span class="cx"> #import &lt;WebKit/_WKActivatedElementInfo.h&gt;
</span><del>-#import &lt;WebKit/_WKSecurityOrigin.h&gt;
</del><span class="cx"> 
</span><span class="cx"> @class UIViewController;
</span><span class="cx"> @class _WKFrameHandle;
</span><span class="lines">@@ -38,10 +38,10 @@
</span><span class="cx"> @optional
</span><span class="cx"> 
</span><span class="cx"> // FIXME: This should be handled by the WKWebsiteDataStore delegate.
</span><del>-- (void)_webView:(WKWebView *)webView decideDatabaseQuotaForSecurityOrigin:(_WKSecurityOrigin *)securityOrigin currentQuota:(unsigned long long)currentQuota currentOriginUsage:(unsigned long long)currentOriginUsage currentDatabaseUsage:(unsigned long long)currentUsage expectedUsage:(unsigned long long)expectedUsage decisionHandler:(void (^)(unsigned long long newQuota))decisionHandler;
</del><ins>+- (void)_webView:(WKWebView *)webView decideDatabaseQuotaForSecurityOrigin:(WKSecurityOrigin *)securityOrigin currentQuota:(unsigned long long)currentQuota currentOriginUsage:(unsigned long long)currentOriginUsage currentDatabaseUsage:(unsigned long long)currentUsage expectedUsage:(unsigned long long)expectedUsage decisionHandler:(void (^)(unsigned long long newQuota))decisionHandler;
</ins><span class="cx"> 
</span><span class="cx"> // FIXME: This should be handled by the WKWebsiteDataStore delegate.
</span><del>-- (void)_webView:(WKWebView *)webView decideWebApplicationCacheQuotaForSecurityOrigin:(_WKSecurityOrigin *)securityOrigin currentQuota:(unsigned long long)currentQuota totalBytesNeeded:(unsigned long long)totalBytesNeeded decisionHandler:(void (^)(unsigned long long newQuota))decisionHandler;
</del><ins>+- (void)_webView:(WKWebView *)webView decideWebApplicationCacheQuotaForSecurityOrigin:(WKSecurityOrigin *)securityOrigin currentQuota:(unsigned long long)currentQuota totalBytesNeeded:(unsigned long long)totalBytesNeeded decisionHandler:(void (^)(unsigned long long newQuota))decisionHandler;
</ins><span class="cx"> 
</span><span class="cx"> - (void)_webView:(WKWebView *)webView printFrame:(_WKFrameHandle *)frame;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKUserContentControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><ins>+#import &quot;SecurityOriginData.h&quot;
</ins><span class="cx"> #import &quot;WKFrameInfoInternal.h&quot;
</span><span class="cx"> #import &quot;WKNSArray.h&quot;
</span><span class="cx"> #import &quot;WKScriptMessageHandler.h&quot;
</span><span class="lines">@@ -84,9 +85,9 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    virtual void didPostMessage(WebKit::WebPageProxy&amp; page, WebKit::WebFrameProxy&amp; frame, WebCore::SerializedScriptValue&amp; serializedScriptValue)
</del><ins>+    virtual void didPostMessage(WebKit::WebPageProxy&amp; page, WebKit::WebFrameProxy&amp; frame, const WebKit::SecurityOriginData&amp; securityOriginData, WebCore::SerializedScriptValue&amp; serializedScriptValue)
</ins><span class="cx">     {
</span><del>-        RetainPtr&lt;WKFrameInfo&gt; frameInfo = wrapper(API::FrameInfo::create(frame));
</del><ins>+        RetainPtr&lt;WKFrameInfo&gt; frameInfo = wrapper(API::FrameInfo::create(frame, securityOriginData.securityOrigin()));
</ins><span class="cx"> 
</span><span class="cx">         RetainPtr&lt;JSContext&gt; context = adoptNS([[JSContext alloc] init]);
</span><span class="cx">         JSValueRef valueRef = serializedScriptValue.deserialize([context JSGlobalContextRef], 0);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoa_WKSecurityOriginh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -28,14 +28,10 @@
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><span class="cx"> #import &lt;Foundation/Foundation.h&gt;
</span><ins>+#import &lt;WebKit/WKSecurityOrigin.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> WK_CLASS_AVAILABLE(10_10, 8_0)
</span><del>-@interface _WKSecurityOrigin : NSObject
-
-@property (nonatomic, readonly, copy) NSString *protocol;
-@property (nonatomic, readonly, copy) NSString *host;
-@property (nonatomic, readonly) unsigned short port;
-
</del><ins>+@interface _WKSecurityOrigin : WKSecurityOrigin
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoa_WKSecurityOriginmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.mm (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.mm        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOrigin.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -24,41 +24,11 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #import &quot;config.h&quot;
</span><del>-#import &quot;_WKSecurityOriginInternal.h&quot;
</del><ins>+#import &quot;_WKSecurityOrigin.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if WK_API_ENABLED
</span><span class="cx"> 
</span><del>-#import &lt;WebCore/SecurityOrigin.h&gt;
-#import &lt;wtf/RefPtr.h&gt;
-
-@implementation _WKSecurityOrigin {
-    RefPtr&lt;WebCore::SecurityOrigin&gt; _origin;
-}
-
-- (instancetype)_initWithSecurityOrigin:(const WebCore::SecurityOrigin&amp;)origin
-{
-    if (!(self = [super init]))
-        return nil;
-
-    _origin = origin.isolatedCopy();
-    return self;
-}
-
-- (NSString *)protocol
-{
-    return _origin-&gt;protocol();
-}
-
-- (NSString *)host
-{
-    return _origin-&gt;host();
-}
-
-- (unsigned short)port
-{
-    return _origin-&gt;port();
-}
-
</del><ins>+@implementation _WKSecurityOrigin
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #endif // WK_API_ENABLED
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoa_WKSecurityOriginInternalh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOriginInternal.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOriginInternal.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKSecurityOriginInternal.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -1,42 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 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.
- */
-
-#import &quot;_WKSecurityOrigin.h&quot;
-
-#if WK_API_ENABLED
-
-#import &lt;wtf/PassRefPtr.h&gt;
-
-namespace WebCore {
-class SecurityOrigin;
-}
-
-@interface _WKSecurityOrigin ()
-
-- (instancetype)_initWithSecurityOrigin:(const WebCore::SecurityOrigin&amp;)origin;
-
-@end
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCocoaNavigationStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> struct WebNavigationDataStore;
</span><span class="cx"> 
</span><span class="cx"> class NavigationState final : private PageLoadState::Observer {
</span><span class="lines">@@ -82,7 +83,7 @@
</span><span class="cx">         virtual void didStartProvisionalNavigation(WebPageProxy&amp;, API::Navigation*, API::Object*) override;
</span><span class="cx">         virtual void didReceiveServerRedirectForProvisionalNavigation(WebPageProxy&amp;, API::Navigation*, API::Object*) override;
</span><span class="cx">         virtual void didFailProvisionalNavigationWithError(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) override;
</span><del>-        virtual void didFailProvisionalLoadInSubframeWithError(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) override;
</del><ins>+        virtual void didFailProvisionalLoadInSubframeWithError(WebPageProxy&amp;, WebFrameProxy&amp;, const SecurityOriginData&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) override;
</ins><span class="cx">         virtual void didCommitNavigation(WebPageProxy&amp;, API::Navigation*, API::Object*) override;
</span><span class="cx">         virtual void didFinishDocumentLoad(WebPageProxy&amp;, API::Navigation*, API::Object*) override;
</span><span class="cx">         virtual void didFinishNavigation(WebPageProxy&amp;, API::Navigation*, API::Object*) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCocoaNavigationStatemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #import &quot;CompletionHandlerCallChecker.h&quot;
</span><span class="cx"> #import &quot;NavigationActionData.h&quot;
</span><span class="cx"> #import &quot;PageLoadState.h&quot;
</span><ins>+#import &quot;SecurityOriginData.h&quot;
</ins><span class="cx"> #import &quot;WKBackForwardListInternal.h&quot;
</span><span class="cx"> #import &quot;WKBackForwardListItemInternal.h&quot;
</span><span class="cx"> #import &quot;WKFrameInfoInternal.h&quot;
</span><span class="lines">@@ -449,7 +450,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // FIXME: Shouldn't need to pass the WebFrameProxy in here. At most, a FrameHandle.
</span><del>-void NavigationState::NavigationClient::didFailProvisionalLoadInSubframeWithError(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object*)
</del><ins>+void NavigationState::NavigationClient::didFailProvisionalLoadInSubframeWithError(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, const SecurityOriginData&amp; securityOrigin, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object*)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: We should assert that navigation is not null here, but it's currently null because WebPageProxy::didFailProvisionalLoadForFrame passes null.
</span><span class="cx">     RetainPtr&lt;WKNavigation&gt; wkNavigation;
</span><span class="lines">@@ -462,7 +463,7 @@
</span><span class="cx">     auto navigationDelegate = m_navigationState.m_navigationDelegate.get();
</span><span class="cx">     auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, webFrameProxy, error);
</span><span class="cx"> 
</span><del>-    [(id &lt;WKNavigationDelegatePrivate&gt;)navigationDelegate _webView:m_navigationState.m_webView navigation:nil didFailProvisionalLoadInSubframe:wrapper(API::FrameInfo::create(webFrameProxy)) withError:errorWithRecoveryAttempter.get()];
</del><ins>+    [(id &lt;WKNavigationDelegatePrivate&gt;)navigationDelegate _webView:m_navigationState.m_webView navigation:nil didFailProvisionalLoadInSubframe:wrapper(API::FrameInfo::create(webFrameProxy, securityOrigin.securityOrigin())) withError:errorWithRecoveryAttempter.get()];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NavigationState::NavigationClient::didCommitNavigation(WebPageProxy&amp; page, API::Navigation* navigation, API::Object*)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCocoaUIDelegateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -58,14 +58,14 @@
</span><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         // API::UIClient
</span><del>-        virtual PassRefPtr&lt;WebKit::WebPageProxy&gt; createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, const WebKit::NavigationActionData&amp;) override;
</del><ins>+        virtual PassRefPtr&lt;WebKit::WebPageProxy&gt; createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, const WebKit::NavigationActionData&amp;) override;
</ins><span class="cx">         virtual void close(WebKit::WebPageProxy*) override;
</span><span class="cx">         virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) override;
</span><span class="cx">         virtual void didEnterFullscreen(WebKit::WebPageProxy*) override;
</span><span class="cx">         virtual void didExitFullscreen(WebKit::WebPageProxy*) override;
</span><del>-        virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, std::function&lt;void ()&gt; completionHandler) override;
-        virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, std::function&lt;void (bool)&gt; completionHandler) override;
-        virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy*, std::function&lt;void (const WTF::String&amp;)&gt; completionHandler) override;
</del><ins>+        virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, std::function&lt;void ()&gt; completionHandler) override;
+        virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, std::function&lt;void (bool)&gt; completionHandler) override;
+        virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&amp;, std::function&lt;void (const WTF::String&amp;)&gt; completionHandler) override;
</ins><span class="cx">         virtual void exceededDatabaseQuota(WebPageProxy*, WebFrameProxy*, API::SecurityOrigin*, const WTF::String&amp; databaseName, const WTF::String&amp; displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentUsage, unsigned long long expectedUsage, std::function&lt;void (unsigned long long)&gt;) override;
</span><span class="cx">         virtual void reachedApplicationCacheOriginQuota(WebPageProxy*, const WebCore::SecurityOrigin&amp;, uint64_t currentQuota, uint64_t totalBytesNeeded, std::function&lt;void (unsigned long long)&gt; completionHandler) override;
</span><span class="cx">         virtual void printFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCocoaUIDelegatemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -30,14 +30,15 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;CompletionHandlerCallChecker.h&quot;
</span><span class="cx"> #import &quot;NavigationActionData.h&quot;
</span><ins>+#import &quot;SecurityOriginData.h&quot;
</ins><span class="cx"> #import &quot;WKFrameInfoInternal.h&quot;
</span><span class="cx"> #import &quot;WKNavigationActionInternal.h&quot;
</span><ins>+#import &quot;WKSecurityOriginInternal.h&quot;
</ins><span class="cx"> #import &quot;WKWebViewConfigurationInternal.h&quot;
</span><span class="cx"> #import &quot;WKWebViewInternal.h&quot;
</span><span class="cx"> #import &quot;WKWindowFeaturesInternal.h&quot;
</span><span class="cx"> #import &quot;WKUIDelegatePrivate.h&quot;
</span><span class="cx"> #import &quot;_WKFrameHandleInternal.h&quot;
</span><del>-#import &quot;_WKSecurityOriginInternal.h&quot;
</del><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="lines">@@ -91,7 +92,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;WebKit::WebPageProxy&gt; UIDelegate::UIClient::createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy* initiatingFrame, const WebCore::ResourceRequest&amp; request, const WebCore::WindowFeatures&amp; windowFeatures, const WebKit::NavigationActionData&amp; navigationActionData)
</del><ins>+PassRefPtr&lt;WebKit::WebPageProxy&gt; UIDelegate::UIClient::createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy* initiatingFrame, const WebKit::SecurityOriginData&amp; securityOriginData, const WebCore::ResourceRequest&amp; request, const WebCore::WindowFeatures&amp; windowFeatures, const WebKit::NavigationActionData&amp; navigationActionData)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures)
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -103,7 +104,7 @@
</span><span class="cx">     auto configuration = adoptNS([m_uiDelegate.m_webView-&gt;_configuration copy]);
</span><span class="cx">     [configuration _setRelatedWebView:m_uiDelegate.m_webView];
</span><span class="cx"> 
</span><del>-    auto sourceFrameInfo = API::FrameInfo::create(*initiatingFrame);
</del><ins>+    auto sourceFrameInfo = API::FrameInfo::create(*initiatingFrame, securityOriginData.securityOrigin());
</ins><span class="cx">     auto navigationAction = API::NavigationAction::create(navigationActionData, sourceFrameInfo.ptr(), nullptr, request, WebCore::URL());
</span><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;WKWebView&gt; webView = [delegate.get() webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(navigationAction) windowFeatures:adoptNS([[WKWindowFeatures alloc] _initWithWindowFeatures:windowFeatures]).get()];
</span><span class="lines">@@ -117,7 +118,7 @@
</span><span class="cx">     return webView-&gt;_page.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void UIDelegate::UIClient::runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&amp; message, WebKit::WebFrameProxy* webFrameProxy, std::function&lt;void ()&gt; completionHandler)
</del><ins>+void UIDelegate::UIClient::runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&amp; message, WebKit::WebFrameProxy* webFrameProxy, const WebKit::SecurityOriginData&amp; securityOriginData, std::function&lt;void ()&gt; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_uiDelegate.m_delegateMethods.webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler) {
</span><span class="cx">         completionHandler();
</span><span class="lines">@@ -131,13 +132,13 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CompletionHandlerCallChecker&gt; checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:));
</span><del>-    [delegate webView:m_uiDelegate.m_webView runJavaScriptAlertPanelWithMessage:message initiatedByFrame:wrapper(API::FrameInfo::create(*webFrameProxy)) completionHandler:[completionHandler, checker] {
</del><ins>+    [delegate webView:m_uiDelegate.m_webView runJavaScriptAlertPanelWithMessage:message initiatedByFrame:wrapper(API::FrameInfo::create(*webFrameProxy, securityOriginData.securityOrigin())) completionHandler:[completionHandler, checker] {
</ins><span class="cx">         completionHandler();
</span><span class="cx">         checker-&gt;didCallCompletionHandler();
</span><span class="cx">     }];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void UIDelegate::UIClient::runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&amp; message, WebKit::WebFrameProxy* webFrameProxy, std::function&lt;void (bool)&gt; completionHandler)
</del><ins>+void UIDelegate::UIClient::runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&amp; message, WebKit::WebFrameProxy* webFrameProxy, const WebKit::SecurityOriginData&amp; securityOriginData, std::function&lt;void (bool)&gt; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_uiDelegate.m_delegateMethods.webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler) {
</span><span class="cx">         completionHandler(false);
</span><span class="lines">@@ -151,13 +152,13 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CompletionHandlerCallChecker&gt; checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:));
</span><del>-    [delegate webView:m_uiDelegate.m_webView runJavaScriptConfirmPanelWithMessage:message initiatedByFrame:wrapper(API::FrameInfo::create(*webFrameProxy)) completionHandler:[completionHandler, checker](BOOL result) {
</del><ins>+    [delegate webView:m_uiDelegate.m_webView runJavaScriptConfirmPanelWithMessage:message initiatedByFrame:wrapper(API::FrameInfo::create(*webFrameProxy, securityOriginData.securityOrigin())) completionHandler:[completionHandler, checker](BOOL result) {
</ins><span class="cx">         completionHandler(result);
</span><span class="cx">         checker-&gt;didCallCompletionHandler();
</span><span class="cx">     }];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void UIDelegate::UIClient::runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&amp; message, const WTF::String&amp; defaultValue, WebKit::WebFrameProxy* webFrameProxy, std::function&lt;void (const WTF::String&amp;)&gt; completionHandler)
</del><ins>+void UIDelegate::UIClient::runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&amp; message, const WTF::String&amp; defaultValue, WebKit::WebFrameProxy* webFrameProxy, const WebKit::SecurityOriginData&amp; securityOriginData, std::function&lt;void (const WTF::String&amp;)&gt; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_uiDelegate.m_delegateMethods.webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler) {
</span><span class="cx">         completionHandler(String());
</span><span class="lines">@@ -171,7 +172,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CompletionHandlerCallChecker&gt; checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:));
</span><del>-    [delegate webView:m_uiDelegate.m_webView runJavaScriptTextInputPanelWithPrompt:message defaultText:defaultValue initiatedByFrame:wrapper(API::FrameInfo::create(*webFrameProxy)) completionHandler:[completionHandler, checker](NSString *result) {
</del><ins>+    [delegate webView:m_uiDelegate.m_webView runJavaScriptTextInputPanelWithPrompt:message defaultText:defaultValue initiatedByFrame:wrapper(API::FrameInfo::create(*webFrameProxy, securityOriginData.securityOrigin())) completionHandler:[completionHandler, checker](NSString *result) {
</ins><span class="cx">         completionHandler(result);
</span><span class="cx">         checker-&gt;didCallCompletionHandler();
</span><span class="cx">     }];
</span><span class="lines">@@ -190,8 +191,9 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    ASSERT(securityOrigin);
</ins><span class="cx">     RefPtr&lt;CompletionHandlerCallChecker&gt; checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:decideDatabaseQuotaForSecurityOrigin:currentQuota:currentOriginUsage:currentDatabaseUsage:expectedUsage:decisionHandler:));
</span><del>-    [(id &lt;WKUIDelegatePrivate&gt;)delegate _webView:m_uiDelegate.m_webView decideDatabaseQuotaForSecurityOrigin:adoptNS([[_WKSecurityOrigin alloc] _initWithSecurityOrigin:securityOrigin-&gt;securityOrigin()]).get() currentQuota:currentQuota currentOriginUsage:currentOriginUsage currentDatabaseUsage:currentUsage expectedUsage:expectedUsage decisionHandler:[completionHandler, checker](unsigned long long newQuota) {
</del><ins>+    [(id &lt;WKUIDelegatePrivate&gt;)delegate _webView:m_uiDelegate.m_webView decideDatabaseQuotaForSecurityOrigin:wrapper(*securityOrigin) currentQuota:currentQuota currentOriginUsage:currentOriginUsage currentDatabaseUsage:currentUsage expectedUsage:expectedUsage decisionHandler:[completionHandler, checker](unsigned long long newQuota) {
</ins><span class="cx">         checker-&gt;didCallCompletionHandler();
</span><span class="cx">         completionHandler(newQuota);
</span><span class="cx">     }];
</span><span class="lines">@@ -211,7 +213,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CompletionHandlerCallChecker&gt; checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:decideWebApplicationCacheQuotaForSecurityOrigin:currentQuota:totalBytesNeeded:decisionHandler:));
</span><del>-    [(id &lt;WKUIDelegatePrivate&gt;)delegate _webView:m_uiDelegate.m_webView decideWebApplicationCacheQuotaForSecurityOrigin:adoptNS([[_WKSecurityOrigin alloc] _initWithSecurityOrigin:securityOrigin]).get() currentQuota:currentQuota totalBytesNeeded:totalBytesNeeded decisionHandler:[completionHandler, checker](unsigned long long newQuota) {
</del><ins>+    RefPtr&lt;API::SecurityOrigin&gt; apiOrigin = API::SecurityOrigin::create(securityOrigin);
+    
+    [(id &lt;WKUIDelegatePrivate&gt;)delegate _webView:m_uiDelegate.m_webView decideWebApplicationCacheQuotaForSecurityOrigin:wrapper(*apiOrigin) currentQuota:currentQuota totalBytesNeeded:totalBytesNeeded decisionHandler:[completionHandler, checker](unsigned long long newQuota) {
</ins><span class="cx">         checker-&gt;didCallCompletionHandler();
</span><span class="cx">         completionHandler(newQuota);
</span><span class="cx">     }];
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessUserContentWebScriptMessageHandlerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebScriptMessageHandler.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/UserContent/WebScriptMessageHandler.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebScriptMessageHandler.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="cx"> class WebFrameProxy;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> 
</span><span class="cx"> struct WebScriptMessageHandlerHandle {
</span><span class="cx">     void encode(IPC::ArgumentEncoder&amp;) const;
</span><span class="lines">@@ -57,7 +58,7 @@
</span><span class="cx">     class Client {
</span><span class="cx">     public:
</span><span class="cx">         virtual ~Client() { }
</span><del>-        virtual void didPostMessage(WebPageProxy&amp;, WebFrameProxy&amp;, WebCore::SerializedScriptValue&amp;) = 0;
</del><ins>+        virtual void didPostMessage(WebPageProxy&amp;, WebFrameProxy&amp;, const SecurityOriginData&amp;, WebCore::SerializedScriptValue&amp;) = 0;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     static PassRefPtr&lt;WebScriptMessageHandler&gt; create(std::unique_ptr&lt;Client&gt;, const String&amp; name);    
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebUserContentControllerProxy::didPostMessage(IPC::Connection&amp; connection, uint64_t pageID, uint64_t frameID, uint64_t messageHandlerID, const IPC::DataReference&amp; dataReference)
</del><ins>+void WebUserContentControllerProxy::didPostMessage(IPC::Connection&amp; connection, uint64_t pageID, uint64_t frameID, const SecurityOriginData&amp; securityOrigin, uint64_t messageHandlerID, const IPC::DataReference&amp; dataReference)
</ins><span class="cx"> {
</span><span class="cx">     WebPageProxy* page = WebProcessProxy::webPage(pageID);
</span><span class="cx">     if (!page)
</span><span class="lines">@@ -178,10 +178,9 @@
</span><span class="cx">     auto buffer = dataReference.vector();
</span><span class="cx">     RefPtr&lt;WebCore::SerializedScriptValue&gt; value = WebCore::SerializedScriptValue::adopt(buffer);
</span><span class="cx"> 
</span><del>-    handler-&gt;client().didPostMessage(*page, *frame, *value);
</del><ins>+    handler-&gt;client().didPostMessage(*page, *frame, securityOrigin, *value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><span class="cx"> void WebUserContentControllerProxy::addUserContentExtension(API::UserContentExtension&amp; userContentExtension)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -56,6 +56,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WebProcessProxy;
</span><span class="cx"> class WebScriptMessageHandler;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> 
</span><span class="cx"> class WebUserContentControllerProxy : public API::ObjectImpl&lt;API::Object::Type::UserContentController&gt;, private IPC::MessageReceiver {
</span><span class="cx"> public:
</span><span class="lines">@@ -92,7 +93,7 @@
</span><span class="cx">     // IPC::MessageReceiver.
</span><span class="cx">     virtual void didReceiveMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) override;
</span><span class="cx"> 
</span><del>-    void didPostMessage(IPC::Connection&amp;, uint64_t pageID, uint64_t frameID, uint64_t messageHandlerID, const IPC::DataReference&amp;);
</del><ins>+    void didPostMessage(IPC::Connection&amp;, uint64_t pageID, uint64_t frameID, const SecurityOriginData&amp;, uint64_t messageHandlerID, const IPC::DataReference&amp;);
</ins><span class="cx"> 
</span><span class="cx">     uint64_t m_identifier;
</span><span class="cx">     HashSet&lt;WebProcessProxy*&gt; m_processes;    
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.messages.in (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.messages.in        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.messages.in        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -24,5 +24,5 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> messages -&gt; WebUserContentControllerProxy {
</span><del>-    DidPostMessage(uint64_t pageID, uint64_t frameID, uint64_t messageHandlerID, IPC::DataReference message) WantsConnection
</del><ins>+    DidPostMessage(uint64_t pageID, uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, uint64_t messageHandlerID, IPC::DataReference message) WantsConnection
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -2875,7 +2875,7 @@
</span><span class="cx">     frame-&gt;didReceiveServerRedirectForProvisionalLoad(url);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&amp; provisionalURL, const ResourceError&amp; error, const UserData&amp; userData)
</del><ins>+void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, uint64_t navigationID, const String&amp; provisionalURL, const ResourceError&amp; error, const UserData&amp; userData)
</ins><span class="cx"> {
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="lines">@@ -2902,7 +2902,7 @@
</span><span class="cx">             m_navigationClient-&gt;didFailProvisionalNavigationWithError(*this, *frame, navigation.get(), error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</span><span class="cx">         else {
</span><span class="cx">             // FIXME: Get the main frame's current navigation.
</span><del>-            m_navigationClient-&gt;didFailProvisionalLoadInSubframeWithError(*this, *frame, nullptr, error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+            m_navigationClient-&gt;didFailProvisionalLoadInSubframeWithError(*this, *frame, frameSecurityOrigin, nullptr, error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx">         }
</span><span class="cx">     } else
</span><span class="cx">         m_loaderClient-&gt;didFailProvisionalLoadWithErrorForFrame(*this, *frame, navigation.get(), error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</span><span class="lines">@@ -3205,7 +3205,7 @@
</span><span class="cx">         m_frameSetLargestFrame = value ? m_mainFrame : 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, uint64_t navigationID, const NavigationActionData&amp; navigationActionData, uint64_t originatingFrameID, const WebCore::ResourceRequest&amp; originalRequest, const ResourceRequest&amp; request, uint64_t listenerID, const UserData&amp; userData, bool&amp; receivedPolicyAction, uint64_t&amp; newNavigationID, uint64_t&amp; policyAction, uint64_t&amp; downloadID)
</del><ins>+void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, uint64_t navigationID, const NavigationActionData&amp; navigationActionData, uint64_t originatingFrameID, const SecurityOriginData&amp; originatingFrameSecurityOrigin, const WebCore::ResourceRequest&amp; originalRequest, const ResourceRequest&amp; request, uint64_t listenerID, const UserData&amp; userData, bool&amp; receivedPolicyAction, uint64_t&amp; newNavigationID, uint64_t&amp; policyAction, uint64_t&amp; downloadID)
</ins><span class="cx"> {
</span><span class="cx">     auto transaction = m_pageLoadState.transaction();
</span><span class="cx"> 
</span><span class="lines">@@ -3244,12 +3244,12 @@
</span><span class="cx">         RefPtr&lt;API::FrameInfo&gt; sourceFrameInfo;
</span><span class="cx"> 
</span><span class="cx">         if (frame)
</span><del>-            destinationFrameInfo = API::FrameInfo::create(*frame);
</del><ins>+            destinationFrameInfo = API::FrameInfo::create(*frame, frameSecurityOrigin.securityOrigin());
</ins><span class="cx"> 
</span><span class="cx">         if (originatingFrame == frame)
</span><span class="cx">             sourceFrameInfo = destinationFrameInfo;
</span><span class="cx">         else if (originatingFrame)
</span><del>-            sourceFrameInfo = API::FrameInfo::create(*originatingFrame);
</del><ins>+            sourceFrameInfo = API::FrameInfo::create(*originatingFrame, originatingFrameSecurityOrigin.securityOrigin());
</ins><span class="cx"> 
</span><span class="cx">         auto navigationAction = API::NavigationAction::create(navigationActionData, sourceFrameInfo.get(), destinationFrameInfo.get(), request, originalRequest.url());
</span><span class="cx"> 
</span><span class="lines">@@ -3267,7 +3267,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::decidePolicyForNewWindowAction(uint64_t frameID, const NavigationActionData&amp; navigationActionData, const ResourceRequest&amp; request, const String&amp; frameName, uint64_t listenerID, const UserData&amp; userData)
</del><ins>+void WebPageProxy::decidePolicyForNewWindowAction(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, const NavigationActionData&amp; navigationActionData, const ResourceRequest&amp; request, const String&amp; frameName, uint64_t listenerID, const UserData&amp; userData)
</ins><span class="cx"> {
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="lines">@@ -3278,7 +3278,7 @@
</span><span class="cx">     if (m_navigationClient) {
</span><span class="cx">         RefPtr&lt;API::FrameInfo&gt; sourceFrameInfo;
</span><span class="cx">         if (frame)
</span><del>-            sourceFrameInfo = API::FrameInfo::create(*frame);
</del><ins>+            sourceFrameInfo = API::FrameInfo::create(*frame, frameSecurityOrigin.securityOrigin());
</ins><span class="cx"> 
</span><span class="cx">         auto navigationAction = API::NavigationAction::create(navigationActionData, sourceFrameInfo.get(), nullptr, request, request.url());
</span><span class="cx"> 
</span><span class="lines">@@ -3288,7 +3288,7 @@
</span><span class="cx">         m_policyClient-&gt;decidePolicyForNewWindowAction(*this, *frame, navigationActionData, request, frameName, WTF::move(listener), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::decidePolicyForResponse(uint64_t frameID, const ResourceResponse&amp; response, const ResourceRequest&amp; request, bool canShowMIMEType, uint64_t listenerID, const UserData&amp; userData)
</del><ins>+void WebPageProxy::decidePolicyForResponse(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, const ResourceResponse&amp; response, const ResourceRequest&amp; request, bool canShowMIMEType, uint64_t listenerID, const UserData&amp; userData)
</ins><span class="cx"> {
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="lines">@@ -3298,13 +3298,13 @@
</span><span class="cx">     Ref&lt;WebFramePolicyListenerProxy&gt; listener = frame-&gt;setUpPolicyListenerProxy(listenerID);
</span><span class="cx"> 
</span><span class="cx">     if (m_navigationClient) {
</span><del>-        auto navigationResponse = API::NavigationResponse::create(API::FrameInfo::create(*frame).get(), request, response, canShowMIMEType);
</del><ins>+        auto navigationResponse = API::NavigationResponse::create(API::FrameInfo::create(*frame, frameSecurityOrigin.securityOrigin()).get(), request, response, canShowMIMEType);
</ins><span class="cx">         m_navigationClient-&gt;decidePolicyForNavigationResponse(*this, navigationResponse.get(), WTF::move(listener), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</span><span class="cx">     } else
</span><span class="cx">         m_policyClient-&gt;decidePolicyForResponse(*this, *frame, response, request, canShowMIMEType, WTF::move(listener), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::decidePolicyForResponseSync(uint64_t frameID, const ResourceResponse&amp; response, const ResourceRequest&amp; request, bool canShowMIMEType, uint64_t listenerID, const UserData&amp; userData, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID)
</del><ins>+void WebPageProxy::decidePolicyForResponseSync(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, const ResourceResponse&amp; response, const ResourceRequest&amp; request, bool canShowMIMEType, uint64_t listenerID, const UserData&amp; userData, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_inDecidePolicyForResponseSync);
</span><span class="cx"> 
</span><span class="lines">@@ -3312,7 +3312,7 @@
</span><span class="cx">     m_decidePolicyForResponseRequest = &amp;request;
</span><span class="cx">     m_syncMimeTypePolicyActionIsValid = false;
</span><span class="cx"> 
</span><del>-    decidePolicyForResponse(frameID, response, request, canShowMIMEType, listenerID, userData);
</del><ins>+    decidePolicyForResponse(frameID, frameSecurityOrigin, response, request, canShowMIMEType, listenerID, userData);
</ins><span class="cx"> 
</span><span class="cx">     m_inDecidePolicyForResponseSync = false;
</span><span class="cx">     m_decidePolicyForResponseRequest = 0;
</span><span class="lines">@@ -3419,12 +3419,12 @@
</span><span class="cx"> 
</span><span class="cx"> // UIClient
</span><span class="cx"> 
</span><del>-void WebPageProxy::createNewPage(uint64_t frameID, const ResourceRequest&amp; request, const WindowFeatures&amp; windowFeatures, const NavigationActionData&amp; navigationActionData, uint64_t&amp; newPageID, WebPageCreationParameters&amp; newPageParameters)
</del><ins>+void WebPageProxy::createNewPage(uint64_t frameID, const SecurityOriginData&amp; securityOriginData, const ResourceRequest&amp; request, const WindowFeatures&amp; windowFeatures, const NavigationActionData&amp; navigationActionData, uint64_t&amp; newPageID, WebPageCreationParameters&amp; newPageParameters)
</ins><span class="cx"> {
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;WebPageProxy&gt; newPage = m_uiClient-&gt;createNewPage(this, frame, request, windowFeatures, navigationActionData);
</del><ins>+    RefPtr&lt;WebPageProxy&gt; newPage = m_uiClient-&gt;createNewPage(this, frame, securityOriginData, request, windowFeatures, navigationActionData);
</ins><span class="cx">     if (!newPage) {
</span><span class="cx">         newPageID = 0;
</span><span class="cx">         return;
</span><span class="lines">@@ -3465,7 +3465,7 @@
</span><span class="cx">     m_uiClient-&gt;close(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const String&amp; message, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply&gt; reply)
</del><ins>+void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const SecurityOriginData&amp; securityOrigin, const String&amp; message, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply&gt; reply)
</ins><span class="cx"> {
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="lines">@@ -3473,10 +3473,10 @@
</span><span class="cx">     // Since runJavaScriptAlert() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx">     m_process-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    m_uiClient-&gt;runJavaScriptAlert(this, message, frame, [reply]{ reply-&gt;send(); });
</del><ins>+    m_uiClient-&gt;runJavaScriptAlert(this, message, frame, securityOrigin, [reply]{ reply-&gt;send(); });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const String&amp; message, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply&gt; reply)
</del><ins>+void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const SecurityOriginData&amp; securityOrigin, const String&amp; message, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply&gt; reply)
</ins><span class="cx"> {
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="lines">@@ -3484,10 +3484,10 @@
</span><span class="cx">     // Since runJavaScriptConfirm() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx">     m_process-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    m_uiClient-&gt;runJavaScriptConfirm(this, message, frame, [reply](bool result) { reply-&gt;send(result); });
</del><ins>+    m_uiClient-&gt;runJavaScriptConfirm(this, message, frame, securityOrigin, [reply](bool result) { reply-&gt;send(result); });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const String&amp; message, const String&amp; defaultValue, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply&gt; reply)
</del><ins>+void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const SecurityOriginData&amp; securityOrigin, const String&amp; message, const String&amp; defaultValue, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply&gt; reply)
</ins><span class="cx"> {
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="lines">@@ -3495,7 +3495,7 @@
</span><span class="cx">     // Since runJavaScriptPrompt() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx">     m_process-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    m_uiClient-&gt;runJavaScriptPrompt(this, message, defaultValue, frame, [reply](const String&amp; result) { reply-&gt;send(result); });
</del><ins>+    m_uiClient-&gt;runJavaScriptPrompt(this, message, defaultValue, frame, securityOrigin, [reply](const String&amp; result) { reply-&gt;send(result); });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::setStatusText(const String&amp; text)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -200,6 +200,7 @@
</span><span class="cx"> struct EditorState;
</span><span class="cx"> struct PlatformPopupMenuData;
</span><span class="cx"> struct PrintInfo;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> struct WebPopupItem;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIBRATION)
</span><span class="lines">@@ -1101,7 +1102,7 @@
</span><span class="cx">     void didStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&amp; url, const String&amp; unreachableURL, const UserData&amp;);
</span><span class="cx">     void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&amp;, const UserData&amp;);
</span><span class="cx">     void didChangeProvisionalURLForFrame(uint64_t frameID, uint64_t navigationID, const String&amp; url);
</span><del>-    void didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&amp; provisionalURL, const WebCore::ResourceError&amp;, const UserData&amp;);
</del><ins>+    void didFailProvisionalLoadForFrame(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, uint64_t navigationID, const String&amp; provisionalURL, const WebCore::ResourceError&amp;, const UserData&amp;);
</ins><span class="cx">     void didCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&amp; mimeType, bool frameHasCustomContentProvider, uint32_t frameLoadType, const WebCore::CertificateInfo&amp;, const UserData&amp;);
</span><span class="cx">     void didFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&amp;);
</span><span class="cx">     void didFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&amp;);
</span><span class="lines">@@ -1123,10 +1124,10 @@
</span><span class="cx"> 
</span><span class="cx">     void didDestroyNavigation(uint64_t navigationID);
</span><span class="cx"> 
</span><del>-    void decidePolicyForNavigationAction(uint64_t frameID, uint64_t navigationID, const NavigationActionData&amp;, uint64_t originatingFrameID, const WebCore::ResourceRequest&amp; originalRequest, const WebCore::ResourceRequest&amp;, uint64_t listenerID, const UserData&amp;, bool&amp; receivedPolicyAction, uint64_t&amp; newNavigationID, uint64_t&amp; policyAction, uint64_t&amp; downloadID);
-    void decidePolicyForNewWindowAction(uint64_t frameID, const NavigationActionData&amp;, const WebCore::ResourceRequest&amp;, const String&amp; frameName, uint64_t listenerID, const UserData&amp;);
-    void decidePolicyForResponse(uint64_t frameID, const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, bool canShowMIMEType, uint64_t listenerID, const UserData&amp;);
-    void decidePolicyForResponseSync(uint64_t frameID, const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, bool canShowMIMEType, uint64_t listenerID, const UserData&amp;, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID);
</del><ins>+    void decidePolicyForNavigationAction(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, uint64_t navigationID, const NavigationActionData&amp;, uint64_t originatingFrameID, const SecurityOriginData&amp; originatingFrameSecurityOrigin, const WebCore::ResourceRequest&amp; originalRequest, const WebCore::ResourceRequest&amp;, uint64_t listenerID, const UserData&amp;, bool&amp; receivedPolicyAction, uint64_t&amp; newNavigationID, uint64_t&amp; policyAction, uint64_t&amp; downloadID);
+    void decidePolicyForNewWindowAction(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, const NavigationActionData&amp;, const WebCore::ResourceRequest&amp;, const String&amp; frameName, uint64_t listenerID, const UserData&amp;);
+    void decidePolicyForResponse(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, bool canShowMIMEType, uint64_t listenerID, const UserData&amp;);
+    void decidePolicyForResponseSync(uint64_t frameID, const SecurityOriginData&amp; frameSecurityOrigin, const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, bool canShowMIMEType, uint64_t listenerID, const UserData&amp;, bool&amp; receivedPolicyAction, uint64_t&amp; policyAction, uint64_t&amp; downloadID);
</ins><span class="cx">     void unableToImplementPolicy(uint64_t frameID, const WebCore::ResourceError&amp;, const UserData&amp;);
</span><span class="cx"> 
</span><span class="cx">     void willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const Vector&lt;std::pair&lt;String, String&gt;&gt;&amp; textFieldValues, uint64_t listenerID, const UserData&amp;);
</span><span class="lines">@@ -1138,12 +1139,12 @@
</span><span class="cx">     void didUpdateHistoryTitle(const String&amp; title, const String&amp; url, uint64_t frameID);
</span><span class="cx"> 
</span><span class="cx">     // UI client
</span><del>-    void createNewPage(uint64_t frameID, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, const NavigationActionData&amp;, uint64_t&amp; newPageID, WebPageCreationParameters&amp;);
</del><ins>+    void createNewPage(uint64_t frameID, const SecurityOriginData&amp;, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, const NavigationActionData&amp;, uint64_t&amp; newPageID, WebPageCreationParameters&amp;);
</ins><span class="cx">     void showPage();
</span><span class="cx">     void closePage(bool stopResponsivenessTimer);
</span><del>-    void runJavaScriptAlert(uint64_t frameID, const String&amp;, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply&gt;);
-    void runJavaScriptConfirm(uint64_t frameID, const String&amp;, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply&gt;);
-    void runJavaScriptPrompt(uint64_t frameID, const String&amp;, const String&amp;, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply&gt;);
</del><ins>+    void runJavaScriptAlert(uint64_t frameID, const SecurityOriginData&amp;, const String&amp;, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply&gt;);
+    void runJavaScriptConfirm(uint64_t frameID, const SecurityOriginData&amp;, const String&amp;, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply&gt;);
+    void runJavaScriptPrompt(uint64_t frameID, const SecurityOriginData&amp;, const String&amp;, const String&amp;, RefPtr&lt;Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply&gt;);
</ins><span class="cx">     void setStatusText(const String&amp;);
</span><span class="cx">     void mouseDidMoveOverElement(const WebHitTestResult::Data&amp; hitTestResultData, uint32_t modifiers, const UserData&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -22,12 +22,12 @@
</span><span class="cx"> 
</span><span class="cx"> messages -&gt; WebPageProxy {
</span><span class="cx">     # UI messages
</span><del>-    CreateNewPage(uint64_t frameID, WebCore::ResourceRequest request, struct WebCore::WindowFeatures windowFeatures, struct WebKit::NavigationActionData navigationActionData) -&gt; (uint64_t newPageID, struct WebKit::WebPageCreationParameters newPageParameters)
</del><ins>+    CreateNewPage(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, WebCore::ResourceRequest request, struct WebCore::WindowFeatures windowFeatures, struct WebKit::NavigationActionData navigationActionData) -&gt; (uint64_t newPageID, struct WebKit::WebPageCreationParameters newPageParameters)
</ins><span class="cx">     ShowPage()
</span><span class="cx">     ClosePage(bool stopResponsivenessTimer)
</span><del>-    RunJavaScriptAlert(uint64_t frameID, String message) -&gt; () Delayed
-    RunJavaScriptConfirm(uint64_t frameID, String message) -&gt; (bool result) Delayed
-    RunJavaScriptPrompt(uint64_t frameID, String message, String defaultValue) -&gt; (String result) Delayed
</del><ins>+    RunJavaScriptAlert(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, String message) -&gt; () Delayed
+    RunJavaScriptConfirm(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, String message) -&gt; (bool result) Delayed
+    RunJavaScriptPrompt(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, String message, String defaultValue) -&gt; (String result) Delayed
</ins><span class="cx">     MouseDidMoveOverElement(WebKit::WebHitTestResult::Data hitTestResultData, uint32_t modifiers, WebKit::UserData userData)
</span><span class="cx"> 
</span><span class="cx">     DidBeginTrackingPotentialLongMousePress(WebCore::IntPoint mouseDownPosition, WebKit::WebHitTestResult::Data hitTestResultData, WebKit::UserData userData)
</span><span class="lines">@@ -109,9 +109,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     # Policy messages
</span><del>-    DecidePolicyForResponseSync(uint64_t frameID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::UserData userData) -&gt; (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID)
-    DecidePolicyForNavigationAction(uint64_t frameID, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, uint64_t originatingFrameID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::UserData userData) -&gt; (bool receivedPolicyAction, uint64_t newNavigationID, uint64_t policyAction, uint64_t downloadID)
-    DecidePolicyForNewWindowAction(uint64_t frameID, struct WebKit::NavigationActionData navigationActionData, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::UserData userData)
</del><ins>+    DecidePolicyForResponseSync(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::UserData userData) -&gt; (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID)
+    DecidePolicyForNavigationAction(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, uint64_t originatingFrameID, struct WebKit::SecurityOriginData originatingFrameSecurityOrigin, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::UserData userData) -&gt; (bool receivedPolicyAction, uint64_t newNavigationID, uint64_t policyAction, uint64_t downloadID)
+    DecidePolicyForNewWindowAction(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, struct WebKit::NavigationActionData navigationActionData, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::UserData userData)
</ins><span class="cx">     UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::UserData userData)
</span><span class="cx"> 
</span><span class="cx">     # Progress messages
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx">     DidStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String url, String unreachableURL, WebKit::UserData userData)
</span><span class="cx">     DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String url, WebKit::UserData userData)
</span><span class="cx">     DidChangeProvisionalURLForFrame(uint64_t frameID, uint64_t navigationID, String url)
</span><del>-    DidFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String provisionalURL, WebCore::ResourceError error, WebKit::UserData userData)
</del><ins>+    DidFailProvisionalLoadForFrame(uint64_t frameID, struct WebKit::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, String provisionalURL, WebCore::ResourceError error, WebKit::UserData userData)
</ins><span class="cx">     DidCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, String mimeType, bool hasCustomContentProvider, uint32_t loadType, WebCore::CertificateInfo certificateInfo, WebKit::UserData userData)
</span><span class="cx">     DidFailLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::UserData userData)
</span><span class="cx">     DidFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, WebKit::UserData userData)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -772,7 +772,6 @@
</span><span class="cx">                 37694525184FC6B600CDE21F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCF5068412431861005955AE /* Security.framework */; };
</span><span class="cx">                 376C51191957452E0007B0FA /* _WKSecurityOrigin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 376C51171957452E0007B0FA /* _WKSecurityOrigin.mm */; };
</span><span class="cx">                 376C511A1957452E0007B0FA /* _WKSecurityOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 376C51181957452E0007B0FA /* _WKSecurityOrigin.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                376C511D19574F5F0007B0FA /* _WKSecurityOriginInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 376C511B195748C20007B0FA /* _WKSecurityOriginInternal.h */; };
</del><span class="cx">                 37716A5A195B910500EE8B1B /* ProcessAssertion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37716A59195B910500EE8B1B /* ProcessAssertion.cpp */; };
</span><span class="cx">                 377216B81A4E6BE000DCA718 /* _WKRenderingProgressEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 377216B71A4E6BE000DCA718 /* _WKRenderingProgressEvents.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 377EAD4517E2C51A002D193D /* WKDeclarationSpecifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 377EAD4417E2C51A002D193D /* WKDeclarationSpecifiers.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -995,6 +994,9 @@
</span><span class="cx">                 51CBBA10165219B6005BE8FD /* NetworkResourceLoadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CBBA0E165219B6005BE8FD /* NetworkResourceLoadParameters.h */; };
</span><span class="cx">                 51CD1C5D1B3493AF00142CA5 /* WKSecurityOriginRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CD1C591B3493A900142CA5 /* WKSecurityOriginRef.cpp */; };
</span><span class="cx">                 51CD1C5E1B3493B400142CA5 /* WKSecurityOriginRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1C5A1B3493A900142CA5 /* WKSecurityOriginRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                51CD1C651B34B9D400142CA5 /* WKSecurityOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1C5F1B34B9C900142CA5 /* WKSecurityOrigin.h */; settings = {ATTRIBUTES = (Public, ); }; };
+                51CD1C661B34B9DC00142CA5 /* WKSecurityOrigin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51CD1C601B34B9C900142CA5 /* WKSecurityOrigin.mm */; };
+                51CD1C671B34B9DF00142CA5 /* WKSecurityOriginInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1C611B34B9C900142CA5 /* WKSecurityOriginInternal.h */; };
</ins><span class="cx">                 51D02F64132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51D02F63132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp */; };
</span><span class="cx">                 51D02F6A132EC73700BEAA96 /* WebIconDatabaseMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51D02F67132EC73700BEAA96 /* WebIconDatabaseMessages.h */; };
</span><span class="cx">                 51D02F6B132EC73700BEAA96 /* WebIconDatabaseProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51D02F68132EC73700BEAA96 /* WebIconDatabaseProxyMessageReceiver.cpp */; };
</span><span class="lines">@@ -2913,7 +2915,6 @@
</span><span class="cx">                 3769079C18F340A2001DFF04 /* APIInjectedBundleFormClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIInjectedBundleFormClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 376C51171957452E0007B0FA /* _WKSecurityOrigin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKSecurityOrigin.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 376C51181957452E0007B0FA /* _WKSecurityOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKSecurityOrigin.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                376C511B195748C20007B0FA /* _WKSecurityOriginInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKSecurityOriginInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 37716A59195B910500EE8B1B /* ProcessAssertion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessAssertion.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 377216B71A4E6BE000DCA718 /* _WKRenderingProgressEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKRenderingProgressEvents.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 377EAD4417E2C51A002D193D /* WKDeclarationSpecifiers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDeclarationSpecifiers.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3158,6 +3159,9 @@
</span><span class="cx">                 51CBBA0E165219B6005BE8FD /* NetworkResourceLoadParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkResourceLoadParameters.h; path = Network/NetworkResourceLoadParameters.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51CD1C591B3493A900142CA5 /* WKSecurityOriginRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKSecurityOriginRef.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51CD1C5A1B3493A900142CA5 /* WKSecurityOriginRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSecurityOriginRef.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                51CD1C5F1B34B9C900142CA5 /* WKSecurityOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSecurityOrigin.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                51CD1C601B34B9C900142CA5 /* WKSecurityOrigin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKSecurityOrigin.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                51CD1C611B34B9C900142CA5 /* WKSecurityOriginInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSecurityOriginInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 51D02F63132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIconDatabaseMessageReceiver.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51D02F65132EC6D300BEAA96 /* WebIconDatabaseProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebIconDatabaseProxy.messages.in; path = IconDatabase/WebIconDatabaseProxy.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51D02F67132EC73700BEAA96 /* WebIconDatabaseMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabaseMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -5280,7 +5284,6 @@
</span><span class="cx">                                 7C89D2D61A6C6BE6003A5FDE /* _WKProcessPoolConfigurationInternal.h */,
</span><span class="cx">                                 376C51181957452E0007B0FA /* _WKSecurityOrigin.h */,
</span><span class="cx">                                 376C51171957452E0007B0FA /* _WKSecurityOrigin.mm */,
</span><del>-                                376C511B195748C20007B0FA /* _WKSecurityOriginInternal.h */,
</del><span class="cx">                                 1A002D3F196B329400B9AD44 /* _WKSessionState.h */,
</span><span class="cx">                                 1A002D3E196B329400B9AD44 /* _WKSessionState.mm */,
</span><span class="cx">                                 1A002D42196B337000B9AD44 /* _WKSessionStateInternal.h */,
</span><span class="lines">@@ -5341,6 +5344,9 @@
</span><span class="cx">                                 1A7E377618E4A4FE003D0FFF /* WKScriptMessage.mm */,
</span><span class="cx">                                 1A7E377418E4A33A003D0FFF /* WKScriptMessageHandler.h */,
</span><span class="cx">                                 7CC99A3518EF7CBC0048C8B4 /* WKScriptMessageInternal.h */,
</span><ins>+                                51CD1C5F1B34B9C900142CA5 /* WKSecurityOrigin.h */,
+                                51CD1C601B34B9C900142CA5 /* WKSecurityOrigin.mm */,
+                                51CD1C611B34B9C900142CA5 /* WKSecurityOriginInternal.h */,
</ins><span class="cx">                                 1AD8790918B6C38A006CAFD7 /* WKUIDelegate.h */,
</span><span class="cx">                                 3743925718BC4C60001C8675 /* WKUIDelegatePrivate.h */,
</span><span class="cx">                                 1AFA3AC718E61C61003CCBAE /* WKUserContentController.h */,
</span><span class="lines">@@ -7487,7 +7493,6 @@
</span><span class="cx">                                 376311FD1A3FB5F7005A2E51 /* _WKSameDocumentNavigationType.h in Headers */,
</span><span class="cx">                                 376311FE1A3FB600005A2E51 /* _WKSameDocumentNavigationTypeInternal.h in Headers */,
</span><span class="cx">                                 376C511A1957452E0007B0FA /* _WKSecurityOrigin.h in Headers */,
</span><del>-                                376C511D19574F5F0007B0FA /* _WKSecurityOriginInternal.h in Headers */,
</del><span class="cx">                                 1A002D44196B338900B9AD44 /* _WKSessionState.h in Headers */,
</span><span class="cx">                                 1A002D43196B337000B9AD44 /* _WKSessionStateInternal.h in Headers */,
</span><span class="cx">                                 2D6B371B18A967AD0042AE80 /* _WKThumbnailView.h in Headers */,
</span><span class="lines">@@ -7625,6 +7630,7 @@
</span><span class="cx">                                 1AE00D611831792100087DD7 /* FrameLoadState.h in Headers */,
</span><span class="cx">                                 BC17753F118BABF0007D9E9A /* GenericCallback.h in Headers */,
</span><span class="cx">                                 BC06F42F12DBB9B6002D78DE /* GeolocationPermissionRequestManager.h in Headers */,
</span><ins>+                                51CD1C671B34B9DF00142CA5 /* WKSecurityOriginInternal.h in Headers */,
</ins><span class="cx">                                 BC06F44A12DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.h in Headers */,
</span><span class="cx">                                 BC06F43A12DBCCFB002D78DE /* GeolocationPermissionRequestProxy.h in Headers */,
</span><span class="cx">                                 2DA944A41884E4F000ED86DB /* GestureTypes.h in Headers */,
</span><span class="lines">@@ -7775,6 +7781,7 @@
</span><span class="cx">                                 BC597075116591D000551FCA /* ProcessModel.h in Headers */,
</span><span class="cx">                                 86E67A251910B9D100004AB7 /* ProcessThrottler.h in Headers */,
</span><span class="cx">                                 83048AE61ACA45DC0082C832 /* ProcessThrottlerClient.h in Headers */,
</span><ins>+                                51CD1C651B34B9D400142CA5 /* WKSecurityOrigin.h in Headers */,
</ins><span class="cx">                                 2D7F13101A702FBA009A6FBD /* ProcessType.h in Headers */,
</span><span class="cx">                                 A118A9EF1907AD6F00F7C92B /* QuickLookDocumentData.h in Headers */,
</span><span class="cx">                                 2D47B56D1810714E003A3AEE /* RemoteLayerBackingStore.h in Headers */,
</span><span class="lines">@@ -9438,6 +9445,7 @@
</span><span class="cx">                                 BC14E109120B905E00826C0C /* InjectedBundlePageFormClient.cpp in Sources */,
</span><span class="cx">                                 CD5C66A0134B9D38004FE2A8 /* InjectedBundlePageFullScreenClient.cpp in Sources */,
</span><span class="cx">                                 BCA8C6A811E3BA5F00812FB7 /* InjectedBundlePageLoaderClient.cpp in Sources */,
</span><ins>+                                51CD1C661B34B9DC00142CA5 /* WKSecurityOrigin.mm in Sources */,
</ins><span class="cx">                                 BC8147AA12F64CDA007B2C32 /* InjectedBundlePagePolicyClient.cpp in Sources */,
</span><span class="cx">                                 659C551E130006410025C0C2 /* InjectedBundlePageResourceLoadClient.cpp in Sources */,
</span><span class="cx">                                 BCA8C6AF11E3C08700812FB7 /* InjectedBundlePageUIClient.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessUserContentWebUserContentControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;WebUserContentController.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;DataReference.h&quot;
</span><ins>+#include &quot;SecurityOriginData.h&quot;
</ins><span class="cx"> #include &quot;WebCompiledContentExtension.h&quot;
</span><span class="cx"> #include &quot;WebFrame.h&quot;
</span><span class="cx"> #include &quot;WebPage.h&quot;
</span><span class="lines">@@ -135,7 +136,7 @@
</span><span class="cx">         if (!webPage)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        WebProcess::singleton().parentProcessConnection()-&gt;send(Messages::WebUserContentControllerProxy::DidPostMessage(webPage-&gt;pageID(), webFrame-&gt;frameID(), m_identifier, IPC::DataReference(value-&gt;data())), m_controller-&gt;identifier());
</del><ins>+        WebProcess::singleton().parentProcessConnection()-&gt;send(Messages::WebUserContentControllerProxy::DidPostMessage(webPage-&gt;pageID(), webFrame-&gt;frameID(), SecurityOriginData::fromFrame(webFrame), m_identifier, IPC::DataReference(value-&gt;data())), m_controller-&gt;identifier());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     WebCore::UserMessageHandlerDescriptor&amp; descriptor() { return *m_descriptor; }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include &quot;LayerTreeHost.h&quot;
</span><span class="cx"> #include &quot;NavigationActionData.h&quot;
</span><span class="cx"> #include &quot;PageBanner.h&quot;
</span><ins>+#include &quot;SecurityOriginData.h&quot;
</ins><span class="cx"> #include &quot;UserData.h&quot;
</span><span class="cx"> #include &quot;WebColorChooser.h&quot;
</span><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><span class="lines">@@ -221,7 +222,7 @@
</span><span class="cx">     uint64_t newPageID = 0;
</span><span class="cx">     WebPageCreationParameters parameters;
</span><span class="cx">     auto&amp; webProcess = WebProcess::singleton();
</span><del>-    if (!webProcess.parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::CreateNewPage(webFrame-&gt;frameID(), request.resourceRequest(), windowFeatures, navigationActionData), Messages::WebPageProxy::CreateNewPage::Reply(newPageID, parameters), m_page-&gt;pageID()))
</del><ins>+    if (!webProcess.parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::CreateNewPage(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), request.resourceRequest(), windowFeatures, navigationActionData), Messages::WebPageProxy::CreateNewPage::Reply(newPageID, parameters), m_page-&gt;pageID()))
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     if (!newPageID)
</span><span class="lines">@@ -379,7 +380,7 @@
</span><span class="cx">     unsigned syncSendFlags = IPC::InformPlatformProcessWillSuspend;
</span><span class="cx">     if (WebPage::synchronousMessagesShouldSpinRunLoop())
</span><span class="cx">         syncSendFlags |= IPC::SpinRunLoopWhileWaitingForReply;
</span><del>-    WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptAlert(webFrame-&gt;frameID(), alertText), Messages::WebPageProxy::RunJavaScriptAlert::Reply(), m_page-&gt;pageID(), std::chrono::milliseconds::max(), syncSendFlags);
</del><ins>+    WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptAlert(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), alertText), Messages::WebPageProxy::RunJavaScriptAlert::Reply(), m_page-&gt;pageID(), std::chrono::milliseconds::max(), syncSendFlags);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::runJavaScriptConfirm(Frame* frame, const String&amp; message)
</span><span class="lines">@@ -396,7 +397,7 @@
</span><span class="cx">     if (WebPage::synchronousMessagesShouldSpinRunLoop())
</span><span class="cx">         syncSendFlags |= IPC::SpinRunLoopWhileWaitingForReply;
</span><span class="cx">     bool result = false;
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptConfirm(webFrame-&gt;frameID(), message), Messages::WebPageProxy::RunJavaScriptConfirm::Reply(result), m_page-&gt;pageID(), std::chrono::milliseconds::max(), syncSendFlags))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptConfirm(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), message), Messages::WebPageProxy::RunJavaScriptConfirm::Reply(result), m_page-&gt;pageID(), std::chrono::milliseconds::max(), syncSendFlags))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     return result;
</span><span class="lines">@@ -416,7 +417,7 @@
</span><span class="cx">     if (WebPage::synchronousMessagesShouldSpinRunLoop())
</span><span class="cx">         syncSendFlags |= IPC::SpinRunLoopWhileWaitingForReply;
</span><span class="cx">     
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptPrompt(webFrame-&gt;frameID(), message, defaultValue), Messages::WebPageProxy::RunJavaScriptPrompt::Reply(result), m_page-&gt;pageID(), std::chrono::milliseconds::max(), syncSendFlags))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptPrompt(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), message, defaultValue), Messages::WebPageProxy::RunJavaScriptPrompt::Reply(result), m_page-&gt;pageID(), std::chrono::milliseconds::max(), syncSendFlags))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     return !result.isNull();
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #include &quot;InjectedBundleNavigationAction.h&quot;
</span><span class="cx"> #include &quot;NavigationActionData.h&quot;
</span><span class="cx"> #include &quot;PluginView.h&quot;
</span><ins>+#include &quot;SecurityOriginData.h&quot;
</ins><span class="cx"> #include &quot;UserData.h&quot;
</span><span class="cx"> #include &quot;WKBundleAPICast.h&quot;
</span><span class="cx"> #include &quot;WebBackForwardListProxy.h&quot;
</span><span class="lines">@@ -493,7 +494,7 @@
</span><span class="cx">         navigationID = static_cast&lt;WebDocumentLoader*&gt;(documentLoader)-&gt;navigationID();
</span><span class="cx"> 
</span><span class="cx">     // Notify the UIProcess.
</span><del>-    webPage-&gt;send(Messages::WebPageProxy::DidFailProvisionalLoadForFrame(m_frame-&gt;frameID(), navigationID, m_frame-&gt;coreFrame()-&gt;loader().provisionalLoadErrorBeingHandledURL(), error, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</del><ins>+    webPage-&gt;send(Messages::WebPageProxy::DidFailProvisionalLoadForFrame(m_frame-&gt;frameID(), SecurityOriginData::fromFrame(m_frame), navigationID, m_frame-&gt;coreFrame()-&gt;loader().provisionalLoadErrorBeingHandledURL(), error, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</ins><span class="cx"> 
</span><span class="cx">     // If we have a load listener, notify it.
</span><span class="cx">     if (WebFrame::LoadListener* loadListener = m_frame-&gt;loadListener())
</span><span class="lines">@@ -699,7 +700,7 @@
</span><span class="cx">     unsigned syncSendFlags = IPC::InformPlatformProcessWillSuspend;
</span><span class="cx">     if (WebPage::synchronousMessagesShouldSpinRunLoop())
</span><span class="cx">         syncSendFlags |= IPC::SpinRunLoopWhileWaitingForReply;
</span><del>-    if (!webPage-&gt;sendSync(Messages::WebPageProxy::DecidePolicyForResponseSync(m_frame-&gt;frameID(), response, request, canShowMIMEType, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForResponseSync::Reply(receivedPolicyAction, policyAction, downloadID), std::chrono::milliseconds::max(), syncSendFlags)) {
</del><ins>+    if (!webPage-&gt;sendSync(Messages::WebPageProxy::DecidePolicyForResponseSync(m_frame-&gt;frameID(), SecurityOriginData::fromFrame(m_frame), response, request, canShowMIMEType, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForResponseSync::Reply(receivedPolicyAction, policyAction, downloadID), std::chrono::milliseconds::max(), syncSendFlags)) {
</ins><span class="cx">         function(PolicyIgnore);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -738,7 +739,7 @@
</span><span class="cx">     navigationActionData.isProcessingUserGesture = navigationAction.processingUserGesture();
</span><span class="cx">     navigationActionData.canHandleRequest = webPage-&gt;canHandleRequest(request);
</span><span class="cx"> 
</span><del>-    webPage-&gt;send(Messages::WebPageProxy::DecidePolicyForNewWindowAction(m_frame-&gt;frameID(), navigationActionData, request, frameName, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</del><ins>+    webPage-&gt;send(Messages::WebPageProxy::DecidePolicyForNewWindowAction(m_frame-&gt;frameID(), SecurityOriginData::fromFrame(m_frame), navigationActionData, request, frameName, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp; navigationAction, const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; prpFormState, FramePolicyFunction function)
</span><span class="lines">@@ -808,7 +809,7 @@
</span><span class="cx">         documentLoader = static_cast&lt;WebDocumentLoader*&gt;(coreFrame-&gt;loader().documentLoader());
</span><span class="cx"> 
</span><span class="cx">     // Notify the UIProcess.
</span><del>-    if (!webPage-&gt;sendSync(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame-&gt;frameID(), documentLoader-&gt;navigationID(), navigationActionData, originatingFrame ? originatingFrame-&gt;frameID() : 0, navigationAction.resourceRequest(), request, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForNavigationAction::Reply(receivedPolicyAction, newNavigationID, policyAction, downloadID))) {
</del><ins>+    if (!webPage-&gt;sendSync(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame-&gt;frameID(), SecurityOriginData::fromFrame(m_frame), documentLoader-&gt;navigationID(), navigationActionData, originatingFrame ? originatingFrame-&gt;frameID() : 0, SecurityOriginData::fromFrame(originatingFrame.get()), navigationAction.resourceRequest(), request, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForNavigationAction::Reply(receivedPolicyAction, newNavigationID, policyAction, downloadID))) {
</ins><span class="cx">         function(PolicyIgnore);
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Tools/ChangeLog        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2015-06-23  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        WKFrameInfo should have an accessor for the Frame's current security origin.
+        https://bugs.webkit.org/show_bug.cgi?id=146162
+
+        Reviewed by Dan Bernstein.
+
+        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+        * TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html: Added.
+        * TestWebKitAPI/Tests/WebKit2Cocoa/ModalAlerts.mm: Added.
+        (sawDialog):
+        (-[ModalAlertsUIDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
+        (-[ModalAlertsUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
+        (-[ModalAlertsUIDelegate webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:]):
+        (-[ModalAlertsUIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:]):
+        (TEST):
+
</ins><span class="cx"> 2015-06-23  Tanay C  &lt;tanay.c@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove build warnings in Tools/DumpRenderTree/TestNetscapePlugIn
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPITestWebKitAPIxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (185876 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj        2015-06-23 16:45:30 UTC (rev 185876)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -51,6 +51,8 @@
</span><span class="cx">                 51393E221523952D005F39C5 /* DOMWindowExtensionBasic_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51393E1D1523944A005F39C5 /* DOMWindowExtensionBasic_Bundle.cpp */; };
</span><span class="cx">                 5142B2731517C8C800C32B19 /* ContextMenuCanCopyURL.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5142B2721517C89100C32B19 /* ContextMenuCanCopyURL.html */; };
</span><span class="cx">                 517E7E04151119C100D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 517E7E031511187500D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html */; };
</span><ins>+                51CD1C6C1B38CE4300142CA5 /* ModalAlerts.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51CD1C6A1B38CE3600142CA5 /* ModalAlerts.mm */; };
+                51CD1C721B38D48400142CA5 /* modal-alerts-in-new-about-blank-window.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 51CD1C711B38D48400142CA5 /* modal-alerts-in-new-about-blank-window.html */; };
</ins><span class="cx">                 51E5C7021919C3B200D8B3E1 /* simple2.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 51E780361919AFF8001829A2 /* simple2.html */; };
</span><span class="cx">                 51E5C7031919C3B200D8B3E1 /* simple3.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 51E780371919AFF8001829A2 /* simple3.html */; };
</span><span class="cx">                 51FCF7A11534B2A000104491 /* ShouldGoToBackForwardListItem_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51FCF7971534AC6D00104491 /* ShouldGoToBackForwardListItem_Bundle.cpp */; };
</span><span class="lines">@@ -338,6 +340,7 @@
</span><span class="cx">                         dstPath = TestWebKitAPI.resources;
</span><span class="cx">                         dstSubfolderSpec = 7;
</span><span class="cx">                         files = (
</span><ins>+                                51CD1C721B38D48400142CA5 /* modal-alerts-in-new-about-blank-window.html in Copy Resources */,
</ins><span class="cx">                                 7AE9E5091AE5AE8B00CF874B /* test.pdf in Copy Resources */,
</span><span class="cx">                                 7A1458FC1AD5C07000E06772 /* mouse-button-listener.html in Copy Resources */,
</span><span class="cx">                                 7C486BA11AA12567003F6F9B /* bundle-file.html in Copy Resources */,
</span><span class="lines">@@ -516,6 +519,8 @@
</span><span class="cx">                 5142B2721517C89100C32B19 /* ContextMenuCanCopyURL.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = ContextMenuCanCopyURL.html; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 517E7DFB15110EA600D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryCachePruneWithinResourceLoadDelegate.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 517E7E031511187500D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = MemoryCachePruneWithinResourceLoadDelegate.html; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                51CD1C6A1B38CE3600142CA5 /* ModalAlerts.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ModalAlerts.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                51CD1C711B38D48400142CA5 /* modal-alerts-in-new-about-blank-window.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = &quot;modal-alerts-in-new-about-blank-window.html&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 51E5C7041919EA5F00D8B3E1 /* ShouldKeepCurrentBackForwardListItemInList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShouldKeepCurrentBackForwardListItemInList.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51E780361919AFF8001829A2 /* simple2.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = simple2.html; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51E780371919AFF8001829A2 /* simple3.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = simple3.html; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -842,6 +847,7 @@
</span><span class="cx">                                 A1A4FE5D18DD3DB700B5EA8A /* Download.mm */,
</span><span class="cx">                                 2D1FE0AF1AD465C1006CD9E6 /* FixedLayoutSize.mm */,
</span><span class="cx">                                 37D36ED61AF42ECD00BAF5D9 /* LoadAlternateHTMLString.mm */,
</span><ins>+                                51CD1C6A1B38CE3600142CA5 /* ModalAlerts.mm */,
</ins><span class="cx">                                 1ABC3DED1899BE6D004F0626 /* Navigation.mm */,
</span><span class="cx">                                 CEA6CF2219CCF5BD0064F5A7 /* OpenAndCloseWindow.mm */,
</span><span class="cx">                                 C95501BE19AD2FAF0049BE3E /* Preferences.mm */,
</span><span class="lines">@@ -1133,6 +1139,7 @@
</span><span class="cx">                                 93AF4ECF1506F123007FD57E /* lots-of-images.html */,
</span><span class="cx">                                 2DD7D3AE178227AC0026E1E3 /* lots-of-text-vertical-lr.html */,
</span><span class="cx">                                 930AD401150698B30067970F /* lots-of-text.html */,
</span><ins>+                                51CD1C711B38D48400142CA5 /* modal-alerts-in-new-about-blank-window.html */,
</ins><span class="cx">                                 33E79E05137B5FCE00E32D99 /* mouse-move-listener.html */,
</span><span class="cx">                                 CEA6CF2719CCF69D0064F5A7 /* open-and-close-window.html */,
</span><span class="cx">                                 F6FDDDD514241C48004F1729 /* push-state.html */,
</span><span class="lines">@@ -1536,6 +1543,7 @@
</span><span class="cx">                                 7CCE7F0D1A411AE600447C4C /* ReloadPageAfterCrash.cpp in Sources */,
</span><span class="cx">                                 7CCE7EC91A411A7E00447C4C /* RenderedImageFromDOMNode.mm in Sources */,
</span><span class="cx">                                 7CCE7ECA1A411A7E00447C4C /* RenderedImageFromDOMRange.mm in Sources */,
</span><ins>+                                51CD1C6C1B38CE4300142CA5 /* ModalAlerts.mm in Sources */,
</ins><span class="cx">                                 7CCE7F0E1A411AE600447C4C /* ResizeReversePaginatedWebView.cpp in Sources */,
</span><span class="cx">                                 7CCE7F0F1A411AE600447C4C /* ResizeWindowAfterCrash.cpp in Sources */,
</span><span class="cx">                                 7CCE7F101A411AE600447C4C /* ResponsivenessTimerDoesntFireEarly.cpp in Sources */,
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPITestsWebKit2modalalertsinnewaboutblankwindowhtml"></a>
<div class="addfile"><h4>Added: trunk/Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html (0 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html                                (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script&gt;
+
+var newWindow = window.open(&quot;about:blank&quot;);
+newWindow.alert(&quot;Testing alert&quot;);
+newWindow.confirm(&quot;Testing confirm&quot;);
+newWindow.prompt(&quot;Testing prompt&quot;, &quot;Default text&quot;);
+
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkToolsTestWebKitAPITestsWebKit2CocoaModalAlertsmm"></a>
<div class="addfile"><h4>Added: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ModalAlerts.mm (0 => 185877)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ModalAlerts.mm                                (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ModalAlerts.mm        2015-06-23 17:28:20 UTC (rev 185877)
</span><span class="lines">@@ -0,0 +1,114 @@
</span><ins>+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include &quot;config.h&quot;
+
+#import &quot;PlatformUtilities.h&quot;
+#import &lt;WebKit/WKPreferences.h&gt;
+#import &lt;WebKit/WKUIDelegatePrivate.h&gt;
+#import &lt;WebKit/WKWebView.h&gt;
+#import &lt;WebKit/WKWebViewConfiguration.h&gt;
+#import &lt;wtf/RetainPtr.h&gt;
+
+#if WK_API_ENABLED
+
+@class ModalAlertsUIDelegate;
+
+static bool isDone;
+static RetainPtr&lt;WKWebView&gt; openedWebView;
+static RetainPtr&lt;ModalAlertsUIDelegate&gt; sharedUIDelegate;
+
+static unsigned dialogsSeen;
+static const unsigned dialogsExpected = 3;
+
+static void sawDialog()
+{
+    if (++dialogsSeen == dialogsExpected)
+        isDone = true;
+}
+
+@interface ModalAlertsUIDelegate : NSObject &lt;WKUIDelegate&gt;
+@end
+
+@implementation ModalAlertsUIDelegate
+
+- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
+{
+    openedWebView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration]);
+    [openedWebView setUIDelegate:sharedUIDelegate.get()];
+    return openedWebView.get();
+}
+
+- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler
+{
+    EXPECT_STREQ([[[[frame request] URL] absoluteString] UTF8String], &quot;about:blank&quot;);
+    EXPECT_STREQ([[[frame securityOrigin] protocol] UTF8String], &quot;file&quot;);
+    EXPECT_STREQ([[[frame securityOrigin] host] UTF8String], &quot;&quot;);
+    EXPECT_EQ([[frame securityOrigin] port], 0);
+
+    completionHandler();
+    sawDialog();
+}
+
+- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler
+{
+    EXPECT_STREQ([[[[frame request] URL] absoluteString] UTF8String], &quot;about:blank&quot;);
+    EXPECT_STREQ([[[frame securityOrigin] protocol] UTF8String], &quot;file&quot;);
+    EXPECT_STREQ([[[frame securityOrigin] host] UTF8String], &quot;&quot;);
+    EXPECT_EQ([[frame securityOrigin] port], 0);
+
+    completionHandler(true);
+    sawDialog();
+}
+
+- (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString *result))completionHandler
+{
+    EXPECT_STREQ([[[[frame request] URL] absoluteString] UTF8String], &quot;about:blank&quot;);
+    EXPECT_STREQ([[[frame securityOrigin] protocol] UTF8String], &quot;file&quot;);
+    EXPECT_STREQ([[[frame securityOrigin] host] UTF8String], &quot;&quot;);
+    EXPECT_EQ([[frame securityOrigin] port], 0);
+
+    completionHandler(@&quot;&quot;);
+    sawDialog();
+}
+
+@end
+
+TEST(WebKit2, ModalAlerts)
+{
+    RetainPtr&lt;WKWebView&gt; webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600)]);
+
+    sharedUIDelegate = adoptNS([[ModalAlertsUIDelegate alloc] init]);
+    [webView setUIDelegate:sharedUIDelegate.get()];
+
+    [webView configuration].preferences.javaScriptCanOpenWindowsAutomatically = YES;
+
+    NSURLRequest *request = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@&quot;modal-alerts-in-new-about-blank-window&quot; withExtension:@&quot;html&quot; subdirectory:@&quot;TestWebKitAPI.resources&quot;]];
+    [webView loadRequest:request];
+
+    TestWebKitAPI::Util::run(&amp;isDone);
+}
+
+#endif
</ins></span></pre>
</div>
</div>

</body>
</html>