WebKit Bugzilla
Attachment 343120 Details for
Bug 186826
: [Fullscreen] Exit fullscreen when opening a new tab
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-186826-20180619164146.patch (text/plain), 3.83 KB, created by
Jer Noble
on 2018-06-19 16:41:47 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Jer Noble
Created:
2018-06-19 16:41:47 PDT
Size:
3.83 KB
patch
obsolete
>Subversion Revision: 232990 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 3d4e465e6ff22e6e5c9f929e0a2a899c91916208..70efc6466c9c1cbc1f16dd02e13ec4a8eea9cc98 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,21 @@ >+2018-06-19 Jer Noble <jer.noble@apple.com> >+ >+ [Fullscreen] Exit fullscreen when opening a new tab >+ https://bugs.webkit.org/show_bug.cgi?id=186826 >+ <rdar://problem/40853211> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Make the fullscreen placeholder view a custom UIView, and exit fullscreen when the >+ placeholder is removed from its superview. >+ >+ * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: >+ (-[WKFullScreenPlaceholderView willMoveToSuperview:]): >+ (-[WKFullScreenWindowController enterFullScreen]): >+ (-[WKFullScreenWindowController _completedExitFullScreen]): >+ (-[WKFullScreenWindowController placeholderWillMoveToSuperview:]): >+ (-[WKFullScreenWindowController _exitFullscreenImmediately]): >+ > 2018-06-19 Jer Noble <jer.noble@apple.com> > > [Fullscreen] Add a pinch-to-exit gesture >diff --git a/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm b/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm >index e30cc2bfc985de4e024a04f2280f3b8e02ff6cb6..9d2b3005bc0380ce42c88b9840983f785043b0be 100644 >--- a/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm >+++ b/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm >@@ -396,10 +396,27 @@ @end > > @interface WKFullScreenWindowController () <UIGestureRecognizerDelegate> > @property (weak, nonatomic) WKWebView *_webView; // Cannot be retained, see <rdar://problem/14884666>. >+- (void)placeholderWillMoveToSuperview:(UIView *)superview; > @end > >+#pragma mark - >+ >+@interface WKFullScreenPlaceholderView : UIView >+@property (weak, nonatomic) WKFullScreenWindowController *parent; >+@end >+ >+@implementation WKFullScreenPlaceholderView >+- (void)willMoveToSuperview:(UIView *)newSuperview >+{ >+ [super viewWillMoveToSuperview:newSuperview]; >+ [self.parent placeholderWillMoveToSuperview:newSuperview]; >+} >+@end >+ >+#pragma mark - >+ > @implementation WKFullScreenWindowController { >- RetainPtr<UIView> _webViewPlaceholder; >+ RetainPtr<WKFullScreenPlaceholderView> _webViewPlaceholder; > > FullScreenState _fullScreenState; > WKWebViewState _viewState; >@@ -520,7 +537,8 @@ - (void)enterFullScreen > > _viewState.store(webView.get()); > >- _webViewPlaceholder = adoptNS([[UIView alloc] init]); >+ _webViewPlaceholder = adoptNS([[WKFullScreenPlaceholderView alloc] init]); >+ [_webViewPlaceholder setParent:self]; > [[_webViewPlaceholder layer] setName:@"Fullscreen Placeholder View"]; > > WKSnapshotConfiguration* config = nil; >@@ -704,6 +722,7 @@ - (void)_completedExitFullScreen > > _repaintCallback = VoidCallback::create([protectedSelf = retainPtr(self), self](WebKit::CallbackBase::Error) { > _repaintCallback = nullptr; >+ _webViewPlaceholder.get().parent = nil; > [_webViewPlaceholder removeFromSuperview]; > > if (auto* page = [self._webView _page]) >@@ -736,6 +755,12 @@ - (void)videoControlsManagerDidChange > [_fullscreenViewController videoControlsManagerDidChange]; > } > >+- (void)placeholderWillMoveToSuperview:(UIView *)superview >+{ >+ if (!superview) >+ [self close]; >+} >+ > #pragma mark - > #pragma mark UIGestureRecognizerDelegate > >@@ -810,6 +835,7 @@ - (void)_exitFullscreenImmediately > _fullScreenState = ExitingFullScreen; > [self _completedExitFullScreen]; > RetainPtr<WKWebView> webView = self._webView; >+ _webViewPlaceholder.get().parent = nil; > replaceViewWithView(_webViewPlaceholder.get(), webView.get()); > if (auto* page = [webView _page]) > page->setSuppressVisibilityUpdates(false);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 186826
: 343120 |
343130
|
343198