fake_picture_pile_impl.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
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/fake_picture_pile_impl.h" 6 7#include <utility> 8 9#include "cc/test/fake_rendering_stats_instrumentation.h" 10#include "cc/test/impl_side_painting_settings.h" 11#include "testing/gtest/include/gtest/gtest.h" 12 13namespace cc { 14 15FakePicturePileImpl::FakePicturePileImpl() {} 16 17FakePicturePileImpl::~FakePicturePileImpl() {} 18 19scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFilledPile( 20 gfx::Size tile_size, 21 gfx::Size layer_bounds) { 22 scoped_refptr<FakePicturePileImpl> pile(new FakePicturePileImpl()); 23 pile->tiling().SetTotalSize(layer_bounds); 24 pile->tiling().SetMaxTextureSize(tile_size); 25 pile->SetTileGridSize(ImplSidePaintingSettings().default_tile_size); 26 for (int x = 0; x < pile->tiling().num_tiles_x(); ++x) { 27 for (int y = 0; y < pile->tiling().num_tiles_y(); ++y) 28 pile->AddRecordingAt(x, y); 29 } 30 pile->UpdateRecordedRegion(); 31 return pile; 32} 33 34scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateEmptyPile( 35 gfx::Size tile_size, 36 gfx::Size layer_bounds) { 37 scoped_refptr<FakePicturePileImpl> pile(new FakePicturePileImpl()); 38 pile->tiling().SetTotalSize(layer_bounds); 39 pile->tiling().SetMaxTextureSize(tile_size); 40 pile->SetTileGridSize(ImplSidePaintingSettings().default_tile_size); 41 pile->UpdateRecordedRegion(); 42 return pile; 43} 44 45void FakePicturePileImpl::AddRecordingAt(int x, int y) { 46 EXPECT_GE(x, 0); 47 EXPECT_GE(y, 0); 48 EXPECT_LT(x, tiling_.num_tiles_x()); 49 EXPECT_LT(y, tiling_.num_tiles_y()); 50 51 if (HasRecordingAt(x, y)) 52 return; 53 gfx::Rect bounds(tiling().TileBounds(x, y)); 54 bounds.Inset(-buffer_pixels(), -buffer_pixels()); 55 56 FakeRenderingStatsInstrumentation stats_instrumentation; 57 58 scoped_refptr<Picture> picture(Picture::Create(bounds)); 59 picture->Record(&client_, tile_grid_info_, &stats_instrumentation); 60 picture->GatherPixelRefs(tile_grid_info_, &stats_instrumentation); 61 picture_list_map_[std::pair<int, int>(x, y)].push_back(picture); 62 EXPECT_TRUE(HasRecordingAt(x, y)); 63 64 UpdateRecordedRegion(); 65} 66 67void FakePicturePileImpl::AddPictureToRecording( 68 int x, 69 int y, 70 scoped_refptr<Picture> picture) { 71 picture_list_map_[std::pair<int, int>(x, y)].push_back(picture); 72} 73 74void FakePicturePileImpl::RemoveRecordingAt(int x, int y) { 75 EXPECT_GE(x, 0); 76 EXPECT_GE(y, 0); 77 EXPECT_LT(x, tiling_.num_tiles_x()); 78 EXPECT_LT(y, tiling_.num_tiles_y()); 79 80 if (!HasRecordingAt(x, y)) 81 return; 82 picture_list_map_.erase(std::pair<int, int>(x, y)); 83 EXPECT_FALSE(HasRecordingAt(x, y)); 84 85 UpdateRecordedRegion(); 86} 87 88void FakePicturePileImpl::RerecordPile() { 89 for (int y = 0; y < num_tiles_y(); ++y) { 90 for (int x = 0; x < num_tiles_x(); ++x) { 91 RemoveRecordingAt(x, y); 92 AddRecordingAt(x, y); 93 } 94 } 95} 96 97} // namespace cc 98