| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/output/output_surface.h" | 5 #include "cc/output/output_surface.h" |
| 6 #include "cc/output/output_surface_client.h" | 6 #include "cc/output/output_surface_client.h" |
| 7 #include "cc/output/software_output_device.h" | 7 #include "cc/output/software_output_device.h" |
| 8 #include "cc/test/scheduler_test_common.h" | 8 #include "cc/test/scheduler_test_common.h" |
| 9 #include "cc/test/test_web_graphics_context_3d.h" | 9 #include "cc/test/test_web_graphics_context_3d.h" |
| 10 #include "gpu/GLES2/gl2extchromium.h" | 10 #include "gpu/GLES2/gl2extchromium.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 | 34 |
| 35 bool HasClientForTesting() { | 35 bool HasClientForTesting() { |
| 36 return HasClient(); | 36 return HasClient(); |
| 37 } | 37 } |
| 38 | 38 |
| 39 void OnVSyncParametersChangedForTesting(base::TimeTicks timebase, | 39 void OnVSyncParametersChangedForTesting(base::TimeTicks timebase, |
| 40 base::TimeDelta interval) { | 40 base::TimeDelta interval) { |
| 41 OnVSyncParametersChanged(timebase, interval); | 41 OnVSyncParametersChanged(timebase, interval); |
| 42 } | 42 } |
| 43 | 43 |
| 44 void BeginFrameForTesting(base::TimeTicks frame_time) { | 44 void BeginFrameForTesting() { |
| 45 BeginFrame(frame_time); | 45 BeginFrame(BeginFrameArgs::CreateBeginFrameForTesting()); |
| 46 } | 46 } |
| 47 | 47 |
| 48 void DidSwapBuffersForTesting() { | 48 void DidSwapBuffersForTesting() { |
| 49 DidSwapBuffers(); | 49 DidSwapBuffers(); |
| 50 } | 50 } |
| 51 | 51 |
| 52 int pending_swap_buffers() { | 52 int pending_swap_buffers() { |
| 53 return pending_swap_buffers_; | 53 return pending_swap_buffers_; |
| 54 } | 54 } |
| 55 | 55 |
| 56 void OnSwapBuffersCompleteForTesting() { | 56 void OnSwapBuffersCompleteForTesting() { |
| 57 OnSwapBuffersComplete(NULL); | 57 OnSwapBuffersComplete(NULL); |
| 58 } | 58 } |
| 59 }; | 59 }; |
| 60 | 60 |
| 61 class FakeOutputSurfaceClient : public OutputSurfaceClient { | 61 class FakeOutputSurfaceClient : public OutputSurfaceClient { |
| 62 public: | 62 public: |
| 63 FakeOutputSurfaceClient() | 63 FakeOutputSurfaceClient() |
| 64 : begin_frame_count_(0), | 64 : begin_frame_count_(0), |
| 65 deferred_initialize_result_(true), | 65 deferred_initialize_result_(true), |
| 66 deferred_initialize_called_(false), | 66 deferred_initialize_called_(false), |
| 67 did_lose_output_surface_called_(false) {} | 67 did_lose_output_surface_called_(false) {} |
| 68 | 68 |
| 69 virtual bool DeferredInitialize( | 69 virtual bool DeferredInitialize( |
| 70 scoped_refptr<ContextProvider> offscreen_context_provider) OVERRIDE { | 70 scoped_refptr<ContextProvider> offscreen_context_provider) OVERRIDE { |
| 71 deferred_initialize_called_ = true; | 71 deferred_initialize_called_ = true; |
| 72 return deferred_initialize_result_; | 72 return deferred_initialize_result_; |
| 73 } | 73 } |
| 74 virtual void SetNeedsRedrawRect(gfx::Rect damage_rect) OVERRIDE {} | 74 virtual void SetNeedsRedrawRect(gfx::Rect damage_rect) OVERRIDE {} |
| 75 virtual void BeginFrame(base::TimeTicks frame_time) OVERRIDE { | 75 virtual void BeginFrame(BeginFrameArgs args) OVERRIDE { |
| 76 begin_frame_count_++; | 76 begin_frame_count_++; |
| 77 } | 77 } |
| 78 virtual void OnSwapBuffersComplete(const CompositorFrameAck* ack) OVERRIDE {} | 78 virtual void OnSwapBuffersComplete(const CompositorFrameAck* ack) OVERRIDE {} |
| 79 virtual void DidLoseOutputSurface() OVERRIDE { | 79 virtual void DidLoseOutputSurface() OVERRIDE { |
| 80 did_lose_output_surface_called_ = true; | 80 did_lose_output_surface_called_ = true; |
| 81 } | 81 } |
| 82 virtual void SetExternalDrawConstraints(const gfx::Transform& transform, | 82 virtual void SetExternalDrawConstraints(const gfx::Transform& transform, |
| 83 gfx::Rect viewport) OVERRIDE {} | 83 gfx::Rect viewport) OVERRIDE {} |
| 84 | 84 |
| 85 int begin_frame_count() { | 85 int begin_frame_count() { |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 | 272 |
| 273 // Disabling SetNeedsBeginFrame should prevent further BeginFrames. | 273 // Disabling SetNeedsBeginFrame should prevent further BeginFrames. |
| 274 output_surface.SetNeedsBeginFrame(false); | 274 output_surface.SetNeedsBeginFrame(false); |
| 275 impl_thread.RunPendingTask(); | 275 impl_thread.RunPendingTask(); |
| 276 EXPECT_FALSE(impl_thread.HasPendingTask()); | 276 EXPECT_FALSE(impl_thread.HasPendingTask()); |
| 277 EXPECT_EQ(client.begin_frame_count(), 4); | 277 EXPECT_EQ(client.begin_frame_count(), 4); |
| 278 EXPECT_EQ(output_surface.pending_swap_buffers(), 1); | 278 EXPECT_EQ(output_surface.pending_swap_buffers(), 1); |
| 279 | 279 |
| 280 // Optimistically injected BeginFrames without a SetNeedsBeginFrame should be | 280 // Optimistically injected BeginFrames without a SetNeedsBeginFrame should be |
| 281 // allowed. | 281 // allowed. |
| 282 output_surface.BeginFrameForTesting(base::TimeTicks::Now()); | 282 output_surface.BeginFrameForTesting(); |
| 283 EXPECT_EQ(client.begin_frame_count(), 5); | 283 EXPECT_EQ(client.begin_frame_count(), 5); |
| 284 EXPECT_EQ(output_surface.pending_swap_buffers(), 1); | 284 EXPECT_EQ(output_surface.pending_swap_buffers(), 1); |
| 285 | 285 |
| 286 // Optimistically injected BeginFrames without a SetNeedsBeginFrame should | 286 // Optimistically injected BeginFrames without a SetNeedsBeginFrame should |
| 287 // still be throttled by pending begin frames however. | 287 // still be throttled by pending begin frames however. |
| 288 output_surface.BeginFrameForTesting(base::TimeTicks::Now()); | 288 output_surface.BeginFrameForTesting(); |
| 289 EXPECT_EQ(client.begin_frame_count(), 5); | 289 EXPECT_EQ(client.begin_frame_count(), 5); |
| 290 EXPECT_EQ(output_surface.pending_swap_buffers(), 1); | 290 EXPECT_EQ(output_surface.pending_swap_buffers(), 1); |
| 291 | 291 |
| 292 // Optimistically injected BeginFrames without a SetNeedsBeginFrame should | 292 // Optimistically injected BeginFrames without a SetNeedsBeginFrame should |
| 293 // also be throttled by pending swap buffers. | 293 // also be throttled by pending swap buffers. |
| 294 output_surface.DidSwapBuffersForTesting(); | 294 output_surface.DidSwapBuffersForTesting(); |
| 295 EXPECT_EQ(client.begin_frame_count(), 5); | 295 EXPECT_EQ(client.begin_frame_count(), 5); |
| 296 EXPECT_EQ(output_surface.pending_swap_buffers(), 2); | 296 EXPECT_EQ(output_surface.pending_swap_buffers(), 2); |
| 297 output_surface.BeginFrameForTesting(base::TimeTicks::Now()); | 297 output_surface.BeginFrameForTesting(); |
| 298 EXPECT_EQ(client.begin_frame_count(), 5); | 298 EXPECT_EQ(client.begin_frame_count(), 5); |
| 299 EXPECT_EQ(output_surface.pending_swap_buffers(), 2); | 299 EXPECT_EQ(output_surface.pending_swap_buffers(), 2); |
| 300 } | 300 } |
| 301 | 301 |
| 302 } // namespace | 302 } // namespace |
| 303 } // namespace cc | 303 } // namespace cc |
| OLD | NEW |