Home | History | Annotate | Download | only in test
      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
      3 // found in the LICENSE file.
      4 
      5 #include "cc/test/test_context_support.h"
      6 
      7 #include "base/bind.h"
      8 #include "base/message_loop/message_loop.h"
      9 
     10 namespace cc {
     11 
     12 TestContextSupport::TestContextSupport()
     13     : last_swap_type_(NO_SWAP),
     14       weak_ptr_factory_(this) {
     15 }
     16 
     17 TestContextSupport::~TestContextSupport() {}
     18 
     19 void TestContextSupport::SignalSyncPoint(uint32 sync_point,
     20                                          const base::Closure& callback) {
     21   sync_point_callbacks_.push_back(callback);
     22   base::MessageLoop::current()->PostTask(
     23       FROM_HERE,
     24       base::Bind(&TestContextSupport::CallAllSyncPointCallbacks,
     25                  weak_ptr_factory_.GetWeakPtr()));
     26 }
     27 
     28 void TestContextSupport::SignalQuery(uint32 query,
     29                                      const base::Closure& callback) {
     30   sync_point_callbacks_.push_back(callback);
     31   base::MessageLoop::current()->PostTask(
     32       FROM_HERE,
     33       base::Bind(&TestContextSupport::CallAllSyncPointCallbacks,
     34                  weak_ptr_factory_.GetWeakPtr()));
     35 }
     36 
     37 void TestContextSupport::SetSurfaceVisible(bool visible) {
     38   if (!set_visible_callback_.is_null()) {
     39     set_visible_callback_.Run(visible);
     40   }
     41 }
     42 
     43 void TestContextSupport::CallAllSyncPointCallbacks() {
     44   for (size_t i = 0; i < sync_point_callbacks_.size(); ++i) {
     45     base::MessageLoop::current()->PostTask(
     46         FROM_HERE, sync_point_callbacks_[i]);
     47   }
     48   sync_point_callbacks_.clear();
     49 }
     50 
     51 void TestContextSupport::SetSurfaceVisibleCallback(
     52     const SurfaceVisibleCallback& set_visible_callback) {
     53   set_visible_callback_ = set_visible_callback;
     54 }
     55 
     56 void TestContextSupport::SetScheduleOverlayPlaneCallback(
     57     const ScheduleOverlayPlaneCallback& schedule_overlay_plane_callback) {
     58   schedule_overlay_plane_callback_ = schedule_overlay_plane_callback;
     59 }
     60 
     61 void TestContextSupport::Swap() {
     62   last_swap_type_ = SWAP;
     63   base::MessageLoop::current()->PostTask(
     64       FROM_HERE, base::Bind(&TestContextSupport::OnSwapBuffersComplete,
     65                             weak_ptr_factory_.GetWeakPtr()));
     66 }
     67 
     68 void TestContextSupport::PartialSwapBuffers(const gfx::Rect& sub_buffer) {
     69   last_swap_type_ = PARTIAL_SWAP;
     70   last_partial_swap_rect_ = sub_buffer;
     71   base::MessageLoop::current()->PostTask(
     72       FROM_HERE, base::Bind(&TestContextSupport::OnSwapBuffersComplete,
     73                             weak_ptr_factory_.GetWeakPtr()));
     74 }
     75 
     76 void TestContextSupport::ScheduleOverlayPlane(
     77     int plane_z_order,
     78     gfx::OverlayTransform plane_transform,
     79     unsigned overlay_texture_id,
     80     const gfx::Rect& display_bounds,
     81     const gfx::RectF& uv_rect) {
     82   if (!schedule_overlay_plane_callback_.is_null()) {
     83     schedule_overlay_plane_callback_.Run(plane_z_order,
     84                                          plane_transform,
     85                                          overlay_texture_id,
     86                                          display_bounds,
     87                                          uv_rect);
     88   }
     89 }
     90 
     91 void TestContextSupport::SetSwapBuffersCompleteCallback(
     92     const base::Closure& callback) {
     93   swap_buffers_complete_callback_ = callback;
     94 }
     95 
     96 void TestContextSupport::OnSwapBuffersComplete() {
     97   if (!swap_buffers_complete_callback_.is_null())
     98     swap_buffers_complete_callback_.Run();
     99 }
    100 
    101 }  // namespace cc
    102