Changeset 207292 in webkit
- Timestamp:
- Oct 13, 2016 10:44:27 AM (8 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r207279 r207292 1 2016-10-13 Tim Horton <timothy_horton@apple.com> 2 3 Expose SPI to disable synchronously blocking on painting after parenting a WKWebView 4 https://bugs.webkit.org/show_bug.cgi?id=163364 5 <rdar://problem/28012494> 6 7 Reviewed by Geoff Garen. 8 9 Some clients may not want the default WKWebView behavior where we synchronously 10 block on the Web process after the first time a WKWebView is re-added to the window, 11 because they are e.g. parenting re-used WKWebViews while scrolling. 12 13 * UIProcess/API/APIPageConfiguration.h: 14 (API::PageConfiguration::shouldSynchronizeInitialPaintAfterMovingToWindow): 15 (API::PageConfiguration::setShouldSynchronizeInitialPaintAfterMovingToWindow): 16 * UIProcess/API/Cocoa/WKWebView.mm: 17 (-[WKWebView _initializeWithConfiguration:]): 18 * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: 19 (-[WKWebViewConfiguration init]): 20 (-[WKWebViewConfiguration copyWithZone:]): 21 (-[WKWebViewConfiguration _shouldSynchronizeInitialPaintAfterMovingToWindow]): 22 (-[WKWebViewConfiguration _setShouldSynchronizeInitialPaintAfterMovingToWindow:]): 23 * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: 24 * UIProcess/WebPageProxy.h: 25 * UIProcess/WebPageProxy.cpp: 26 (WebKit::WebPageProxy::WebPageProxy): 27 Add and plumb a new WKWebView configuration parameter. 28 29 (WebKit::WebPageProxy::dispatchViewStateChange): 30 If the new configuration parameter is set, don't block the main thread when 31 a view is reparented. 32 1 33 2016-10-12 Chris Dumez <cdumez@apple.com> 2 34 -
trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.h
r202185 r207292 93 93 void setInitialCapitalizationEnabled(bool initialCapitalizationEnabled) { m_initialCapitalizationEnabled = initialCapitalizationEnabled; } 94 94 95 bool shouldWaitForPaintAfterViewDidMoveToWindow() const { return m_shouldWaitForPaintAfterViewDidMoveToWindow; } 96 void setShouldWaitForPaintAfterViewDidMoveToWindow(bool shouldSynchronize) { m_shouldWaitForPaintAfterViewDidMoveToWindow = shouldSynchronize; } 97 95 98 private: 96 99 … … 113 116 #endif 114 117 bool m_initialCapitalizationEnabled = true; 118 bool m_shouldWaitForPaintAfterViewDidMoveToWindow = true; 115 119 }; 116 120 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r207171 r207292 439 439 pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowUniversalAccessFromFileURLsKey(), WebKit::WebPreferencesStore::Value(!![_configuration _allowUniversalAccessFromFileURLs])); 440 440 pageConfiguration->setInitialCapitalizationEnabled([_configuration _initialCapitalizationEnabled]); 441 pageConfiguration->setShouldWaitForPaintAfterViewDidMoveToWindow([_configuration _shouldWaitForPaintAfterViewDidMoveToWindow]); 441 442 442 443 #if PLATFORM(MAC) -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
r206054 r207292 124 124 #endif 125 125 BOOL _initialCapitalizationEnabled; 126 BOOL _shouldWaitForPaintAfterViewDidMoveToWindow; 126 127 127 128 #if ENABLE(APPLE_PAY) … … 175 176 #endif 176 177 _initialCapitalizationEnabled = YES; 178 _shouldWaitForPaintAfterViewDidMoveToWindow = YES; 177 179 178 180 #if ENABLE(WIRELESS_PLAYBACK_TARGET) … … 285 287 configuration->_mainContentUserGestureOverrideEnabled = self->_mainContentUserGestureOverrideEnabled; 286 288 configuration->_initialCapitalizationEnabled = self->_initialCapitalizationEnabled; 289 configuration->_shouldWaitForPaintAfterViewDidMoveToWindow = self->_shouldWaitForPaintAfterViewDidMoveToWindow; 287 290 288 291 #if PLATFORM(IOS) … … 656 659 } 657 660 661 - (BOOL)_shouldWaitForPaintAfterViewDidMoveToWindow 662 { 663 return _shouldWaitForPaintAfterViewDidMoveToWindow; 664 } 665 666 - (void)_setShouldWaitForPaintAfterViewDidMoveToWindow:(BOOL)shouldSynchronize 667 { 668 _shouldWaitForPaintAfterViewDidMoveToWindow = shouldSynchronize; 669 } 670 658 671 #if PLATFORM(MAC) 659 672 - (BOOL)_showsURLsInToolTips -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h
r206054 r207292 56 56 @property (nonatomic, setter=_setInitialCapitalizationEnabled:) BOOL _initialCapitalizationEnabled WK_API_AVAILABLE(macosx(10.12), ios(10.0)); 57 57 @property (nonatomic, setter=_setApplePayEnabled:) BOOL _applePayEnabled WK_API_AVAILABLE(macosx(10.12), ios(10.0)); 58 @property (nonatomic, setter=_setShouldWaitForPaintAfterViewDidMoveToWindow:) BOOL _shouldWaitForPaintAfterViewDidMoveToWindow WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 58 59 59 60 #if TARGET_OS_IPHONE -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r206986 r207292 358 358 , m_backForwardList(WebBackForwardList::create(*this)) 359 359 , m_maintainsInactiveSelection(false) 360 , m_shouldWaitForPaintAfterViewDidMoveToWindow(m_configuration->shouldWaitForPaintAfterViewDidMoveToWindow()) 360 361 , m_isEditable(false) 361 362 , m_textZoomFactor(1) … … 1525 1526 bool isNowInWindow = (changed & ViewState::IsInWindow) && isInWindow(); 1526 1527 // We always want to wait for the Web process to reply if we've been in-window before and are coming back in-window. 1527 if (m_viewWasEverInWindow && isNowInWindow && m_drawingArea->hasVisibleContent() )1528 if (m_viewWasEverInWindow && isNowInWindow && m_drawingArea->hasVisibleContent() && m_shouldWaitForPaintAfterViewDidMoveToWindow) 1528 1529 m_viewStateChangeWantsSynchronousReply = true; 1529 1530 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r206986 r207292 1654 1654 bool m_maintainsInactiveSelection; 1655 1655 1656 bool m_shouldWaitForPaintAfterViewDidMoveToWindow; 1657 1656 1658 String m_toolTip; 1657 1659
Note: See TracChangeset
for help on using the changeset viewer.