Title: [211891] trunk
Revision
211891
Author
[email protected]
Date
2017-02-08 12:16:04 -0800 (Wed, 08 Feb 2017)

Log Message

Move FullscreenClient creation into WebViewImpl, for use in (deprecated) WKView.
https://bugs.webkit.org/show_bug.cgi?id=168007

Reviewed by Alex Christensen.

Source/WebKit2:

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/_WKFullscreenDelegate.h:
* UIProcess/Cocoa/FullscreenClient.h:
* UIProcess/Cocoa/FullscreenClient.mm:
(WebKit::FullscreenClient::FullscreenClient):
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::WebViewImpl):

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenDelegate.mm:
(didFinishLoadForFrame):
(TestWebKitAPI::TEST):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (211890 => 211891)


--- trunk/Source/WebKit2/ChangeLog	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Source/WebKit2/ChangeLog	2017-02-08 20:16:04 UTC (rev 211891)
@@ -1,3 +1,19 @@
+2017-02-08  Jer Noble  <[email protected]>
+
+        Move FullscreenClient creation into WebViewImpl, for use in (deprecated) WKView.
+        https://bugs.webkit.org/show_bug.cgi?id=168007
+
+        Reviewed by Alex Christensen.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _initializeWithConfiguration:]):
+        * UIProcess/API/Cocoa/_WKFullscreenDelegate.h:
+        * UIProcess/Cocoa/FullscreenClient.h:
+        * UIProcess/Cocoa/FullscreenClient.mm:
+        (WebKit::FullscreenClient::FullscreenClient):
+        * UIProcess/Cocoa/WebViewImpl.mm:
+        (WebKit::WebViewImpl::WebViewImpl):
+
 2017-02-08  Youenn Fablet  <[email protected]>
 
         GUM is crashing in Debug mode when access is granted/denied for a page that is gone

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (211890 => 211891)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2017-02-08 20:16:04 UTC (rev 211891)
@@ -557,10 +557,6 @@
 
     _iconLoadingDelegate = std::make_unique<WebKit::IconLoadingDelegate>(self);
 
-#if ENABLE(FULLSCREEN_API)
-    _page->setFullscreenClient(std::make_unique<WebKit::FullscreenClient>(self));
-#endif
-
 #if PLATFORM(IOS)
     [self _setUpSQLiteDatabaseTrackerClient];
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKFullscreenDelegate.h (211890 => 211891)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKFullscreenDelegate.h	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKFullscreenDelegate.h	2017-02-08 20:16:04 UTC (rev 211891)
@@ -31,10 +31,10 @@
 
 @optional
 
-- (void)_webViewWillEnterFullscreen:(WKWebView *)webView;
-- (void)_webViewDidEnterFullscreen:(WKWebView *)webView;
-- (void)_webViewWillExitFullscreen:(WKWebView *)webView;
-- (void)_webViewDidExitFullscreen:(WKWebView *)webView;
+- (void)_webViewWillEnterFullscreen:(NSView *)webView;
+- (void)_webViewDidEnterFullscreen:(NSView *)webView;
+- (void)_webViewWillExitFullscreen:(NSView *)webView;
+- (void)_webViewDidExitFullscreen:(NSView *)webView;
 
 @end
 

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/FullscreenClient.h (211890 => 211891)


--- trunk/Source/WebKit2/UIProcess/Cocoa/FullscreenClient.h	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/FullscreenClient.h	2017-02-08 20:16:04 UTC (rev 211891)
@@ -33,7 +33,7 @@
 #import "WeakObjCPtr.h"
 #import <wtf/RetainPtr.h>
 
-@class WKWebView;
+@class NSView;
 @protocol _WKFullscreenDelegate;
 
 namespace WebKit {
@@ -40,7 +40,7 @@
 
 class FullscreenClient : public API::FullscreenClient {
 public:
-    explicit FullscreenClient(WKWebView *);
+    explicit FullscreenClient(NSView *);
     ~FullscreenClient() { };
 
     RetainPtr<id<_WKFullscreenDelegate>> delegate();
@@ -52,7 +52,7 @@
     void didExitFullscreen(WebPageProxy*) override;
 
 private:
-    WKWebView *m_webView;
+    NSView *m_webView;
     WeakObjCPtr<id <_WKFullscreenDelegate> > m_delegate;
 
     struct {

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/FullscreenClient.mm (211890 => 211891)


--- trunk/Source/WebKit2/UIProcess/Cocoa/FullscreenClient.mm	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/FullscreenClient.mm	2017-02-08 20:16:04 UTC (rev 211891)
@@ -32,7 +32,7 @@
 
 namespace WebKit {
 
-FullscreenClient::FullscreenClient(WKWebView *webView)
+FullscreenClient::FullscreenClient(NSView *webView)
     : m_webView(webView)
 {
 }

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm (211890 => 211891)


--- trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm	2017-02-08 20:16:04 UTC (rev 211891)
@@ -30,6 +30,7 @@
 
 #import "APILegacyContextHistoryClient.h"
 #import "ColorSpaceData.h"
+#import "FullscreenClient.h"
 #import "GenericCallback.h"
 #import "Logging.h"
 #import "NativeWebGestureEvent.h"
@@ -1267,6 +1268,10 @@
     // Explicitly set the layer contents placement so AppKit will make sure that our layer has masksToBounds set to YES.
     m_view.layerContentsPlacement = NSViewLayerContentsPlacementTopLeft;
 
+#if ENABLE(FULLSCREEN_API)
+    m_page->setFullscreenClient(std::make_unique<WebKit::FullscreenClient>((WKWebView *)m_view));
+#endif
+
     WebProcessPool::statistics().wkViewCount++;
 }
 

Modified: trunk/Tools/ChangeLog (211890 => 211891)


--- trunk/Tools/ChangeLog	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Tools/ChangeLog	2017-02-08 20:16:04 UTC (rev 211891)
@@ -1,3 +1,14 @@
+2017-02-08  Jer Noble  <[email protected]>
+
+        Move FullscreenClient creation into WebViewImpl, for use in (deprecated) WKView.
+        https://bugs.webkit.org/show_bug.cgi?id=168007
+
+        Reviewed by Alex Christensen.
+
+        * TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenDelegate.mm:
+        (didFinishLoadForFrame):
+        (TestWebKitAPI::TEST):
+
 2017-02-08  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r211873.

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenDelegate.mm (211890 => 211891)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenDelegate.mm	2017-02-08 20:04:02 UTC (rev 211890)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenDelegate.mm	2017-02-08 20:16:04 UTC (rev 211891)
@@ -28,7 +28,10 @@
 #if WK_API_ENABLED && PLATFORM(MAC)
 
 #import "PlatformUtilities.h"
+#import "PlatformWebView.h"
+#import <WebKit/WKPagePrivateMac.h>
 #import <WebKit/WKPreferencesPrivate.h>
+#import <WebKit/WKView.h>
 #import <WebKit/WKWebViewConfigurationPrivate.h>
 #import <WebKit/WKWebViewPrivate.h>
 #import <WebKit/_WKFullscreenDelegate.h>
@@ -41,6 +44,11 @@
 static bool receivedWillExitFullscreenMessage;
 static bool receivedDidExitFullscreenMessage;
 
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+    receivedLoadedMessage = true;
+}
+
 @interface FullscreenDelegateMessageHandler : NSObject <WKScriptMessageHandler, _WKFullscreenDelegate>
 @end
 
@@ -106,6 +114,40 @@
     ASSERT_FALSE([webView _isInFullscreen]);
 }
 
+TEST(Fullscreen, WKViewDelegate)
+{
+    WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+    WKRetainPtr<WKPageGroupRef> pageGroup(AdoptWK, WKPageGroupCreateWithIdentifier(Util::toWK("FullscreenDelegate").get()));
+    WKPreferencesRef preferences = WKPageGroupGetPreferences(pageGroup.get());
+    WKPreferencesSetFullScreenEnabled(preferences, true);
+
+    PlatformWebView webView(context.get(), pageGroup.get());
+
+    RetainPtr<FullscreenDelegateMessageHandler> handler = adoptNS([[FullscreenDelegateMessageHandler alloc] init]);
+    WKPageSetFullscreenDelegate(webView.page(), handler.get());
+
+    WKPageLoaderClientV0 loaderClient;
+    memset(&loaderClient, 0 , sizeof(loaderClient));
+
+    loaderClient.base.version = 0;
+    loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+    WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+    receivedLoadedMessage = false;
+    WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("FullscreenDelegate", "html"));
+    WKPageLoadURL(webView.page(), url.get());
+
+    TestWebKitAPI::Util::run(&receivedLoadedMessage);
+
+    webView.simulateButtonClick(kWKEventMouseButtonLeftButton, 5, 5, 0);
+    TestWebKitAPI::Util::run(&receivedWillEnterFullscreenMessage);
+    TestWebKitAPI::Util::run(&receivedDidEnterFullscreenMessage);
+
+    webView.simulateButtonClick(kWKEventMouseButtonLeftButton, 5, 5, 0);
+    TestWebKitAPI::Util::run(&receivedWillExitFullscreenMessage);
+    TestWebKitAPI::Util::run(&receivedDidExitFullscreenMessage);
+}
+
 } // namespace TestWebKitAPI
 
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to