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), | |
124 use_software_compositing_(false) { | 123 use_software_compositing_(false) { |
125 #if defined(OS_MACOSX) | 124 #if defined(OS_MACOSX) |
126 base::mac::SetOverrideAmIBundled(true); | 125 base::mac::SetOverrideAmIBundled(true); |
127 base::PowerMonitorDeviceSource::AllocateSystemIOPorts(); | 126 base::PowerMonitorDeviceSource::AllocateSystemIOPorts(); |
128 #endif | 127 #endif |
129 | 128 |
130 #if defined(OS_POSIX) | 129 #if defined(OS_POSIX) |
131 handle_sigterm_ = true; | 130 handle_sigterm_ = true; |
132 #endif | 131 #endif |
133 | 132 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 if (base::SysInfo::IsRunningOnChromeOS()) | 168 if (base::SysInfo::IsRunningOnChromeOS()) |
170 allow_test_contexts_ = false; | 169 allow_test_contexts_ = false; |
171 #endif | 170 #endif |
172 | 171 |
173 #if defined(USE_AURA) | 172 #if defined(USE_AURA) |
174 if (command_line->HasSwitch(switches::kDisableTestCompositor)) | 173 if (command_line->HasSwitch(switches::kDisableTestCompositor)) |
175 allow_test_contexts_ = false; | 174 allow_test_contexts_ = false; |
176 | 175 |
177 // Use test contexts for browser tests unless they override and force us to | 176 // Use test contexts for browser tests unless they override and force us to |
178 // use a real context. | 177 // use a real context. |
179 if (allow_test_contexts_ && !use_software_compositing_) { | 178 if (allow_test_contexts_ && !use_software_compositing_) |
180 content::ImageTransportFactory::InitializeForUnitTests( | 179 command_line->AppendSwitch(switches::kDisableGLDrawingForTests); |
181 scoped_ptr<ui::ContextFactory>(new ui::TestContextFactory)); | |
182 } | |
183 #endif | 180 #endif |
184 | 181 |
185 // When using real GL contexts, we usually use OSMesa as this works on all | 182 bool use_osmesa = true; |
186 // bots. The command line can override this behaviour to use a real GPU. | 183 |
| 184 // We usually use OSMesa as this works on all bots. The command line can |
| 185 // override this behaviour to use hardware GL. |
187 if (command_line->HasSwitch(switches::kUseGpuInTests)) | 186 if (command_line->HasSwitch(switches::kUseGpuInTests)) |
188 allow_osmesa_ = false; | 187 use_osmesa = false; |
189 | 188 |
190 // Some bots pass this flag when they want to use a real GPU. | 189 // Some bots pass this flag when they want to use hardware GL. |
191 if (command_line->HasSwitch("enable-gpu")) | 190 if (command_line->HasSwitch("enable-gpu")) |
192 allow_osmesa_ = false; | 191 use_osmesa = false; |
193 | 192 |
194 #if defined(OS_MACOSX) | 193 #if defined(OS_MACOSX) |
195 // On Mac we always use a real GPU. | 194 // On Mac we always use hardware GL. |
196 allow_osmesa_ = false; | 195 use_osmesa = false; |
197 #endif | 196 #endif |
198 | 197 |
199 #if defined(OS_ANDROID) | 198 #if defined(OS_ANDROID) |
200 // On Android we always use a real GPU. | 199 // On Android we always use hardware GL. |
201 allow_osmesa_ = false; | 200 use_osmesa = false; |
202 #endif | 201 #endif |
203 | 202 |
204 #if defined(OS_CHROMEOS) | 203 #if defined(OS_CHROMEOS) |
205 // If the test is running on the chromeos envrionment (such as | 204 // If the test is running on the chromeos envrionment (such as |
206 // device or vm bots), the compositor will use real GL contexts, and | 205 // device or vm bots), we use hardware GL. |
207 // we should use real GL bindings with it. | |
208 if (base::SysInfo::IsRunningOnChromeOS()) | 206 if (base::SysInfo::IsRunningOnChromeOS()) |
209 allow_osmesa_ = false; | 207 use_osmesa = false; |
210 #endif | 208 #endif |
211 | 209 |
212 if (command_line->HasSwitch(switches::kUseGL)) { | 210 if (command_line->HasSwitch(switches::kUseGL)) { |
213 NOTREACHED() << | 211 NOTREACHED() << |
214 "kUseGL should not be used with tests. Try kUseGpuInTests instead."; | 212 "kUseGL should not be used with tests. Try kUseGpuInTests instead."; |
215 } | 213 } |
216 | 214 |
217 if (allow_osmesa_ && !use_software_compositing_) { | 215 if (use_osmesa && !use_software_compositing_) { |
218 command_line->AppendSwitchASCII( | 216 command_line->AppendSwitchASCII( |
219 switches::kUseGL, gfx::kGLImplementationOSMesaName); | 217 switches::kUseGL, gfx::kGLImplementationOSMesaName); |
220 } | 218 } |
221 | 219 |
222 scoped_refptr<net::HostResolverProc> local_resolver = | 220 scoped_refptr<net::HostResolverProc> local_resolver = |
223 new LocalHostResolverProc(); | 221 new LocalHostResolverProc(); |
224 rule_based_resolver_ = | 222 rule_based_resolver_ = |
225 new net::RuleBasedHostResolverProc(local_resolver.get()); | 223 new net::RuleBasedHostResolverProc(local_resolver.get()); |
226 rule_based_resolver_->AddSimulatedFailure("wpad"); | 224 rule_based_resolver_->AddSimulatedFailure("wpad"); |
227 net::ScopedDefaultHostResolverProc scoped_local_host_resolver_proc( | 225 net::ScopedDefaultHostResolverProc scoped_local_host_resolver_proc( |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 CHECK(renderer_loop); | 277 CHECK(renderer_loop); |
280 | 278 |
281 renderer_loop->PostTask( | 279 renderer_loop->PostTask( |
282 FROM_HERE, | 280 FROM_HERE, |
283 base::Bind(&RunTaskOnRendererThread, task, runner->QuitClosure())); | 281 base::Bind(&RunTaskOnRendererThread, task, runner->QuitClosure())); |
284 runner->Run(); | 282 runner->Run(); |
285 } | 283 } |
286 | 284 |
287 void BrowserTestBase::UseRealGLContexts() { allow_test_contexts_ = false; } | 285 void BrowserTestBase::UseRealGLContexts() { allow_test_contexts_ = false; } |
288 | 286 |
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() { | 287 void BrowserTestBase::UseSoftwareCompositing() { |
296 #if !defined(USE_AURA) && !defined(OS_MACOSX) | 288 #if !defined(USE_AURA) && !defined(OS_MACOSX) |
297 // TODO(danakj): Remove when GTK linux is no more. | 289 // TODO(danakj): Remove when GTK linux is no more. |
298 NOTREACHED(); | 290 NOTREACHED(); |
299 #endif | 291 #endif |
300 | |
301 DCHECK(allow_osmesa_) << "Can't use GL with software compositing"; | |
302 use_software_compositing_ = true; | 292 use_software_compositing_ = true; |
303 } | 293 } |
304 | 294 |
305 bool BrowserTestBase::UsingOSMesa() const { | 295 bool BrowserTestBase::UsingOSMesa() const { |
306 CommandLine* cmd = CommandLine::ForCurrentProcess(); | 296 CommandLine* cmd = CommandLine::ForCurrentProcess(); |
307 return cmd->GetSwitchValueASCII(switches::kUseGL) == | 297 return cmd->GetSwitchValueASCII(switches::kUseGL) == |
308 gfx::kGLImplementationOSMesaName; | 298 gfx::kGLImplementationOSMesaName; |
309 } | 299 } |
310 | 300 |
311 } // namespace content | 301 } // namespace content |
OLD | NEW |