Diff
Modified: trunk/Source/WebKit2/ChangeLog (166968 => 166969)
--- trunk/Source/WebKit2/ChangeLog 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/ChangeLog 2014-04-08 22:37:19 UTC (rev 166969)
@@ -1,5 +1,31 @@
2014-04-08 Anders Carlsson <ander...@apple.com>
+ Change WebPageProxy::CreateNewPage to take a NavigationActionData object
+ https://bugs.webkit.org/show_bug.cgi?id=131401
+
+ Reviewed by Dan Bernstein.
+
+ * UIProcess/API/APIUIClient.h:
+ (API::UIClient::createNewPage):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPageUIClient):
+ * UIProcess/API/Cocoa/WKNavigationAction.mm:
+ (toWKNavigationType):
+ * UIProcess/API/Cocoa/WKNavigationActionInternal.h:
+ * UIProcess/Cocoa/NavigationState.mm:
+ (WebKit::toWKNavigationType): Deleted.
+ * UIProcess/Cocoa/UIDelegate.h:
+ * UIProcess/Cocoa/UIDelegate.mm:
+ (WebKit::UIDelegate::UIClient::createNewPage):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::createNewPage):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+ (WebKit::WebChromeClient::createWindow):
+
+2014-04-08 Anders Carlsson <ander...@apple.com>
+
Fix build.
* WebKit2Prefix.h:
Modified: trunk/Source/WebKit2/UIProcess/API/APIUIClient.h (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/API/APIUIClient.h 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/API/APIUIClient.h 2014-04-08 22:37:19 UTC (rev 166969)
@@ -56,6 +56,7 @@
class WebOpenPanelResultListenerProxy;
class WebPageProxy;
class WebSecurityOrigin;
+struct NavigationActionData;
}
namespace API {
@@ -67,7 +68,7 @@
public:
virtual ~UIClient() { }
- virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button) { return nullptr; }
+ virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const WebKit::NavigationActionData&) { return nullptr; }
virtual void showPage(WebKit::WebPageProxy*) { }
virtual void close(WebKit::WebPageProxy*) { }
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-04-08 22:37:19 UTC (rev 166969)
@@ -1119,7 +1119,7 @@
}
private:
- virtual PassRefPtr<WebPageProxy> createNewPage(WebPageProxy* page, WebFrameProxy*, const ResourceRequest& resourceRequest, const WindowFeatures& windowFeatures, WebEvent::Modifiers modifiers, WebMouseEvent::Button button) override
+ virtual PassRefPtr<WebPageProxy> createNewPage(WebPageProxy* page, WebFrameProxy*, const ResourceRequest& resourceRequest, const WindowFeatures& windowFeatures, const NavigationActionData& navigationActionData) override
{
if (!m_client.base.version && !m_client.createNewPage_deprecatedForUseWithV0)
return 0;
@@ -1147,10 +1147,10 @@
RefPtr<ImmutableDictionary> featuresMap = ImmutableDictionary::create(std::move(map));
if (!m_client.base.version)
- return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.base.clientInfo)));
+ return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.get()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo)));
RefPtr<API::URLRequest> request = API::URLRequest::create(resourceRequest);
- return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(request.get()), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.base.clientInfo)));
+ return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(request.get()), toAPI(featuresMap.get()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo)));
}
virtual void showPage(WebPageProxy* page) override
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm 2014-04-08 22:37:19 UTC (rev 166969)
@@ -85,4 +85,25 @@
@end
+WKNavigationType toWKNavigationType(WebCore::NavigationType navigationType)
+{
+ switch (navigationType) {
+ case WebCore::NavigationTypeLinkClicked:
+ return WKNavigationTypeLinkActivated;
+ case WebCore::NavigationTypeFormSubmitted:
+ return WKNavigationTypeFormSubmitted;
+ case WebCore::NavigationTypeBackForward:
+ return WKNavigationTypeBackForward;
+ case WebCore::NavigationTypeReload:
+ return WKNavigationTypeReload;
+ case WebCore::NavigationTypeFormResubmitted:
+ return WKNavigationTypeFormResubmitted;
+ case WebCore::NavigationTypeOther:
+ return WKNavigationTypeOther;
+ }
+
+ ASSERT_NOT_REACHED();
+ return WKNavigationTypeOther;
+}
+
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h 2014-04-08 22:37:19 UTC (rev 166969)
@@ -27,6 +27,8 @@
#if WK_API_ENABLED
+#import <WebCore/FrameLoaderTypes.h>
+
@interface WKNavigationAction ()
@property (nonatomic, readwrite, strong) WKFrameInfo *sourceFrame;
@@ -39,4 +41,6 @@
@end
+WKNavigationType toWKNavigationType(WebCore::NavigationType);
+
#endif
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm 2014-04-08 22:37:19 UTC (rev 166969)
@@ -209,27 +209,6 @@
{
}
-static WKNavigationType toWKNavigationType(WebCore::NavigationType navigationType)
-{
- switch (navigationType) {
- case WebCore::NavigationTypeLinkClicked:
- return WKNavigationTypeLinkActivated;
- case WebCore::NavigationTypeFormSubmitted:
- return WKNavigationTypeFormSubmitted;
- case WebCore::NavigationTypeBackForward:
- return WKNavigationTypeBackForward;
- case WebCore::NavigationTypeReload:
- return WKNavigationTypeReload;
- case WebCore::NavigationTypeFormResubmitted:
- return WKNavigationTypeFormResubmitted;
- case WebCore::NavigationTypeOther:
- return WKNavigationTypeOther;
- }
-
- ASSERT_NOT_REACHED();
- return WKNavigationTypeOther;
-}
-
void NavigationState::PolicyClient::decidePolicyForNavigationAction(WebPageProxy*, WebFrameProxy* destinationFrame, const NavigationActionData& navigationActionData, WebFrameProxy* sourceFrame, const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceRequest& request, RefPtr<WebFramePolicyListenerProxy> listener, API::Object* userData)
{
if (!m_navigationState.m_navigationDelegateMethods.webViewDecidePolicyForNavigationActionDecisionHandler) {
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h 2014-04-08 22:37:19 UTC (rev 166969)
@@ -58,7 +58,7 @@
private:
// API::UIClient
- virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button) override;
+ virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const WebKit::NavigationActionData&) override;
virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, std::function<void ()> completionHandler) override;
virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, std::function<void (bool)> completionHandler) override;
virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&, const WTF::String&, WebKit::WebFrameProxy*, std::function<void (const WTF::String&)> completionHandler) override;
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm 2014-04-08 22:37:19 UTC (rev 166969)
@@ -28,6 +28,7 @@
#if WK_API_ENABLED
+#import "NavigationActionData.h"
#import "WKFrameInfoInternal.h"
#import "WKNavigationActionInternal.h"
#import "WKWebViewConfigurationInternal.h"
@@ -78,7 +79,7 @@
{
}
-PassRefPtr<WebKit::WebPageProxy> UIDelegate::UIClient::createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy* initiatingFrame, const WebCore::ResourceRequest& request, const WebCore::WindowFeatures& windowFeatures, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button)
+PassRefPtr<WebKit::WebPageProxy> UIDelegate::UIClient::createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy* initiatingFrame, const WebCore::ResourceRequest& request, const WebCore::WindowFeatures& windowFeatures, const WebKit::NavigationActionData& navigationActionData)
{
if (!m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures)
return nullptr;
@@ -94,7 +95,7 @@
// FIXME: Set a real navigation type.
[navigationAction setSourceFrame:adoptNS([[WKFrameInfo alloc] initWithWebFrameProxy:*initiatingFrame]).get()];
- [navigationAction setNavigationType:WKNavigationTypeOther];
+ [navigationAction setNavigationType:toWKNavigationType(navigationActionData.navigationType)];
[navigationAction setRequest:request.nsURLRequest(WebCore::DoNotUpdateHTTPBody)];
RetainPtr<WKWebView> webView = [delegate.get() webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:navigationAction.get() windowFeatures:adoptNS([[WKWindowFeatures alloc] _initWithWindowFeatures:windowFeatures]).get()];
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-04-08 22:37:19 UTC (rev 166969)
@@ -2682,12 +2682,12 @@
// UIClient
-void WebPageProxy::createNewPage(uint64_t frameID, const ResourceRequest& request, const WindowFeatures& windowFeatures, uint32_t opaqueModifiers, int32_t opaqueMouseButton, uint64_t& newPageID, WebPageCreationParameters& newPageParameters)
+void WebPageProxy::createNewPage(uint64_t frameID, const ResourceRequest& request, const WindowFeatures& windowFeatures, const NavigationActionData& navigationActionData, uint64_t& newPageID, WebPageCreationParameters& newPageParameters)
{
WebFrameProxy* frame = m_process->webFrame(frameID);
MESSAGE_CHECK(frame);
- RefPtr<WebPageProxy> newPage = m_uiClient->createNewPage(this, frame, request, windowFeatures, static_cast<WebEvent::Modifiers>(opaqueModifiers), static_cast<WebMouseEvent::Button>(opaqueMouseButton));
+ RefPtr<WebPageProxy> newPage = m_uiClient->createNewPage(this, frame, request, windowFeatures, navigationActionData);
if (!newPage) {
newPageID = 0;
return;
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-04-08 22:37:19 UTC (rev 166969)
@@ -1110,7 +1110,7 @@
void willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const Vector<std::pair<String, String>>& textFieldValues, uint64_t listenerID, IPC::MessageDecoder&);
// UI client
- void createNewPage(uint64_t frameID, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, uint32_t modifiers, int32_t mouseButton, uint64_t& newPageID, WebPageCreationParameters&);
+ void createNewPage(uint64_t frameID, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const NavigationActionData&, uint64_t& newPageID, WebPageCreationParameters&);
void showPage();
void closePage(bool stopResponsivenessTimer);
void runJavaScriptAlert(uint64_t frameID, const String&, RefPtr<Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply>);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (166968 => 166969)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2014-04-08 22:37:19 UTC (rev 166969)
@@ -22,7 +22,7 @@
messages -> WebPageProxy {
# UI messages
- CreateNewPage(uint64_t frameID, WebCore::ResourceRequest request, WebCore::WindowFeatures windowFeatures, uint32_t modifiers, int32_t mouseButton) -> (uint64_t newPageID, WebKit::WebPageCreationParameters newPageParameters)
+ CreateNewPage(uint64_t frameID, WebCore::ResourceRequest request, WebCore::WindowFeatures windowFeatures, WebKit::NavigationActionData navigationActionData) -> (uint64_t newPageID, WebKit::WebPageCreationParameters newPageParameters)
ShowPage()
ClosePage(bool stopResponsivenessTimer)
RunJavaScriptAlert(uint64_t frameID, String message) -> () Delayed
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (166968 => 166969)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2014-04-08 22:36:06 UTC (rev 166968)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2014-04-08 22:37:19 UTC (rev 166969)
@@ -31,6 +31,7 @@
#include "InjectedBundleNavigationAction.h"
#include "InjectedBundleUserMessageCoders.h"
#include "LayerTreeHost.h"
+#include "NavigationActionData.h"
#include "PageBanner.h"
#include "WebColorChooser.h"
#include "WebCoreArgumentCoders.h"
@@ -197,9 +198,6 @@
Page* WebChromeClient::createWindow(Frame* frame, const FrameLoadRequest& request, const WindowFeatures& windowFeatures, const NavigationAction& navigationAction)
{
- uint32_t modifiers = static_cast<uint32_t>(InjectedBundleNavigationAction::modifiersForNavigationAction(navigationAction));
- int32_t mouseButton = static_cast<int32_t>(InjectedBundleNavigationAction::mouseButtonForNavigationAction(navigationAction));
-
#if ENABLE(FULLSCREEN_API)
if (frame->document() && frame->document()->webkitCurrentFullScreenElement())
frame->document()->webkitCancelFullScreen();
@@ -207,9 +205,14 @@
WebFrame* webFrame = WebFrame::fromCoreFrame(*frame);
+ NavigationActionData navigationActionData;
+ navigationActionData.navigationType = navigationAction.type();
+ navigationActionData.modifiers = InjectedBundleNavigationAction::modifiersForNavigationAction(navigationAction);
+ navigationActionData.mouseButton = InjectedBundleNavigationAction::mouseButtonForNavigationAction(navigationAction);
+
uint64_t newPageID = 0;
WebPageCreationParameters parameters;
- if (!WebProcess::shared().parentProcessConnection()->sendSync(Messages::WebPageProxy::CreateNewPage(webFrame->frameID(), request.resourceRequest(), windowFeatures, modifiers, mouseButton), Messages::WebPageProxy::CreateNewPage::Reply(newPageID, parameters), m_page->pageID()))
+ if (!WebProcess::shared().parentProcessConnection()->sendSync(Messages::WebPageProxy::CreateNewPage(webFrame->frameID(), request.resourceRequest(), windowFeatures, navigationActionData), Messages::WebPageProxy::CreateNewPage::Reply(newPageID, parameters), m_page->pageID()))
return 0;
if (!newPageID)