| 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 "content/public/test/browser_test_base.h" | 5 #include "content/public/test/browser_test_base.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/debug/stack_trace.h" | 9 #include "base/debug/stack_trace.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 private: | 113 private: |
| 114 virtual ~LocalHostResolverProc() {} | 114 virtual ~LocalHostResolverProc() {} |
| 115 }; | 115 }; |
| 116 | 116 |
| 117 } // namespace | 117 } // namespace |
| 118 | 118 |
| 119 extern int BrowserMain(const MainFunctionParams&); | 119 extern int BrowserMain(const MainFunctionParams&); |
| 120 | 120 |
| 121 BrowserTestBase::BrowserTestBase() | 121 BrowserTestBase::BrowserTestBase() |
| 122 : allow_test_contexts_(true), | 122 : allow_test_contexts_(true), |
| 123 allow_osmesa_(true) { | 123 allow_osmesa_(true), |
| 124 use_software_compositing_(false) { |
| 124 #if defined(OS_MACOSX) | 125 #if defined(OS_MACOSX) |
| 125 base::mac::SetOverrideAmIBundled(true); | 126 base::mac::SetOverrideAmIBundled(true); |
| 126 base::PowerMonitorDeviceSource::AllocateSystemIOPorts(); | 127 base::PowerMonitorDeviceSource::AllocateSystemIOPorts(); |
| 127 #endif | 128 #endif |
| 128 | 129 |
| 129 #if defined(OS_POSIX) | 130 #if defined(OS_POSIX) |
| 130 handle_sigterm_ = true; | 131 handle_sigterm_ = true; |
| 131 #endif | 132 #endif |
| 132 | 133 |
| 133 embedded_test_server_.reset(new net::test_server::EmbeddedTestServer); | 134 embedded_test_server_.reset(new net::test_server::EmbeddedTestServer); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 146 | 147 |
| 147 // The tests assume that file:// URIs can freely access other file:// URIs. | 148 // The tests assume that file:// URIs can freely access other file:// URIs. |
| 148 command_line->AppendSwitch(switches::kAllowFileAccessFromFiles); | 149 command_line->AppendSwitch(switches::kAllowFileAccessFromFiles); |
| 149 | 150 |
| 150 command_line->AppendSwitch(switches::kDomAutomationController); | 151 command_line->AppendSwitch(switches::kDomAutomationController); |
| 151 | 152 |
| 152 // It is sometimes useful when looking at browser test failures to know which | 153 // It is sometimes useful when looking at browser test failures to know which |
| 153 // GPU blacklisting decisions were made. | 154 // GPU blacklisting decisions were made. |
| 154 command_line->AppendSwitch(switches::kLogGpuControlListDecisions); | 155 command_line->AppendSwitch(switches::kLogGpuControlListDecisions); |
| 155 | 156 |
| 157 if (use_software_compositing_) { |
| 158 command_line->AppendSwitch(switches::kDisableGpu); |
| 159 command_line->AppendSwitch(switches::kEnableSoftwareCompositing); |
| 160 #if defined(USE_AURA) |
| 161 command_line->AppendSwitch(switches::kUIEnableSoftwareCompositing); |
| 162 command_line->AppendSwitch(switches::kUIDisableThreadedCompositing); |
| 163 #endif |
| 164 } |
| 165 |
| 156 #if defined(OS_CHROMEOS) | 166 #if defined(OS_CHROMEOS) |
| 157 // If the test is running on the chromeos envrionment (such as | 167 // If the test is running on the chromeos envrionment (such as |
| 158 // device or vm bots), always use real contexts. | 168 // device or vm bots), always use real contexts. |
| 159 if (base::SysInfo::IsRunningOnChromeOS()) | 169 if (base::SysInfo::IsRunningOnChromeOS()) |
| 160 allow_test_contexts_ = false; | 170 allow_test_contexts_ = false; |
| 161 #endif | 171 #endif |
| 162 | 172 |
| 163 #if defined(USE_AURA) | 173 #if defined(USE_AURA) |
| 164 if (command_line->HasSwitch(switches::kDisableTestCompositor)) | 174 if (command_line->HasSwitch(switches::kDisableTestCompositor)) |
| 165 allow_test_contexts_ = false; | 175 allow_test_contexts_ = false; |
| 166 | 176 |
| 167 // Use test contexts for browser tests unless they override and force us to | 177 // Use test contexts for browser tests unless they override and force us to |
| 168 // use a real context. | 178 // use a real context. |
| 169 if (allow_test_contexts_) { | 179 if (allow_test_contexts_ && !use_software_compositing_) { |
| 170 content::ImageTransportFactory::InitializeForUnitTests( | 180 content::ImageTransportFactory::InitializeForUnitTests( |
| 171 scoped_ptr<ui::ContextFactory>(new ui::TestContextFactory)); | 181 scoped_ptr<ui::ContextFactory>(new ui::TestContextFactory)); |
| 172 } | 182 } |
| 173 #endif | 183 #endif |
| 174 | 184 |
| 175 // When using real GL contexts, we usually use OSMesa as this works on all | 185 // When using real GL contexts, we usually use OSMesa as this works on all |
| 176 // bots. The command line can override this behaviour to use a real GPU. | 186 // bots. The command line can override this behaviour to use a real GPU. |
| 177 if (command_line->HasSwitch(switches::kUseGpuInTests)) | 187 if (command_line->HasSwitch(switches::kUseGpuInTests)) |
| 178 allow_osmesa_ = false; | 188 allow_osmesa_ = false; |
| 179 | 189 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 197 // we should use real GL bindings with it. | 207 // we should use real GL bindings with it. |
| 198 if (base::SysInfo::IsRunningOnChromeOS()) | 208 if (base::SysInfo::IsRunningOnChromeOS()) |
| 199 allow_osmesa_ = false; | 209 allow_osmesa_ = false; |
| 200 #endif | 210 #endif |
| 201 | 211 |
| 202 if (command_line->HasSwitch(switches::kUseGL)) { | 212 if (command_line->HasSwitch(switches::kUseGL)) { |
| 203 NOTREACHED() << | 213 NOTREACHED() << |
| 204 "kUseGL should not be used with tests. Try kUseGpuInTests instead."; | 214 "kUseGL should not be used with tests. Try kUseGpuInTests instead."; |
| 205 } | 215 } |
| 206 | 216 |
| 207 if (allow_osmesa_) { | 217 if (allow_osmesa_ && !use_software_compositing_) { |
| 208 command_line->AppendSwitchASCII( | 218 command_line->AppendSwitchASCII( |
| 209 switches::kUseGL, gfx::kGLImplementationOSMesaName); | 219 switches::kUseGL, gfx::kGLImplementationOSMesaName); |
| 210 } | 220 } |
| 211 | 221 |
| 212 scoped_refptr<net::HostResolverProc> local_resolver = | 222 scoped_refptr<net::HostResolverProc> local_resolver = |
| 213 new LocalHostResolverProc(); | 223 new LocalHostResolverProc(); |
| 214 rule_based_resolver_ = | 224 rule_based_resolver_ = |
| 215 new net::RuleBasedHostResolverProc(local_resolver.get()); | 225 new net::RuleBasedHostResolverProc(local_resolver.get()); |
| 216 rule_based_resolver_->AddSimulatedFailure("wpad"); | 226 rule_based_resolver_->AddSimulatedFailure("wpad"); |
| 217 net::ScopedDefaultHostResolverProc scoped_local_host_resolver_proc( | 227 net::ScopedDefaultHostResolverProc scoped_local_host_resolver_proc( |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 base::MessageLoop* renderer_loop = | 277 base::MessageLoop* renderer_loop = |
| 268 RenderProcessHostImpl::GetInProcessRendererThreadForTesting(); | 278 RenderProcessHostImpl::GetInProcessRendererThreadForTesting(); |
| 269 CHECK(renderer_loop); | 279 CHECK(renderer_loop); |
| 270 | 280 |
| 271 renderer_loop->PostTask( | 281 renderer_loop->PostTask( |
| 272 FROM_HERE, | 282 FROM_HERE, |
| 273 base::Bind(&RunTaskOnRendererThread, task, runner->QuitClosure())); | 283 base::Bind(&RunTaskOnRendererThread, task, runner->QuitClosure())); |
| 274 runner->Run(); | 284 runner->Run(); |
| 275 } | 285 } |
| 276 | 286 |
| 287 void BrowserTestBase::UseRealGLContexts() { allow_test_contexts_ = false; } |
| 288 |
| 289 void BrowserTestBase::UseRealGLBindings() { |
| 290 DCHECK(!use_software_compositing_) |
| 291 << "Can't use GL with software compositing"; |
| 292 allow_osmesa_ = false; |
| 293 } |
| 294 |
| 295 void BrowserTestBase::UseSoftwareCompositing() { |
| 296 #if !defined(USE_AURA) && !defined(OS_MACOSX) |
| 297 // TODO(danakj): Remove when GTK linux is no more. |
| 298 NOTREACHED(); |
| 299 #endif |
| 300 |
| 301 DCHECK(allow_osmesa_) << "Can't use GL with software compositing"; |
| 302 use_software_compositing_ = true; |
| 303 } |
| 304 |
| 277 } // namespace content | 305 } // namespace content |
| OLD | NEW |