OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/test/layer_tree_test.h" | 5 #include "cc/test/layer_tree_test.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "cc/animation/animation.h" | 8 #include "cc/animation/animation.h" |
9 #include "cc/animation/animation_registrar.h" | 9 #include "cc/animation/animation_registrar.h" |
10 #include "cc/animation/layer_animation_controller.h" | 10 #include "cc/animation/layer_animation_controller.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 TestHooks::TestHooks() {} | 30 TestHooks::TestHooks() {} |
31 | 31 |
32 TestHooks::~TestHooks() {} | 32 TestHooks::~TestHooks() {} |
33 | 33 |
34 bool TestHooks::PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 34 bool TestHooks::PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
35 LayerTreeHostImpl::FrameData* frame_data, | 35 LayerTreeHostImpl::FrameData* frame_data, |
36 bool result) { | 36 bool result) { |
37 return true; | 37 return true; |
38 } | 38 } |
39 | 39 |
40 bool TestHooks::CanActivatePendingTree(LayerTreeHostImpl* host_impl) { | |
41 return true; | |
42 } | |
43 | |
44 bool TestHooks::CanActivatePendingTreeIfNeeded(LayerTreeHostImpl* host_impl) { | |
45 return true; | |
46 } | |
47 | |
48 // Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks. | 40 // Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks. |
49 class LayerTreeHostImplForTesting : public LayerTreeHostImpl { | 41 class LayerTreeHostImplForTesting : public LayerTreeHostImpl { |
50 public: | 42 public: |
51 static scoped_ptr<LayerTreeHostImplForTesting> Create( | 43 static scoped_ptr<LayerTreeHostImplForTesting> Create( |
52 TestHooks* test_hooks, | 44 TestHooks* test_hooks, |
53 const LayerTreeSettings& settings, | 45 const LayerTreeSettings& settings, |
54 LayerTreeHostImplClient* host_impl_client, | 46 LayerTreeHostImplClient* host_impl_client, |
55 Proxy* proxy, | 47 Proxy* proxy, |
56 RenderingStatsInstrumentation* stats_instrumentation) { | 48 RenderingStatsInstrumentation* stats_instrumentation) { |
57 return make_scoped_ptr( | 49 return make_scoped_ptr( |
58 new LayerTreeHostImplForTesting(test_hooks, | 50 new LayerTreeHostImplForTesting(test_hooks, |
59 settings, | 51 settings, |
60 host_impl_client, | 52 host_impl_client, |
61 proxy, | 53 proxy, |
62 stats_instrumentation)); | 54 stats_instrumentation)); |
63 } | 55 } |
64 | 56 |
65 protected: | 57 protected: |
66 LayerTreeHostImplForTesting( | 58 LayerTreeHostImplForTesting( |
67 TestHooks* test_hooks, | 59 TestHooks* test_hooks, |
68 const LayerTreeSettings& settings, | 60 const LayerTreeSettings& settings, |
69 LayerTreeHostImplClient* host_impl_client, | 61 LayerTreeHostImplClient* host_impl_client, |
70 Proxy* proxy, | 62 Proxy* proxy, |
71 RenderingStatsInstrumentation* stats_instrumentation) | 63 RenderingStatsInstrumentation* stats_instrumentation) |
72 : LayerTreeHostImpl(settings, | 64 : LayerTreeHostImpl(settings, |
73 host_impl_client, | 65 host_impl_client, |
74 proxy, | 66 proxy, |
75 stats_instrumentation), | 67 stats_instrumentation), |
76 test_hooks_(test_hooks) {} | 68 test_hooks_(test_hooks), |
| 69 block_notify_ready_to_activate_for_testing_(false), |
| 70 notify_ready_to_activate_was_blocked_(false) {} |
| 71 |
| 72 virtual void BeginFrame(const BeginFrameArgs& args) OVERRIDE { |
| 73 test_hooks_->WillBeginImplFrameOnThread(this, args); |
| 74 LayerTreeHostImpl::BeginFrame(args); |
| 75 } |
77 | 76 |
78 virtual void BeginCommit() OVERRIDE { | 77 virtual void BeginCommit() OVERRIDE { |
79 LayerTreeHostImpl::BeginCommit(); | 78 LayerTreeHostImpl::BeginCommit(); |
80 test_hooks_->BeginCommitOnThread(this); | 79 test_hooks_->BeginCommitOnThread(this); |
81 } | 80 } |
82 | 81 |
83 virtual void CommitComplete() OVERRIDE { | 82 virtual void CommitComplete() OVERRIDE { |
84 LayerTreeHostImpl::CommitComplete(); | 83 LayerTreeHostImpl::CommitComplete(); |
85 test_hooks_->CommitCompleteOnThread(this); | 84 test_hooks_->CommitCompleteOnThread(this); |
86 | 85 |
(...skipping 20 matching lines...) Expand all Loading... |
107 bool result = LayerTreeHostImpl::SwapBuffers(frame); | 106 bool result = LayerTreeHostImpl::SwapBuffers(frame); |
108 test_hooks_->SwapBuffersOnThread(this, result); | 107 test_hooks_->SwapBuffersOnThread(this, result); |
109 return result; | 108 return result; |
110 } | 109 } |
111 | 110 |
112 virtual void OnSwapBuffersComplete(const CompositorFrameAck* ack) OVERRIDE { | 111 virtual void OnSwapBuffersComplete(const CompositorFrameAck* ack) OVERRIDE { |
113 LayerTreeHostImpl::OnSwapBuffersComplete(ack); | 112 LayerTreeHostImpl::OnSwapBuffersComplete(ack); |
114 test_hooks_->SwapBuffersCompleteOnThread(this); | 113 test_hooks_->SwapBuffersCompleteOnThread(this); |
115 } | 114 } |
116 | 115 |
117 virtual void ActivatePendingTreeIfNeeded() OVERRIDE { | 116 virtual void NotifyReadyToActivate() OVERRIDE { |
118 if (!pending_tree()) | 117 if (block_notify_ready_to_activate_for_testing_) |
119 return; | 118 notify_ready_to_activate_was_blocked_ = true; |
| 119 else |
| 120 client_->NotifyReadyToActivate(); |
| 121 } |
120 | 122 |
121 if (!test_hooks_->CanActivatePendingTreeIfNeeded(this)) | 123 virtual void BlockNotifyReadyToActivateForTesting(bool block) OVERRIDE { |
122 return; | 124 block_notify_ready_to_activate_for_testing_ = block; |
123 | 125 if (!block && notify_ready_to_activate_was_blocked_) { |
124 LayerTreeHostImpl::ActivatePendingTreeIfNeeded(); | 126 NotifyReadyToActivate(); |
| 127 notify_ready_to_activate_was_blocked_ = false; |
| 128 } |
125 } | 129 } |
126 | 130 |
127 virtual void ActivatePendingTree() OVERRIDE { | 131 virtual void ActivatePendingTree() OVERRIDE { |
128 if (!test_hooks_->CanActivatePendingTree(this)) | |
129 return; | |
130 | |
131 test_hooks_->WillActivateTreeOnThread(this); | 132 test_hooks_->WillActivateTreeOnThread(this); |
132 LayerTreeHostImpl::ActivatePendingTree(); | 133 LayerTreeHostImpl::ActivatePendingTree(); |
133 DCHECK(!pending_tree()); | 134 DCHECK(!pending_tree()); |
134 test_hooks_->DidActivateTreeOnThread(this); | 135 test_hooks_->DidActivateTreeOnThread(this); |
135 } | 136 } |
136 | 137 |
137 virtual bool InitializeRenderer(scoped_ptr<OutputSurface> output_surface) | 138 virtual bool InitializeRenderer(scoped_ptr<OutputSurface> output_surface) |
138 OVERRIDE { | 139 OVERRIDE { |
139 bool success = LayerTreeHostImpl::InitializeRenderer(output_surface.Pass()); | 140 bool success = LayerTreeHostImpl::InitializeRenderer(output_surface.Pass()); |
140 test_hooks_->InitializedRendererOnThread(this, success); | 141 test_hooks_->InitializedRendererOnThread(this, success); |
(...skipping 25 matching lines...) Expand all Loading... |
166 } | 167 } |
167 test_hooks_->UpdateAnimationState(this, has_unfinished_animation); | 168 test_hooks_->UpdateAnimationState(this, has_unfinished_animation); |
168 } | 169 } |
169 | 170 |
170 virtual base::TimeDelta LowFrequencyAnimationInterval() const OVERRIDE { | 171 virtual base::TimeDelta LowFrequencyAnimationInterval() const OVERRIDE { |
171 return base::TimeDelta::FromMilliseconds(16); | 172 return base::TimeDelta::FromMilliseconds(16); |
172 } | 173 } |
173 | 174 |
174 private: | 175 private: |
175 TestHooks* test_hooks_; | 176 TestHooks* test_hooks_; |
| 177 bool block_notify_ready_to_activate_for_testing_; |
| 178 bool notify_ready_to_activate_was_blocked_; |
176 }; | 179 }; |
177 | 180 |
178 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting. | 181 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting. |
179 class LayerTreeHostForTesting : public cc::LayerTreeHost { | 182 class LayerTreeHostForTesting : public cc::LayerTreeHost { |
180 public: | 183 public: |
181 static scoped_ptr<LayerTreeHostForTesting> Create( | 184 static scoped_ptr<LayerTreeHostForTesting> Create( |
182 TestHooks* test_hooks, | 185 TestHooks* test_hooks, |
183 cc::LayerTreeHostClient* host_client, | 186 cc::LayerTreeHostClient* host_client, |
184 const cc::LayerTreeSettings& settings, | 187 const cc::LayerTreeSettings& settings, |
185 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { | 188 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 | 627 |
625 scoped_refptr<cc::ContextProvider> LayerTreeTest:: | 628 scoped_refptr<cc::ContextProvider> LayerTreeTest:: |
626 OffscreenContextProviderForCompositorThread() { | 629 OffscreenContextProviderForCompositorThread() { |
627 if (!compositor_thread_contexts_.get() || | 630 if (!compositor_thread_contexts_.get() || |
628 compositor_thread_contexts_->DestroyedOnMainThread()) | 631 compositor_thread_contexts_->DestroyedOnMainThread()) |
629 compositor_thread_contexts_ = TestContextProvider::Create(); | 632 compositor_thread_contexts_ = TestContextProvider::Create(); |
630 return compositor_thread_contexts_; | 633 return compositor_thread_contexts_; |
631 } | 634 } |
632 | 635 |
633 } // namespace cc | 636 } // namespace cc |
OLD | NEW |