Changeset 102652 in webkit


Ignore:
Timestamp:
Dec 12, 2011 7:08:19 PM (12 years ago)
Author:
kling@webkit.org
Message:

Resizing Cappuccino is very laggy on WebKit since Safari 5.1
<http://webkit.org/b/71354> and <rdar://problem/10565998>

Reviewed by Anders Carlsson.

Source/WebCore:

  • WebCore.exp.in: Export FloatPoint(const NSPoint&)

Source/WebKit2:

On Mac, we already cache the window rect through the WindowAndViewFramesChanged
message, so simply return that in WebChromeClient::windowRect() instead of
sending a synchronous query to the UIProcess.

Changed WindowAndViewFramesChanged to pass FloatRect/FloatPoint rather than
IntRect/IntPoint to match the ChromeClient::windowRect() return type.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _updateWindowAndViewFrames]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setWindowFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::windowAndViewFramesChanged):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::windowAndViewFramesChanged):

  • WebProcess/Plugins/PluginView.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::windowRect):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::windowAndViewFramesChanged):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::windowFrameInScreenCoordinates):
(WebKit::WebPage::viewFrameInWindowCoordinates):
(WebKit::WebPage::accessibilityPosition):

  • WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:

(-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):

Location:
trunk/Source
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r102651 r102652  
     12011-12-12  Andreas Kling  <kling@webkit.org>
     2
     3        Resizing Cappuccino is very laggy on WebKit since Safari 5.1
     4        <http://webkit.org/b/71354> and <rdar://problem/10565998>
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * WebCore.exp.in: Export FloatPoint(const NSPoint&)
     9
    1102011-12-12  Jarred Nicholls  <jarred@sencha.com>
    211
  • trunk/Source/WebCore/WebCore.exp.in

    r102627 r102652  
    141141__ZN7WebCore10CredentialC1ERKN3WTF6StringES4_NS_21CredentialPersistenceE
    142142__ZN7WebCore10CredentialC1Ev
     143__ZN7WebCore10FloatPointC1ERK8_NSPoint
    143144__ZN7WebCore10FloatPointC1ERKNS_8IntPointE
    144145__ZN7WebCore10JSDocument6s_infoE
  • trunk/Source/WebKit2/ChangeLog

    r102640 r102652  
     12011-12-12  Andreas Kling  <kling@webkit.org>
     2
     3        Resizing Cappuccino is very laggy on WebKit since Safari 5.1
     4        <http://webkit.org/b/71354> and <rdar://problem/10565998>
     5
     6        Reviewed by Anders Carlsson.
     7
     8        On Mac, we already cache the window rect through the WindowAndViewFramesChanged
     9        message, so simply return that in WebChromeClient::windowRect() instead of
     10        sending a synchronous query to the UIProcess.
     11
     12        Changed WindowAndViewFramesChanged to pass FloatRect/FloatPoint rather than
     13        IntRect/IntPoint to match the ChromeClient::windowRect() return type.
     14
     15        * UIProcess/API/mac/WKView.mm:
     16        (-[WKView _updateWindowAndViewFrames]):
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::setWindowFrame):
     19        * UIProcess/WebPageProxy.h:
     20        * UIProcess/mac/WebPageProxyMac.mm:
     21        (WebKit::WebPageProxy::windowAndViewFramesChanged):
     22        * WebProcess/Plugins/PluginView.cpp:
     23        (WebKit::PluginView::windowAndViewFramesChanged):
     24        * WebProcess/Plugins/PluginView.h:
     25        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     26        (WebKit::WebChromeClient::windowRect):
     27        * WebProcess/WebPage/WebPage.cpp:
     28        (WebKit::WebPage::windowAndViewFramesChanged):
     29        * WebProcess/WebPage/WebPage.h:
     30        (WebKit::WebPage::windowFrameInScreenCoordinates):
     31        (WebKit::WebPage::viewFrameInWindowCoordinates):
     32        (WebKit::WebPage::accessibilityPosition):
     33        * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
     34        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):
     35
    1362011-12-12  Anders Carlsson  <andersca@apple.com>
    237
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r102633 r102652  
    338338    NSPoint accessibilityPosition = [[self accessibilityAttributeValue:NSAccessibilityPositionAttribute] pointValue];
    339339   
    340     _data->_page->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates), IntPoint(accessibilityPosition));
     340    _data->_page->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates, accessibilityPosition);
    341341}
    342342
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r102352 r102652  
    307307#if PLATFORM(MAC)
    308308    void updateWindowIsVisible(bool windowIsVisible);
    309     void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);
     309    void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates);
    310310
    311311    void setComposition(const String& text, Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd);
  • trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm

    r101215 r102652  
    152152}
    153153
    154 void WebPageProxy::windowAndViewFramesChanged(const IntRect& windowFrameInScreenCoordinates, const IntRect& viewFrameInWindowCoordinates, const IntPoint& accessibilityViewCoordinates)
     154void WebPageProxy::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates, const FloatPoint& accessibilityViewCoordinates)
    155155{
    156156    if (!isValid())
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp

    r102540 r102652  
    415415}
    416416
    417 void PluginView::windowAndViewFramesChanged(const IntRect& windowFrameInScreenCoordinates, const IntRect& viewFrameInWindowCoordinates)
     417void PluginView::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates)
    418418{
    419419    if (!m_isInitialized || !m_plugin)
    420420        return;
    421421
    422     m_plugin->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates);
     422    m_plugin->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates));
    423423}
    424424
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h

    r99097 r102652  
    6565    void setWindowIsFocused(bool);
    6666    void setDeviceScaleFactor(float);
    67     void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates);
     67    void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates);
    6868    bool sendComplexTextInput(uint64_t pluginComplexTextInputIdentifier, const String& textInput);
    6969#endif
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r101763 r102652  
    106106FloatRect WebChromeClient::windowRect()
    107107{
     108#if PLATFORM(MAC)
     109    return m_page->windowFrameInScreenCoordinates();
     110#else
    108111    FloatRect newWindowFrame;
    109112
     
    112115
    113116    return newWindowFrame;
     117#endif
    114118}
    115119
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r102627 r102652  
    23132313}
    23142314
    2315 void WebPage::windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates)
     2315void WebPage::windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates)
    23162316{
    23172317    m_windowFrameInScreenCoordinates = windowFrameInScreenCoordinates;
     
    23212321    // Tell all our plug-in views that the window and view frames have changed.
    23222322    for (HashSet<PluginView*>::const_iterator it = m_pluginViews.begin(), end = m_pluginViews.end(); it != end; ++it)
    2323         (*it)->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates);
     2323        (*it)->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates));
    23242324}
    23252325
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r102352 r102652  
    290290
    291291    bool windowIsVisible() const { return m_windowIsVisible; }
    292     const WebCore::IntRect& windowFrameInScreenCoordinates() const { return m_windowFrameInScreenCoordinates; }
    293     const WebCore::IntRect& viewFrameInWindowCoordinates() const { return m_viewFrameInWindowCoordinates; }
     292    const WebCore::FloatRect& windowFrameInScreenCoordinates() const { return m_windowFrameInScreenCoordinates; }
     293    const WebCore::FloatRect& viewFrameInWindowCoordinates() const { return m_viewFrameInWindowCoordinates; }
    294294#elif PLATFORM(WIN)
    295295    HWND nativeWindow() const { return m_nativeWindow; }
     
    357357    void registerUIProcessAccessibilityTokens(const CoreIPC::DataReference& elemenToken, const CoreIPC::DataReference& windowToken);
    358358    WKAccessibilityWebPageObject* accessibilityRemoteObject();
    359     WebCore::IntPoint accessibilityPosition() const { return m_accessibilityPosition; }   
    360    
     359    const WebCore::FloatPoint& accessibilityPosition() const { return m_accessibilityPosition; }
     360
    361361    void sendComplexTextInputToPlugin(uint64_t pluginComplexTextInputIdentifier, const String& textInput);
    362362
     
    561561
    562562    void setWindowIsVisible(bool windowIsVisible);
    563     void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);
     563    void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates);
    564564#endif
    565565
     
    638638
    639639    // The frame of the containing window in screen coordinates.
    640     WebCore::IntRect m_windowFrameInScreenCoordinates;
     640    WebCore::FloatRect m_windowFrameInScreenCoordinates;
    641641
    642642    // The frame of the view in window coordinates.
    643     WebCore::IntRect m_viewFrameInWindowCoordinates;
     643    WebCore::FloatRect m_viewFrameInWindowCoordinates;
    644644
    645645    // The accessibility position of the view.
    646     WebCore::IntPoint m_accessibilityPosition;
    647    
     646    WebCore::FloatPoint m_accessibilityPosition;
     647
    648648    // All plug-in views on this web page.
    649649    HashSet<PluginView*> m_pluginViews;
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r102352 r102652  
    202202
    203203    SetWindowIsVisible(bool windowIsVisible)
    204     WindowAndViewFramesChanged(WebCore::IntRect windowFrameInScreenCoordinates, WebCore::IntRect viewFrameInWindowCoordinates, WebCore::IntPoint accessibilityViewCoordinates)
     204    WindowAndViewFramesChanged(WebCore::FloatRect windowFrameInScreenCoordinates, WebCore::FloatRect viewFrameInWindowCoordinates, WebCore::FloatPoint accessibilityViewCoordinates)
    205205    RegisterUIProcessAccessibilityTokens(CoreIPC::DataReference elemenToken, CoreIPC::DataReference windowToken)
    206206    WriteSelectionToPasteboard(WTF::String pasteboardName, WTF::Vector<WTF::String> pasteboardTypes) -> (bool result)
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm

    r100323 r102652  
    143143
    144144    if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) {
    145         WebCore::IntPoint point = m_page->accessibilityPosition();
     145        const WebCore::FloatPoint& point = m_page->accessibilityPosition();
    146146        return [NSValue valueWithPoint:NSMakePoint(point.x(), point.y())];
    147147    }
Note: See TracChangeset for help on using the changeset viewer.