Changeset 166270 in webkit
- Timestamp:
- Mar 25, 2014 5:01:09 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r166269 r166270 1 2014-03-25 Anders Carlsson <andersca@apple.com> 2 3 Add a UI delegate callback for handling window.open 4 https://bugs.webkit.org/show_bug.cgi?id=130757 5 6 Reviewed by Sam Weinig. 7 8 * UIProcess/API/Cocoa/WKUIDelegate.h: 9 * UIProcess/API/Cocoa/WKWebView.mm: 10 * UIProcess/API/Cocoa/WKWebViewInternal.h: 11 * UIProcess/Cocoa/UIClient.h: 12 * UIProcess/Cocoa/UIClient.mm: 13 (WebKit::UIClient::setDelegate): 14 (WebKit::UIClient::createNewPage): 15 1 16 2014-03-25 Anders Carlsson <andersca@apple.com> 2 17 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h
r164460 r166270 30 30 31 31 @class WKFrameInfo; 32 @class WKWebViewConfiguration; 33 @class WKWindowFeatures; 32 34 33 35 @protocol WKUIDelegate <NSObject> 34 36 35 37 @optional 38 39 // FIXME: Maybe we should pass a WKNavigationAction instead of request and frame. 40 // The C SPI has the key modifiers and mouse button as well. 41 - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration request:(NSURLRequest *)request windowFeatures:(WKWindowFeatures *)windowFeatures initiatedByFrame:(WKFrameInfo *)frame; 36 42 37 43 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)())completionHandler; -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r166269 r166270 78 78 79 79 @implementation WKWebView { 80 RetainPtr<WKWebViewConfiguration> _configuration;81 80 std::unique_ptr<WebKit::NavigationState> _navigationState; 82 81 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h
r165303 r166270 29 29 30 30 #import <wtf/RefPtr.h> 31 #import <wtf/RetainPtr.h> 31 32 32 33 #if PLATFORM(IOS) … … 51 52 52 53 @package 54 RetainPtr<WKWebViewConfiguration> _configuration; 55 53 56 RefPtr<WebKit::WebPageProxy> _page; 54 57 } -
trunk/Source/WebKit2/UIProcess/Cocoa/UIClient.h
r164666 r166270 53 53 private: 54 54 // API::UIClient 55 virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button) override; 55 56 virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, std::function<void ()> completionHandler) override; 56 57 virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, std::function<void (bool)> completionHandler) override; … … 61 62 62 63 struct { 64 bool webViewCreateWebViewWithConfigurationRequestWindowFeaturesInitiatedByFrame : 1; 63 65 bool webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler : 1; 64 66 bool webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; -
trunk/Source/WebKit2/UIProcess/Cocoa/UIClient.mm
r164666 r166270 30 30 31 31 #import "WKFrameInfoInternal.h" 32 #import "WKWebViewConfigurationInternal.h" 33 #import "WKWebViewInternal.h" 34 #import "WKWindowFeaturesInternal.h" 32 35 #import "WKUIDelegatePrivate.h" 33 36 … … 52 55 m_delegate = delegate; 53 56 57 m_delegateMethods.webViewCreateWebViewWithConfigurationRequestWindowFeaturesInitiatedByFrame = [delegate respondsToSelector:@selector(webView:createWebViewWithConfiguration:request:windowFeatures:initiatedByFrame:)]; 54 58 m_delegateMethods.webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:)]; 55 59 m_delegateMethods.webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:)]; … … 73 77 #endif 74 78 return defaultActions; 79 } 80 81 PassRefPtr<WebKit::WebPageProxy> UIClient::createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy* initiatingFrame, const WebCore::ResourceRequest& request, const WebCore::WindowFeatures& windowFeatures, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button) 82 { 83 if (!m_delegateMethods.webViewCreateWebViewWithConfigurationRequestWindowFeaturesInitiatedByFrame) 84 return nullptr; 85 86 auto delegate = m_delegate.get(); 87 if (!delegate) 88 return nullptr; 89 90 auto configuration = adoptNS([m_webView->_configuration copy]); 91 [configuration _setRelatedWebView:m_webView]; 92 93 WKWebView *webView = [delegate webView:m_webView createWebViewWithConfiguration:configuration.get() request:request.nsURLRequest(WebCore::DoNotUpdateHTTPBody) windowFeatures:adoptNS([[WKWindowFeatures alloc] _initWithWindowFeatures:windowFeatures]).get() initiatedByFrame:adoptNS([[WKFrameInfo alloc] initWithWebFrameProxy:*initiatingFrame]).get()]; 94 95 if (!webView) 96 return nullptr; 97 98 if ([webView->_configuration _relatedWebView] != m_webView) 99 [NSException raise:NSInternalInconsistencyException format:@"Returned WKWebView was not created with the given configuration."]; 100 101 return webView->_page.get(); 75 102 } 76 103
Note: See TracChangeset
for help on using the changeset viewer.