webkit_test_runner.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
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/public/testing/WebPreferences.h" 17#include "third_party/WebKit/public/testing/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 content { 33class ShellMediaStreamClient; 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(WebKit::WebFrame* frame) OVERRIDE; 46 virtual void Navigate(const GURL& url) OVERRIDE; 47 virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame, 48 bool is_new_navigation) OVERRIDE; 49 virtual void DidFailProvisionalLoad( 50 WebKit::WebFrame* frame, const WebKit::WebURLError& error) OVERRIDE; 51 52 // WebTestDelegate implementation. 53 virtual void clearEditCommand(); 54 virtual void setEditCommand(const std::string& name, 55 const std::string& value); 56 virtual void setGamepadData(const WebKit::WebGamepads& gamepads); 57 virtual void printMessage(const std::string& message); 58 virtual void postTask(::WebTestRunner::WebTask* task); 59 virtual void postDelayedTask(::WebTestRunner::WebTask* task, 60 long long ms); 61 virtual WebKit::WebString registerIsolatedFileSystem( 62 const WebKit::WebVector<WebKit::WebString>& absolute_filenames); 63 virtual long long getCurrentTimeInMillisecond(); 64 virtual WebKit::WebString getAbsoluteWebStringFromUTF8Path( 65 const std::string& utf8_path); 66 virtual WebKit::WebURL localFileToDataURL(const WebKit::WebURL& file_url); 67 virtual WebKit::WebURL rewriteLayoutTestsURL(const std::string& utf8_url); 68 virtual ::WebTestRunner::WebPreferences* preferences(); 69 virtual void applyPreferences(); 70 virtual std::string makeURLErrorDescription(const WebKit::WebURLError& error); 71 virtual void setClientWindowRect(const WebKit::WebRect& rect); 72 virtual void enableAutoResizeMode(const WebKit::WebSize& min_size, 73 const WebKit::WebSize& max_size); 74 virtual void disableAutoResizeMode(const WebKit::WebSize& new_size); 75 virtual void showDevTools(); 76 virtual void closeDevTools(); 77 virtual void evaluateInWebInspector(long call_id, const std::string& script); 78 virtual void clearAllDatabases(); 79 virtual void setDatabaseQuota(int quota); 80 virtual void setDeviceScaleFactor(float factor); 81 virtual void setFocus(WebTestRunner::WebTestProxyBase* proxy, bool focus); 82 virtual void setAcceptAllCookies(bool accept); 83 virtual std::string pathToLocalResource(const std::string& resource); 84 virtual void setLocale(const std::string& locale); 85 virtual void testFinished(); 86 virtual void closeRemainingWindows(); 87 virtual int navigationEntryCount(); 88 virtual void goToOffset(int offset); 89 virtual void reload(); 90 virtual void loadURLForFrame(const WebKit::WebURL& url, 91 const std::string& frame_name); 92 virtual bool allowExternalPages(); 93 virtual void captureHistoryForWindow( 94 WebTestRunner::WebTestProxyBase* proxy, 95 WebKit::WebVector<WebKit::WebHistoryItem>* history, 96 size_t* currentEntryIndex); 97 98 // TODO(scherkus): Remove once https://codereview.chromium.org/18130006 99 // rolls into Chromium. 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 // TODO(scherkus): Remove this after switching to using 141 // RenderViewImpl::createMediaPlayer() http://crbug.com/239826 142 scoped_ptr<ShellMediaStreamClient> shell_media_stream_client_; 143 144 DISALLOW_COPY_AND_ASSIGN(WebKitTestRunner); 145}; 146 147} // namespace content 148 149#endif // CONTENT_SHELL_WEBKIT_TEST_RUNNER_H_ 150