• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
TestContextSupport()12 TestContextSupport::TestContextSupport()
13     : last_swap_type_(NO_SWAP),
14       weak_ptr_factory_(this) {
15 }
16 
~TestContextSupport()17 TestContextSupport::~TestContextSupport() {}
18 
SignalSyncPoint(uint32 sync_point,const base::Closure & callback)19 void TestContextSupport::SignalSyncPoint(uint32 sync_point,
20                                          const base::Closure& callback) {
21   sync_point_callbacks_.push_back(callback);
22 }
23 
SignalQuery(uint32 query,const base::Closure & callback)24 void TestContextSupport::SignalQuery(uint32 query,
25                                      const base::Closure& callback) {
26   sync_point_callbacks_.push_back(callback);
27 }
28 
SetSurfaceVisible(bool visible)29 void TestContextSupport::SetSurfaceVisible(bool visible) {
30   if (!set_visible_callback_.is_null()) {
31     set_visible_callback_.Run(visible);
32   }
33 }
34 
SendManagedMemoryStats(const gpu::ManagedMemoryStats & stats)35 void TestContextSupport::SendManagedMemoryStats(
36     const gpu::ManagedMemoryStats& stats) {}
37 
CallAllSyncPointCallbacks()38 void TestContextSupport::CallAllSyncPointCallbacks() {
39   for (size_t i = 0; i < sync_point_callbacks_.size(); ++i) {
40     base::MessageLoop::current()->PostTask(
41         FROM_HERE, sync_point_callbacks_[i]);
42   }
43   sync_point_callbacks_.clear();
44 }
45 
SetSurfaceVisibleCallback(const SurfaceVisibleCallback & set_visible_callback)46 void TestContextSupport::SetSurfaceVisibleCallback(
47     const SurfaceVisibleCallback& set_visible_callback) {
48   set_visible_callback_ = set_visible_callback;
49 }
50 
Swap()51 void TestContextSupport::Swap() {
52   last_swap_type_ = SWAP;
53   base::MessageLoop::current()->PostTask(
54       FROM_HERE, base::Bind(&TestContextSupport::OnSwapBuffersComplete,
55                             weak_ptr_factory_.GetWeakPtr()));
56   CallAllSyncPointCallbacks();
57 }
58 
PartialSwapBuffers(gfx::Rect sub_buffer)59 void TestContextSupport::PartialSwapBuffers(gfx::Rect sub_buffer) {
60   last_swap_type_ = PARTIAL_SWAP;
61   last_partial_swap_rect_ = sub_buffer;
62   base::MessageLoop::current()->PostTask(
63       FROM_HERE, base::Bind(&TestContextSupport::OnSwapBuffersComplete,
64                             weak_ptr_factory_.GetWeakPtr()));
65   CallAllSyncPointCallbacks();
66 }
67 
SetSwapBuffersCompleteCallback(const base::Closure & callback)68 void TestContextSupport::SetSwapBuffersCompleteCallback(
69     const base::Closure& callback) {
70   swap_buffers_complete_callback_ = callback;
71 }
72 
OnSwapBuffersComplete()73 void TestContextSupport::OnSwapBuffersComplete() {
74   if (!swap_buffers_complete_callback_.is_null())
75     swap_buffers_complete_callback_.Run();
76 }
77 
78 }  // namespace cc
79