Title: [224558] trunk/Source/WebKit
Revision
224558
Author
[email protected]
Date
2017-11-07 16:01:45 -0800 (Tue, 07 Nov 2017)

Log Message

Add downcast support for FullscreenClient.
https://bugs.webkit.org/show_bug.cgi?id=178824

Patch by Jeremy Jones <[email protected]> on 2017-11-07
Reviewed by Simon Fraser.

Add SPECIALIZE_TYPE_TRAITS macros for API::FullscreenClient and WebKit::Fullscreen client so
downcasts can be done safely.

* UIProcess/API/APIFullscreenClient.h:
(API::FullscreenClient::isType const):
* UIProcess/API/C/mac/WKPagePrivateMac.mm:
(WKPageSetFullscreenDelegate):
(WKPageGetFullscreenDelegate):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setFullscreenDelegate:]):
(-[WKWebView _fullscreenDelegate]):
* UIProcess/Cocoa/FullscreenClient.h:
(isType):
* UIProcess/Cocoa/FullscreenClient.mm:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (224557 => 224558)


--- trunk/Source/WebKit/ChangeLog	2017-11-07 23:53:50 UTC (rev 224557)
+++ trunk/Source/WebKit/ChangeLog	2017-11-08 00:01:45 UTC (rev 224558)
@@ -1,3 +1,25 @@
+2017-11-07  Jeremy Jones  <[email protected]>
+
+        Add downcast support for FullscreenClient.
+        https://bugs.webkit.org/show_bug.cgi?id=178824
+
+        Reviewed by Simon Fraser.
+
+        Add SPECIALIZE_TYPE_TRAITS macros for API::FullscreenClient and WebKit::Fullscreen client so 
+        downcasts can be done safely.
+
+        * UIProcess/API/APIFullscreenClient.h:
+        (API::FullscreenClient::isType const):
+        * UIProcess/API/C/mac/WKPagePrivateMac.mm:
+        (WKPageSetFullscreenDelegate):
+        (WKPageGetFullscreenDelegate):
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _setFullscreenDelegate:]):
+        (-[WKWebView _fullscreenDelegate]):
+        * UIProcess/Cocoa/FullscreenClient.h:
+        (isType):
+        * UIProcess/Cocoa/FullscreenClient.mm:
+
 2017-11-07  Brady Eidson  <[email protected]>
 
         Implement "UpdateWorkerState" and use it

Modified: trunk/Source/WebKit/UIProcess/API/APIFullscreenClient.h (224557 => 224558)


--- trunk/Source/WebKit/UIProcess/API/APIFullscreenClient.h	2017-11-07 23:53:50 UTC (rev 224557)
+++ trunk/Source/WebKit/UIProcess/API/APIFullscreenClient.h	2017-11-08 00:01:45 UTC (rev 224558)
@@ -33,6 +33,13 @@
 
 class FullscreenClient {
 public:
+    enum Type {
+        APIType,
+        WebKitType
+    };
+
+    virtual bool isType(Type target) const { return target == APIType; };
+
     virtual ~FullscreenClient() { }
 
     virtual void willEnterFullscreen(WebKit::WebPageProxy*) { }

Modified: trunk/Source/WebKit/UIProcess/API/C/mac/WKPagePrivateMac.mm (224557 => 224558)


--- trunk/Source/WebKit/UIProcess/API/C/mac/WKPagePrivateMac.mm	2017-11-07 23:53:50 UTC (rev 224557)
+++ trunk/Source/WebKit/UIProcess/API/C/mac/WKPagePrivateMac.mm	2017-11-08 00:01:45 UTC (rev 224558)
@@ -148,7 +148,7 @@
 void WKPageSetFullscreenDelegate(WKPageRef page, id <_WKFullscreenDelegate> delegate)
 {
 #if WK_API_ENABLED && ENABLE(FULLSCREEN_API)
-    static_cast<WebKit::FullscreenClient&>(toImpl(page)->fullscreenClient()).setDelegate(delegate);
+    downcast<WebKit::FullscreenClient>(toImpl(page)->fullscreenClient()).setDelegate(delegate);
 #endif
 }
 
@@ -155,7 +155,7 @@
 id <_WKFullscreenDelegate> WKPageGetFullscreenDelegate(WKPageRef page)
 {
 #if WK_API_ENABLED && ENABLE(FULLSCREEN_API)
-    return static_cast<WebKit::FullscreenClient&>(toImpl(page)->fullscreenClient()).delegate().autorelease();
+    return downcast<WebKit::FullscreenClient>(toImpl(page)->fullscreenClient()).delegate().autorelease();
 #else
     return nil;
 #endif

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (224557 => 224558)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2017-11-07 23:53:50 UTC (rev 224557)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2017-11-08 00:01:45 UTC (rev 224558)
@@ -4751,7 +4751,7 @@
 - (void)_setFullscreenDelegate:(id<_WKFullscreenDelegate>)delegate
 {
 #if ENABLE(FULLSCREEN_API)
-    static_cast<WebKit::FullscreenClient&>(_page->fullscreenClient()).setDelegate(delegate);
+    downcast<WebKit::FullscreenClient>(_page->fullscreenClient()).setDelegate(delegate);
 #endif
 }
 
@@ -4758,7 +4758,7 @@
 - (id<_WKFullscreenDelegate>)_fullscreenDelegate
 {
 #if ENABLE(FULLSCREEN_API)
-    return static_cast<WebKit::FullscreenClient&>(_page->fullscreenClient()).delegate().autorelease();
+    return downcast<WebKit::FullscreenClient>(_page->fullscreenClient()).delegate().autorelease();
 #else
     return nullptr;
 #endif

Modified: trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.h (224557 => 224558)


--- trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.h	2017-11-07 23:53:50 UTC (rev 224557)
+++ trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.h	2017-11-08 00:01:45 UTC (rev 224558)
@@ -50,6 +50,8 @@
     explicit FullscreenClient(WKFullscreenClientView *);
     ~FullscreenClient() { };
 
+    bool isType(API::FullscreenClient::Type target) const override { return target == API::FullscreenClient::WebKitType; };
+
     RetainPtr<id<_WKFullscreenDelegate>> delegate();
     void setDelegate(id<_WKFullscreenDelegate>);
 
@@ -76,7 +78,11 @@
 #endif
     } m_delegateMethods;
 };
-    
+
 } // namespace WebKit
 
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebKit::FullscreenClient) \
+static bool isType(const API::FullscreenClient& client) { return client.isType(API::FullscreenClient::WebKitType); } \
+SPECIALIZE_TYPE_TRAITS_END()
+
 #endif // WK_API_ENABLED
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to