- add sources.
[platform/framework/web/crosswalk.git] / src / cc / test / fake_picture_pile_impl.cc
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 <limits>
8 #include <utility>
9
10 #include "cc/test/impl_side_painting_settings.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace cc {
14
15 FakePicturePileImpl::FakePicturePileImpl() {}
16
17 FakePicturePileImpl::~FakePicturePileImpl() {}
18
19 scoped_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
34 scoped_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
45 scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreatePile() {
46   scoped_refptr<FakePicturePileImpl> pile(new FakePicturePileImpl());
47   gfx::Size size(std::numeric_limits<int>::max(),
48                  std::numeric_limits<int>::max());
49   pile->Resize(size);
50   pile->recorded_region_ = Region(gfx::Rect(size));
51   return pile;
52 }
53
54 void FakePicturePileImpl::AddRecordingAt(int x, int y) {
55   EXPECT_GE(x, 0);
56   EXPECT_GE(y, 0);
57   EXPECT_LT(x, tiling_.num_tiles_x());
58   EXPECT_LT(y, tiling_.num_tiles_y());
59
60   if (HasRecordingAt(x, y))
61     return;
62   gfx::Rect bounds(tiling().TileBounds(x, y));
63   bounds.Inset(-buffer_pixels(), -buffer_pixels());
64
65   scoped_refptr<Picture> picture(Picture::Create(bounds));
66   picture->Record(&client_, tile_grid_info_);
67   picture->GatherPixelRefs(tile_grid_info_);
68   picture_map_[std::pair<int, int>(x, y)].picture = picture;
69   EXPECT_TRUE(HasRecordingAt(x, y));
70
71   UpdateRecordedRegion();
72 }
73
74 void 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_map_.erase(std::pair<int, int>(x, y));
83   EXPECT_FALSE(HasRecordingAt(x, y));
84
85   UpdateRecordedRegion();
86 }
87
88 void 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