Diff
Modified: trunk/Source/WebKit2/ChangeLog (177611 => 177612)
--- trunk/Source/WebKit2/ChangeLog 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/ChangeLog 2014-12-20 01:11:44 UTC (rev 177612)
@@ -1,3 +1,31 @@
+2014-12-19 Chris Dumez <[email protected]>
+
+ [iOS] Add didEnterFullscreen / didExitFullscreen callbacks to WKUIDelegatePrivate
+ https://bugs.webkit.org/show_bug.cgi?id=139835
+ <rdar://problem/19312042>
+
+ Reviewed by Anders Carlsson.
+
+ Add didEnterFullscreen / didExitFullscreen callbacks to WKUIDelegatePrivate
+ so that they can be implemented in MobileSafari.
+
+ * UIProcess/API/APIUIClient.h:
+ (API::UIClient::didEnterFullscreen):
+ (API::UIClient::didExitFullscreen):
+ * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+ * UIProcess/Cocoa/UIDelegate.h:
+ * UIProcess/Cocoa/UIDelegate.mm:
+ (WebKit::UIDelegate::setDelegate):
+ (WebKit::UIDelegate::UIClient::didEnterFullscreen):
+ (WebKit::UIDelegate::UIClient::didExitFullscreen):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::didEnterFullscreen):
+ (WebKit::WebPageProxy::didExitFullscreen):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
+ (WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen):
+ (WebKit::WebVideoFullscreenManagerProxy::didEnterFullscreen):
+
2014-12-19 Joseph Pecoraro <[email protected]>
Web Inspector: Inspector does not reopen correctly after Inspector Process crashes
Modified: trunk/Source/WebKit2/UIProcess/API/APIUIClient.h (177611 => 177612)
--- trunk/Source/WebKit2/UIProcess/API/APIUIClient.h 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/UIProcess/API/APIUIClient.h 2014-12-20 01:11:44 UTC (rev 177612)
@@ -72,6 +72,8 @@
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 fullscreenMayReturnToInline(WebKit::WebPageProxy*) { }
+ virtual void didEnterFullscreen(WebKit::WebPageProxy*) { }
+ virtual void didExitFullscreen(WebKit::WebPageProxy*) { }
virtual void close(WebKit::WebPageProxy*) { }
virtual void takeFocus(WebKit::WebPageProxy*, WKFocusDirection) { }
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (177611 => 177612)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2014-12-20 01:11:44 UTC (rev 177612)
@@ -46,6 +46,8 @@
- (void)_webViewClose:(WKWebView *)webView;
- (void)_webViewFullscreenMayReturnToInline:(WKWebView *)webView;
+- (void)_webViewDidEnterFullscreen:(WKWebView *)webView WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+- (void)_webViewDidExitFullscreen:(WKWebView *)webView WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
#if TARGET_OS_IPHONE
- (NSArray *)_webView:(WKWebView *)webView actionsForElement:(_WKActivatedElementInfo *)element defaultActions:(NSArray *)defaultActions;
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h (177611 => 177612)
--- trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h 2014-12-20 01:11:44 UTC (rev 177612)
@@ -61,6 +61,8 @@
virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const WebKit::NavigationActionData&) override;
virtual void close(WebKit::WebPageProxy*) override;
virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) override;
+ virtual void didEnterFullscreen(WebKit::WebPageProxy*) override;
+ virtual void didExitFullscreen(WebKit::WebPageProxy*) 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;
@@ -88,6 +90,8 @@
bool webViewPrintFrame : 1;
bool webViewClose : 1;
bool webViewFullscreenMayReturnToInline : 1;
+ bool webViewDidEnterFullscreen : 1;
+ bool webViewDidExitFullscreen : 1;
#if PLATFORM(IOS)
bool webViewActionsForElementDefaultActions : 1;
bool webViewDidNotHandleTapAsClickAtPoint : 1;
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm (177611 => 177612)
--- trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm 2014-12-20 01:11:44 UTC (rev 177612)
@@ -73,6 +73,8 @@
m_delegateMethods.webViewPrintFrame = [delegate respondsToSelector:@selector(_webView:printFrame:)];
m_delegateMethods.webViewClose = [delegate respondsToSelector:@selector(_webViewClose:)];
m_delegateMethods.webViewFullscreenMayReturnToInline = [delegate respondsToSelector:@selector(_webViewFullscreenMayReturnToInline:)];
+ m_delegateMethods.webViewDidEnterFullscreen = [delegate respondsToSelector:@selector(_webViewDidEnterFullscreen:)];
+ m_delegateMethods.webViewDidExitFullscreen = [delegate respondsToSelector:@selector(_webViewDidExitFullscreen:)];
#if PLATFORM(IOS)
m_delegateMethods.webViewActionsForElementDefaultActions = [delegate respondsToSelector:@selector(_webView:actionsForElement:defaultActions:)];
m_delegateMethods.webViewDidNotHandleTapAsClickAtPoint = [delegate respondsToSelector:@selector(_webView:didNotHandleTapAsClickAtPoint:)];
@@ -253,6 +255,30 @@
[(id <WKUIDelegatePrivate>)delegate _webViewFullscreenMayReturnToInline:m_uiDelegate.m_webView];
}
+
+void UIDelegate::UIClient::didEnterFullscreen(WebKit::WebPageProxy*)
+{
+ if (!m_uiDelegate.m_delegateMethods.webViewDidEnterFullscreen)
+ return;
+
+ auto delegate = m_uiDelegate.m_delegate.get();
+ if (!delegate)
+ return;
+
+ [(id <WKUIDelegatePrivate>)delegate _webViewDidEnterFullscreen:m_uiDelegate.m_webView];
+}
+
+void UIDelegate::UIClient::didExitFullscreen(WebKit::WebPageProxy*)
+{
+ if (!m_uiDelegate.m_delegateMethods.webViewDidExitFullscreen)
+ return;
+
+ auto delegate = m_uiDelegate.m_delegate.get();
+ if (!delegate)
+ return;
+
+ [(id <WKUIDelegatePrivate>)delegate _webViewDidExitFullscreen:m_uiDelegate.m_webView];
+}
#if PLATFORM(IOS)
RetainPtr<NSArray> UIDelegate::UIClient::actionsForElement(_WKActivatedElementInfo *elementInfo, RetainPtr<NSArray> defaultActions)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (177611 => 177612)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-12-20 01:11:44 UTC (rev 177612)
@@ -3099,6 +3099,16 @@
m_uiClient->fullscreenMayReturnToInline(this);
}
+void WebPageProxy::didEnterFullscreen()
+{
+ m_uiClient->didEnterFullscreen(this);
+}
+
+void WebPageProxy::didExitFullscreen()
+{
+ m_uiClient->didExitFullscreen(this);
+}
+
void WebPageProxy::closePage(bool stopResponsivenessTimer)
{
if (stopResponsivenessTimer)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (177611 => 177612)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-12-20 01:11:44 UTC (rev 177612)
@@ -270,6 +270,8 @@
void setAddsVisitedLinks(bool addsVisitedLinks) { m_addsVisitedLinks = addsVisitedLinks; }
void fullscreenMayReturnToInline();
+ void didEnterFullscreen();
+ void didExitFullscreen();
#if ENABLE(INSPECTOR)
WebInspectorProxy* inspector();
Modified: trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm (177611 => 177612)
--- trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm 2014-12-20 01:02:02 UTC (rev 177611)
+++ trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm 2014-12-20 01:11:44 UTC (rev 177612)
@@ -141,6 +141,7 @@
void WebVideoFullscreenManagerProxy::didExitFullscreen()
{
m_page->send(Messages::WebVideoFullscreenManager::DidExitFullscreen(), m_page->pageID());
+ m_page->didExitFullscreen();
}
void WebVideoFullscreenManagerProxy::didCleanupFullscreen()
@@ -158,6 +159,7 @@
void WebVideoFullscreenManagerProxy::didEnterFullscreen()
{
m_page->send(Messages::WebVideoFullscreenManager::DidEnterFullscreen(), m_page->pageID());
+ m_page->didEnterFullscreen();
}
void WebVideoFullscreenManagerProxy::play()