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