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