[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

weinig at apple.com weinig at apple.com
Wed Dec 22 14:27:54 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 86e85b8b66dbe0e9b09eec86a0bf7e14d9f5b024
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Oct 9 20:32:19 2010 +0000

    Need implementation of ChromeClient windowRect related functions.
    <rdar://problem/8469476>
    https://bugs.webkit.org/show_bug.cgi?id=47386
    
    Reviewed by Dan Bernstein.
    
    WebKit2:
    
    * Shared/API/c/WKGeometry.h: Added.
    Adds WKPoint, WKSize and WKRect structs.
    
    * Shared/API/c/WKSharedAPICast.h:
    (WebKit::toImpl):
    (WebKit::toAPI):
    Add conversion functions for WKRect.
    
    * Shared/WebCoreArgumentCoders.h:
    Add encoding for FloatPoint, FloatSize and FloatRect.
    
    * UIProcess/API/C/WKPage.h:
    * UIProcess/API/mac/PageClientImpl.h:
    * UIProcess/API/mac/PageClientImpl.mm:
    (WebKit::PageClientImpl::transformToDeviceSpace):
    (WebKit::PageClientImpl::transformToUserSpace):
    * UIProcess/API/mac/WKView.mm:
    (-[WKView _transformToDeviceSpace:]):
    (-[WKView _transformToUserSpace:]):
    * UIProcess/API/mac/WKViewInternal.h:
    * UIProcess/API/qt/qwkpage.cpp:
    (QWKPagePrivate::transformToDeviceSpace):
    (QWKPagePrivate::transformToUserSpace):
    (QWKPage::QWKPage):
    * UIProcess/API/qt/qwkpage_p.h:
    * UIProcess/PageClient.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::setWindowFrame):
    (WebKit::WebPageProxy::getWindowFrame):
    * UIProcess/WebPageProxy.h:
    * UIProcess/WebPageProxy.messages.in:
    * UIProcess/WebUIClient.cpp:
    (WebKit::WebUIClient::setWindowFrame):
    (WebKit::WebUIClient::windowFrame):
    * UIProcess/WebUIClient.h:
    * UIProcess/win/WebView.cpp:
    (WebKit::WebView::setEditCommandState):
    (WebKit::WebView::transformToDeviceSpace):
    (WebKit::WebView::transformToUserSpace):
    * UIProcess/win/WebView.h:
    * WebProcess/WebCoreSupport/WebChromeClient.cpp:
    (WebKit::WebChromeClient::setWindowFrame):
    (WebKit::WebChromeClient::windowFrame):
    Pipe calls through to the UIProcess, and give ports a chance to transform
    the rect (via the PageClient) before it is passed on.
    
    * WebKit2.pro:
    * WebKit2.xcodeproj/project.pbxproj:
    * win/WebKit2.vcproj:
    * win/WebKit2Generated.make:
    Add new files.
    
    WebKitTools:
    
    * MiniBrowser/mac/BrowserWindowController.m:
    (getWindowFrame):
    (setWindowFrame):
    (-[BrowserWindowController awakeFromNib]):
    * WebKitTestRunner/PlatformWebView.h:
    * WebKitTestRunner/TestController.cpp:
    (WTR::TestController::initialize):
    * WebKitTestRunner/mac/PlatformWebViewMac.mm:
    (WTR::PlatformWebView::windowFrame):
    (WTR::PlatformWebView::setWindowFrame):
    * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
    (WTR::PlatformWebView::windowFrame):
    (WTR::PlatformWebView::setWindowFrame):
    * WebKitTestRunner/win/PlatformWebViewWin.cpp:
    (WTR::PlatformWebView::windowFrame):
    (WTR::PlatformWebView::setWindowFrame):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69457 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 73ad2e7..7bd372b 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,63 @@
+2010-10-09  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Dan Bernstein.
+
+        Need implementation of ChromeClient windowRect related functions.
+        <rdar://problem/8469476>
+        https://bugs.webkit.org/show_bug.cgi?id=47386
+
+        * Shared/API/c/WKGeometry.h: Added.
+        Adds WKPoint, WKSize and WKRect structs.
+
+        * Shared/API/c/WKSharedAPICast.h:
+        (WebKit::toImpl):
+        (WebKit::toAPI):
+        Add conversion functions for WKRect.
+
+        * Shared/WebCoreArgumentCoders.h:
+        Add encoding for FloatPoint, FloatSize and FloatRect.
+
+        * UIProcess/API/C/WKPage.h:
+        * UIProcess/API/mac/PageClientImpl.h:
+        * UIProcess/API/mac/PageClientImpl.mm:
+        (WebKit::PageClientImpl::transformToDeviceSpace):
+        (WebKit::PageClientImpl::transformToUserSpace):
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView _transformToDeviceSpace:]):
+        (-[WKView _transformToUserSpace:]):
+        * UIProcess/API/mac/WKViewInternal.h:
+        * UIProcess/API/qt/qwkpage.cpp:
+        (QWKPagePrivate::transformToDeviceSpace):
+        (QWKPagePrivate::transformToUserSpace):
+        (QWKPage::QWKPage):
+        * UIProcess/API/qt/qwkpage_p.h:
+        * UIProcess/PageClient.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::setWindowFrame):
+        (WebKit::WebPageProxy::getWindowFrame):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+        * UIProcess/WebUIClient.cpp:
+        (WebKit::WebUIClient::setWindowFrame):
+        (WebKit::WebUIClient::windowFrame):
+        * UIProcess/WebUIClient.h:
+        * UIProcess/win/WebView.cpp:
+        (WebKit::WebView::setEditCommandState):
+        (WebKit::WebView::transformToDeviceSpace):
+        (WebKit::WebView::transformToUserSpace):
+        * UIProcess/win/WebView.h:
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::setWindowFrame):
+        (WebKit::WebChromeClient::windowFrame):
+        Pipe calls through to the UIProcess, and give ports a chance to transform
+        the rect (via the PageClient) before it is passed on.
+
+        * WebKit2.pro:
+        * WebKit2.xcodeproj/project.pbxproj:
+        * win/WebKit2.vcproj:
+        * win/WebKit2Generated.make:
+        Add new files.
+
 2010-10-07  Jessie Berlin  <jberlin at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebKit2/Shared/API/c/WKGeometry.h b/WebKit2/Shared/API/c/WKGeometry.h
new file mode 100644
index 0000000..70ef969
--- /dev/null
+++ b/WebKit2/Shared/API/c/WKGeometry.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKGeometry_h
+#define WKGeometry_h
+
+#include <WebKit2/WKBase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct WKPoint {
+    double x;
+    double y;
+};
+typedef struct WKPoint WKPoint;
+
+struct WKSize {
+    double width;
+    double height;
+};
+typedef struct WKSize WKSize;
+
+struct WKRect {
+    WKPoint origin;
+    WKSize size;
+};
+typedef struct WKRect WKRect;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKGeometry_h */
diff --git a/WebKit2/Shared/API/c/WKSharedAPICast.h b/WebKit2/Shared/API/c/WKSharedAPICast.h
index 30f5f96..e15acac 100644
--- a/WebKit2/Shared/API/c/WKSharedAPICast.h
+++ b/WebKit2/Shared/API/c/WKSharedAPICast.h
@@ -28,10 +28,12 @@
 
 #include "WKBase.h"
 #include "WKEvent.h"
+#include "WKGeometry.h"
 #include "WebEvent.h"
 #include "WebNumber.h"
 #include "WebString.h"
 #include "WebURL.h"
+#include <WebCore/FloatRect.h>
 #include <wtf/TypeTraits.h>
 
 namespace WebKit {
@@ -147,6 +149,25 @@ inline String toWTFString(WKURLRef urlRef)
     return toImpl(urlRef)->string();
 }
 
+
+/* Geometry conversions */
+
+inline WebCore::FloatRect toImpl(const WKRect& wkRect)
+{
+    return WebCore::FloatRect(static_cast<float>(wkRect.origin.x), static_cast<float>(wkRect.origin.y),
+                              static_cast<float>(wkRect.size.width), static_cast<float>(wkRect.size.height));
+}
+
+inline WKRect toAPI(const WebCore::FloatRect& rect)
+{
+    WKRect wkRect;
+    wkRect.origin.x = rect.x();
+    wkRect.origin.y = rect.y();
+    wkRect.size.width = rect.width();
+    wkRect.size.height = rect.height();
+    return wkRect;
+}
+
 /* Enum conversions */
 
 inline WKTypeID toAPI(APIObject::Type type)
diff --git a/WebKit2/Shared/WebCoreArgumentCoders.h b/WebKit2/Shared/WebCoreArgumentCoders.h
index b4064b2..f61fdcf 100644
--- a/WebKit2/Shared/WebCoreArgumentCoders.h
+++ b/WebKit2/Shared/WebCoreArgumentCoders.h
@@ -43,6 +43,10 @@ template<> struct ArgumentCoder<WebCore::IntPoint> : SimpleArgumentCoder<WebCore
 template<> struct ArgumentCoder<WebCore::IntSize> : SimpleArgumentCoder<WebCore::IntSize> { };
 template<> struct ArgumentCoder<WebCore::IntRect> : SimpleArgumentCoder<WebCore::IntRect> { };
 
+template<> struct ArgumentCoder<WebCore::FloatPoint> : SimpleArgumentCoder<WebCore::FloatPoint> { };
+template<> struct ArgumentCoder<WebCore::FloatSize> : SimpleArgumentCoder<WebCore::FloatSize> { };
+template<> struct ArgumentCoder<WebCore::FloatRect> : SimpleArgumentCoder<WebCore::FloatRect> { };
+
 template<> struct ArgumentCoder<WebCore::MimeClassInfo> {
     static void encode(ArgumentEncoder* encoder, const WebCore::MimeClassInfo& mimeClassInfo)
     {
diff --git a/WebKit2/UIProcess/API/C/WKPage.h b/WebKit2/UIProcess/API/C/WKPage.h
index af77c31..b795ee4 100644
--- a/WebKit2/UIProcess/API/C/WKPage.h
+++ b/WebKit2/UIProcess/API/C/WKPage.h
@@ -28,6 +28,7 @@
 
 #include <WebKit2/WKBase.h>
 #include <WebKit2/WKEvent.h>
+#include <WebKit2/WKGeometry.h>
 #include <WebKit2/WKNativeEvent.h>
 
 #ifndef __cplusplus
@@ -138,6 +139,8 @@ typedef void (*WKPageSetStatusTextCallback)(WKPageRef page, WKStringRef text, co
 typedef void (*WKPageMouseDidMoveOverElementCallback)(WKPageRef page, WKEventModifiers modifiers, WKTypeRef userData, const void *clientInfo);
 typedef void (*WKPageContentsSizeChangedCallback)(WKPageRef page, int width, int height, WKFrameRef frame, const void *clientInfo);
 typedef void (*WKPageDidNotHandleKeyEventCallback)(WKPageRef page, WKNativeEventPtr event, const void *clientInfo);
+typedef WKRect (*WKPageGetWindowFrameCallback)(WKPageRef page, const void *clientInfo);
+typedef void (*WKPageSetWindowFrameCallback)(WKPageRef page, WKRect frame, const void *clientInfo);
 
 struct WKPageUIClient {
     int                                                                 version;
@@ -152,6 +155,8 @@ struct WKPageUIClient {
     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
     WKPageContentsSizeChangedCallback                                   contentsSizeChanged;
     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
+    WKPageGetWindowFrameCallback                                        getWindowFrame;
+    WKPageSetWindowFrameCallback                                        setWindowFrame;
 };
 typedef struct WKPageUIClient WKPageUIClient;
 
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.h b/WebKit2/UIProcess/API/mac/PageClientImpl.h
index 748d7e3..e621f3c 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.h
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.h
@@ -56,6 +56,9 @@ private:
     void clearAllEditCommands();
     void setEditCommandState(const String& commandName, bool isEnabled, int state);
 
+    WebCore::FloatRect transformToDeviceSpace(const WebCore::FloatRect&);
+    WebCore::FloatRect transformToUserSpace(const WebCore::FloatRect&);
+
 #if USE(ACCELERATED_COMPOSITING)
     void pageDidEnterAcceleratedCompositing();
     void pageDidLeaveAcceleratedCompositing();
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.mm b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
index b47f310..f005e16 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.mm
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
@@ -30,6 +30,7 @@
 #import "WKViewInternal.h"
 #import "WebEditCommandProxy.h"
 #import <WebCore/Cursor.h>
+#import <WebCore/FloatRect.h>
 #import <WebCore/FoundationExtras.h>
 #import <wtf/PassOwnPtr.h>
 #import <wtf/text/WTFString.h>
@@ -88,7 +89,6 @@ using namespace WebCore;
 
 @end
 
-
 namespace WebKit {
 
 NSString* nsStringFromWebCoreString(const String& string)
@@ -206,6 +206,16 @@ void PageClientImpl::setEditCommandState(const String& commandName, bool isEnabl
     [m_wkView _setUserInterfaceItemState:nsStringFromWebCoreString(commandName) enabled:isEnabled state:newState];
 }
 
+FloatRect PageClientImpl::transformToDeviceSpace(const FloatRect& rect)
+{
+    return [m_wkView _transformToDeviceSpace:rect];
+}
+
+FloatRect PageClientImpl::transformToUserSpace(const FloatRect& rect)
+{
+    return [m_wkView _transformToUserSpace:rect];
+}
+
 #if USE(ACCELERATED_COMPOSITING)
 void PageClientImpl::pageDidEnterAcceleratedCompositing()
 {
diff --git a/WebKit2/UIProcess/API/mac/WKView.mm b/WebKit2/UIProcess/API/mac/WKView.mm
index 0c2e0f8..ec31273 100644
--- a/WebKit2/UIProcess/API/mac/WKView.mm
+++ b/WebKit2/UIProcess/API/mac/WKView.mm
@@ -42,7 +42,9 @@
 #import "WebProcessManager.h"
 #import "WebProcessProxy.h"
 #import <QuartzCore/QuartzCore.h>
+#import <WebCore/FloatRect.h>
 #import <WebCore/IntRect.h>
+#import <WebCore/PlatformScreen.h>
 #import <wtf/RefPtr.h>
 #import <wtf/RetainPtr.h>
 
@@ -298,7 +300,7 @@ EVENT_HANDLER(scrollWheel, Wheel)
 
 - (void)_updateWindowVisibility
 {
-    _data->_page->setWindowIsVisible(![[self window] isMiniaturized]);
+    _data->_page->updateWindowIsVisible(![[self window] isMiniaturized]);
 }
 
 - (BOOL)_ownsWindowGrowBox
@@ -397,7 +399,7 @@ static bool isViewVisible(NSView *view)
 {
     ASSERT([self window]);
 
-    _data->_page->setWindowFrame(enclosingIntRect([[self window] frame]));
+    _data->_page->updateWindowFrame(enclosingIntRect([[self window] frame]));
 }
 
 - (void)viewWillMoveToWindow:(NSWindow *)window
@@ -532,6 +534,16 @@ static bool isViewVisible(NSView *view)
     _data->_menuList.clear();
 }
 
+- (CGRect)_transformToDeviceSpace:(CGRect)rect
+{
+    return toDeviceSpace(rect, [self window]);
+}
+
+- (CGRect)_transformToUserSpace:(CGRect)rect
+{
+    return toUserSpace(rect, [self window]);
+}
+
 // Any non-zero value will do, but using something recognizable might help us debug some day.
 #define TRACKING_RECT_TAG 0xBADFACE
 
diff --git a/WebKit2/UIProcess/API/mac/WKViewInternal.h b/WebKit2/UIProcess/API/mac/WKViewInternal.h
index dae42a4..4f909cb 100644
--- a/WebKit2/UIProcess/API/mac/WKViewInternal.h
+++ b/WebKit2/UIProcess/API/mac/WKViewInternal.h
@@ -33,6 +33,9 @@
 - (void)_setCursor:(NSCursor *)cursor;
 - (void)_setUserInterfaceItemState:(NSString *)commandName enabled:(BOOL)isEnabled state:(int)newState;
 
+- (CGRect)_transformToDeviceSpace:(CGRect)rect;
+- (CGRect)_transformToUserSpace:(CGRect)rect;
+
 #if USE(ACCELERATED_COMPOSITING)
 - (void)_startAcceleratedCompositing:(CALayer *)rootLayer;
 - (void)_stopAcceleratedCompositing;
diff --git a/WebKit2/UIProcess/API/qt/qwkpage.cpp b/WebKit2/UIProcess/API/qt/qwkpage.cpp
index 7d5ec63..aa22fbe 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage.cpp
+++ b/WebKit2/UIProcess/API/qt/qwkpage.cpp
@@ -38,6 +38,7 @@
 #include <QStyle>
 #include <QTouchEvent>
 #include <QtDebug>
+#include <WebCore/FloatRect.h>
 #include <WebKit2/WKFrame.h>
 #include <WebKit2/WKRetainPtr.h>
 
@@ -91,6 +92,16 @@ void QWKPagePrivate::clearAllEditCommands()
 {
 }
 
+FloatRect QWKPagePrivate::transformToDeviceSpace(const FloatRect& rect)
+{
+    return rect;
+}
+
+FloatRect QWKPagePrivate::transformToUserSpace(const FloatRect& rect)
+{
+    return rect;
+}
+
 void QWKPagePrivate::paint(QPainter* painter, QRect area)
 {
     painter->save();
@@ -271,7 +282,9 @@ QWKPage::QWKPage(WKPageNamespaceRef namespaceRef)
         0,  /* setStatusText */
         0,  /* mouseDidMoveOverElement */
         0,  /* contentsSizeChanged */
-        0   /* didNotHandleKeyEvent */
+        0,  /* didNotHandleKeyEvent */
+        0,  /* getWindowRect */
+        0   /* setWindowRect */
     };
     WKPageSetPageUIClient(pageRef(), &uiClient);
 }
diff --git a/WebKit2/UIProcess/API/qt/qwkpage_p.h b/WebKit2/UIProcess/API/qt/qwkpage_p.h
index b7e767d..2d863f9 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage_p.h
+++ b/WebKit2/UIProcess/API/qt/qwkpage_p.h
@@ -55,6 +55,8 @@ public:
     virtual void toolTipChanged(const WTF::String&, const WTF::String&);
     virtual void registerEditCommand(PassRefPtr<WebKit::WebEditCommandProxy>, WebKit::WebPageProxy::UndoOrRedo);
     virtual void clearAllEditCommands();
+    virtual WebCore::FloatRect transformToDeviceSpace(const WebCore::FloatRect&);
+    virtual WebCore::FloatRect transformToUserSpace(const WebCore::FloatRect&);
 
     void paint(QPainter* painter, QRect);
 
diff --git a/WebKit2/UIProcess/PageClient.h b/WebKit2/UIProcess/PageClient.h
index 9099446..3ba21cd 100644
--- a/WebKit2/UIProcess/PageClient.h
+++ b/WebKit2/UIProcess/PageClient.h
@@ -53,6 +53,9 @@ public:
     virtual void clearAllEditCommands() = 0;
     virtual void setEditCommandState(const String& commandName, bool isEnabled, int state) = 0;
 
+    virtual WebCore::FloatRect transformToDeviceSpace(const WebCore::FloatRect&) = 0;
+    virtual WebCore::FloatRect transformToUserSpace(const WebCore::FloatRect&) = 0;
+
 #if USE(ACCELERATED_COMPOSITING)
     virtual void pageDidEnterAcceleratedCompositing() = 0;
     virtual void pageDidLeaveAcceleratedCompositing() = 0;
diff --git a/WebKit2/UIProcess/WebPageProxy.cpp b/WebKit2/UIProcess/WebPageProxy.cpp
index 4b76fba..4561dcb 100644
--- a/WebKit2/UIProcess/WebPageProxy.cpp
+++ b/WebKit2/UIProcess/WebPageProxy.cpp
@@ -30,6 +30,7 @@
 #include "NativeWebKeyboardEvent.h"
 #include "PageClient.h"
 #include "StringPairVector.h"
+#include "WKContextPrivate.h"
 #include "WebBackForwardList.h"
 #include "WebBackForwardListItem.h"
 #include "WebCertificateInfo.h"
@@ -49,8 +50,7 @@
 #include "WebProcessMessages.h"
 #include "WebProcessProxy.h"
 #include "WebURLRequest.h"
-
-#include "WKContextPrivate.h"
+#include <WebCore/FloatRect.h>
 #include <stdio.h>
 
 #ifndef NDEBUG
@@ -371,20 +371,19 @@ void WebPageProxy::setIsInWindow(bool isInWindow)
 }
 
 #if PLATFORM(MAC)
-void WebPageProxy::setWindowIsVisible(bool windowIsVisible)
+void WebPageProxy::updateWindowIsVisible(bool windowIsVisible)
 {
     if (!isValid())
         return;
     process()->send(Messages::WebPage::SetWindowIsVisible(windowIsVisible), m_pageID);
 }
 
-void WebPageProxy::setWindowFrame(const IntRect& windowFrame)
+void WebPageProxy::updateWindowFrame(const IntRect& windowFrame)
 {
     if (!isValid())
         return;
     process()->send(Messages::WebPage::SetWindowFrame(windowFrame), m_pageID);
 }
-
 #endif
 
 void WebPageProxy::handleMouseEvent(const WebMouseEvent& event)
@@ -972,6 +971,16 @@ void WebPageProxy::didValidateMenuItem(const String& commandName, bool isEnabled
     m_pageClient->setEditCommandState(commandName, isEnabled, state);
 }
 
+void WebPageProxy::setWindowFrame(const FloatRect& newWindowFrame)
+{
+    m_uiClient.setWindowFrame(this, m_pageClient->transformToDeviceSpace(newWindowFrame));
+}
+
+void WebPageProxy::getWindowFrame(FloatRect& newWindowFrame)
+{
+    newWindowFrame = m_pageClient->transformToUserSpace(m_uiClient.windowFrame(this));
+}
+
 void WebPageProxy::didReceiveEvent(uint32_t opaqueType, bool handled)
 {
     WebEvent::Type type = static_cast<WebEvent::Type>(opaqueType);
diff --git a/WebKit2/UIProcess/WebPageProxy.h b/WebKit2/UIProcess/WebPageProxy.h
index be81d48..60437a3 100644
--- a/WebKit2/UIProcess/WebPageProxy.h
+++ b/WebKit2/UIProcess/WebPageProxy.h
@@ -56,8 +56,9 @@ namespace CoreIPC {
 }
 
 namespace WebCore {
-    class IntSize;
     class Cursor;
+    class FloatRect;
+    class IntSize;
 }
 
 struct WKContextStatistics;
@@ -143,8 +144,8 @@ public:
 
 // These are only used on Mac currently.
 #if PLATFORM(MAC)
-    void setWindowIsVisible(bool windowIsVisible);
-    void setWindowFrame(const WebCore::IntRect&);
+    void updateWindowIsVisible(bool windowIsVisible);
+    void updateWindowFrame(const WebCore::IntRect&);
 #endif
 
     void handleMouseEvent(const WebMouseEvent&);
@@ -278,6 +279,9 @@ private:
     void setCursor(const WebCore::Cursor&);
     void didValidateMenuItem(const String& commandName, bool isEnabled, int32_t state);
 
+    void setWindowFrame(const WebCore::FloatRect&);
+    void getWindowFrame(WebCore::FloatRect&);
+
     void didReceiveEvent(uint32_t opaqueType, bool handled);
 
     void didRunJavaScriptInMainFrame(const String&, uint64_t);
diff --git a/WebKit2/UIProcess/WebPageProxy.messages.in b/WebKit2/UIProcess/WebPageProxy.messages.in
index 2ef5f37..85a57ba 100644
--- a/WebKit2/UIProcess/WebPageProxy.messages.in
+++ b/WebKit2/UIProcess/WebPageProxy.messages.in
@@ -36,6 +36,8 @@ messages -> WebPageProxy {
     SetStatusText(WTF::String statusText)
     SetToolTip(WTF::String toolTip)
     TakeFocus(bool direction)
+    SetWindowFrame(WebCore::FloatRect windowFrame)
+    GetWindowFrame() -> (WebCore::FloatRect windowFrame)
 
     # Policy messages.
     DecidePolicyForMIMEType(uint64_t frameID, WTF::String MIMEType, WTF::String url, uint64_t listenerID)
diff --git a/WebKit2/UIProcess/WebUIClient.cpp b/WebKit2/UIProcess/WebUIClient.cpp
index ba25f96..9736139 100644
--- a/WebKit2/UIProcess/WebUIClient.cpp
+++ b/WebKit2/UIProcess/WebUIClient.cpp
@@ -28,6 +28,7 @@
 #include "NativeWebKeyboardEvent.h"
 #include "WKAPICast.h"
 #include "WebPageProxy.h"
+#include <WebCore/FloatRect.h>
 #include <WebCore/IntSize.h>
 #include <string.h>
 #include <wtf/text/WTFString.h>
@@ -136,4 +137,20 @@ void WebUIClient::didNotHandleKeyEvent(WebPageProxy* page, const NativeWebKeyboa
     m_pageUIClient.didNotHandleKeyEvent(toAPI(page), event.nativeEvent(), m_pageUIClient.clientInfo);
 }
 
+void WebUIClient::setWindowFrame(WebPageProxy* page, const FloatRect& frame)
+{
+    if (!m_pageUIClient.setWindowFrame)
+        return;
+
+    m_pageUIClient.setWindowFrame(toAPI(page), toAPI(frame), m_pageUIClient.clientInfo);
+}
+
+FloatRect WebUIClient::windowFrame(WebPageProxy* page)
+{
+    if (!m_pageUIClient.getWindowFrame)
+        return FloatRect();
+
+    return toImpl(m_pageUIClient.getWindowFrame(toAPI(page), m_pageUIClient.clientInfo));
+}
+
 } // namespace WebKit
diff --git a/WebKit2/UIProcess/WebUIClient.h b/WebKit2/UIProcess/WebUIClient.h
index 6148c6c..dfd18ba 100644
--- a/WebKit2/UIProcess/WebUIClient.h
+++ b/WebKit2/UIProcess/WebUIClient.h
@@ -58,6 +58,9 @@ public:
     void contentsSizeChanged(WebPageProxy*, const WebCore::IntSize&, WebFrameProxy*);
     void didNotHandleKeyEvent(WebPageProxy*, const NativeWebKeyboardEvent&);
 
+    void setWindowFrame(WebPageProxy*, const WebCore::FloatRect&);
+    WebCore::FloatRect windowFrame(WebPageProxy*);
+
 private:
     WKPageUIClient m_pageUIClient;
 };
diff --git a/WebKit2/UIProcess/win/WebView.cpp b/WebKit2/UIProcess/win/WebView.cpp
index f54da57..a5fdd37 100644
--- a/WebKit2/UIProcess/win/WebView.cpp
+++ b/WebKit2/UIProcess/win/WebView.cpp
@@ -33,6 +33,7 @@
 #include "WebPageNamespace.h"
 #include "WebPageProxy.h"
 #include <Commctrl.h>
+#include <WebCore/FloatRect.h>
 #include <WebCore/IntRect.h>
 #include <WebCore/WebCoreInstanceHandle.h>
 #include <WebCore/WindowMessageBroadcaster.h>
@@ -580,10 +581,20 @@ void WebView::clearAllEditCommands()
 {
 }
 
-void WebView::setEditCommandState(const WTF::String&, bool, int)
+void WebView::setEditCommandState(const String&, bool, int)
 {
 }
 
+FloatRect WebView::transformToDeviceSpace(const FloatRect& rect)
+{
+    return rect;
+}
+
+FloatRect WebView::transformToUserSpace(const FloatRect& rect)
+{
+    return rect;
+}
+
 #if USE(ACCELERATED_COMPOSITING)
 void WebView::pageDidEnterAcceleratedCompositing()
 {
diff --git a/WebKit2/UIProcess/win/WebView.h b/WebKit2/UIProcess/win/WebView.h
index 60254d5..7a85bc3 100644
--- a/WebKit2/UIProcess/win/WebView.h
+++ b/WebKit2/UIProcess/win/WebView.h
@@ -98,6 +98,8 @@ private:
     virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo);
     virtual void clearAllEditCommands();
     virtual void setEditCommandState(const WTF::String&, bool, int);
+    virtual WebCore::FloatRect transformToDeviceSpace(const WebCore::FloatRect&);
+    virtual WebCore::FloatRect transformToUserSpace(const WebCore::FloatRect&);
 
 #if USE(ACCELERATED_COMPOSITING)
     virtual void pageDidEnterAcceleratedCompositing();
diff --git a/WebKit2/WebKit2.pro b/WebKit2/WebKit2.pro
index e783820..6b40fb8 100644
--- a/WebKit2/WebKit2.pro
+++ b/WebKit2/WebKit2.pro
@@ -169,6 +169,7 @@ HEADERS += \
     Platform/WorkQueue.h \
     Shared/API/c/WKBase.h \
     Shared/API/c/WKCertificateInfo.h \
+    Shared/API/c/WKGeometry.h \
     Shared/API/c/WKNumber.h \
     Shared/API/c/WKSerializedScriptValue.h \
     Shared/API/c/WKSharedAPICast.h \
diff --git a/WebKit2/WebKit2.xcodeproj/project.pbxproj b/WebKit2/WebKit2.xcodeproj/project.pbxproj
index 2f7c579..a666620 100644
--- a/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -361,6 +361,7 @@
 		BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC57159115ADAEF001CCAF9 /* WebSystemInterface.h */; };
 		BCC5715C115ADAEF001CCAF9 /* WebSystemInterface.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCC5715A115ADAEF001CCAF9 /* WebSystemInterface.mm */; };
 		BCC57162115ADB42001CCAF9 /* NotImplemented.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC57161115ADB42001CCAF9 /* NotImplemented.h */; };
+		BCC8B374125FB69000DE46A4 /* WKGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC8B373125FB69000DE46A4 /* WKGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		BCC938E11180DE440085E5FE /* WKContextPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC938E01180DE440085E5FE /* WKContextPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		BCCB75C61203A1CE00222D1B /* WebContextMessageKinds.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCB75C51203A1CE00222D1B /* WebContextMessageKinds.h */; };
 		BCD0042D110C1E27003B8A67 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCD0042C110C1E27003B8A67 /* CoreServices.framework */; };
@@ -823,6 +824,7 @@
 		BCC57161115ADB42001CCAF9 /* NotImplemented.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotImplemented.h; sourceTree = "<group>"; };
 		BCC8049D122F0D6B00103529 /* MutableArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MutableArray.cpp; sourceTree = "<group>"; };
 		BCC8049E122F0D6B00103529 /* MutableArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MutableArray.h; sourceTree = "<group>"; };
+		BCC8B373125FB69000DE46A4 /* WKGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKGeometry.h; sourceTree = "<group>"; };
 		BCC938E01180DE440085E5FE /* WKContextPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKContextPrivate.h; sourceTree = "<group>"; };
 		BCCB75C51203A1CE00222D1B /* WebContextMessageKinds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextMessageKinds.h; sourceTree = "<group>"; };
 		BCD0042C110C1E27003B8A67 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
@@ -1685,6 +1687,7 @@
 				BC4075DF124FF0270068F20A /* WKError.cpp */,
 				BC4075E0124FF0270068F20A /* WKError.h */,
 				BC40783C1250FADD0068F20A /* WKEvent.h */,
+				BCC8B373125FB69000DE46A4 /* WKGeometry.h */,
 				BC4075E1124FF0270068F20A /* WKMutableArray.cpp */,
 				BC4075E2124FF0270068F20A /* WKMutableArray.h */,
 				BC4075E3124FF0270068F20A /* WKMutableDictionary.cpp */,
@@ -1965,6 +1968,7 @@
 				BCBD3C3B125BFA7A00D2C29F /* StringPairVector.h in Headers */,
 				1A3DD202125E5A1F004515E6 /* WebFindClient.h in Headers */,
 				1A3DD206125E5A2F004515E6 /* APIClient.h in Headers */,
+				BCC8B374125FB69000DE46A4 /* WKGeometry.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp b/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
index c095ae0..783e7ec 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
@@ -57,15 +57,21 @@ void WebChromeClient::chromeDestroyed()
     delete this;
 }
 
-void WebChromeClient::setWindowRect(const FloatRect& windowRect)
+void WebChromeClient::setWindowRect(const FloatRect& windowFrame)
 {
-    notImplemented();
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::SetWindowFrame(windowFrame), m_page->pageID());
 }
 
 FloatRect WebChromeClient::windowRect()
 {
-    notImplemented();
-    return FloatRect();
+    FloatRect newWindowFrame;
+
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::GetWindowFrame(),
+            Messages::WebPageProxy::GetWindowFrame::Reply(newWindowFrame),
+            m_page->pageID(), CoreIPC::Connection::NoTimeout))
+        return FloatRect();
+
+    return newWindowFrame;
 }
 
 FloatRect WebChromeClient::pageRect()
diff --git a/WebKit2/win/WebKit2.vcproj b/WebKit2/win/WebKit2.vcproj
index dcf0238..6152539 100755
--- a/WebKit2/win/WebKit2.vcproj
+++ b/WebKit2/win/WebKit2.vcproj
@@ -608,6 +608,10 @@
 					>
 				</File>
 				<File
+					RelativePath="..\Shared\API\c\WKGeometry.h"
+					>
+				</File>
+				<File
 					RelativePath="..\Shared\API\c\WKMutableArray.cpp"
 					>
 				</File>
diff --git a/WebKit2/win/WebKit2Generated.make b/WebKit2/win/WebKit2Generated.make
index eb4d71e..8240022 100644
--- a/WebKit2/win/WebKit2Generated.make
+++ b/WebKit2/win/WebKit2Generated.make
@@ -14,6 +14,7 @@ all:
     xcopy /y /d "..\Shared\API\c\WKDictionary.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\Shared\API\c\WKError.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\Shared\API\c\WKEvent.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
+    xcopy /y /d "..\Shared\API\c\WKGeometry.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\Shared\API\c\WKMutableArray.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\Shared\API\c\WKMutableDictionary.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\Shared\API\c\WKNumber.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 63ce821..b5188e7 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,28 @@
+2010-10-09  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Dan Bernstein.
+
+        Need implementation of ChromeClient windowRect related functions.
+        <rdar://problem/8469476>
+        https://bugs.webkit.org/show_bug.cgi?id=47386
+
+        * MiniBrowser/mac/BrowserWindowController.m:
+        (getWindowFrame):
+        (setWindowFrame):
+        (-[BrowserWindowController awakeFromNib]):
+        * WebKitTestRunner/PlatformWebView.h:
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::initialize):
+        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
+        (WTR::PlatformWebView::windowFrame):
+        (WTR::PlatformWebView::setWindowFrame):
+        * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
+        (WTR::PlatformWebView::windowFrame):
+        (WTR::PlatformWebView::setWindowFrame):
+        * WebKitTestRunner/win/PlatformWebViewWin.cpp:
+        (WTR::PlatformWebView::windowFrame):
+        (WTR::PlatformWebView::setWindowFrame):
+
 2010-10-08  Adam Barth  <abarth at webkit.org>
 
         Unreviewed (Eric is on vacation in this change is trivial).
diff --git a/WebKitTools/MiniBrowser/mac/BrowserWindowController.m b/WebKitTools/MiniBrowser/mac/BrowserWindowController.m
index cb4c56a..fd0ff54 100644
--- a/WebKitTools/MiniBrowser/mac/BrowserWindowController.m
+++ b/WebKitTools/MiniBrowser/mac/BrowserWindowController.m
@@ -484,6 +484,22 @@ static void contentsSizeChanged(WKPageRef page, int width, int height, WKFrameRe
     LOG(@"contentsSizeChanged");
 }
 
+static WKRect getWindowFrame(WKPageRef page, const void* clientInfo)
+{
+    CGRect rect = [[(BrowserWindowController *)clientInfo window] frame];
+    WKRect wkRect;
+    wkRect.origin.x = rect.origin.x;
+    wkRect.origin.y = rect.origin.y;
+    wkRect.size.width = rect.size.width;
+    wkRect.size.height = rect.size.height;
+    return wkRect;
+}
+
+static void setWindowFrame(WKPageRef page, WKRect rect, const void* clientInfo)
+{
+    [[(BrowserWindowController *)clientInfo window] setFrame:CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height) display:YES];
+}
+
 - (void)awakeFromNib
 {
     _webView = [[WKView alloc] initWithFrame:[containerView frame] pageNamespaceRef:_pageNamespace];
@@ -538,7 +554,9 @@ static void contentsSizeChanged(WKPageRef page, int width, int height, WKFrameRe
         setStatusText,
         mouseDidMoveOverElement,
         contentsSizeChanged,
-        0           /* didNotHandleKeyEvent */
+        0,          /* didNotHandleKeyEvent */
+        getWindowFrame,
+        setWindowFrame
     };
     WKPageSetPageUIClient(_webView.pageRef, &uiClient);
 }
diff --git a/WebKitTools/WebKitTestRunner/PlatformWebView.h b/WebKitTools/WebKitTestRunner/PlatformWebView.h
index d586d1b..4d2618a 100644
--- a/WebKitTools/WebKitTestRunner/PlatformWebView.h
+++ b/WebKitTools/WebKitTestRunner/PlatformWebView.h
@@ -60,6 +60,9 @@ public:
     void resizeTo(unsigned width, unsigned height);
     void focus();
 
+    WKRect windowFrame();
+    void setWindowFrame(WKRect);
+
 private:
     PlatformWKView m_view;
     PlatformWindow m_window;
diff --git a/WebKitTools/WebKitTestRunner/TestController.cpp b/WebKitTools/WebKitTestRunner/TestController.cpp
index e5cadcd..9bb7cd1 100644
--- a/WebKitTools/WebKitTestRunner/TestController.cpp
+++ b/WebKitTools/WebKitTestRunner/TestController.cpp
@@ -67,6 +67,30 @@ TestController::~TestController()
 {
 }
 
+static WKRect getWindowFrameMainPage(WKPageRef page, const void* clientInfo)
+{
+    PlatformWebView* view = static_cast<TestController*>(const_cast<void*>(clientInfo))->mainWebView();
+    return view->windowFrame();
+}
+
+static void setWindowFrameMainPage(WKPageRef page, WKRect frame, const void* clientInfo)
+{
+    PlatformWebView* view = static_cast<TestController*>(const_cast<void*>(clientInfo))->mainWebView();
+    view->setWindowFrame(frame);
+}
+
+static WKRect getWindowFrameOtherPage(WKPageRef page, const void* clientInfo)
+{
+    PlatformWebView* view = static_cast<PlatformWebView*>(const_cast<void*>(clientInfo));
+    return view->windowFrame();
+}
+
+static void setWindowFrameOtherPage(WKPageRef page, WKRect frame, const void* clientInfo)
+{
+    PlatformWebView* view = static_cast<PlatformWebView*>(const_cast<void*>(clientInfo));
+    view->setWindowFrame(frame);
+}
+
 static void closeOtherPage(WKPageRef page, const void* clientInfo)
 {
     WKPageClose(page);
@@ -93,7 +117,9 @@ static WKPageRef createOtherPage(WKPageRef oldPage, const void*)
         0,
         0,
         0,
-        0
+        0,
+        getWindowFrameOtherPage,
+        setWindowFrameOtherPage
     };
     WKPageSetPageUIClient(newPage, &otherPageUIClient);
 
@@ -174,7 +200,9 @@ void TestController::initialize(int argc, const char* argv[])
         0,
         0,
         0,
-        0
+        0,
+        getWindowFrameMainPage,
+        setWindowFrameMainPage
     };
     WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient);
 
diff --git a/WebKitTools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj b/WebKitTools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
index 6ecbef9..599e09e 100644
--- a/WebKitTools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
+++ b/WebKitTools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
@@ -368,7 +368,14 @@
 			isa = PBXProject;
 			buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "WebKitTestRunner" */;
 			compatibilityVersion = "Xcode 3.1";
+			developmentRegion = English;
 			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+			);
 			mainGroup = 08FB7794FE84155DC02AAC07 /* WebKitTestRunner */;
 			projectDirPath = "";
 			projectRoot = "";
diff --git a/WebKitTools/WebKitTestRunner/mac/PlatformWebViewMac.mm b/WebKitTools/WebKitTestRunner/mac/PlatformWebViewMac.mm
index 96e6526..6080c1f 100644
--- a/WebKitTools/WebKitTestRunner/mac/PlatformWebViewMac.mm
+++ b/WebKitTools/WebKitTestRunner/mac/PlatformWebViewMac.mm
@@ -63,4 +63,21 @@ void PlatformWebView::focus()
     // Implement.
 }
 
+WKRect PlatformWebView::windowFrame()
+{
+    NSRect frame = [m_window frame];
+
+    WKRect wkFrame;
+    wkFrame.origin.x = frame.origin.x;
+    wkFrame.origin.y = frame.origin.y;
+    wkFrame.size.width = frame.size.width;
+    wkFrame.size.height = frame.size.height;
+    return wkFrame;
+}
+
+void PlatformWebView::setWindowFrame(WKRect frame)
+{
+    [m_window setFrame:NSMakeRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height) display:YES];
+}
+
 } // namespace WTR
diff --git a/WebKitTools/WebKitTestRunner/qt/PlatformWebViewQt.cpp b/WebKitTools/WebKitTestRunner/qt/PlatformWebViewQt.cpp
index 4aafceb..d405a0f 100644
--- a/WebKitTools/WebKitTestRunner/qt/PlatformWebViewQt.cpp
+++ b/WebKitTools/WebKitTestRunner/qt/PlatformWebViewQt.cpp
@@ -79,4 +79,21 @@ void PlatformWebView::focus()
     m_view->setFocus(Qt::OtherFocusReason);
 }
 
+WKRect PlatformWebView::windowFrame()
+{
+    // Implement.
+
+    WKRect wkFrame;
+    wkFrame.origin.x = 0;
+    wkFrame.origin.y = 0;
+    wkFrame.size.width = 0;
+    wkFrame.size.height = 0;
+    return wkFrame;
+}
+
+void PlatformWebView::setWindowFrame(WKRect)
+{
+    // Implement.
+}
+
 } // namespace WTR
diff --git a/WebKitTools/WebKitTestRunner/win/PlatformWebViewWin.cpp b/WebKitTools/WebKitTestRunner/win/PlatformWebViewWin.cpp
index b9854c4..9acd236 100644
--- a/WebKitTools/WebKitTestRunner/win/PlatformWebViewWin.cpp
+++ b/WebKitTools/WebKitTestRunner/win/PlatformWebViewWin.cpp
@@ -78,4 +78,21 @@ void PlatformWebView::focus()
     ::SetFocus(::WKViewGetWindow(m_view));
 }
 
+WKRect PlatformWebView::windowFrame()
+{
+    // Implement.
+
+    WKRect wkFrame;
+    wkFrame.origin.x = 0;
+    wkFrame.origin.y = 0;
+    wkFrame.size.width = 0;
+    wkFrame.size.height = 0;
+    return wkFrame;
+}
+
+void PlatformWebView::setWindowFrame(WKRect)
+{
+    // Implement.
+}
+
 } // namespace WTR

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list