Title: [234124] trunk/Source/WebKit
Revision
234124
Author
[email protected]
Date
2018-07-23 17:27:13 -0700 (Mon, 23 Jul 2018)

Log Message

Crash when loadViewIfRequired called while WKFullScreenViewController is being deallocated.
https://bugs.webkit.org/show_bug.cgi?id=187920
rdar://problem/41324023

Patch by Jeremy Jones <[email protected]> on 2018-07-23
Reviewed by Eric Carlson.

Clear dangling weak-ref.
Prevent async playback state calls from instantiating the interface.
Release WKFullScreenViewController when it is no longer needed.

* UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
(-[WKFullScreenViewController dealloc]):
(-[WKFullScreenViewController setPlaying:]):
(-[WKFullScreenViewController setAnimating:]):
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _completedExitFullScreen]):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (234123 => 234124)


--- trunk/Source/WebKit/ChangeLog	2018-07-24 00:09:47 UTC (rev 234123)
+++ trunk/Source/WebKit/ChangeLog	2018-07-24 00:27:13 UTC (rev 234124)
@@ -1,3 +1,22 @@
+2018-07-23  Jeremy Jones  <[email protected]>
+
+        Crash when loadViewIfRequired called while WKFullScreenViewController is being deallocated.
+        https://bugs.webkit.org/show_bug.cgi?id=187920
+        rdar://problem/41324023
+
+        Reviewed by Eric Carlson.
+
+        Clear dangling weak-ref.
+        Prevent async playback state calls from instantiating the interface.
+        Release WKFullScreenViewController when it is no longer needed.
+
+        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
+        (-[WKFullScreenViewController dealloc]):
+        (-[WKFullScreenViewController setPlaying:]):
+        (-[WKFullScreenViewController setAnimating:]):
+        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
+        (-[WKFullScreenWindowController _completedExitFullScreen]):
+
 2018-07-23  Timothy Horton  <[email protected]>
 
         Try to fix the build.

Modified: trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm (234123 => 234124)


--- trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm	2018-07-24 00:09:47 UTC (rev 234123)
+++ trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm	2018-07-24 00:27:13 UTC (rev 234124)
@@ -199,6 +199,7 @@
     [NSObject cancelPreviousPerformRequestsWithTarget:self];
     [[NSNotificationCenter defaultCenter] removeObserver:self];
 
+    _playbackClient.setParent(nullptr);
     _playbackClient.setInterface(nullptr);
     _videoFullscreenClient.setParent(nullptr);
     _videoFullscreenClient.setInterface(nullptr);
@@ -287,6 +288,10 @@
         return;
 
     _playing = isPlaying;
+
+    if (![self viewIfLoaded])
+        return;
+
     if (!_playing)
         [self showUI];
     else {
@@ -310,6 +315,10 @@
     if (_animating == animating)
         return;
     _animating = animating;
+
+    if (![self viewIfLoaded])
+        return
+
     [self setNeedsStatusBarAppearanceUpdate];
 
     if (_animating)

Modified: trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm (234123 => 234124)


--- trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm	2018-07-24 00:09:47 UTC (rev 234123)
+++ trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm	2018-07-24 00:27:13 UTC (rev 234124)
@@ -752,6 +752,7 @@
         _repaintCallback->performCallback();
 
     [_fullscreenViewController setPrefersStatusBarHidden:YES];
+    _fullscreenViewController = nil;
 }
 
 - (void)close
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to