| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 | 120 |
| 121 class TestEnvironment { | 121 class TestEnvironment { |
| 122 public: | 122 public: |
| 123 #if defined(OS_ANDROID) | 123 #if defined(OS_ANDROID) |
| 124 // Android UI message loop goes through Java, so don't use it in tests. | 124 // Android UI message loop goes through Java, so don't use it in tests. |
| 125 typedef MessageLoop MessageLoopType; | 125 typedef MessageLoop MessageLoopType; |
| 126 #else | 126 #else |
| 127 typedef MessageLoopForUI MessageLoopType; | 127 typedef MessageLoopForUI MessageLoopType; |
| 128 #endif | 128 #endif |
| 129 | 129 |
| 130 explicit TestEnvironment(bool unit_test_mode) { | 130 TestEnvironment(bool unit_test_mode, |
| 131 base::AtExitManager* existing_at_exit_manager) { |
| 131 if (!unit_test_mode) { | 132 if (!unit_test_mode) { |
| 132 at_exit_manager_.reset(new base::AtExitManager); | 133 // The existing_at_exit_manager must be not NULL. |
| 134 at_exit_manager_.reset(existing_at_exit_manager); |
| 133 InitLogging(false); | 135 InitLogging(false); |
| 134 } | 136 } |
| 135 main_message_loop_.reset(new MessageLoopType); | 137 main_message_loop_.reset(new MessageLoopType); |
| 136 // TestWebKitPlatformSupport must be instantiated after MessageLoopType. | 138 // TestWebKitPlatformSupport must be instantiated after MessageLoopType. |
| 137 webkit_platform_support_.reset( | 139 webkit_platform_support_.reset( |
| 138 new TestWebKitPlatformSupport(unit_test_mode)); | 140 new TestWebKitPlatformSupport(unit_test_mode)); |
| 139 } | 141 } |
| 140 | 142 |
| 141 ~TestEnvironment() { | 143 ~TestEnvironment() { |
| 142 SimpleResourceLoaderBridge::Shutdown(); | 144 SimpleResourceLoaderBridge::Shutdown(); |
| 143 } | 145 } |
| 144 | 146 |
| 145 TestWebKitPlatformSupport* webkit_platform_support() const { | 147 TestWebKitPlatformSupport* webkit_platform_support() const { |
| 146 return webkit_platform_support_.get(); | 148 return webkit_platform_support_.get(); |
| 147 } | 149 } |
| 148 | 150 |
| 149 #if defined(OS_WIN) || defined(OS_MACOSX) | 151 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 150 void set_theme_engine(WebKit::WebThemeEngine* engine) { | 152 void set_theme_engine(WebKit::WebThemeEngine* engine) { |
| 151 DCHECK(webkit_platform_support_ != 0); | 153 DCHECK(webkit_platform_support_ != 0); |
| 152 webkit_platform_support_->SetThemeEngine(engine); | 154 webkit_platform_support_->SetThemeEngine(engine); |
| 153 } | 155 } |
| 154 | 156 |
| 155 WebKit::WebThemeEngine* theme_engine() const { | 157 WebKit::WebThemeEngine* theme_engine() const { |
| 156 return webkit_platform_support_->themeEngine(); | 158 return webkit_platform_support_->themeEngine(); |
| 157 } | 159 } |
| 158 #endif | 160 #endif |
| 159 | 161 |
| 160 private: | 162 private: |
| 163 // Data member at_exit_manager_ will take the ownership of the input |
| 164 // AtExitManager and manage its lifecycle. |
| 161 scoped_ptr<base::AtExitManager> at_exit_manager_; | 165 scoped_ptr<base::AtExitManager> at_exit_manager_; |
| 162 scoped_ptr<MessageLoopType> main_message_loop_; | 166 scoped_ptr<MessageLoopType> main_message_loop_; |
| 163 scoped_ptr<TestWebKitPlatformSupport> webkit_platform_support_; | 167 scoped_ptr<TestWebKitPlatformSupport> webkit_platform_support_; |
| 164 }; | 168 }; |
| 165 | 169 |
| 166 class WebPluginImplWithPageDelegate | 170 class WebPluginImplWithPageDelegate |
| 167 : public webkit_support::TestWebPluginPageDelegate, | 171 : public webkit_support::TestWebPluginPageDelegate, |
| 168 public base::SupportsWeakPtr<WebPluginImplWithPageDelegate>, | 172 public base::SupportsWeakPtr<WebPluginImplWithPageDelegate>, |
| 169 public webkit::npapi::WebPluginImpl { | 173 public webkit::npapi::WebPluginImpl { |
| 170 public: | 174 public: |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 // webkit/glue/plugin/plugin_list_posix.cc checks --debug-plugin-loading. | 234 // webkit/glue/plugin/plugin_list_posix.cc checks --debug-plugin-loading. |
| 231 // webkit/glue/plugin/plugin_list_win.cc checks --old-wmp. | 235 // webkit/glue/plugin/plugin_list_win.cc checks --old-wmp. |
| 232 // If DRT needs these flags, specify them in the following kFixedArguments. | 236 // If DRT needs these flags, specify them in the following kFixedArguments. |
| 233 const char* kFixedArguments[] = {"DumpRenderTree"}; | 237 const char* kFixedArguments[] = {"DumpRenderTree"}; |
| 234 CommandLine::Init(arraysize(kFixedArguments), kFixedArguments); | 238 CommandLine::Init(arraysize(kFixedArguments), kFixedArguments); |
| 235 | 239 |
| 236 // Explicitly initialize the GURL library before spawning any threads. | 240 // Explicitly initialize the GURL library before spawning any threads. |
| 237 // Otherwise crash may happend when different threads try to create a GURL | 241 // Otherwise crash may happend when different threads try to create a GURL |
| 238 // at same time. | 242 // at same time. |
| 239 url_util::Initialize(); | 243 url_util::Initialize(); |
| 244 base::AtExitManager* at_exit_manager = NULL; |
| 245 // Some initialization code may use a AtExitManager before initializing |
| 246 // TestEnvironment, so we create a AtExitManager early and pass its ownership |
| 247 // to TestEnvironment. |
| 248 if (!unit_test_mode) |
| 249 at_exit_manager = new base::AtExitManager; |
| 240 BeforeInitialize(unit_test_mode); | 250 BeforeInitialize(unit_test_mode); |
| 241 test_environment = new TestEnvironment(unit_test_mode); | 251 test_environment = new TestEnvironment(unit_test_mode, at_exit_manager); |
| 242 AfterInitialize(unit_test_mode); | 252 AfterInitialize(unit_test_mode); |
| 243 if (!unit_test_mode) { | 253 if (!unit_test_mode) { |
| 244 // Load ICU data tables. This has to run after TestEnvironment is created | 254 // Load ICU data tables. This has to run after TestEnvironment is created |
| 245 // because on Linux, we need base::AtExitManager. | 255 // because on Linux, we need base::AtExitManager. |
| 246 icu_util::Initialize(); | 256 icu_util::Initialize(); |
| 247 } | 257 } |
| 248 webkit_glue::SetUserAgent(webkit_glue::BuildUserAgentFromProduct( | 258 webkit_glue::SetUserAgent(webkit_glue::BuildUserAgentFromProduct( |
| 249 "DumpRenderTree/0.0.0.0"), false); | 259 "DumpRenderTree/0.0.0.0"), false); |
| 250 } | 260 } |
| 251 | 261 |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 // Logging | 636 // Logging |
| 627 void EnableWebCoreLogChannels(const std::string& channels) { | 637 void EnableWebCoreLogChannels(const std::string& channels) { |
| 628 webkit_glue::EnableWebCoreLogChannels(channels); | 638 webkit_glue::EnableWebCoreLogChannels(channels); |
| 629 } | 639 } |
| 630 | 640 |
| 631 void SetGamepadData(const WebKit::WebGamepads& pads) { | 641 void SetGamepadData(const WebKit::WebGamepads& pads) { |
| 632 test_environment->webkit_platform_support()->setGamepadData(pads); | 642 test_environment->webkit_platform_support()->setGamepadData(pads); |
| 633 } | 643 } |
| 634 | 644 |
| 635 } // namespace webkit_support | 645 } // namespace webkit_support |
| OLD | NEW |