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