OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" | 8 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" |
9 #include "content/browser/gpu/gpu_process_host_ui_shim.h" | 9 #include "content/browser/gpu/gpu_process_host_ui_shim.h" |
10 #include "content/common/gpu/client/context_provider_command_buffer.h" | 10 #include "content/common/gpu/client/context_provider_command_buffer.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 void SetUpOnMainThread() override { | 32 void SetUpOnMainThread() override { |
33 if (!content::BrowserGpuChannelHostFactory::CanUseForTesting()) | 33 if (!content::BrowserGpuChannelHostFactory::CanUseForTesting()) |
34 return; | 34 return; |
35 | 35 |
36 if (!content::BrowserGpuChannelHostFactory::instance()) | 36 if (!content::BrowserGpuChannelHostFactory::instance()) |
37 content::BrowserGpuChannelHostFactory::Initialize(true); | 37 content::BrowserGpuChannelHostFactory::Initialize(true); |
38 | 38 |
39 content::BrowserGpuChannelHostFactory* factory = | 39 content::BrowserGpuChannelHostFactory* factory = |
40 content::BrowserGpuChannelHostFactory::instance(); | 40 content::BrowserGpuChannelHostFactory::instance(); |
41 CHECK(factory); | 41 CHECK(factory); |
42 bool lose_context_when_out_of_memory = false; | |
43 base::RunLoop run_loop; | 42 base::RunLoop run_loop; |
44 factory->EstablishGpuChannel(kInitCause, run_loop.QuitClosure()); | 43 factory->EstablishGpuChannel(kInitCause, run_loop.QuitClosure()); |
45 run_loop.Run(); | 44 run_loop.Run(); |
46 scoped_refptr<content::GpuChannelHost> | 45 scoped_refptr<content::GpuChannelHost> |
47 gpu_channel_host(factory->GetGpuChannel()); | 46 gpu_channel_host(factory->GetGpuChannel()); |
48 DCHECK(gpu_channel_host.get()); | 47 CHECK(gpu_channel_host.get()); |
49 context_.reset( | 48 |
| 49 bool lose_context_when_out_of_memory = false; |
| 50 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> web_context( |
50 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext( | 51 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext( |
51 gpu_channel_host.get(), | 52 gpu_channel_host.get(), blink::WebGraphicsContext3D::Attributes(), |
52 blink::WebGraphicsContext3D::Attributes(), | 53 lose_context_when_out_of_memory, GURL(), |
53 lose_context_when_out_of_memory, | |
54 GURL(), | |
55 WebGraphicsContext3DCommandBufferImpl::SharedMemoryLimits(), | 54 WebGraphicsContext3DCommandBufferImpl::SharedMemoryLimits(), |
56 NULL)); | 55 nullptr)); |
57 CHECK(context_.get()); | 56 |
58 context_->InitializeOnCurrentThread(); | 57 provider_ = content::ContextProviderCommandBuffer::Create( |
59 context_support_ = context_->GetContextSupport(); | 58 std::move(web_context), content::OFFSCREEN_CONTEXT_FOR_TESTING); |
| 59 bool bound = provider_->BindToCurrentThread(); |
| 60 CHECK(bound); |
| 61 gl_ = provider_->ContextGL(); |
| 62 context_support_ = provider_->ContextSupport(); |
| 63 |
60 ContentBrowserTest::SetUpOnMainThread(); | 64 ContentBrowserTest::SetUpOnMainThread(); |
61 } | 65 } |
62 | 66 |
63 void TearDownOnMainThread() override { | 67 void TearDownOnMainThread() override { |
64 // Must delete the context first. | 68 // Must delete the context first. |
65 context_.reset(NULL); | 69 provider_ = nullptr; |
66 ContentBrowserTest::TearDownOnMainThread(); | 70 ContentBrowserTest::TearDownOnMainThread(); |
67 } | 71 } |
68 | 72 |
69 protected: | 73 protected: |
70 scoped_ptr<content::WebGraphicsContext3DCommandBufferImpl> context_; | 74 gpu::gles2::GLES2Interface* gl_; |
71 gpu::ContextSupport* context_support_; | 75 gpu::ContextSupport* context_support_; |
| 76 |
| 77 private: |
| 78 scoped_refptr<content::ContextProviderCommandBuffer> provider_; |
72 }; | 79 }; |
73 | 80 |
74 } // namespace | 81 } // namespace |
75 | 82 |
76 // Include the shared tests. | 83 // Include the shared tests. |
77 #define CONTEXT_TEST_F IN_PROC_BROWSER_TEST_F | 84 #define CONTEXT_TEST_F IN_PROC_BROWSER_TEST_F |
78 #include "content/common/gpu/client/gpu_context_tests.h" | 85 #include "content/common/gpu/client/gpu_context_tests.h" |
79 | 86 |
80 namespace content { | 87 namespace content { |
81 | 88 |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 shim->SimulateCrash(); | 279 shim->SimulateCrash(); |
273 run_loop.Run(); | 280 run_loop.Run(); |
274 | 281 |
275 EXPECT_EQ(1, counter); | 282 EXPECT_EQ(1, counter); |
276 EXPECT_FALSE(IsChannelEstablished()); | 283 EXPECT_FALSE(IsChannelEstablished()); |
277 EstablishAndWait(); | 284 EstablishAndWait(); |
278 EXPECT_TRUE(IsChannelEstablished()); | 285 EXPECT_TRUE(IsChannelEstablished()); |
279 } | 286 } |
280 | 287 |
281 } // namespace content | 288 } // namespace content |
OLD | NEW |