Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: webkit/support/webkit_support.cc

Issue 10703114: Adding support for overriding TestWebKitPlatformSupport in DumpRenderTree (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: "Fixed review comments" Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/support/webkit_support.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/support/webkit_support.h" 5 #include "webkit/support/webkit_support.h"
6 6
7 #include "base/at_exit.h" 7 #include "base/at_exit.h"
8 #include "base/base64.h" 8 #include "base/base64.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 class TestEnvironment { 142 class TestEnvironment {
143 public: 143 public:
144 #if defined(OS_ANDROID) 144 #if defined(OS_ANDROID)
145 // Android UI message loop goes through Java, so don't use it in tests. 145 // Android UI message loop goes through Java, so don't use it in tests.
146 typedef MessageLoop MessageLoopType; 146 typedef MessageLoop MessageLoopType;
147 #else 147 #else
148 typedef MessageLoopForUI MessageLoopType; 148 typedef MessageLoopForUI MessageLoopType;
149 #endif 149 #endif
150 150
151 TestEnvironment(bool unit_test_mode, 151 TestEnvironment(bool unit_test_mode,
152 base::AtExitManager* existing_at_exit_manager) { 152 base::AtExitManager* existing_at_exit_manager,
153 WebKit::Platform* shadow_platform_delegate) {
153 if (unit_test_mode) { 154 if (unit_test_mode) {
154 logging::SetLogAssertHandler(UnitTestAssertHandler); 155 logging::SetLogAssertHandler(UnitTestAssertHandler);
155 } else { 156 } else {
156 // The existing_at_exit_manager must be not NULL. 157 // The existing_at_exit_manager must be not NULL.
157 at_exit_manager_.reset(existing_at_exit_manager); 158 at_exit_manager_.reset(existing_at_exit_manager);
158 InitLogging(); 159 InitLogging();
159 } 160 }
160 main_message_loop_.reset(new MessageLoopType); 161 main_message_loop_.reset(new MessageLoopType);
162
161 // TestWebKitPlatformSupport must be instantiated after MessageLoopType. 163 // TestWebKitPlatformSupport must be instantiated after MessageLoopType.
162 webkit_platform_support_.reset( 164 webkit_platform_support_.reset(
163 new TestWebKitPlatformSupport(unit_test_mode)); 165 new TestWebKitPlatformSupport(unit_test_mode,
166 shadow_platform_delegate));
164 167
165 #if defined(OS_ANDROID) 168 #if defined(OS_ANDROID)
166 media_player_manager_.reset( 169 media_player_manager_.reset(
167 new webkit_media::WebMediaPlayerManagerAndroid()); 170 new webkit_media::WebMediaPlayerManagerAndroid());
168 #endif 171 #endif
169 } 172 }
170 173
171 ~TestEnvironment() { 174 ~TestEnvironment() {
172 SimpleResourceLoaderBridge::Shutdown(); 175 SimpleResourceLoaderBridge::Shutdown();
173 } 176 }
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 private: 274 private:
272 MessageLoop* message_loop_; 275 MessageLoop* message_loop_;
273 }; 276 };
274 277
275 webkit_support::GraphicsContext3DImplementation 278 webkit_support::GraphicsContext3DImplementation
276 g_graphics_context_3d_implementation = 279 g_graphics_context_3d_implementation =
277 webkit_support::IN_PROCESS_COMMAND_BUFFER; 280 webkit_support::IN_PROCESS_COMMAND_BUFFER;
278 281
279 TestEnvironment* test_environment; 282 TestEnvironment* test_environment;
280 283
281 void SetUpTestEnvironmentImpl(bool unit_test_mode) { 284 void SetUpTestEnvironmentImpl(bool unit_test_mode,
285 WebKit::Platform* shadow_platform_delegate) {
282 base::EnableInProcessStackDumping(); 286 base::EnableInProcessStackDumping();
283 base::EnableTerminationOnHeapCorruption(); 287 base::EnableTerminationOnHeapCorruption();
284 288
285 // Initialize the singleton CommandLine with fixed values. Some code refer to 289 // Initialize the singleton CommandLine with fixed values. Some code refer to
286 // CommandLine::ForCurrentProcess(). We don't use the actual command-line 290 // CommandLine::ForCurrentProcess(). We don't use the actual command-line
287 // arguments of DRT to avoid unexpected behavior change. 291 // arguments of DRT to avoid unexpected behavior change.
288 // 292 //
289 // webkit/glue/plugin/plugin_list_posix.cc checks --debug-plugin-loading. 293 // webkit/glue/plugin/plugin_list_posix.cc checks --debug-plugin-loading.
290 // webkit/glue/plugin/plugin_list_win.cc checks --old-wmp. 294 // webkit/glue/plugin/plugin_list_win.cc checks --old-wmp.
291 // If DRT needs these flags, specify them in the following kFixedArguments. 295 // If DRT needs these flags, specify them in the following kFixedArguments.
292 const char* kFixedArguments[] = {"DumpRenderTree"}; 296 const char* kFixedArguments[] = {"DumpRenderTree"};
293 CommandLine::Init(arraysize(kFixedArguments), kFixedArguments); 297 CommandLine::Init(arraysize(kFixedArguments), kFixedArguments);
294 298
295 // Explicitly initialize the GURL library before spawning any threads. 299 // Explicitly initialize the GURL library before spawning any threads.
296 // Otherwise crash may happend when different threads try to create a GURL 300 // Otherwise crash may happend when different threads try to create a GURL
297 // at same time. 301 // at same time.
298 url_util::Initialize(); 302 url_util::Initialize();
299 base::AtExitManager* at_exit_manager = NULL; 303 base::AtExitManager* at_exit_manager = NULL;
300 // In Android DumpRenderTree, AtExitManager is created in 304 // In Android DumpRenderTree, AtExitManager is created in
301 // testing/android/native_test_wrapper.cc before main() is called. 305 // testing/android/native_test_wrapper.cc before main() is called.
302 #if !defined(OS_ANDROID) 306 #if !defined(OS_ANDROID)
303 // Some initialization code may use a AtExitManager before initializing 307 // Some initialization code may use a AtExitManager before initializing
304 // TestEnvironment, so we create a AtExitManager early and pass its ownership 308 // TestEnvironment, so we create a AtExitManager early and pass its ownership
305 // to TestEnvironment. 309 // to TestEnvironment.
306 if (!unit_test_mode) 310 if (!unit_test_mode)
307 at_exit_manager = new base::AtExitManager; 311 at_exit_manager = new base::AtExitManager;
308 #endif 312 #endif
309 webkit_support::BeforeInitialize(unit_test_mode); 313 webkit_support::BeforeInitialize(unit_test_mode);
310 test_environment = new TestEnvironment(unit_test_mode, at_exit_manager); 314 test_environment = new TestEnvironment(unit_test_mode, at_exit_manager,
315 shadow_platform_delegate);
311 webkit_support::AfterInitialize(unit_test_mode); 316 webkit_support::AfterInitialize(unit_test_mode);
312 if (!unit_test_mode) { 317 if (!unit_test_mode) {
313 // Load ICU data tables. This has to run after TestEnvironment is created 318 // Load ICU data tables. This has to run after TestEnvironment is created
314 // because on Linux, we need base::AtExitManager. 319 // because on Linux, we need base::AtExitManager.
315 icu_util::Initialize(); 320 icu_util::Initialize();
316 } 321 }
317 webkit_glue::SetUserAgent(webkit_glue::BuildUserAgentFromProduct( 322 webkit_glue::SetUserAgent(webkit_glue::BuildUserAgentFromProduct(
318 "DumpRenderTree/0.0.0.0"), false); 323 "DumpRenderTree/0.0.0.0"), false);
319 } 324 }
320 325
321 } // namespace 326 } // namespace
322 327
323 namespace webkit_support { 328 namespace webkit_support {
324 329
325 void SetUpTestEnvironment() { 330 void SetUpTestEnvironment() {
326 SetUpTestEnvironmentImpl(false); 331 SetUpTestEnvironment(NULL);
327 } 332 }
328 333
329 void SetUpTestEnvironmentForUnitTests() { 334 void SetUpTestEnvironmentForUnitTests() {
330 SetUpTestEnvironmentImpl(true); 335 SetUpTestEnvironmentForUnitTests(NULL);
336 }
337
338 void SetUpTestEnvironment(WebKit::Platform* shadow_platform_delegate) {
339 SetUpTestEnvironmentImpl(false, shadow_platform_delegate);
340 }
341
342 void SetUpTestEnvironmentForUnitTests(
343 WebKit::Platform* shadow_platform_delegate) {
344 SetUpTestEnvironmentImpl(true, shadow_platform_delegate);
331 } 345 }
332 346
333 void TearDownTestEnvironment() { 347 void TearDownTestEnvironment() {
334 // Flush any remaining messages before we kill ourselves. 348 // Flush any remaining messages before we kill ourselves.
335 // http://code.google.com/p/chromium/issues/detail?id=9500 349 // http://code.google.com/p/chromium/issues/detail?id=9500
336 MessageLoop::current()->RunAllPending(); 350 MessageLoop::current()->RunAllPending();
337 351
338 BeforeShutdown(); 352 BeforeShutdown();
339 if (RunningOnValgrind()) 353 if (RunningOnValgrind())
340 WebKit::WebCache::clear(); 354 WebKit::WebCache::clear();
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 // Logging 823 // Logging
810 void EnableWebCoreLogChannels(const std::string& channels) { 824 void EnableWebCoreLogChannels(const std::string& channels) {
811 webkit_glue::EnableWebCoreLogChannels(channels); 825 webkit_glue::EnableWebCoreLogChannels(channels);
812 } 826 }
813 827
814 void SetGamepadData(const WebKit::WebGamepads& pads) { 828 void SetGamepadData(const WebKit::WebGamepads& pads) {
815 test_environment->webkit_platform_support()->setGamepadData(pads); 829 test_environment->webkit_platform_support()->setGamepadData(pads);
816 } 830 }
817 831
818 } // namespace webkit_support 832 } // namespace webkit_support
OLDNEW
« no previous file with comments | « webkit/support/webkit_support.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698