| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| 11 * documentation and/or other materials provided with the distribution. | 11 * documentation and/or other materials provided with the distribution. |
| 12 * | 12 * |
| 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
| 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
| 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 #ifndef WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_H__ | 26 #ifndef WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_H_ |
| 27 #define WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_H__ | 27 #define WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_H_ |
| 28 | 28 |
| 29 #pragma once | 29 #pragma once |
| 30 | 30 |
| 31 #include <string> | 31 #include <string> |
| 32 #include <list> | 32 #include <list> |
| 33 | 33 |
| 34 #include "base/basictypes.h" |
| 35 #include "base/gfx/native_widget_types.h" |
| 34 #include "base/ref_counted.h" | 36 #include "base/ref_counted.h" |
| 35 #include "webkit/tools/test_shell/event_sending_controller.h" | 37 #include "webkit/tools/test_shell/event_sending_controller.h" |
| 36 #include "webkit/tools/test_shell/layout_test_controller.h" | 38 #include "webkit/tools/test_shell/layout_test_controller.h" |
| 37 #include "webkit/tools/test_shell/resource.h" | 39 #include "webkit/tools/test_shell/resource.h" |
| 38 #include "webkit/tools/test_shell/text_input_controller.h" | 40 #include "webkit/tools/test_shell/text_input_controller.h" |
| 39 #include "webkit/tools/test_shell/test_webview_delegate.h" | 41 #include "webkit/tools/test_shell/test_webview_delegate.h" |
| 40 #include "webkit/tools/test_shell/webview_host.h" | 42 #include "webkit/tools/test_shell/webview_host.h" |
| 41 #include "webkit/tools/test_shell/webwidget_host.h" | 43 #include "webkit/tools/test_shell/webwidget_host.h" |
| 42 | 44 |
| 43 typedef std::list<HWND> WindowList; | 45 typedef std::list<gfx::WindowHandle> WindowList; |
| 44 | 46 |
| 45 struct WebPreferences; | 47 struct WebPreferences; |
| 46 class TestNavigationEntry; | 48 class TestNavigationEntry; |
| 47 class TestNavigationController; | 49 class TestNavigationController; |
| 48 | 50 |
| 49 class TestShell { | 51 class TestShell { |
| 50 public: | 52 public: |
| 51 struct TestParams { | 53 struct TestParams { |
| 52 // Load the test defaults. | 54 // Load the test defaults. |
| 53 TestParams() : dump_tree(true), dump_pixels(false) { | 55 TestParams() : dump_tree(true), dump_pixels(false) { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 void LoadURLForFrame(const wchar_t* url, const wchar_t* frame_name); | 139 void LoadURLForFrame(const wchar_t* url, const wchar_t* frame_name); |
| 138 void GoBackOrForward(int offset); | 140 void GoBackOrForward(int offset); |
| 139 void Reload(); | 141 void Reload(); |
| 140 bool Navigate(const TestNavigationEntry& entry, bool reload); | 142 bool Navigate(const TestNavigationEntry& entry, bool reload); |
| 141 | 143 |
| 142 bool PromptForSaveFile(const wchar_t* prompt_title, std::wstring* result); | 144 bool PromptForSaveFile(const wchar_t* prompt_title, std::wstring* result); |
| 143 std::wstring GetDocumentText(); | 145 std::wstring GetDocumentText(); |
| 144 void DumpDocumentText(); | 146 void DumpDocumentText(); |
| 145 void DumpRenderTree(); | 147 void DumpRenderTree(); |
| 146 | 148 |
| 147 HWND mainWnd() const { return m_mainWnd; } | 149 gfx::WindowHandle mainWnd() const { return m_mainWnd; } |
| 148 HWND webViewWnd() const { return m_webViewHost->window_handle(); } | 150 gfx::ViewHandle webViewWnd() const { return m_webViewHost->window_handle();
} |
| 149 HWND editWnd() const { return m_editWnd; } | 151 gfx::EditViewHandle editWnd() const { return m_editWnd; } |
| 150 HWND popupWnd() const { return m_popupHost->window_handle(); } | 152 gfx::ViewHandle popupWnd() const { return m_popupHost->window_handle(); } |
| 151 | 153 |
| 152 static WindowList* windowList() { return window_list_; } | 154 static WindowList* windowList() { return window_list_; } |
| 153 | 155 |
| 154 // If shell is non-null, then *shell is assigned upon successful return | 156 // If shell is non-null, then *shell is assigned upon successful return |
| 155 static bool CreateNewWindow(const std::wstring& startingURL, | 157 static bool CreateNewWindow(const std::wstring& startingURL, |
| 156 TestShell** shell = NULL); | 158 TestShell** shell = NULL); |
| 157 | 159 |
| 158 // Implements CreateWebView for TestWebViewDelegate, which in turn | 160 // Implements CreateWebView for TestWebViewDelegate, which in turn |
| 159 // is called as a WebViewDelegate. | 161 // is called as a WebViewDelegate. |
| 160 WebView* CreateWebView(WebView* webview); | 162 WebView* CreateWebView(WebView* webview); |
| 161 WebWidget* CreatePopupWidget(WebView* webview); | 163 WebWidget* CreatePopupWidget(WebView* webview); |
| 162 void ClosePopup(); | 164 void ClosePopup(); |
| 163 | 165 |
| 166 #if defined(OS_WIN) |
| 164 static ATOM RegisterWindowClass(); | 167 static ATOM RegisterWindowClass(); |
| 168 #endif |
| 165 | 169 |
| 166 // Called by the WebView delegate WindowObjectCleared() method, this | 170 // Called by the WebView delegate WindowObjectCleared() method, this |
| 167 // binds the layout_test_controller_ and other C++ controller classes to | 171 // binds the layout_test_controller_ and other C++ controller classes to |
| 168 // window JavaScript objects so they can be accessed by layout tests. | 172 // window JavaScript objects so they can be accessed by layout tests. |
| 169 virtual void BindJSObjectsToWindow(WebFrame* frame); | 173 virtual void BindJSObjectsToWindow(WebFrame* frame); |
| 170 | 174 |
| 171 // Runs a layout test. Loads a single file into the first available | 175 // Runs a layout test. Loads a single file into the first available |
| 172 // window, then dumps the requested text representation to stdout. | 176 // window, then dumps the requested text representation to stdout. |
| 173 // Returns false if the test cannot be run because no windows are open. | 177 // Returns false if the test cannot be run because no windows are open. |
| 174 static bool RunFileTest(const char* filename, const TestParams& params); | 178 static bool RunFileTest(const char* filename, const TestParams& params); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 190 static std::string RewriteLocalUrl(const std::string& url); | 194 static std::string RewriteLocalUrl(const std::string& url); |
| 191 | 195 |
| 192 // Set the timeout for running a test. | 196 // Set the timeout for running a test. |
| 193 static void SetFileTestTimeout(int timeout_ms) { | 197 static void SetFileTestTimeout(int timeout_ms) { |
| 194 file_test_timeout_ms_ = timeout_ms; | 198 file_test_timeout_ms_ = timeout_ms; |
| 195 } | 199 } |
| 196 | 200 |
| 197 // Get the timeout for running a test. | 201 // Get the timeout for running a test. |
| 198 static int GetFileTestTimeout() { return file_test_timeout_ms_; } | 202 static int GetFileTestTimeout() { return file_test_timeout_ms_; } |
| 199 | 203 |
| 204 #if defined(OS_WIN) |
| 200 // Access to the finished event. Used by the static WatchDog | 205 // Access to the finished event. Used by the static WatchDog |
| 201 // thread. | 206 // thread. |
| 202 HANDLE finished_event() { return finished_event_; } | 207 HANDLE finished_event() { return finished_event_; } |
| 208 #endif |
| 203 | 209 |
| 204 // Have the shell print the StatsTable to stdout on teardown. | 210 // Have the shell print the StatsTable to stdout on teardown. |
| 205 void DumpStatsTableOnExit() { dump_stats_table_on_exit_ = true; } | 211 void DumpStatsTableOnExit() { dump_stats_table_on_exit_ = true; } |
| 206 | 212 |
| 207 void CallJSGC(); | 213 void CallJSGC(); |
| 208 | 214 |
| 209 void set_is_modal(bool value) { is_modal_ = value; } | 215 void set_is_modal(bool value) { is_modal_ = value; } |
| 210 bool is_modal() const { return is_modal_; } | 216 bool is_modal() const { return is_modal_; } |
| 211 | 217 |
| 212 protected: | 218 protected: |
| 213 bool Initialize(const std::wstring& startingURL); | 219 bool Initialize(const std::wstring& startingURL); |
| 214 void SizeToDefault(); | 220 void SizeToDefault(); |
| 215 void SizeTo(int width, int height); | 221 void SizeTo(int width, int height); |
| 216 void ResizeSubViews(); | 222 void ResizeSubViews(); |
| 217 | 223 |
| 224 #if defined(OS_WIN) |
| 218 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); | 225 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); |
| 219 static LRESULT CALLBACK EditWndProc(HWND, UINT, WPARAM, LPARAM); | 226 static LRESULT CALLBACK EditWndProc(HWND, UINT, WPARAM, LPARAM); |
| 227 #endif |
| 220 | 228 |
| 221 protected: | 229 protected: |
| 222 HWND m_mainWnd; | 230 gfx::WindowHandle m_mainWnd; |
| 223 HWND m_editWnd; | 231 gfx::EditViewHandle m_editWnd; |
| 224 scoped_ptr<WebViewHost> m_webViewHost; | 232 scoped_ptr<WebViewHost> m_webViewHost; |
| 225 WebWidgetHost* m_popupHost; | 233 WebWidgetHost* m_popupHost; |
| 234 #if defined(OS_WIN) |
| 226 WNDPROC default_edit_wnd_proc_; | 235 WNDPROC default_edit_wnd_proc_; |
| 236 #endif |
| 227 | 237 |
| 228 // Primitive focus controller for layout test mode. | 238 // Primitive focus controller for layout test mode. |
| 229 WebWidgetHost* m_focusedWidgetHost; | 239 WebWidgetHost* m_focusedWidgetHost; |
| 230 | 240 |
| 231 private: | 241 private: |
| 232 // A set of all our windows. | 242 // A set of all our windows. |
| 233 static WindowList* window_list_; | 243 static WindowList* window_list_; |
| 244 #if defined(OS_MACOSX) |
| 245 static std::map<gfx::WindowHandle, TestShell *> window_map_; |
| 246 #endif |
| 234 | 247 |
| 248 #if defined(OS_WIN) |
| 235 static HINSTANCE instance_handle_; | 249 static HINSTANCE instance_handle_; |
| 250 #endif |
| 236 | 251 |
| 237 // False when the app is being run using the --layout-tests switch. | 252 // False when the app is being run using the --layout-tests switch. |
| 238 static bool interactive_; | 253 static bool interactive_; |
| 239 | 254 |
| 240 // Timeout for page load when running non-interactive file tests, in ms. | 255 // Timeout for page load when running non-interactive file tests, in ms. |
| 241 static int file_test_timeout_ms_; | 256 static int file_test_timeout_ms_; |
| 242 | 257 |
| 243 scoped_ptr<LayoutTestController> layout_test_controller_; | 258 scoped_ptr<LayoutTestController> layout_test_controller_; |
| 244 | 259 |
| 245 scoped_ptr<EventSendingController> event_sending_controller_; | 260 scoped_ptr<EventSendingController> event_sending_controller_; |
| 246 | 261 |
| 247 scoped_ptr<TextInputController> text_input_controller_; | 262 scoped_ptr<TextInputController> text_input_controller_; |
| 248 | 263 |
| 249 scoped_ptr<TestNavigationController> navigation_controller_; | 264 scoped_ptr<TestNavigationController> navigation_controller_; |
| 250 | 265 |
| 251 scoped_refptr<TestWebViewDelegate> delegate_; | 266 scoped_refptr<TestWebViewDelegate> delegate_; |
| 252 | 267 |
| 253 // True while a test is preparing to run | 268 // True while a test is preparing to run |
| 254 bool test_is_preparing_; | 269 bool test_is_preparing_; |
| 255 | 270 |
| 256 // True while a test is running | 271 // True while a test is running |
| 257 bool test_is_pending_; | 272 bool test_is_pending_; |
| 258 | 273 |
| 259 // True if driven from a nested message loop. | 274 // True if driven from a nested message loop. |
| 260 bool is_modal_; | 275 bool is_modal_; |
| 261 | 276 |
| 262 // The preferences for the test shell. | 277 // The preferences for the test shell. |
| 263 static WebPreferences* web_prefs_; | 278 static WebPreferences* web_prefs_; |
| 264 | 279 |
| 280 #if defined(OS_WIN) |
| 265 // Used by the watchdog to know when it's finished. | 281 // Used by the watchdog to know when it's finished. |
| 266 HANDLE finished_event_; | 282 HANDLE finished_event_; |
| 283 #endif |
| 267 | 284 |
| 268 // Dump the stats table counters on exit. | 285 // Dump the stats table counters on exit. |
| 269 bool dump_stats_table_on_exit_; | 286 bool dump_stats_table_on_exit_; |
| 270 }; | 287 }; |
| 271 | 288 |
| 272 #endif // WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_H__ | 289 #endif // WEBKIT_TOOLS_TEST_SHELL_TEST_SHELL_H_ |
| OLD | NEW |