| 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 |