Title: [225195] trunk/Source/WebKit
- Revision
- 225195
- Author
- [email protected]
- Date
- 2017-11-27 14:29:33 -0800 (Mon, 27 Nov 2017)
Log Message
downcast to WebKit::FullscreenClient can sometimes fail.
https://bugs.webkit.org/show_bug.cgi?id=179849
Patch by Jeremy Jones <[email protected]> on 2017-11-27
Reviewed by Darin Adler.
There are cases during teardown where fullscreenClient() has been cleared back to an API::FullscreenClient.
Because those cases, WKWebView should test before downcasting to WebKit::FullscreenClient.
This is causing a crash when fullscreen delegate is cleared after a page is closed.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setFullscreenDelegate:]):
(-[WKWebView _fullscreenDelegate]):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (225194 => 225195)
--- trunk/Source/WebKit/ChangeLog 2017-11-27 22:18:54 UTC (rev 225194)
+++ trunk/Source/WebKit/ChangeLog 2017-11-27 22:29:33 UTC (rev 225195)
@@ -1,3 +1,19 @@
+2017-11-27 Jeremy Jones <[email protected]>
+
+ downcast to WebKit::FullscreenClient can sometimes fail.
+ https://bugs.webkit.org/show_bug.cgi?id=179849
+
+ Reviewed by Darin Adler.
+
+ There are cases during teardown where fullscreenClient() has been cleared back to an API::FullscreenClient.
+ Because those cases, WKWebView should test before downcasting to WebKit::FullscreenClient.
+
+ This is causing a crash when fullscreen delegate is cleared after a page is closed.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _setFullscreenDelegate:]):
+ (-[WKWebView _fullscreenDelegate]):
+
2017-11-27 Chris Dumez <[email protected]>
Give Document a strongly typed identifier instead of a uint64_t
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (225194 => 225195)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2017-11-27 22:18:54 UTC (rev 225194)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2017-11-27 22:29:33 UTC (rev 225195)
@@ -4764,7 +4764,8 @@
- (void)_setFullscreenDelegate:(id<_WKFullscreenDelegate>)delegate
{
#if ENABLE(FULLSCREEN_API)
- downcast<WebKit::FullscreenClient>(_page->fullscreenClient()).setDelegate(delegate);
+ if (is<WebKit::FullscreenClient>(_page->fullscreenClient()))
+ downcast<WebKit::FullscreenClient>(_page->fullscreenClient()).setDelegate(delegate);
#endif
}
@@ -4771,10 +4772,10 @@
- (id<_WKFullscreenDelegate>)_fullscreenDelegate
{
#if ENABLE(FULLSCREEN_API)
- return downcast<WebKit::FullscreenClient>(_page->fullscreenClient()).delegate().autorelease();
-#else
- return nullptr;
+ if (is<WebKit::FullscreenClient>(_page->fullscreenClient()))
+ return downcast<WebKit::FullscreenClient>(_page->fullscreenClient()).delegate().autorelease();
#endif
+ return nil;
}
- (BOOL)_isInFullscreen
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes