Changeset 233940 in webkit
- Timestamp:
- Jul 18, 2018 4:29:57 PM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r233939 r233940 1 2018-07-18 Jer Noble <jer.noble@apple.com> 2 3 CRASH at WebKit: WebKit::WebFullScreenManagerProxy::saveScrollPosition 4 https://bugs.webkit.org/show_bug.cgi?id=187769 5 <rdar://problem/42160666> 6 7 Reviewed by Tim Horton. 8 9 Null-check all uses of _page and _manager in WKFullScreenWindowControllerIOS. 10 11 * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: 12 (WebKit::WKWebViewState::applyTo): 13 (WebKit::WKWebViewState::store): 14 (-[WKFullScreenWindowController enterFullScreen]): 15 (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]): 16 (-[WKFullScreenWindowController _completedExitFullScreen]): 17 1 18 2018-07-18 Chris Dumez <cdumez@apple.com> 2 19 -
trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm
r233331 r233940 116 116 [[webView scrollView] setContentOffset:_savedContentOffset]; 117 117 [[webView scrollView] setScrollIndicatorInsets:_savedScrollIndicatorInsets]; 118 [webView _page]->setTopContentInset(_savedTopContentInset); 119 [webView _page]->setForceAlwaysUserScalable(_savedForceAlwaysUserScalable); 118 if (auto* page = webView._page) { 119 page->setTopContentInset(_savedTopContentInset); 120 page->setForceAlwaysUserScalable(_savedForceAlwaysUserScalable); 121 } 120 122 [webView _setViewScale:_savedViewScale]; 121 123 [[webView scrollView] setZoomScale:_savedZoomScale]; … … 132 134 _savedContentOffset = [[webView scrollView] contentOffset]; 133 135 _savedScrollIndicatorInsets = [[webView scrollView] scrollIndicatorInsets]; 134 _savedTopContentInset = [webView _page]->topContentInset(); 135 _savedForceAlwaysUserScalable = [webView _page]->forceAlwaysUserScalable(); 136 if (auto* page = webView._page) { 137 _savedTopContentInset = page->topContentInset(); 138 _savedForceAlwaysUserScalable = page->forceAlwaysUserScalable(); 139 } 136 140 _savedViewScale = [webView _viewScale]; 137 141 _savedZoomScale = [[webView scrollView] zoomScale]; … … 489 493 return; 490 494 495 RetainPtr<WKWebView> webView = self._webView; 496 auto* page = [webView _page]; 497 auto* manager = self._manager; 498 if (!page || !manager) 499 return; 500 491 501 [self _invalidateEVOrganizationName]; 492 502 … … 506 516 507 517 _window.get().rootViewController = _rootViewController.get(); 508 509 RetainPtr<WKWebView> webView = self._webView;510 518 511 519 _fullscreenViewController = adoptNS([[WKFullScreenViewController alloc] initWithWebView:webView.get()]); … … 535 543 [_fullscreenViewController.get().view addGestureRecognizer:_interactivePinchDismissGestureRecognizer.get()]; 536 544 537 [self _manager]->saveScrollPosition();538 539 [webView _page]->setSuppressVisibilityUpdates(true);545 manager->saveScrollPosition(); 546 547 page->setSuppressVisibilityUpdates(true); 540 548 541 549 _viewState.store(webView.get()); … … 548 556 [webView takeSnapshotWithConfiguration:config completionHandler:^(UIImage * snapshotImage, NSError * error) { 549 557 RetainPtr<WKWebView> webView = self._webView; 550 if (![webView _page]) 558 auto* page = [self._webView _page]; 559 if (!page) 551 560 return; 552 561 … … 566 575 [webView layoutIfNeeded]; 567 576 568 [self _manager]->setAnimatingFullScreen(true); 577 if (auto* manager = self._manager) 578 manager->setAnimatingFullScreen(true); 569 579 570 580 ViewportArguments arguments { ViewportArguments::CSSDeviceAdaptation }; … … 573 583 arguments.maxZoom = 1; 574 584 arguments.userZoom = 1; 575 [webView _page]->setOverrideViewportArguments(arguments);585 page->setOverrideViewportArguments(arguments); 576 586 577 587 _repaintCallback = VoidCallback::create([protectedSelf = retainPtr(self), self](WebKit::CallbackBase::Error) { … … 585 595 [self _exitFullscreenImmediately]; 586 596 }); 587 [webView _page]->forceRepaint(_repaintCallback.copyRef());597 page->forceRepaint(_repaintCallback.copyRef()); 588 598 589 599 [CATransaction commit]; … … 675 685 _finalFrame = safeInlineRect(_finalFrame, [_rootViewController view].frame.size); 676 686 677 [self._webView _page]->setSuppressVisibilityUpdates(true); 687 if (auto* page = [self._webView _page]) 688 page->setSuppressVisibilityUpdates(true); 678 689 679 690 [_fullscreenViewController setPrefersStatusBarHidden:NO]; … … 706 717 707 718 _viewState.applyTo(webView.get()); 708 [webView _page]->setOverrideViewportArguments(std::nullopt); 719 if (auto* page = [webView _page]) 720 page->setOverrideViewportArguments(std::nullopt); 709 721 710 722 [webView setNeedsLayout];
Note: See TracChangeset
for help on using the changeset viewer.