2011-06-28 Hans Wennborg <hans@chromium.org>
[WebKit-https.git] / Tools / DumpRenderTree / chromium / TestShell.h
index 8a1cbac..b3548cb 100644 (file)
@@ -54,17 +54,17 @@ class WebNotificationPresenter;
 class WebView;
 class WebURL;
 }
-namespace skia {
-class PlatformCanvas;
-}
 
 class DRTDevToolsAgent;
 class DRTDevToolsCallArgs;
 class DRTDevToolsClient;
+class WebPermissions;
 
 struct TestParams {
     bool dumpTree;
     bool dumpPixels;
+    bool debugRenderTree;
+    bool debugLayerTree;
     bool printSeparators;
     WebKit::WebURL testUrl;
     // Resultant image file name. Required only if the test_shell mode.
@@ -74,7 +74,9 @@ struct TestParams {
     TestParams()
         : dumpTree(true)
         , dumpPixels(false)
-        , printSeparators(false) {}
+        , debugRenderTree(false)
+        , debugLayerTree(false)
+        , printSeparators(false) { }
 };
 
 class TestShell {
@@ -85,7 +87,7 @@ public:
     // The main WebView.
     WebKit::WebView* webView() const { return m_webView; }
     // Returns the host for the main WebView.
-    WebViewHost* webViewHost() const { return m_webViewHost; }
+    WebViewHost* webViewHost() const { return m_webViewHost.get(); }
     LayoutTestController* layoutTestController() const { return m_layoutTestController.get(); }
     EventSender* eventSender() const { return m_eventSender.get(); }
     AccessibilityController* accessibilityController() const { return m_accessibilityController.get(); }
@@ -95,6 +97,8 @@ public:
     WebPreferences* preferences() { return &m_prefs; }
     void applyPreferences() { m_prefs.applyTo(m_webView); }
 
+    WebPermissions* webPermissions() { return m_webPermissions.get(); }
+
     void bindJSObjectsToWindow(WebKit::WebFrame*);
     void runFileTest(const TestParams&);
     void callJSGC();
@@ -102,7 +106,7 @@ public:
     void waitTestFinished();
 
     // Operations to the main window.
-    void loadURL(const WebKit::WebURL& url);
+    void loadURL(const WebKit::WebURL&);
     void reload();
     void goToOffset(int offset);
     int navigationEntryCount() const;
@@ -125,10 +129,13 @@ public:
     void setAllowExternalPages(bool allowExternalPages) { m_allowExternalPages = allowExternalPages; }
 
     void setAcceleratedCompositingEnabled(bool enabled) { m_acceleratedCompositingEnabled = enabled; }
+    void setCompositeToTexture(bool enabled) { m_compositeToTexture = enabled; }
+    void setForceCompositingMode(bool enabled) { m_forceCompositingMode = enabled; }
     void setAccelerated2dCanvasEnabled(bool enabled) { m_accelerated2dCanvasEnabled = enabled; }
-
+    void setLegacyAccelerated2dCanvasEnabled(bool enabled) { m_legacyAccelerated2dCanvasEnabled = enabled; }
+    void setAcceleratedDrawingEnabled(bool enabled) { m_acceleratedDrawingEnabled = enabled; }
 #if defined(OS_WIN)
-    // Access to the finished event.  Used by the static WatchDog thread.
+    // Access to the finished event. Used by the static WatchDog thread.
     HANDLE finishedEvent() { return m_finishedEvent; }
 #endif
 
@@ -137,15 +144,15 @@ public:
     int layoutTestTimeoutForWatchDog() { return layoutTestTimeout() + 1000; }
     void setLayoutTestTimeout(int timeout) { m_timeout = timeout; }
 
-    // Number of times to load each URL.
-    int loadCount() { return m_loadCount; }
-    void setLoadCount(int loadCount) { m_loadCount = loadCount; }
+    // V8 JavaScript stress test options.
+    int stressOpt() { return m_stressOpt; }
+    void setStressOpt(bool stressOpt) { m_stressOpt = stressOpt; }
+    int stressDeopt() { return m_stressDeopt; }
+    void setStressDeopt(int stressDeopt) { m_stressDeopt = stressDeopt; }
 
-    // The JavaScript flags are specified as a vector of strings. Each element of the vector is full flags string
-    // which can contain multiple flags (e.g. "--xxx --yyy"). With multiple load testing it is possible to specify
-    // separate sets of flags to each load.
-    std::string javaScriptFlagsForLoad(size_t load) { return (load < m_javaScriptFlags.size()) ? m_javaScriptFlags[load] : ""; }
-    void setJavaScriptFlags(Vector<std::string> javaScriptFlags) { m_javaScriptFlags = javaScriptFlags; }
+    // The JavaScript flags specified as a strings.
+    std::string javaScriptFlags() { return m_javaScriptFlags; }
+    void setJavaScriptFlags(std::string javaScriptFlags) { m_javaScriptFlags = javaScriptFlags; }
 
     // Set whether to dump when the loaded page has finished processing. This is used with multiple load
     // testing where we only want to have the output from the last load.
@@ -166,15 +173,18 @@ public:
 
     static const int virtualWindowBorder = 3;
 
+    typedef Vector<WebViewHost*> WindowList;
+    WindowList windowList() const { return m_windowList; }
+
 private:
-    WebViewHost* createNewWindow(const WebKit::WebURL&, DRTDevToolsAgent* devToolsAgent);
+    WebViewHost* createNewWindow(const WebKit::WebURL&, DRTDevToolsAgent*);
     void createMainWindow();
     void createDRTDevToolsClient(DRTDevToolsAgent*);
 
     void resetWebSettings(WebKit::WebView&);
     void dump();
     std::string dumpAllBackForwardLists();
-    void dumpImage(skia::PlatformCanvas*) const;
+    void dumpImage(SkCanvas*) const;
 
     bool m_testIsPending;
     bool m_testIsPreparing;
@@ -182,8 +192,11 @@ private:
     WebKit::WebView* m_webView;
     WebKit::WebWidget* m_focusedWidget;
     bool m_testShellMode;
-    WebViewHost* m_webViewHost;
     WebViewHost* m_devTools;
+
+    // Be careful of the destruction order of the following objects.
+    OwnPtr<TestEventPrinter> m_printer;
+    OwnPtr<WebPermissions> m_webPermissions;
     OwnPtr<DRTDevToolsAgent> m_drtDevToolsAgent;
     OwnPtr<DRTDevToolsClient> m_drtDevToolsClient;
     OwnPtr<AccessibilityController> m_accessibilityController;
@@ -192,27 +205,35 @@ private:
     OwnPtr<PlainTextController> m_plainTextController;
     OwnPtr<TextInputController> m_textInputController;
     OwnPtr<NotificationPresenter> m_notificationPresenter;
-    OwnPtr<TestEventPrinter> m_printer;
+    OwnPtr<WebViewHost> m_webViewHost;
+
     TestParams m_params;
     int m_timeout; // timeout value in millisecond
     bool m_allowExternalPages;
     bool m_acceleratedCompositingEnabled;
+    bool m_compositeToTexture;
+    bool m_forceCompositingMode;
     bool m_accelerated2dCanvasEnabled;
+    bool m_legacyAccelerated2dCanvasEnabled;
+    bool m_acceleratedDrawingEnabled;
     WebPreferences m_prefs;
-    int m_loadCount;
-    Vector<std::string> m_javaScriptFlags;
+    bool m_stressOpt;
+    bool m_stressDeopt;
+    std::string m_javaScriptFlags;
     bool m_dumpWhenFinished;
 
 
     // List of all windows in this process.
     // The main window should be put into windowList[0].
-    typedef Vector<WebViewHost*> WindowList;
     WindowList m_windowList;
 
 #if defined(OS_WIN)
     // Used by the watchdog to know when it's finished.
     HANDLE m_finishedEvent;
 #endif
+
+    // Temporary directory for IndexedDB (LevelDB doesn't support in-memory databases.)
+    OwnPtr<webkit_support::ScopedTempDirectory> m_tempIndexedDBDirectory;
 };
 
 void platformInit(int*, char***);