Diff
Modified: trunk/Source/WebCore/ChangeLog (102651 => 102652)
--- trunk/Source/WebCore/ChangeLog 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebCore/ChangeLog 2011-12-13 03:08:19 UTC (rev 102652)
@@ -1,3 +1,12 @@
+2011-12-12 Andreas Kling <[email protected]>
+
+ Resizing Cappuccino is very laggy on WebKit since Safari 5.1
+ <http://webkit.org/b/71354> and <rdar://problem/10565998>
+
+ Reviewed by Anders Carlsson.
+
+ * WebCore.exp.in: Export FloatPoint(const NSPoint&)
+
2011-12-12 Jarred Nicholls <[email protected]>
[Qt] QTKIT-based video support must target OS X 10.5 or higher
Modified: trunk/Source/WebCore/WebCore.exp.in (102651 => 102652)
--- trunk/Source/WebCore/WebCore.exp.in 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebCore/WebCore.exp.in 2011-12-13 03:08:19 UTC (rev 102652)
@@ -140,6 +140,7 @@
__ZN7WebCore10ClientRectC1Ev
__ZN7WebCore10CredentialC1ERKN3WTF6StringES4_NS_21CredentialPersistenceE
__ZN7WebCore10CredentialC1Ev
+__ZN7WebCore10FloatPointC1ERK8_NSPoint
__ZN7WebCore10FloatPointC1ERKNS_8IntPointE
__ZN7WebCore10JSDocument6s_infoE
__ZN7WebCore10MouseEvent6createERKN3WTF12AtomicStringENS1_10PassRefPtrINS_9DOMWindowEEERKNS_18PlatformMouseEventEiNS5_INS_4NodeEEE
Modified: trunk/Source/WebKit2/ChangeLog (102651 => 102652)
--- trunk/Source/WebKit2/ChangeLog 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/ChangeLog 2011-12-13 03:08:19 UTC (rev 102652)
@@ -1,3 +1,38 @@
+2011-12-12 Andreas Kling <[email protected]>
+
+ Resizing Cappuccino is very laggy on WebKit since Safari 5.1
+ <http://webkit.org/b/71354> and <rdar://problem/10565998>
+
+ Reviewed by Anders Carlsson.
+
+ 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:]):
+
2011-12-12 Anders Carlsson <[email protected]>
Add EventDispatcher class to WebKit2
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (102651 => 102652)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2011-12-13 03:08:19 UTC (rev 102652)
@@ -337,7 +337,7 @@
NSRect viewFrameInWindowCoordinates = [self convertRect:[self frame] toView:nil];
NSPoint accessibilityPosition = [[self accessibilityAttributeValue:NSAccessibilityPositionAttribute] pointValue];
- _data->_page->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates), IntPoint(accessibilityPosition));
+ _data->_page->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates, accessibilityPosition);
}
- (void)renewGState
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (102651 => 102652)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2011-12-13 03:08:19 UTC (rev 102652)
@@ -306,7 +306,7 @@
#if PLATFORM(MAC)
void updateWindowIsVisible(bool windowIsVisible);
- void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);
+ void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates);
void setComposition(const String& text, Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd);
void confirmComposition();
Modified: trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (102651 => 102652)
--- trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm 2011-12-13 03:08:19 UTC (rev 102652)
@@ -151,7 +151,7 @@
process()->send(Messages::WebPage::SetWindowIsVisible(windowIsVisible), m_pageID);
}
-void WebPageProxy::windowAndViewFramesChanged(const IntRect& windowFrameInScreenCoordinates, const IntRect& viewFrameInWindowCoordinates, const IntPoint& accessibilityViewCoordinates)
+void WebPageProxy::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates, const FloatPoint& accessibilityViewCoordinates)
{
if (!isValid())
return;
Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (102651 => 102652)
--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2011-12-13 03:08:19 UTC (rev 102652)
@@ -414,12 +414,12 @@
m_plugin->contentsScaleFactorChanged(scaleFactor);
}
-void PluginView::windowAndViewFramesChanged(const IntRect& windowFrameInScreenCoordinates, const IntRect& viewFrameInWindowCoordinates)
+void PluginView::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates)
{
if (!m_isInitialized || !m_plugin)
return;
- m_plugin->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates);
+ m_plugin->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates));
}
bool PluginView::sendComplexTextInput(uint64_t pluginComplexTextInputIdentifier, const String& textInput)
Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h (102651 => 102652)
--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h 2011-12-13 03:08:19 UTC (rev 102652)
@@ -64,7 +64,7 @@
void setWindowIsVisible(bool);
void setWindowIsFocused(bool);
void setDeviceScaleFactor(float);
- void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates);
+ void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates);
bool sendComplexTextInput(uint64_t pluginComplexTextInputIdentifier, const String& textInput);
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (102651 => 102652)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2011-12-13 03:08:19 UTC (rev 102652)
@@ -105,12 +105,16 @@
FloatRect WebChromeClient::windowRect()
{
+#if PLATFORM(MAC)
+ return m_page->windowFrameInScreenCoordinates();
+#else
FloatRect newWindowFrame;
if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::GetWindowFrame(), Messages::WebPageProxy::GetWindowFrame::Reply(newWindowFrame), m_page->pageID()))
return FloatRect();
return newWindowFrame;
+#endif
}
FloatRect WebChromeClient::pageRect()
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (102651 => 102652)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2011-12-13 03:08:19 UTC (rev 102652)
@@ -2312,7 +2312,7 @@
(*it)->setWindowIsVisible(windowIsVisible);
}
-void WebPage::windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates)
+void WebPage::windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates)
{
m_windowFrameInScreenCoordinates = windowFrameInScreenCoordinates;
m_viewFrameInWindowCoordinates = viewFrameInWindowCoordinates;
@@ -2320,7 +2320,7 @@
// Tell all our plug-in views that the window and view frames have changed.
for (HashSet<PluginView*>::const_iterator it = m_pluginViews.begin(), end = m_pluginViews.end(); it != end; ++it)
- (*it)->windowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates);
+ (*it)->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates));
}
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (102651 => 102652)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2011-12-13 03:08:19 UTC (rev 102652)
@@ -289,8 +289,8 @@
void removePluginView(PluginView*);
bool windowIsVisible() const { return m_windowIsVisible; }
- const WebCore::IntRect& windowFrameInScreenCoordinates() const { return m_windowFrameInScreenCoordinates; }
- const WebCore::IntRect& viewFrameInWindowCoordinates() const { return m_viewFrameInWindowCoordinates; }
+ const WebCore::FloatRect& windowFrameInScreenCoordinates() const { return m_windowFrameInScreenCoordinates; }
+ const WebCore::FloatRect& viewFrameInWindowCoordinates() const { return m_viewFrameInWindowCoordinates; }
#elif PLATFORM(WIN)
HWND nativeWindow() const { return m_nativeWindow; }
#endif
@@ -356,8 +356,8 @@
#if PLATFORM(MAC)
void registerUIProcessAccessibilityTokens(const CoreIPC::DataReference& elemenToken, const CoreIPC::DataReference& windowToken);
WKAccessibilityWebPageObject* accessibilityRemoteObject();
- WebCore::IntPoint accessibilityPosition() const { return m_accessibilityPosition; }
-
+ const WebCore::FloatPoint& accessibilityPosition() const { return m_accessibilityPosition; }
+
void sendComplexTextInputToPlugin(uint64_t pluginComplexTextInputIdentifier, const String& textInput);
void setComposition(const String& text, Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd, EditorState& newState);
@@ -560,7 +560,7 @@
void performDictionaryLookupForRange(DictionaryPopupInfo::Type, WebCore::Frame*, WebCore::Range*, NSDictionary *options);
void setWindowIsVisible(bool windowIsVisible);
- void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);
+ void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& accessibilityViewCoordinates);
#endif
void unapplyEditCommand(uint64_t commandID);
@@ -637,14 +637,14 @@
bool m_isSmartInsertDeleteEnabled;
// The frame of the containing window in screen coordinates.
- WebCore::IntRect m_windowFrameInScreenCoordinates;
+ WebCore::FloatRect m_windowFrameInScreenCoordinates;
// The frame of the view in window coordinates.
- WebCore::IntRect m_viewFrameInWindowCoordinates;
+ WebCore::FloatRect m_viewFrameInWindowCoordinates;
// The accessibility position of the view.
- WebCore::IntPoint m_accessibilityPosition;
-
+ WebCore::FloatPoint m_accessibilityPosition;
+
// All plug-in views on this web page.
HashSet<PluginView*> m_pluginViews;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (102651 => 102652)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2011-12-13 03:08:19 UTC (rev 102652)
@@ -201,7 +201,7 @@
SendComplexTextInputToPlugin(uint64_t pluginComplexTextInputIdentifier, String textInput)
SetWindowIsVisible(bool windowIsVisible)
- WindowAndViewFramesChanged(WebCore::IntRect windowFrameInScreenCoordinates, WebCore::IntRect viewFrameInWindowCoordinates, WebCore::IntPoint accessibilityViewCoordinates)
+ WindowAndViewFramesChanged(WebCore::FloatRect windowFrameInScreenCoordinates, WebCore::FloatRect viewFrameInWindowCoordinates, WebCore::FloatPoint accessibilityViewCoordinates)
RegisterUIProcessAccessibilityTokens(CoreIPC::DataReference elemenToken, CoreIPC::DataReference windowToken)
WriteSelectionToPasteboard(WTF::String pasteboardName, WTF::Vector<WTF::String> pasteboardTypes) -> (bool result)
ReadSelectionFromPasteboard(WTF::String pasteboardName) -> (bool result)
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm (102651 => 102652)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm 2011-12-13 02:56:57 UTC (rev 102651)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm 2011-12-13 03:08:19 UTC (rev 102652)
@@ -142,7 +142,7 @@
return nil;
if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) {
- WebCore::IntPoint point = m_page->accessibilityPosition();
+ const WebCore::FloatPoint& point = m_page->accessibilityPosition();
return [NSValue valueWithPoint:NSMakePoint(point.x(), point.y())];
}
if ([attribute isEqualToString:NSAccessibilitySizeAttribute]) {