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