Changeset 145169 in webkit
- Timestamp:
- Mar 7, 2013, 6:24:34 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r145168 r145169 1 2013-03-07 Andreas Kling <akling@apple.com> 2 3 Resizing Cappuccino is very laggy on WebKit since Safari 5.1 4 <http://webkit.org/b/71354> 5 <rdar://problem/10565998> 6 7 Reviewed by Anders Carlsson. 8 9 * WebCore.exp.in: Export FloatPoint(const NSPoint&) 10 1 11 2013-03-07 Andreas Kling <akling@apple.com> 2 12 -
trunk/Source/WebCore/WebCore.exp.in
r145156 r145169 71 71 __ZN7WebCore10CredentialC1ERKN3WTF6StringES4_NS_21CredentialPersistenceE 72 72 __ZN7WebCore10CredentialC1Ev 73 __ZN7WebCore10FloatPointC1ERK8_NSPoint 73 74 __ZN7WebCore10FloatPointC1ERKNS_8IntPointE 74 75 __ZN7WebCore10JSDocument6s_infoE -
trunk/Source/WebKit2/ChangeLog
r145167 r145169 1 2013-03-07 Andreas Kling <akling@apple.com> 2 3 Resizing Cappuccino is very laggy on WebKit since Safari 5.1 4 <http://webkit.org/b/71354> 5 <rdar://problem/10565998> 6 7 Reviewed by Anders Carlsson. 8 9 On Mac, we already cache the window rect through the WindowAndViewFramesChanged 10 message, so simply return that in WebChromeClient::windowRect() instead of 11 sending a synchronous query to the UIProcess. 12 13 If a programmatic resize is requested, we bypass the cache until we've received 14 a new WindowAndViewFramesChanged message. This compromise allows us to return 15 cached rects in the common case, and handles creating a new window and immediately 16 resizing it gracefully. 17 18 Changed WindowAndViewFramesChanged to pass FloatRect/FloatPoint rather than 19 IntRect/IntPoint to match the ChromeClient::windowRect() return type. 20 21 * UIProcess/API/mac/WKView.mm: 22 (-[WKView _updateWindowAndViewFrames]): 23 * UIProcess/WebPageProxy.h: 24 (WebPageProxy): 25 * UIProcess/mac/WebPageProxyMac.mm: 26 (WebKit::WebPageProxy::windowAndViewFramesChanged): 27 * WebProcess/Plugins/PluginView.cpp: 28 (WebKit::PluginView::windowAndViewFramesChanged): 29 * WebProcess/Plugins/PluginView.h: 30 (PluginView): 31 * WebProcess/WebCoreSupport/WebChromeClient.cpp: 32 (WebKit::WebChromeClient::setWindowRect): 33 (WebKit::WebChromeClient::windowRect): 34 * WebProcess/WebPage/WebPage.cpp: 35 (WebKit::WebPage::WebPage): 36 (WebKit::WebPage::sendSetWindowFrame): 37 (WebKit::WebPage::windowAndViewFramesChanged): 38 * WebProcess/WebPage/WebPage.h: 39 (WebPage): 40 (WebKit::WebPage::windowFrameInScreenCoordinates): 41 (WebKit::WebPage::viewFrameInWindowCoordinates): 42 (WebKit::WebPage::hasCachedWindowFrame): 43 (WebKit::WebPage::accessibilityPosition): 44 * WebProcess/WebPage/WebPage.messages.in: 45 * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm: 46 (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]): 47 1 48 2013-03-07 Alexey Proskuryakov <ap@apple.com> 2 49 -
trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm
r144777 r145169 401 401 NSPoint accessibilityPosition = [[self accessibilityAttributeValue:NSAccessibilityPositionAttribute] pointValue]; 402 402 403 _data->_page->windowAndViewFramesChanged( enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates), IntPoint(accessibilityPosition));403 _data->_page->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates, accessibilityPosition); 404 404 if (_data->_expandsToFitContentViaAutoLayout) 405 405 _data->_page->viewExposedRectChanged([self visibleRect]); -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r145164 r145169 386 386 #if PLATFORM(MAC) 387 387 void updateWindowIsVisible(bool windowIsVisible); 388 void windowAndViewFramesChanged(const WebCore:: IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);388 void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates); 389 389 void viewExposedRectChanged(const WebCore::FloatRect& exposedRect); 390 390 void setMainFrameIsScrollable(bool); -
trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm
r143537 r145169 130 130 } 131 131 132 void WebPageProxy::windowAndViewFramesChanged(const IntRect& windowFrameInScreenCoordinates, const IntRect& viewFrameInWindowCoordinates, const IntPoint& accessibilityViewCoordinates)132 void WebPageProxy::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates, const FloatPoint& accessibilityViewCoordinates) 133 133 { 134 134 if (!isValid()) -
trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
r144670 r145169 483 483 } 484 484 485 void PluginView::windowAndViewFramesChanged(const IntRect& windowFrameInScreenCoordinates, const IntRect& viewFrameInWindowCoordinates)486 { 487 if (!m_isInitialized || !m_plugin) 488 return; 489 490 m_plugin->windowAndViewFramesChanged( windowFrameInScreenCoordinates, viewFrameInWindowCoordinates);485 void PluginView::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates) 486 { 487 if (!m_isInitialized || !m_plugin) 488 return; 489 490 m_plugin->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates)); 491 491 } 492 492 -
trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h
r144670 r145169 73 73 void setWindowIsFocused(bool); 74 74 void setDeviceScaleFactor(float); 75 void windowAndViewFramesChanged(const WebCore:: IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates);75 void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates); 76 76 bool sendComplexTextInput(uint64_t pluginComplexTextInputIdentifier, const String& textInput); 77 77 void setLayerHostingMode(LayerHostingMode); -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
r145133 r145169 108 108 void WebChromeClient::setWindowRect(const FloatRect& windowFrame) 109 109 { 110 m_page->send (Messages::WebPageProxy::SetWindowFrame(windowFrame));110 m_page->sendSetWindowFrame(windowFrame); 111 111 } 112 112 113 113 FloatRect WebChromeClient::windowRect() 114 114 { 115 #if PLATFORM(MAC) 116 if (m_page->hasCachedWindowFrame()) 117 return m_page->windowFrameInScreenCoordinates(); 118 #endif 119 115 120 FloatRect newWindowFrame; 116 121 -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r144907 r145169 238 238 #if PLATFORM(MAC) 239 239 , m_pdfPluginEnabled(false) 240 , m_hasCachedWindowFrame(false) 240 241 , m_windowIsVisible(false) 241 242 , m_layerHostingMode(parameters.layerHostingMode) … … 2906 2907 } 2907 2908 2909 void WebPage::sendSetWindowFrame(const FloatRect& windowFrame) 2910 { 2911 #if PLATFORM(MAC) 2912 m_hasCachedWindowFrame = false; 2913 #endif 2914 send(Messages::WebPageProxy::SetWindowFrame(windowFrame)); 2915 } 2916 2908 2917 #if PLATFORM(MAC) 2909 2918 void WebPage::setWindowIsVisible(bool windowIsVisible) … … 2918 2927 } 2919 2928 2920 void WebPage::windowAndViewFramesChanged(const IntRect& windowFrameInScreenCoordinates, const IntRect& viewFrameInWindowCoordinates, const IntPoint& accessibilityViewCoordinates)2929 void WebPage::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates, const FloatPoint& accessibilityViewCoordinates) 2921 2930 { 2922 2931 m_windowFrameInScreenCoordinates = windowFrameInScreenCoordinates; … … 2926 2935 // Tell all our plug-in views that the window and view frames have changed. 2927 2936 for (HashSet<PluginView*>::const_iterator it = m_pluginViews.begin(), end = m_pluginViews.end(); it != end; ++it) 2928 (*it)->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates); 2937 (*it)->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates)); 2938 2939 m_hasCachedWindowFrame = true; 2929 2940 } 2930 2941 #endif -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r145156 r145169 300 300 void sendClose(); 301 301 302 void sendSetWindowFrame(const WebCore::FloatRect&); 303 302 304 double textZoomFactor() const; 303 305 void setTextZoomFactor(double); … … 353 355 bool windowIsVisible() const { return m_windowIsVisible; } 354 356 void updatePluginsActiveAndFocusedState(); 355 const WebCore::IntRect& windowFrameInScreenCoordinates() const { return m_windowFrameInScreenCoordinates; } 356 const WebCore::IntRect& viewFrameInWindowCoordinates() const { return m_viewFrameInWindowCoordinates; } 357 const WebCore::FloatRect& windowFrameInScreenCoordinates() const { return m_windowFrameInScreenCoordinates; } 358 const WebCore::FloatRect& viewFrameInWindowCoordinates() const { return m_viewFrameInWindowCoordinates; } 359 360 bool hasCachedWindowFrame() const { return m_hasCachedWindowFrame; } 357 361 358 362 void setTopOverhangImage(PassRefPtr<WebImage>); … … 442 446 void registerUIProcessAccessibilityTokens(const CoreIPC::DataReference& elemenToken, const CoreIPC::DataReference& windowToken); 443 447 WKAccessibilityWebPageObject* accessibilityRemoteObject(); 444 WebCore::IntPoint accessibilityPosition() const { return m_accessibilityPosition; }448 const WebCore::FloatPoint& accessibilityPosition() const { return m_accessibilityPosition; } 445 449 446 450 void sendComplexTextInputToPlugin(uint64_t pluginComplexTextInputIdentifier, const String& textInput); … … 733 737 734 738 void setWindowIsVisible(bool windowIsVisible); 735 void windowAndViewFramesChanged(const WebCore:: IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);739 void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates); 736 740 737 741 RetainPtr<PDFDocument> pdfDocumentForPrintingFrame(WebCore::Frame*); … … 842 846 bool m_pdfPluginEnabled; 843 847 848 bool m_hasCachedWindowFrame; 849 844 850 // Whether the containing window is visible or not. 845 851 bool m_windowIsVisible; 846 852 847 853 // The frame of the containing window in screen coordinates. 848 WebCore:: IntRect m_windowFrameInScreenCoordinates;854 WebCore::FloatRect m_windowFrameInScreenCoordinates; 849 855 850 856 // The frame of the view in window coordinates. 851 WebCore:: IntRect m_viewFrameInWindowCoordinates;857 WebCore::FloatRect m_viewFrameInWindowCoordinates; 852 858 853 859 // The accessibility position of the view. 854 WebCore:: IntPoint m_accessibilityPosition;860 WebCore::FloatPoint m_accessibilityPosition; 855 861 856 862 // The layer hosting mode. -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in
r144436 r145169 261 261 262 262 SetWindowIsVisible(bool windowIsVisible) 263 WindowAndViewFramesChanged(WebCore:: IntRect windowFrameInScreenCoordinates, WebCore::IntRect viewFrameInWindowCoordinates, WebCore::IntPoint accessibilityViewCoordinates)263 WindowAndViewFramesChanged(WebCore::FloatRect windowFrameInScreenCoordinates, WebCore::FloatRect viewFrameInWindowCoordinates, WebCore::FloatPoint accessibilityViewCoordinates) 264 264 ViewExposedRectChanged(WebCore::FloatRect exposedRect) 265 265 SetMainFrameIsScrollable(bool isScrollable) -
trunk/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm
r115295 r145169 146 146 147 147 if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) { 148 WebCore::IntPointpoint = m_page->accessibilityPosition();148 const WebCore::FloatPoint& point = m_page->accessibilityPosition(); 149 149 return [NSValue valueWithPoint:NSMakePoint(point.x(), point.y())]; 150 150 }
Note:
See TracChangeset
for help on using the changeset viewer.