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