| 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_proxy.h" | 5 #include "base/message_loop/message_loop_proxy.h" |
| 6 #include "base/threading/simple_thread.h" | 6 #include "base/threading/simple_thread.h" |
| 7 #include "cc/layers/delegated_frame_provider.h" | 7 #include "cc/layers/delegated_frame_provider.h" |
| 8 #include "cc/layers/delegated_frame_resource_collection.h" | 8 #include "cc/layers/delegated_frame_resource_collection.h" |
| 9 #include "cc/layers/delegated_renderer_layer.h" | 9 #include "cc/layers/delegated_renderer_layer.h" |
| 10 #include "cc/layers/layer.h" | 10 #include "cc/layers/layer.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 namespace cc { | 25 namespace cc { |
| 26 namespace { | 26 namespace { |
| 27 | 27 |
| 28 class NoMessageLoopOutputSurface : public OutputSurface { | 28 class NoMessageLoopOutputSurface : public OutputSurface { |
| 29 public: | 29 public: |
| 30 NoMessageLoopOutputSurface() : OutputSurface(TestContextProvider::Create()) {} | 30 NoMessageLoopOutputSurface() : OutputSurface(TestContextProvider::Create()) {} |
| 31 virtual ~NoMessageLoopOutputSurface() {} | 31 virtual ~NoMessageLoopOutputSurface() {} |
| 32 | 32 |
| 33 // OutputSurface overrides. | 33 // OutputSurface overrides. |
| 34 virtual void SwapBuffers(CompositorFrame* frame) OVERRIDE { | 34 virtual void SwapBuffers(CompositorFrame* frame) override { |
| 35 DCHECK(client_); | 35 DCHECK(client_); |
| 36 client_->DidSwapBuffers(); | 36 client_->DidSwapBuffers(); |
| 37 client_->DidSwapBuffersComplete(); | 37 client_->DidSwapBuffersComplete(); |
| 38 } | 38 } |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 class LayerTreeHostNoMessageLoopTest | 41 class LayerTreeHostNoMessageLoopTest |
| 42 : public testing::Test, | 42 : public testing::Test, |
| 43 public base::DelegateSimpleThread::Delegate, | 43 public base::DelegateSimpleThread::Delegate, |
| 44 public LayerTreeHostClient, | 44 public LayerTreeHostClient, |
| 45 public LayerTreeHostSingleThreadClient { | 45 public LayerTreeHostSingleThreadClient { |
| 46 public: | 46 public: |
| 47 LayerTreeHostNoMessageLoopTest() | 47 LayerTreeHostNoMessageLoopTest() |
| 48 : did_initialize_output_surface_(false), | 48 : did_initialize_output_surface_(false), |
| 49 did_commit_(false), | 49 did_commit_(false), |
| 50 did_commit_and_draw_frame_(false), | 50 did_commit_and_draw_frame_(false), |
| 51 size_(100, 100), | 51 size_(100, 100), |
| 52 no_loop_thread_(this, "LayerTreeHostNoMessageLoopTest") {} | 52 no_loop_thread_(this, "LayerTreeHostNoMessageLoopTest") {} |
| 53 virtual ~LayerTreeHostNoMessageLoopTest() {} | 53 virtual ~LayerTreeHostNoMessageLoopTest() {} |
| 54 | 54 |
| 55 // LayerTreeHostClient overrides. | 55 // LayerTreeHostClient overrides. |
| 56 virtual void WillBeginMainFrame(int frame_id) OVERRIDE {} | 56 virtual void WillBeginMainFrame(int frame_id) override {} |
| 57 virtual void BeginMainFrame(const BeginFrameArgs& args) OVERRIDE {} | 57 virtual void BeginMainFrame(const BeginFrameArgs& args) override {} |
| 58 virtual void DidBeginMainFrame() OVERRIDE {} | 58 virtual void DidBeginMainFrame() override {} |
| 59 virtual void Layout() OVERRIDE {} | 59 virtual void Layout() override {} |
| 60 virtual void ApplyViewportDeltas(const gfx::Vector2d& inner_delta, | 60 virtual void ApplyViewportDeltas(const gfx::Vector2d& inner_delta, |
| 61 const gfx::Vector2d& outer_delta, | 61 const gfx::Vector2d& outer_delta, |
| 62 float page_scale, | 62 float page_scale, |
| 63 float top_controls_delta) OVERRIDE {} | 63 float top_controls_delta) override {} |
| 64 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 64 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
| 65 float page_scale, | 65 float page_scale, |
| 66 float top_controls_delta) OVERRIDE {} | 66 float top_controls_delta) override {} |
| 67 virtual void RequestNewOutputSurface(bool fallback) OVERRIDE { | 67 virtual void RequestNewOutputSurface(bool fallback) override { |
| 68 layer_tree_host_->SetOutputSurface( | 68 layer_tree_host_->SetOutputSurface( |
| 69 make_scoped_ptr<OutputSurface>(new NoMessageLoopOutputSurface)); | 69 make_scoped_ptr<OutputSurface>(new NoMessageLoopOutputSurface)); |
| 70 } | 70 } |
| 71 virtual void DidInitializeOutputSurface() OVERRIDE { | 71 virtual void DidInitializeOutputSurface() override { |
| 72 did_initialize_output_surface_ = true; | 72 did_initialize_output_surface_ = true; |
| 73 } | 73 } |
| 74 virtual void WillCommit() OVERRIDE {} | 74 virtual void WillCommit() override {} |
| 75 virtual void DidCommit() OVERRIDE { did_commit_ = true; } | 75 virtual void DidCommit() override { did_commit_ = true; } |
| 76 virtual void DidCommitAndDrawFrame() OVERRIDE { | 76 virtual void DidCommitAndDrawFrame() override { |
| 77 did_commit_and_draw_frame_ = true; | 77 did_commit_and_draw_frame_ = true; |
| 78 } | 78 } |
| 79 virtual void DidCompleteSwapBuffers() OVERRIDE {} | 79 virtual void DidCompleteSwapBuffers() override {} |
| 80 | 80 |
| 81 // LayerTreeHostSingleThreadClient overrides. | 81 // LayerTreeHostSingleThreadClient overrides. |
| 82 virtual void DidPostSwapBuffers() OVERRIDE {} | 82 virtual void DidPostSwapBuffers() override {} |
| 83 virtual void DidAbortSwapBuffers() OVERRIDE {} | 83 virtual void DidAbortSwapBuffers() override {} |
| 84 | 84 |
| 85 void RunTest() { | 85 void RunTest() { |
| 86 no_loop_thread_.Start(); | 86 no_loop_thread_.Start(); |
| 87 no_loop_thread_.Join(); | 87 no_loop_thread_.Join(); |
| 88 } | 88 } |
| 89 | 89 |
| 90 // base::DelegateSimpleThread::Delegate override. | 90 // base::DelegateSimpleThread::Delegate override. |
| 91 virtual void Run() OVERRIDE { | 91 virtual void Run() override { |
| 92 ASSERT_FALSE(base::MessageLoopProxy::current().get()); | 92 ASSERT_FALSE(base::MessageLoopProxy::current().get()); |
| 93 RunTestWithoutMessageLoop(); | 93 RunTestWithoutMessageLoop(); |
| 94 EXPECT_FALSE(base::MessageLoopProxy::current().get()); | 94 EXPECT_FALSE(base::MessageLoopProxy::current().get()); |
| 95 } | 95 } |
| 96 | 96 |
| 97 protected: | 97 protected: |
| 98 virtual void RunTestWithoutMessageLoop() = 0; | 98 virtual void RunTestWithoutMessageLoop() = 0; |
| 99 | 99 |
| 100 void SetupLayerTreeHost() { | 100 void SetupLayerTreeHost() { |
| 101 LayerTreeSettings settings; | 101 LayerTreeSettings settings; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 130 bool did_commit_and_draw_frame_; | 130 bool did_commit_and_draw_frame_; |
| 131 gfx::Size size_; | 131 gfx::Size size_; |
| 132 | 132 |
| 133 private: | 133 private: |
| 134 base::DelegateSimpleThread no_loop_thread_; | 134 base::DelegateSimpleThread no_loop_thread_; |
| 135 }; | 135 }; |
| 136 | 136 |
| 137 class LayerTreeHostNoMessageLoopSmokeTest | 137 class LayerTreeHostNoMessageLoopSmokeTest |
| 138 : public LayerTreeHostNoMessageLoopTest { | 138 : public LayerTreeHostNoMessageLoopTest { |
| 139 protected: | 139 protected: |
| 140 virtual void RunTestWithoutMessageLoop() OVERRIDE { | 140 virtual void RunTestWithoutMessageLoop() override { |
| 141 gfx::Size size(100, 100); | 141 gfx::Size size(100, 100); |
| 142 | 142 |
| 143 // Set up root layer. | 143 // Set up root layer. |
| 144 { | 144 { |
| 145 scoped_refptr<SolidColorLayer> solid_color_layer = | 145 scoped_refptr<SolidColorLayer> solid_color_layer = |
| 146 SolidColorLayer::Create(); | 146 SolidColorLayer::Create(); |
| 147 solid_color_layer->SetBackgroundColor(SK_ColorRED); | 147 solid_color_layer->SetBackgroundColor(SK_ColorRED); |
| 148 solid_color_layer->SetBounds(size_); | 148 solid_color_layer->SetBounds(size_); |
| 149 solid_color_layer->SetIsDrawable(true); | 149 solid_color_layer->SetIsDrawable(true); |
| 150 root_layer_ = solid_color_layer; | 150 root_layer_ = solid_color_layer; |
| 151 } | 151 } |
| 152 | 152 |
| 153 SetupLayerTreeHost(); | 153 SetupLayerTreeHost(); |
| 154 Composite(); | 154 Composite(); |
| 155 TearDownLayerTreeHost(); | 155 TearDownLayerTreeHost(); |
| 156 } | 156 } |
| 157 }; | 157 }; |
| 158 | 158 |
| 159 TEST_F(LayerTreeHostNoMessageLoopSmokeTest, SmokeTest) { | 159 TEST_F(LayerTreeHostNoMessageLoopSmokeTest, SmokeTest) { |
| 160 RunTest(); | 160 RunTest(); |
| 161 } | 161 } |
| 162 | 162 |
| 163 class LayerTreeHostNoMessageLoopDelegatedLayer | 163 class LayerTreeHostNoMessageLoopDelegatedLayer |
| 164 : public LayerTreeHostNoMessageLoopTest, | 164 : public LayerTreeHostNoMessageLoopTest, |
| 165 public DelegatedFrameResourceCollectionClient { | 165 public DelegatedFrameResourceCollectionClient { |
| 166 protected: | 166 protected: |
| 167 virtual void RunTestWithoutMessageLoop() OVERRIDE { | 167 virtual void RunTestWithoutMessageLoop() override { |
| 168 resource_collection_ = new DelegatedFrameResourceCollection; | 168 resource_collection_ = new DelegatedFrameResourceCollection; |
| 169 frame_provider_ = new DelegatedFrameProvider( | 169 frame_provider_ = new DelegatedFrameProvider( |
| 170 resource_collection_.get(), CreateFrameDataWithResource(998)); | 170 resource_collection_.get(), CreateFrameDataWithResource(998)); |
| 171 | 171 |
| 172 root_layer_ = Layer::Create(); | 172 root_layer_ = Layer::Create(); |
| 173 delegated_layer_ = | 173 delegated_layer_ = |
| 174 FakeDelegatedRendererLayer::Create(frame_provider_.get()); | 174 FakeDelegatedRendererLayer::Create(frame_provider_.get()); |
| 175 delegated_layer_->SetBounds(size_); | 175 delegated_layer_->SetBounds(size_); |
| 176 delegated_layer_->SetIsDrawable(true); | 176 delegated_layer_->SetIsDrawable(true); |
| 177 root_layer_->AddChild(delegated_layer_); | 177 root_layer_->AddChild(delegated_layer_); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 191 TearDownLayerTreeHost(); | 191 TearDownLayerTreeHost(); |
| 192 delegated_layer_ = NULL; | 192 delegated_layer_ = NULL; |
| 193 frame_provider_ = NULL; | 193 frame_provider_ = NULL; |
| 194 | 194 |
| 195 // Resource from second frame should be returned. | 195 // Resource from second frame should be returned. |
| 196 CheckReturnedResource(1u); | 196 CheckReturnedResource(1u); |
| 197 resource_collection_ = NULL; | 197 resource_collection_ = NULL; |
| 198 } | 198 } |
| 199 | 199 |
| 200 // DelegatedFrameResourceCollectionClient overrides. | 200 // DelegatedFrameResourceCollectionClient overrides. |
| 201 virtual void UnusedResourcesAreAvailable() OVERRIDE {} | 201 virtual void UnusedResourcesAreAvailable() override {} |
| 202 | 202 |
| 203 private: | 203 private: |
| 204 scoped_ptr<DelegatedFrameData> CreateFrameDataWithResource( | 204 scoped_ptr<DelegatedFrameData> CreateFrameDataWithResource( |
| 205 ResourceProvider::ResourceId resource_id) { | 205 ResourceProvider::ResourceId resource_id) { |
| 206 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); | 206 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); |
| 207 gfx::Rect frame_rect(size_); | 207 gfx::Rect frame_rect(size_); |
| 208 | 208 |
| 209 scoped_ptr<RenderPass> root_pass(RenderPass::Create()); | 209 scoped_ptr<RenderPass> root_pass(RenderPass::Create()); |
| 210 root_pass->SetNew( | 210 root_pass->SetNew( |
| 211 RenderPassId(1, 1), frame_rect, frame_rect, gfx::Transform()); | 211 RenderPassId(1, 1), frame_rect, frame_rect, gfx::Transform()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 231 scoped_refptr<DelegatedFrameProvider> frame_provider_; | 231 scoped_refptr<DelegatedFrameProvider> frame_provider_; |
| 232 scoped_refptr<DelegatedRendererLayer> delegated_layer_; | 232 scoped_refptr<DelegatedRendererLayer> delegated_layer_; |
| 233 }; | 233 }; |
| 234 | 234 |
| 235 TEST_F(LayerTreeHostNoMessageLoopDelegatedLayer, SingleDelegatedLayer) { | 235 TEST_F(LayerTreeHostNoMessageLoopDelegatedLayer, SingleDelegatedLayer) { |
| 236 RunTest(); | 236 RunTest(); |
| 237 } | 237 } |
| 238 | 238 |
| 239 } // namespace | 239 } // namespace |
| 240 } // namespace cc | 240 } // namespace cc |
| OLD | NEW |