webkit_test_runner.h revision 868fa2fe829687343ffae624259930155e16dbd8
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 "third_party/WebKit/Tools/DumpRenderTree/chromium/TestRunner/public/WebPreferences.h" 17#include "third_party/WebKit/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h" 18#include "v8/include/v8.h" 19 20class SkCanvas; 21 22namespace WebKit { 23class WebMediaPlayer; 24class WebMediaPlayerClient; 25struct WebRect; 26} 27 28namespace WebTestRunner { 29class WebTestProxyBase; 30} 31 32namespace webkit_glue { 33class TestMediaStreamClient; 34} 35 36namespace content { 37 38// This is the renderer side of the webkit test runner. 39class WebKitTestRunner : public RenderViewObserver, 40 public RenderViewObserverTracker<WebKitTestRunner>, 41 public WebTestRunner::WebTestDelegate { 42 public: 43 explicit WebKitTestRunner(RenderView* render_view); 44 virtual ~WebKitTestRunner(); 45 46 // RenderViewObserver implementation. 47 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 48 virtual void DidClearWindowObject(WebKit::WebFrame* frame) OVERRIDE; 49 virtual void Navigate(const GURL& url) OVERRIDE; 50 virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame, 51 bool is_new_navigation) OVERRIDE; 52 virtual void DidFailProvisionalLoad( 53 WebKit::WebFrame* frame, const WebKit::WebURLError& error) OVERRIDE; 54 55 // WebTestDelegate implementation. 56 virtual void clearEditCommand(); 57 virtual void setEditCommand(const std::string& name, 58 const std::string& value); 59 virtual void setGamepadData(const WebKit::WebGamepads& gamepads); 60 virtual void printMessage(const std::string& message); 61 virtual void postTask(::WebTestRunner::WebTask* task); 62 virtual void postDelayedTask(::WebTestRunner::WebTask* task, 63 long long ms); 64 virtual WebKit::WebString registerIsolatedFileSystem( 65 const WebKit::WebVector<WebKit::WebString>& absolute_filenames); 66 virtual long long getCurrentTimeInMillisecond(); 67 virtual WebKit::WebString getAbsoluteWebStringFromUTF8Path( 68 const std::string& utf8_path); 69 virtual WebKit::WebURL localFileToDataURL(const WebKit::WebURL& file_url); 70 virtual WebKit::WebURL rewriteLayoutTestsURL(const std::string& utf8_url); 71 virtual ::WebTestRunner::WebPreferences* preferences(); 72 virtual void applyPreferences(); 73 virtual std::string makeURLErrorDescription(const WebKit::WebURLError& error); 74 virtual void setClientWindowRect(const WebKit::WebRect& rect); 75 virtual void enableAutoResizeMode(const WebKit::WebSize& min_size, 76 const WebKit::WebSize& max_size); 77 virtual void disableAutoResizeMode(const WebKit::WebSize& new_size); 78 virtual void showDevTools(); 79 virtual void closeDevTools(); 80 virtual void evaluateInWebInspector(long call_id, const std::string& script); 81 virtual void clearAllDatabases(); 82 virtual void setDatabaseQuota(int quota); 83 virtual void setDeviceScaleFactor(float factor); 84 virtual void setFocus(WebTestRunner::WebTestProxyBase* proxy, bool focus); 85 virtual void setAcceptAllCookies(bool accept); 86 virtual std::string pathToLocalResource(const std::string& resource); 87 virtual void setLocale(const std::string& locale); 88 virtual void testFinished(); 89 virtual void closeRemainingWindows(); 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); 100 virtual WebKit::WebMediaPlayer* createWebMediaPlayer( 101 WebKit::WebFrame* frame, 102 const WebKit::WebURL& url, 103 WebKit::WebMediaPlayerClient* client); 104 105 void Reset(); 106 107 void set_proxy(::WebTestRunner::WebTestProxyBase* proxy) { proxy_ = proxy; } 108 ::WebTestRunner::WebTestProxyBase* proxy() const { return proxy_; } 109 110 private: 111 // Message handlers. 112 void OnSetTestConfiguration(const ShellTestConfiguration& params); 113 void OnSessionHistory( 114 const std::vector<int>& routing_ids, 115 const std::vector<std::vector<PageState> >& session_histories, 116 const std::vector<unsigned>& current_entry_indexes); 117 void OnReset(); 118 void OnNotifyDone(); 119 120 // After finishing the test, retrieves the audio, text, and pixel dumps from 121 // the TestRunner library and sends them to the browser process. 122 void CaptureDump(); 123 124 ::WebTestRunner::WebTestProxyBase* proxy_; 125 126 RenderView* focused_view_; 127 128 ::WebTestRunner::WebPreferences prefs_; 129 130 ShellTestConfiguration test_config_; 131 132 std::vector<int> routing_ids_; 133 std::vector<std::vector<PageState> > session_histories_; 134 std::vector<unsigned> current_entry_indexes_; 135 136 bool is_main_window_; 137 138 bool focus_on_next_commit_; 139 140 scoped_ptr<webkit_glue::TestMediaStreamClient> test_media_stream_client_; 141 142 DISALLOW_COPY_AND_ASSIGN(WebKitTestRunner); 143}; 144 145} // namespace content 146 147#endif // CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_ 148