1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_
6 #define CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_
10 #include "base/files/file_path.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "content/public/common/page_state.h"
13 #include "content/public/renderer/render_view_observer.h"
14 #include "content/public/renderer/render_view_observer_tracker.h"
15 #include "content/shell/common/shell_test_configuration.h"
16 #include "third_party/WebKit/public/testing/WebPreferences.h"
17 #include "third_party/WebKit/public/testing/WebTestDelegate.h"
18 #include "v8/include/v8.h"
23 class WebDeviceMotionData;
24 class WebDeviceOrientationData;
28 namespace WebTestRunner {
29 class WebTestProxyBase;
34 // This is the renderer side of the webkit test runner.
35 class WebKitTestRunner : public RenderViewObserver,
36 public RenderViewObserverTracker<WebKitTestRunner>,
37 public WebTestRunner::WebTestDelegate {
39 explicit WebKitTestRunner(RenderView* render_view);
40 virtual ~WebKitTestRunner();
42 // RenderViewObserver implementation.
43 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
44 virtual void DidClearWindowObject(WebKit::WebFrame* frame) OVERRIDE;
45 virtual void Navigate(const GURL& url) OVERRIDE;
46 virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame,
47 bool is_new_navigation) OVERRIDE;
48 virtual void DidFailProvisionalLoad(
49 WebKit::WebFrame* frame, const WebKit::WebURLError& error) OVERRIDE;
51 // WebTestDelegate implementation.
52 virtual void clearEditCommand();
53 virtual void setEditCommand(const std::string& name,
54 const std::string& value);
55 virtual void setGamepadData(const WebKit::WebGamepads& gamepads);
56 virtual void setDeviceMotionData(const WebKit::WebDeviceMotionData& data);
57 virtual void setDeviceOrientationData(
58 const WebKit::WebDeviceOrientationData& data);
59 virtual void printMessage(const std::string& message);
60 virtual void postTask(::WebTestRunner::WebTask* task);
61 virtual void postDelayedTask(::WebTestRunner::WebTask* task,
63 virtual WebKit::WebString registerIsolatedFileSystem(
64 const WebKit::WebVector<WebKit::WebString>& absolute_filenames);
65 virtual long long getCurrentTimeInMillisecond();
66 virtual WebKit::WebString getAbsoluteWebStringFromUTF8Path(
67 const std::string& utf8_path);
68 virtual WebKit::WebURL localFileToDataURL(const WebKit::WebURL& file_url);
69 virtual WebKit::WebURL rewriteLayoutTestsURL(const std::string& utf8_url);
70 virtual ::WebTestRunner::WebPreferences* preferences();
71 virtual void applyPreferences();
72 virtual std::string makeURLErrorDescription(const WebKit::WebURLError& error);
73 virtual void useUnfortunateSynchronousResizeMode(bool enable);
74 virtual void enableAutoResizeMode(const WebKit::WebSize& min_size,
75 const WebKit::WebSize& max_size);
76 virtual void disableAutoResizeMode(const WebKit::WebSize& new_size);
77 virtual void showDevTools();
78 virtual void closeDevTools();
79 virtual void evaluateInWebInspector(long call_id, const std::string& script);
80 virtual void clearAllDatabases();
81 virtual void setDatabaseQuota(int quota);
82 virtual void setDeviceScaleFactor(float factor);
83 virtual void setFocus(WebTestRunner::WebTestProxyBase* proxy, bool focus);
84 virtual void setAcceptAllCookies(bool accept);
85 virtual std::string pathToLocalResource(const std::string& resource);
86 virtual void setLocale(const std::string& locale);
87 virtual void testFinished();
88 virtual void closeRemainingWindows();
89 virtual void deleteAllCookies();
90 virtual int navigationEntryCount();
91 virtual void goToOffset(int offset);
92 virtual void reload();
93 virtual void loadURLForFrame(const WebKit::WebURL& url,
94 const std::string& frame_name);
95 virtual bool allowExternalPages();
96 virtual void captureHistoryForWindow(
97 WebTestRunner::WebTestProxyBase* proxy,
98 WebKit::WebVector<WebKit::WebHistoryItem>* history,
99 size_t* currentEntryIndex);
103 void set_proxy(::WebTestRunner::WebTestProxyBase* proxy) { proxy_ = proxy; }
104 ::WebTestRunner::WebTestProxyBase* proxy() const { return proxy_; }
108 void OnSetTestConfiguration(const ShellTestConfiguration& params);
109 void OnSessionHistory(
110 const std::vector<int>& routing_ids,
111 const std::vector<std::vector<PageState> >& session_histories,
112 const std::vector<unsigned>& current_entry_indexes);
116 // After finishing the test, retrieves the audio, text, and pixel dumps from
117 // the TestRunner library and sends them to the browser process.
120 ::WebTestRunner::WebTestProxyBase* proxy_;
122 RenderView* focused_view_;
124 ::WebTestRunner::WebPreferences prefs_;
126 ShellTestConfiguration test_config_;
128 std::vector<int> routing_ids_;
129 std::vector<std::vector<PageState> > session_histories_;
130 std::vector<unsigned> current_entry_indexes_;
132 bool is_main_window_;
134 bool focus_on_next_commit_;
136 DISALLOW_COPY_AND_ASSIGN(WebKitTestRunner);
139 } // namespace content
141 #endif // CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_