webkit_test_runner.h revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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. 4 5#ifndef CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_ 6#define CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_ 7 8#include <vector> 9 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 "content/shell/common/test_runner/test_preferences.h" 17#include "content/shell/renderer/test_runner/WebTestDelegate.h" 18#include "third_party/WebKit/public/platform/WebScreenOrientationType.h" 19#include "v8/include/v8.h" 20 21class SkCanvas; 22 23namespace blink { 24class WebDeviceMotionData; 25class WebDeviceOrientationData; 26struct WebRect; 27} 28 29namespace content { 30 31class LeakDetector; 32class WebTestProxyBase; 33struct LeakDetectionResult; 34 35// This is the renderer side of the webkit test runner. 36class WebKitTestRunner : public RenderViewObserver, 37 public RenderViewObserverTracker<WebKitTestRunner>, 38 public WebTestRunner::WebTestDelegate { 39 public: 40 explicit WebKitTestRunner(RenderView* render_view); 41 virtual ~WebKitTestRunner(); 42 43 // RenderViewObserver implementation. 44 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 45 virtual void DidClearWindowObject(blink::WebLocalFrame* frame, 46 int world_id) OVERRIDE; 47 virtual void Navigate(const GURL& url) OVERRIDE; 48 virtual void DidCommitProvisionalLoad(blink::WebLocalFrame* frame, 49 bool is_new_navigation) OVERRIDE; 50 virtual void DidFailProvisionalLoad(blink::WebLocalFrame* frame, 51 const blink::WebURLError& error) OVERRIDE; 52 53 // WebTestDelegate implementation. 54 virtual void clearEditCommand() OVERRIDE; 55 virtual void setEditCommand(const std::string& name, 56 const std::string& value) OVERRIDE; 57 virtual void setGamepadData(const blink::WebGamepads& gamepads) OVERRIDE; 58 virtual void didConnectGamepad(int index, 59 const blink::WebGamepad& gamepad) OVERRIDE; 60 virtual void didDisconnectGamepad(int index, 61 const blink::WebGamepad& gamepad) OVERRIDE; 62 virtual void setDeviceMotionData( 63 const blink::WebDeviceMotionData& data) OVERRIDE; 64 virtual void setDeviceOrientationData( 65 const blink::WebDeviceOrientationData& data) OVERRIDE; 66 virtual void setScreenOrientation( 67 const blink::WebScreenOrientationType& orientation) OVERRIDE; 68 virtual void printMessage(const std::string& message) OVERRIDE; 69 virtual void postTask(::WebTestRunner::WebTask* task) OVERRIDE; 70 virtual void postDelayedTask(::WebTestRunner::WebTask* task, 71 long long ms) OVERRIDE; 72 virtual blink::WebString registerIsolatedFileSystem( 73 const blink::WebVector<blink::WebString>& absolute_filenames) OVERRIDE; 74 virtual long long getCurrentTimeInMillisecond() OVERRIDE; 75 virtual blink::WebString getAbsoluteWebStringFromUTF8Path( 76 const std::string& utf8_path) OVERRIDE; 77 virtual blink::WebURL localFileToDataURL( 78 const blink::WebURL& file_url) OVERRIDE; 79 virtual blink::WebURL rewriteLayoutTestsURL( 80 const std::string& utf8_url) OVERRIDE; 81 virtual TestPreferences* preferences() OVERRIDE; 82 virtual void applyPreferences() OVERRIDE; 83 virtual std::string makeURLErrorDescription(const blink::WebURLError& error); 84 virtual void useUnfortunateSynchronousResizeMode(bool enable) OVERRIDE; 85 virtual void enableAutoResizeMode(const blink::WebSize& min_size, 86 const blink::WebSize& max_size) OVERRIDE; 87 virtual void disableAutoResizeMode(const blink::WebSize& new_size) OVERRIDE; 88 virtual void clearDevToolsLocalStorage() OVERRIDE; 89 virtual void showDevTools(const std::string& settings, 90 const std::string& frontend_url) OVERRIDE; 91 virtual void closeDevTools() OVERRIDE; 92 virtual void evaluateInWebInspector(long call_id, 93 const std::string& script) OVERRIDE; 94 virtual void clearAllDatabases() OVERRIDE; 95 virtual void setDatabaseQuota(int quota) OVERRIDE; 96 virtual void setDeviceScaleFactor(float factor) OVERRIDE; 97 virtual void setFocus(WebTestProxyBase* proxy, bool focus) OVERRIDE; 98 virtual void setAcceptAllCookies(bool accept) OVERRIDE; 99 virtual std::string pathToLocalResource(const std::string& resource) OVERRIDE; 100 virtual void setLocale(const std::string& locale) OVERRIDE; 101 virtual void testFinished() OVERRIDE; 102 virtual void closeRemainingWindows() OVERRIDE; 103 virtual void deleteAllCookies() OVERRIDE; 104 virtual int navigationEntryCount() OVERRIDE; 105 virtual void goToOffset(int offset) OVERRIDE; 106 virtual void reload() OVERRIDE; 107 virtual void loadURLForFrame(const blink::WebURL& url, 108 const std::string& frame_name) OVERRIDE; 109 virtual bool allowExternalPages() OVERRIDE; 110 virtual void captureHistoryForWindow( 111 WebTestProxyBase* proxy, 112 blink::WebVector<blink::WebHistoryItem>* history, 113 size_t* currentEntryIndex) OVERRIDE; 114 115 void Reset(); 116 117 void set_proxy(WebTestProxyBase* proxy) { proxy_ = proxy; } 118 WebTestProxyBase* proxy() const { return proxy_; } 119 120 void ReportLeakDetectionResult(const LeakDetectionResult& result); 121 122 private: 123 // Message handlers. 124 void OnSetTestConfiguration(const ShellTestConfiguration& params); 125 void OnSessionHistory( 126 const std::vector<int>& routing_ids, 127 const std::vector<std::vector<PageState> >& session_histories, 128 const std::vector<unsigned>& current_entry_indexes); 129 void OnReset(); 130 void OnNotifyDone(); 131 void OnTryLeakDetection(); 132 133 // After finishing the test, retrieves the audio, text, and pixel dumps from 134 // the TestRunner library and sends them to the browser process. 135 void CaptureDump(); 136 137 WebTestProxyBase* proxy_; 138 139 RenderView* focused_view_; 140 141 TestPreferences prefs_; 142 143 ShellTestConfiguration test_config_; 144 145 std::vector<int> routing_ids_; 146 std::vector<std::vector<PageState> > session_histories_; 147 std::vector<unsigned> current_entry_indexes_; 148 149 bool is_main_window_; 150 151 bool focus_on_next_commit_; 152 153 scoped_ptr<LeakDetector> leak_detector_; 154 bool needs_leak_detector_; 155 156 DISALLOW_COPY_AND_ASSIGN(WebKitTestRunner); 157}; 158 159} // namespace content 160 161#endif // CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_ 162