Title: [121453] trunk/Tools
Revision
121453
Author
[email protected]
Date
2012-06-28 12:45:09 -0700 (Thu, 28 Jun 2012)

Log Message

[Chromium] Chromium's LayoutTestController is missing setBackingScaleFactor
https://bugs.webkit.org/show_bug.cgi?id=83635

Patch by Terry Anderson <[email protected]> on 2012-06-28
Reviewed by Adam Barth.

Added InvokeCallbackTask, a new derived class of MethodTask. When
setBackingScaleFactor is called, a call to setDeviceScaleFactor in
WebView is made and then postTask is used to invoke the callback
function specified in testRunner.setBackingScaleFactor.

* DumpRenderTree/chromium/LayoutTestController.cpp:
(LayoutTestController::LayoutTestController):
(InvokeCallbackTask):
(InvokeCallbackTask::InvokeCallbackTask):
(InvokeCallbackTask::runIfValid):
(LayoutTestController::setBackingScaleFactor):
* DumpRenderTree/chromium/LayoutTestController.h:
(LayoutTestController):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (121452 => 121453)


--- trunk/Tools/ChangeLog	2012-06-28 19:37:20 UTC (rev 121452)
+++ trunk/Tools/ChangeLog	2012-06-28 19:45:09 UTC (rev 121453)
@@ -1,3 +1,24 @@
+2012-06-28  Terry Anderson  <[email protected]>
+
+        [Chromium] Chromium's LayoutTestController is missing setBackingScaleFactor
+        https://bugs.webkit.org/show_bug.cgi?id=83635
+
+        Reviewed by Adam Barth.
+
+        Added InvokeCallbackTask, a new derived class of MethodTask. When
+        setBackingScaleFactor is called, a call to setDeviceScaleFactor in
+        WebView is made and then postTask is used to invoke the callback
+        function specified in testRunner.setBackingScaleFactor. 
+
+        * DumpRenderTree/chromium/LayoutTestController.cpp:
+        (LayoutTestController::LayoutTestController):
+        (InvokeCallbackTask):
+        (InvokeCallbackTask::InvokeCallbackTask):
+        (InvokeCallbackTask::runIfValid):
+        (LayoutTestController::setBackingScaleFactor):
+        * DumpRenderTree/chromium/LayoutTestController.h:
+        (LayoutTestController):
+
 2012-06-28  Ojan Vafai  <[email protected]>
 
         Make rebaseline-test and rebaseline-expectations work for non-Chromium ports

Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp (121452 => 121453)


--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp	2012-06-28 19:37:20 UTC (rev 121452)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp	2012-06-28 19:45:09 UTC (rev 121453)
@@ -73,10 +73,7 @@
 #include <limits>
 #include <sstream>
 #include <wtf/text/WTFString.h>
-
-#if OS(WINDOWS)
 #include <wtf/OwnArrayPtr.h>
-#endif
 
 #if OS(LINUX) || OS(ANDROID)
 #include "linux/WebFontRendering.h"
@@ -221,6 +218,7 @@
     bindMethod("setScrollbarPolicy", &LayoutTestController::setScrollbarPolicy);
     bindMethod("setSelectTrailingWhitespaceEnabled", &LayoutTestController::setSelectTrailingWhitespaceEnabled);
     bindMethod("setTextSubpixelPositioning", &LayoutTestController::setTextSubpixelPositioning);
+    bindMethod("setBackingScaleFactor", &LayoutTestController::setBackingScaleFactor);
     bindMethod("setSmartInsertDeleteEnabled", &LayoutTestController::setSmartInsertDeleteEnabled);
     bindMethod("setStopProvisionalFrameLoads", &LayoutTestController::setStopProvisionalFrameLoads);
     bindMethod("setTabKeyCyclesThroughElements", &LayoutTestController::setTabKeyCyclesThroughElements);
@@ -2211,6 +2209,40 @@
     result->setNull();
 }
 
+class InvokeCallbackTask : public MethodTask<LayoutTestController> {
+public:
+    InvokeCallbackTask(LayoutTestController* object, PassOwnArrayPtr<CppVariant> callbackArguments, uint32_t numberOfArguments)
+        : MethodTask<LayoutTestController>(object)
+        , m_callbackArguments(callbackArguments)
+        , m_numberOfArguments(numberOfArguments)
+    {
+    }
+
+    virtual void runIfValid()
+    {
+        CppVariant invokeResult;
+        m_callbackArguments[0].invokeDefault(m_callbackArguments.get(), m_numberOfArguments, invokeResult);
+    }
+
+private:
+    OwnArrayPtr<CppVariant> m_callbackArguments;
+    uint32_t m_numberOfArguments;
+};
+
+void LayoutTestController::setBackingScaleFactor(const CppArgumentList& arguments, CppVariant* result)
+{
+    if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isObject())
+        return;
+    
+    float value = arguments[0].value.doubleValue;
+    m_shell->webView()->setDeviceScaleFactor(value);
+
+    OwnArrayPtr<CppVariant> callbackArguments = adoptArrayPtr(new CppVariant[1]);
+    callbackArguments[0].set(arguments[1]);
+    result->setNull();
+    postTask(new InvokeCallbackTask(this, callbackArguments.release(), 1));
+}
+
 void LayoutTestController::setPluginsEnabled(const CppArgumentList& arguments, CppVariant* result)
 {
     if (arguments.size() > 0 && arguments[0].isBool()) {

Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h (121452 => 121453)


--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h	2012-06-28 19:37:20 UTC (rev 121452)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h	2012-06-28 19:45:09 UTC (rev 121453)
@@ -453,6 +453,9 @@
     // resulting in the changed setting being ignored.
     void setTextSubpixelPositioning(const CppArgumentList&, CppVariant*);
 
+    // Used to set the device scale factor.
+    void setBackingScaleFactor(const CppArgumentList&, CppVariant*);
+
 public:
     // The following methods are not exposed to _javascript_.
     void setWorkQueueFrozen(bool frozen) { m_workQueue.setFrozen(frozen); }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to