Changeset 221771 in webkit
- Timestamp:
- Sep 7, 2017, 4:18:04 PM (8 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r221770 r221771 1 2017-09-07 Alex Christensen <achristensen@webkit.org> 2 3 Clean up API::UIClient 4 https://bugs.webkit.org/show_bug.cgi?id=176568 5 6 Reviewed by Brady Eidson. 7 8 We don't need createNewPage and createNewPageAsync. 9 An async version can support synchronous delegate calls by just calling the completion handler synchronously. 10 11 * UIProcess/API/APIUIClient.h: 12 (API::UIClient::createNewPage): 13 (API::UIClient::createNewPageAsync): Deleted. 14 (API::UIClient::canCreateNewPageAsync): Deleted. 15 * UIProcess/API/C/WKPage.cpp: 16 (WKPageSetPageUIClient): 17 * UIProcess/API/glib/WebKitUIClient.cpp: 18 * UIProcess/API/glib/WebKitUIClient.h: 19 * UIProcess/Cocoa/UIDelegate.h: 20 * UIProcess/Cocoa/UIDelegate.mm: 21 (WebKit::UIDelegate::UIClient::createNewPage): 22 (WebKit::UIDelegate::UIClient::createNewPageCommon): Deleted. 23 (WebKit::UIDelegate::UIClient::canCreateNewPageAsync): Deleted. 24 (WebKit::UIDelegate::UIClient::createNewPageAsync): Deleted. 25 * UIProcess/WebPageProxy.cpp: 26 (WebKit::WebPageProxy::createNewPage): 27 * UIProcess/WebPageProxy.h: 28 1 29 2017-09-07 Alex Christensen <achristensen@webkit.org> 2 30 -
trunk/Source/WebKit/UIProcess/API/APIUIClient.h
r221764 r221771 72 72 virtual ~UIClient() { } 73 73 74 virtual RefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, FrameInfo&, WebCore::ResourceRequest&&, const WebCore::WindowFeatures&, WebKit::NavigationActionData&&) { return nullptr; } 75 virtual void createNewPageAsync(WebKit::WebPageProxy*, FrameInfo&, WebCore::ResourceRequest&&, const WebCore::WindowFeatures&, WebKit::NavigationActionData&&, WTF::Function<void(RefPtr<WebKit::WebPageProxy>&&)>&& completionHandler) { } 76 virtual bool canCreateNewPageAsync() { return false; } 74 virtual void createNewPage(WebKit::WebPageProxy&, Ref<FrameInfo>&&, WebCore::ResourceRequest&&, WebCore::WindowFeatures&&, WebKit::NavigationActionData&&, WTF::Function<void(RefPtr<WebKit::WebPageProxy>&&)>&&) { } 77 75 virtual void showPage(WebKit::WebPageProxy*) { } 78 76 virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) { } -
trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp
r221764 r221771 1566 1566 1567 1567 private: 1568 RefPtr<WebPageProxy> createNewPage(WebPageProxy* page, API::FrameInfo& sourceFrameInfo, ResourceRequest&& resourceRequest, const WindowFeatures& windowFeatures, NavigationActionData&& navigationActionData) final1568 void createNewPage(WebPageProxy& page, Ref<API::FrameInfo>&& sourceFrameInfo, WebCore::ResourceRequest&& resourceRequest, WebCore::WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler) final 1569 1569 { 1570 1570 if (m_client.createNewPage) { 1571 auto configuration = page ->configuration().copy();1572 configuration->setRelatedPage( page);1573 1574 auto userInitiatedActivity = page ->process().userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);1575 bool shouldOpenAppLinks = !hostsAreEqual(sourceFrameInfo .request().url(), resourceRequest.url());1576 auto apiNavigationAction = API::NavigationAction::create(WTFMove(navigationActionData), &sourceFrameInfo, nullptr, WTFMove(resourceRequest), WebCore::URL(), shouldOpenAppLinks, WTFMove(userInitiatedActivity));1571 auto configuration = page.configuration().copy(); 1572 configuration->setRelatedPage(&page); 1573 1574 auto userInitiatedActivity = page.process().userInitiatedActivity(navigationActionData.userGestureTokenIdentifier); 1575 bool shouldOpenAppLinks = !hostsAreEqual(sourceFrameInfo->request().url(), resourceRequest.url()); 1576 auto apiNavigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.ptr(), nullptr, WTFMove(resourceRequest), WebCore::URL(), shouldOpenAppLinks, WTFMove(userInitiatedActivity)); 1577 1577 1578 1578 auto apiWindowFeatures = API::WindowFeatures::create(windowFeatures); 1579 1579 1580 return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(configuration.ptr()), toAPI(apiNavigationAction.ptr()), toAPI(apiWindowFeatures.ptr()), m_client.base.clientInfo)));1580 return completionHandler(adoptRef(toImpl(m_client.createNewPage(toAPI(&page), toAPI(configuration.ptr()), toAPI(apiNavigationAction.ptr()), toAPI(apiWindowFeatures.ptr()), m_client.base.clientInfo)))); 1581 1581 } 1582 1582 … … 1603 1603 if (m_client.createNewPage_deprecatedForUseWithV1) { 1604 1604 Ref<API::URLRequest> request = API::URLRequest::create(resourceRequest); 1605 return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV1(toAPI(page), toAPI(request.ptr()), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo)));1605 return completionHandler(adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV1(toAPI(&page), toAPI(request.ptr()), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo)))); 1606 1606 } 1607 1607 1608 1608 ASSERT(m_client.createNewPage_deprecatedForUseWithV0); 1609 return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo)));1609 return completionHandler(adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(&page), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo)))); 1610 1610 } 1611 1611 1612 return nullptr;1612 completionHandler(nullptr); 1613 1613 } 1614 1614 -
trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp
r221764 r221771 47 47 48 48 private: 49 RefPtr<WebPageProxy> createNewPage(WebPageProxy*, API::FrameInfo&, WebCore::ResourceRequest&& resourceRequest, const WebCore::WindowFeatures& windowFeatures, NavigationActionData&& navigationActionData) override49 void createNewPage(WebPageProxy&, Ref<API::FrameInfo>&&, WebCore::ResourceRequest&& resourceRequest, WebCore::WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler) 50 50 { 51 51 GRefPtr<WebKitURIRequest> request = adoptGRef(webkitURIRequestCreateForResourceRequest(resourceRequest)); 52 52 WebKitNavigationAction navigationAction(request.get(), navigationActionData); 53 return webkitWebViewCreateNewPage(m_webView, windowFeatures, &navigationAction);53 completionHandler(webkitWebViewCreateNewPage(m_webView, windowFeatures, &navigationAction)); 54 54 } 55 55 -
trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.h
r218487 r221771 18 18 */ 19 19 20 #ifndef WebKitUIClient_h 21 #define WebKitUIClient_h 20 #pragma once 22 21 23 22 #include "WebKitWebView.h" 24 23 25 24 void attachUIClientToView(WebKitWebView*); 26 27 #endif -
trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h
r221714 r221771 80 80 private: 81 81 // API::UIClient 82 RefPtr<WebPageProxy> createNewPage(WebPageProxy*, API::FrameInfo&, WebCore::ResourceRequest&&, const WebCore::WindowFeatures&, NavigationActionData&&) final; 83 void createNewPageAsync(WebPageProxy*, API::FrameInfo&, WebCore::ResourceRequest&&, const WebCore::WindowFeatures&, NavigationActionData&&, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler) final; 84 bool canCreateNewPageAsync() final; 85 RefPtr<WebPageProxy> createNewPageCommon(WebPageProxy*, API::FrameInfo&, WebCore::ResourceRequest&&, const WebCore::WindowFeatures&, NavigationActionData&&, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler); 86 82 void createNewPage(WebPageProxy&, Ref<API::FrameInfo>&&, WebCore::ResourceRequest&&, WebCore::WindowFeatures&&, NavigationActionData&&, WTF::Function<void(RefPtr<WebPageProxy>&&)>&&) final; 87 83 void close(WebPageProxy*) final; 88 84 void fullscreenMayReturnToInline(WebPageProxy*) final; -
trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
r221714 r221771 192 192 } 193 193 194 RefPtr<WebPageProxy> UIDelegate::UIClient::createNewPageCommon(WebPageProxy* page, API::FrameInfo& sourceFrameInfo, WebCore::ResourceRequest&& request, const WebCore::WindowFeatures& windowFeatures, NavigationActionData&& navigationActionData, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler)194 void UIDelegate::UIClient::createNewPage(WebPageProxy& page, Ref<API::FrameInfo>&& sourceFrameInfo, WebCore::ResourceRequest&& request, WebCore::WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler) 195 195 { 196 196 auto delegate = m_uiDelegate.m_delegate.get(); … … 200 200 [configuration _setRelatedWebView:m_uiDelegate.m_webView]; 201 201 202 auto userInitiatedActivity = page ->process().userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);203 bool shouldOpenAppLinks = !hostsAreEqual(sourceFrameInfo .request().url(), request.url());204 auto apiNavigationAction = API::NavigationAction::create(WTFMove(navigationActionData), &sourceFrameInfo, nullptr, WTFMove(request), WebCore::URL(), shouldOpenAppLinks, WTFMove(userInitiatedActivity));202 auto userInitiatedActivity = page.process().userInitiatedActivity(navigationActionData.userGestureTokenIdentifier); 203 bool shouldOpenAppLinks = !hostsAreEqual(sourceFrameInfo->request().url(), request.url()); 204 auto apiNavigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.ptr(), nullptr, WTFMove(request), WebCore::URL(), shouldOpenAppLinks, WTFMove(userInitiatedActivity)); 205 205 206 206 auto apiWindowFeatures = API::WindowFeatures::create(windowFeatures); 207 207 208 if ( completionHandler) {208 if (m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeaturesAsync) { 209 209 RefPtr<CompletionHandlerCallChecker> checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:completionHandler:)); 210 210 … … 224 224 completionHandler(webView->_page.get()); 225 225 }).get()]; 226 227 return nullptr;228 }226 } 227 if (!m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures) 228 return completionHandler(nullptr); 229 229 230 230 RetainPtr<WKWebView> webView = [delegate webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(apiNavigationAction) windowFeatures:wrapper(apiWindowFeatures)]; 231 232 231 if (!webView) 233 return nullptr;232 return completionHandler(nullptr); 234 233 235 234 if ([webView->_configuration _relatedWebView] != m_uiDelegate.m_webView) 236 235 [NSException raise:NSInternalInconsistencyException format:@"Returned WKWebView was not created with the given configuration."]; 237 238 return webView->_page.get(); 239 } 240 241 RefPtr<WebPageProxy> UIDelegate::UIClient::createNewPage(WebPageProxy* page, API::FrameInfo& originatingFrameInfo, WebCore::ResourceRequest&& request, const WebCore::WindowFeatures& windowFeatures, NavigationActionData&& navigationActionData) 242 { 243 if (!m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures) 244 return nullptr; 245 246 auto delegate = m_uiDelegate.m_delegate.get(); 247 if (!delegate) 248 return nullptr; 249 250 return createNewPageCommon(page, originatingFrameInfo, WTFMove(request), windowFeatures, WTFMove(navigationActionData), nullptr); 251 } 252 253 bool UIDelegate::UIClient::canCreateNewPageAsync() 254 { 255 return m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeaturesAsync 256 && m_uiDelegate.m_delegate.get(); 257 } 258 259 void UIDelegate::UIClient::createNewPageAsync(WebPageProxy* page, API::FrameInfo& originatingFrameInfo, WebCore::ResourceRequest&& request, const WebCore::WindowFeatures& windowFeatures, NavigationActionData&& navigationActionData, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler) 260 { 261 ASSERT(canCreateNewPageAsync()); 262 ASSERT(m_uiDelegate.m_delegateMethods.webViewCreateWebViewWithConfigurationForNavigationActionWindowFeaturesAsync); 263 264 auto delegate = m_uiDelegate.m_delegate.get(); 265 ASSERT(delegate); 266 267 createNewPageCommon(page, originatingFrameInfo, WTFMove(request), windowFeatures, WTFMove(navigationActionData), WTFMove(completionHandler)); 236 completionHandler(webView->_page.get()); 268 237 } 269 238 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r221770 r221771 3865 3865 // UIClient 3866 3866 3867 void WebPageProxy::createNewPage(const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, ResourceRequest&& request, const WindowFeatures& windowFeatures, NavigationActionData&& navigationActionData, Ref<Messages::WebPageProxy::CreateNewPage::DelayedReply>&& reply)3867 void WebPageProxy::createNewPage(const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, ResourceRequest&& request, WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, Ref<Messages::WebPageProxy::CreateNewPage::DelayedReply>&& reply) 3868 3868 { 3869 3869 MESSAGE_CHECK(m_process->webFrame(originatingFrameInfoData.frameID)); … … 3872 3872 auto mainFrameURL = m_mainFrame->url(); 3873 3873 3874 auto completionHandler =[this, protectedThis = RefPtr<WebPageProxy>(this), mainFrameURL, request, reply = WTFMove(reply)](RefPtr<WebPageProxy> newPage) {3874 m_uiClient->createNewPage(*this, WTFMove(originatingFrameInfo), WTFMove(request), WTFMove(windowFeatures), WTFMove(navigationActionData), [this, protectedThis = RefPtr<WebPageProxy>(this), mainFrameURL, request, reply = WTFMove(reply)](RefPtr<WebPageProxy> newPage) { 3875 3875 if (!newPage) { 3876 3876 reply->send(0, { }); … … 3882 3882 WebsiteDataStore::cloneSessionData(*this, *newPage); 3883 3883 newPage->m_shouldSuppressAppLinksInNextNavigationPolicyDecision = hostsAreEqual(URL(ParsedURLString, mainFrameURL), request.url()); 3884 3885 }; 3886 3887 if (m_uiClient->canCreateNewPageAsync()) { 3888 m_uiClient->createNewPageAsync(this, originatingFrameInfo, WTFMove(request), windowFeatures, WTFMove(navigationActionData), [completionHandler = WTFMove(completionHandler)](RefPtr<WebPageProxy> newPage) { 3889 completionHandler(newPage); 3890 }); 3891 return; 3892 } 3893 3894 RefPtr<WebPageProxy> newPage = m_uiClient->createNewPage(this, originatingFrameInfo, WTFMove(request), windowFeatures, WTFMove(navigationActionData)); 3895 completionHandler(WTFMove(newPage)); 3884 }); 3896 3885 } 3897 3886 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r221660 r221771 1293 1293 1294 1294 // UI client 1295 void createNewPage(const FrameInfoData&, uint64_t originatingPageID, WebCore::ResourceRequest&&, const WebCore::WindowFeatures&, NavigationActionData&&, Ref<Messages::WebPageProxy::CreateNewPage::DelayedReply>&&);1295 void createNewPage(const FrameInfoData&, uint64_t originatingPageID, WebCore::ResourceRequest&&, WebCore::WindowFeatures&&, NavigationActionData&&, Ref<Messages::WebPageProxy::CreateNewPage::DelayedReply>&&); 1296 1296 void showPage(); 1297 1297 void runJavaScriptAlert(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Ref<Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply>&&);
Note:
See TracChangeset
for help on using the changeset viewer.