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.
5 #include "cc/test/test_context_support.h"
8 #include "base/message_loop/message_loop.h"
12 TestContextSupport::TestContextSupport()
13 : last_swap_type_(NO_SWAP
),
14 weak_ptr_factory_(this) {
17 TestContextSupport::~TestContextSupport() {}
19 void TestContextSupport::SignalSyncPoint(uint32 sync_point
,
20 const base::Closure
& callback
) {
21 sync_point_callbacks_
.push_back(callback
);
22 base::MessageLoop::current()->PostTask(
24 base::Bind(&TestContextSupport::CallAllSyncPointCallbacks
,
25 weak_ptr_factory_
.GetWeakPtr()));
28 void TestContextSupport::SignalQuery(uint32 query
,
29 const base::Closure
& callback
) {
30 sync_point_callbacks_
.push_back(callback
);
31 base::MessageLoop::current()->PostTask(
33 base::Bind(&TestContextSupport::CallAllSyncPointCallbacks
,
34 weak_ptr_factory_
.GetWeakPtr()));
37 void TestContextSupport::SetSurfaceVisible(bool visible
) {
38 if (!set_visible_callback_
.is_null()) {
39 set_visible_callback_
.Run(visible
);
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
]);
48 sync_point_callbacks_
.clear();
51 void TestContextSupport::SetSurfaceVisibleCallback(
52 const SurfaceVisibleCallback
& set_visible_callback
) {
53 set_visible_callback_
= set_visible_callback
;
56 void TestContextSupport::SetScheduleOverlayPlaneCallback(
57 const ScheduleOverlayPlaneCallback
& schedule_overlay_plane_callback
) {
58 schedule_overlay_plane_callback_
= schedule_overlay_plane_callback
;
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()));
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()));
76 void TestContextSupport::ScheduleOverlayPlane(
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
,
91 void TestContextSupport::SetSwapBuffersCompleteCallback(
92 const base::Closure
& callback
) {
93 swap_buffers_complete_callback_
= callback
;
96 void TestContextSupport::OnSwapBuffersComplete() {
97 if (!swap_buffers_complete_callback_
.is_null())
98 swap_buffers_complete_callback_
.Run();