1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef CC_TEST_MOCK_OCCLUSION_TRACKER_H_ 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define CC_TEST_MOCK_OCCLUSION_TRACKER_H_ 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "cc/trees/occlusion_tracker.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace cc { 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)template <typename LayerType> 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class MockOcclusionTracker : public OcclusionTracker<LayerType> { 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // This class is used for testing only. It fakes just enough information to 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // calculate unoccluded content rect and unoccluded contributing surface 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // content rect. It calls the helper function of occlusion tracker to avoid 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // DCHECKs since testing environment won't be set up properly to pass those. 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public: 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MockOcclusionTracker() 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) : OcclusionTracker<LayerType>(gfx::Rect(0, 0, 1000, 1000)) { 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) typename OcclusionTracker<LayerType>::StackObject stack_obj; 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) OcclusionTracker<LayerType>::stack_.push_back(stack_obj); 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) OcclusionTracker<LayerType>::stack_.push_back(stack_obj); 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) explicit MockOcclusionTracker(const gfx::Rect& screen_scissor_rect) 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) : OcclusionTracker<LayerType>(screen_scissor_rect) { 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) typename OcclusionTracker<LayerType>::StackObject stack_obj; 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) OcclusionTracker<LayerType>::stack_.push_back(stack_obj); 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) OcclusionTracker<LayerType>::stack_.push_back(stack_obj); 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void set_occluded_target_rect(const gfx::Rect& occluded) { 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) OcclusionTracker<LayerType>::stack_.back().occlusion_from_inside_target = 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) occluded; 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void set_occluded_target_rect_for_contributing_surface( 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const gfx::Rect& occluded) { 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) OcclusionTracker< 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) LayerType>::stack_[OcclusionTracker<LayerType>::stack_.size() - 2] 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) .occlusion_from_inside_target = occluded; 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(MockOcclusionTracker); 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}; 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace cc 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif // CC_TEST_MOCK_OCCLUSION_TRACKER_H_ 52