diff options
Diffstat (limited to 'cc/test/fake_output_surface.cc')
-rw-r--r-- | cc/test/fake_output_surface.cc | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/cc/test/fake_output_surface.cc b/cc/test/fake_output_surface.cc index c3f3e1a..9ceadda 100644 --- a/cc/test/fake_output_surface.cc +++ b/cc/test/fake_output_surface.cc @@ -8,6 +8,7 @@ #include "base/message_loop.h" #include "cc/output/compositor_frame_ack.h" #include "cc/output/output_surface_client.h" +#include "testing/gtest/include/gtest/gtest.h" namespace cc { @@ -17,7 +18,8 @@ FakeOutputSurface::FakeOutputSurface( : OutputSurface(context3d.Pass()), num_sent_frames_(0), needs_begin_frame_(false), - forced_draw_to_software_device_(false) { + forced_draw_to_software_device_(false), + fake_weak_ptr_factory_(this) { if (delegated_rendering) { capabilities_.delegated_rendering = true; capabilities_.max_frames_pending = 1; @@ -28,7 +30,8 @@ FakeOutputSurface::FakeOutputSurface( scoped_ptr<SoftwareOutputDevice> software_device, bool delegated_rendering) : OutputSurface(software_device.Pass()), num_sent_frames_(0), - forced_draw_to_software_device_(false) { + forced_draw_to_software_device_(false), + fake_weak_ptr_factory_(this) { if (delegated_rendering) { capabilities_.delegated_rendering = true; capabilities_.max_frames_pending = 1; @@ -41,7 +44,8 @@ FakeOutputSurface::FakeOutputSurface( bool delegated_rendering) : OutputSurface(context3d.Pass(), software_device.Pass()), num_sent_frames_(0), - forced_draw_to_software_device_(false) { + forced_draw_to_software_device_(false), + fake_weak_ptr_factory_(this) { if (delegated_rendering) { capabilities_.delegated_rendering = true; capabilities_.max_frames_pending = 1; @@ -56,6 +60,7 @@ void FakeOutputSurface::SwapBuffers(CompositorFrame* frame) { frame->AssignTo(&last_sent_frame_); ++num_sent_frames_; PostSwapBuffersComplete(); + DidSwapBuffers(); } else { OutputSurface::SwapBuffers(frame); frame->AssignTo(&last_sent_frame_); @@ -65,12 +70,23 @@ void FakeOutputSurface::SwapBuffers(CompositorFrame* frame) { void FakeOutputSurface::SetNeedsBeginFrame(bool enable) { needs_begin_frame_ = enable; + OutputSurface::SetNeedsBeginFrame(enable); + + // If there is not BeginFrame emulation from the FrameRateController, + // then we just post a BeginFrame to emulate it as part of the test. + if (enable && !frame_rate_controller_) { + base::MessageLoop::current()->PostDelayedTask( + FROM_HERE, base::Bind(&FakeOutputSurface::OnBeginFrame, + fake_weak_ptr_factory_.GetWeakPtr()), + base::TimeDelta::FromMilliseconds(16)); + } } -void FakeOutputSurface::BeginFrame(base::TimeTicks frame_time) { - client_->BeginFrame(frame_time); +void FakeOutputSurface::OnBeginFrame() { + OutputSurface::BeginFrame(base::TimeTicks::Now()); } + bool FakeOutputSurface::ForcedDrawToSoftwareDevice() const { return forced_draw_to_software_device_; } |