OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
6 #include "cc/output/compositor_frame.h" | 6 #include "cc/output/compositor_frame.h" |
7 #include "content/browser/compositor/browser_compositor_output_surface_proxy.h" | 7 #include "content/browser/compositor/browser_compositor_output_surface_proxy.h" |
8 #include "content/browser/compositor/software_browser_compositor_output_surface.
h" | 8 #include "content/browser/compositor/software_browser_compositor_output_surface.
h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "ui/compositor/compositor.h" |
10 #include "ui/compositor/test/context_factories_for_test.h" | 11 #include "ui/compositor/test/context_factories_for_test.h" |
11 #include "ui/gfx/vsync_provider.h" | 12 #include "ui/gfx/vsync_provider.h" |
12 | 13 |
13 namespace { | 14 namespace { |
14 | 15 |
15 class FakeVSyncProvider : public gfx::VSyncProvider { | 16 class FakeVSyncProvider : public gfx::VSyncProvider { |
16 public: | 17 public: |
17 FakeVSyncProvider() : call_count_(0) {} | 18 FakeVSyncProvider() : call_count_(0) {} |
18 virtual ~FakeVSyncProvider() {} | 19 virtual ~FakeVSyncProvider() {} |
19 | 20 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 scoped_ptr<ui::Compositor> compositor_; | 73 scoped_ptr<ui::Compositor> compositor_; |
73 | 74 |
74 IDMap<content::BrowserCompositorOutputSurface> surface_map_; | 75 IDMap<content::BrowserCompositorOutputSurface> surface_map_; |
75 scoped_refptr<content::BrowserCompositorOutputSurfaceProxy> surface_proxy_; | 76 scoped_refptr<content::BrowserCompositorOutputSurfaceProxy> surface_proxy_; |
76 | 77 |
77 DISALLOW_COPY_AND_ASSIGN(SoftwareBrowserCompositorOutputSurfaceTest); | 78 DISALLOW_COPY_AND_ASSIGN(SoftwareBrowserCompositorOutputSurfaceTest); |
78 }; | 79 }; |
79 | 80 |
80 SoftwareBrowserCompositorOutputSurfaceTest:: | 81 SoftwareBrowserCompositorOutputSurfaceTest:: |
81 SoftwareBrowserCompositorOutputSurfaceTest() { | 82 SoftwareBrowserCompositorOutputSurfaceTest() { |
| 83 // |message_loop_| is not used, but the main thread still has to exist for the |
| 84 // compositor to use. |
82 message_loop_.reset(new base::MessageLoopForUI); | 85 message_loop_.reset(new base::MessageLoopForUI); |
83 } | 86 } |
84 | 87 |
85 SoftwareBrowserCompositorOutputSurfaceTest:: | 88 SoftwareBrowserCompositorOutputSurfaceTest:: |
86 ~SoftwareBrowserCompositorOutputSurfaceTest() {} | 89 ~SoftwareBrowserCompositorOutputSurfaceTest() {} |
87 | 90 |
88 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() { | 91 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() { |
89 ui::InitializeContextFactoryForTests(false); | 92 ui::InitializeContextFactoryForTests(false); |
90 ui::Compositor::Initialize(); | 93 ui::Compositor::Initialize(); |
91 | 94 |
(...skipping 15 matching lines...) Expand all Loading... |
107 | 110 |
108 scoped_ptr<content::BrowserCompositorOutputSurface> | 111 scoped_ptr<content::BrowserCompositorOutputSurface> |
109 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface( | 112 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface( |
110 scoped_ptr<cc::SoftwareOutputDevice> device) { | 113 scoped_ptr<cc::SoftwareOutputDevice> device) { |
111 return scoped_ptr<content::BrowserCompositorOutputSurface>( | 114 return scoped_ptr<content::BrowserCompositorOutputSurface>( |
112 new content::SoftwareBrowserCompositorOutputSurface( | 115 new content::SoftwareBrowserCompositorOutputSurface( |
113 surface_proxy_, | 116 surface_proxy_, |
114 device.Pass(), | 117 device.Pass(), |
115 1, | 118 1, |
116 &surface_map_, | 119 &surface_map_, |
117 compositor_->GetCompositorMessageLoop(), | 120 compositor_->vsync_manager())); |
118 compositor_->AsWeakPtr())); | |
119 } | 121 } |
120 | 122 |
121 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) { | 123 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) { |
122 scoped_ptr<cc::SoftwareOutputDevice> software_device( | 124 scoped_ptr<cc::SoftwareOutputDevice> software_device( |
123 new cc::SoftwareOutputDevice()); | 125 new cc::SoftwareOutputDevice()); |
124 output_surface_ = CreateSurface(software_device.Pass()); | 126 output_surface_ = CreateSurface(software_device.Pass()); |
125 | 127 |
126 cc::CompositorFrame frame; | 128 cc::CompositorFrame frame; |
127 output_surface_->SwapBuffers(&frame); | 129 output_surface_->SwapBuffers(&frame); |
128 | 130 |
129 EXPECT_EQ(NULL, output_surface_->software_device()->GetVSyncProvider()); | 131 EXPECT_EQ(NULL, output_surface_->software_device()->GetVSyncProvider()); |
130 } | 132 } |
131 | 133 |
132 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, VSyncProviderUpdates) { | 134 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, VSyncProviderUpdates) { |
133 scoped_ptr<cc::SoftwareOutputDevice> software_device( | 135 scoped_ptr<cc::SoftwareOutputDevice> software_device( |
134 new FakeSoftwareOutputDevice()); | 136 new FakeSoftwareOutputDevice()); |
135 output_surface_ = CreateSurface(software_device.Pass()); | 137 output_surface_ = CreateSurface(software_device.Pass()); |
136 | 138 |
137 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>( | 139 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>( |
138 output_surface_->software_device()->GetVSyncProvider()); | 140 output_surface_->software_device()->GetVSyncProvider()); |
139 EXPECT_EQ(0, vsync_provider->call_count()); | 141 EXPECT_EQ(0, vsync_provider->call_count()); |
140 | 142 |
141 cc::CompositorFrame frame; | 143 cc::CompositorFrame frame; |
142 output_surface_->SwapBuffers(&frame); | 144 output_surface_->SwapBuffers(&frame); |
143 | 145 |
144 EXPECT_EQ(1, vsync_provider->call_count()); | 146 EXPECT_EQ(1, vsync_provider->call_count()); |
145 } | 147 } |
OLD | NEW |