OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/test/fake_picture_pile_impl.h" | 5 #include "cc/test/fake_picture_pile_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
11 #include "cc/resources/picture_pile.h" | 11 #include "cc/resources/picture_pile.h" |
12 #include "cc/test/impl_side_painting_settings.h" | 12 #include "cc/test/impl_side_painting_settings.h" |
| 13 #include "cc/test/thread_blocker.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
14 | 15 |
15 namespace cc { | 16 namespace cc { |
16 | 17 |
17 FakePicturePileImpl::FakePicturePileImpl() {} | 18 FakePicturePileImpl::FakePicturePileImpl() : raster_thread_blocker_(nullptr) { |
| 19 } |
18 | 20 |
19 FakePicturePileImpl::FakePicturePileImpl(const PicturePileBase* other) | 21 FakePicturePileImpl::FakePicturePileImpl(const PicturePileBase* other, |
| 22 ThreadBlocker* blocker) |
20 : PicturePileImpl(other), | 23 : PicturePileImpl(other), |
| 24 raster_thread_blocker_(blocker), |
21 tile_grid_info_(other->GetTileGridInfoForTesting()) { | 25 tile_grid_info_(other->GetTileGridInfoForTesting()) { |
22 } | 26 } |
23 | 27 |
24 FakePicturePileImpl::~FakePicturePileImpl() {} | 28 FakePicturePileImpl::~FakePicturePileImpl() {} |
25 | 29 |
26 scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFilledPile( | 30 scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFilledPile( |
27 const gfx::Size& tile_size, | 31 const gfx::Size& tile_size, |
28 const gfx::Size& layer_bounds) { | 32 const gfx::Size& layer_bounds) { |
29 PicturePile pile; | 33 PicturePile pile; |
30 pile.tiling().SetTilingSize(layer_bounds); | 34 pile.tiling().SetTilingSize(layer_bounds); |
31 pile.tiling().SetMaxTextureSize(tile_size); | 35 pile.tiling().SetMaxTextureSize(tile_size); |
32 pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size); | 36 pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size); |
33 pile.SetRecordedViewportForTesting(gfx::Rect(layer_bounds)); | 37 pile.SetRecordedViewportForTesting(gfx::Rect(layer_bounds)); |
34 pile.SetHasAnyRecordingsForTesting(true); | 38 pile.SetHasAnyRecordingsForTesting(true); |
35 | 39 |
36 auto pile_impl = make_scoped_refptr(new FakePicturePileImpl(&pile)); | 40 auto pile_impl = make_scoped_refptr(new FakePicturePileImpl(&pile, nullptr)); |
37 for (int x = 0; x < pile_impl->tiling().num_tiles_x(); ++x) { | 41 for (int x = 0; x < pile_impl->tiling().num_tiles_x(); ++x) { |
38 for (int y = 0; y < pile_impl->tiling().num_tiles_y(); ++y) | 42 for (int y = 0; y < pile_impl->tiling().num_tiles_y(); ++y) |
39 pile_impl->AddRecordingAt(x, y); | 43 pile_impl->AddRecordingAt(x, y); |
40 } | 44 } |
41 return pile_impl; | 45 return pile_impl; |
42 } | 46 } |
43 | 47 |
44 scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateEmptyPile( | 48 scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateEmptyPile( |
45 const gfx::Size& tile_size, | 49 const gfx::Size& tile_size, |
46 const gfx::Size& layer_bounds) { | 50 const gfx::Size& layer_bounds) { |
47 PicturePile pile; | 51 PicturePile pile; |
48 pile.tiling().SetTilingSize(layer_bounds); | 52 pile.tiling().SetTilingSize(layer_bounds); |
49 pile.tiling().SetMaxTextureSize(tile_size); | 53 pile.tiling().SetMaxTextureSize(tile_size); |
50 pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size); | 54 pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size); |
51 pile.SetRecordedViewportForTesting(gfx::Rect()); | 55 pile.SetRecordedViewportForTesting(gfx::Rect()); |
52 pile.SetHasAnyRecordingsForTesting(false); | 56 pile.SetHasAnyRecordingsForTesting(false); |
53 return make_scoped_refptr(new FakePicturePileImpl(&pile)); | 57 return make_scoped_refptr(new FakePicturePileImpl(&pile, nullptr)); |
54 } | 58 } |
55 | 59 |
56 scoped_refptr<FakePicturePileImpl> | 60 scoped_refptr<FakePicturePileImpl> |
57 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( | 61 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( |
58 const gfx::Size& tile_size, | 62 const gfx::Size& tile_size, |
59 const gfx::Size& layer_bounds) { | 63 const gfx::Size& layer_bounds) { |
60 PicturePile pile; | 64 PicturePile pile; |
61 pile.tiling().SetTilingSize(layer_bounds); | 65 pile.tiling().SetTilingSize(layer_bounds); |
62 pile.tiling().SetMaxTextureSize(tile_size); | 66 pile.tiling().SetMaxTextureSize(tile_size); |
63 pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size); | 67 pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size); |
64 // This simulates a false positive for this flag. | 68 // This simulates a false positive for this flag. |
65 pile.SetRecordedViewportForTesting(gfx::Rect()); | 69 pile.SetRecordedViewportForTesting(gfx::Rect()); |
66 pile.SetHasAnyRecordingsForTesting(true); | 70 pile.SetHasAnyRecordingsForTesting(true); |
67 return make_scoped_refptr(new FakePicturePileImpl(&pile)); | 71 return make_scoped_refptr(new FakePicturePileImpl(&pile, nullptr)); |
68 } | 72 } |
69 | 73 |
70 scoped_refptr<FakePicturePileImpl> | 74 scoped_refptr<FakePicturePileImpl> |
71 FakePicturePileImpl::CreateInfiniteFilledPile() { | 75 FakePicturePileImpl::CreateInfiniteFilledPile() { |
72 PicturePile pile; | 76 PicturePile pile; |
73 gfx::Size size(std::numeric_limits<int>::max(), | 77 gfx::Size size(std::numeric_limits<int>::max(), |
74 std::numeric_limits<int>::max()); | 78 std::numeric_limits<int>::max()); |
75 pile.tiling().SetTilingSize(size); | 79 pile.tiling().SetTilingSize(size); |
76 pile.tiling().SetMaxTextureSize(size); | 80 pile.tiling().SetMaxTextureSize(size); |
77 pile.SetTileGridSize(size); | 81 pile.SetTileGridSize(size); |
78 pile.SetRecordedViewportForTesting(gfx::Rect(size)); | 82 pile.SetRecordedViewportForTesting(gfx::Rect(size)); |
79 pile.SetHasAnyRecordingsForTesting(true); | 83 pile.SetHasAnyRecordingsForTesting(true); |
80 | 84 |
81 auto pile_impl = make_scoped_refptr(new FakePicturePileImpl(&pile)); | 85 auto pile_impl = make_scoped_refptr(new FakePicturePileImpl(&pile, nullptr)); |
82 pile_impl->AddRecordingAt(0, 0); | 86 pile_impl->AddRecordingAt(0, 0); |
83 return pile_impl; | 87 return pile_impl; |
84 } | 88 } |
85 | 89 |
| 90 scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFromPile( |
| 91 const PicturePileBase* other, |
| 92 ThreadBlocker* blocker) { |
| 93 return make_scoped_refptr(new FakePicturePileImpl(other, blocker)); |
| 94 } |
| 95 |
| 96 void FakePicturePileImpl::PlaybackToCanvas(SkCanvas* canvas, |
| 97 const gfx::Rect& canvas_rect, |
| 98 float contents_scale) const { |
| 99 PicturePileImpl::PlaybackToCanvas(canvas, canvas_rect, contents_scale); |
| 100 if (raster_thread_blocker_) |
| 101 raster_thread_blocker_->Wait(); |
| 102 } |
| 103 |
86 void FakePicturePileImpl::AddRecordingAt(int x, int y) { | 104 void FakePicturePileImpl::AddRecordingAt(int x, int y) { |
87 EXPECT_GE(x, 0); | 105 EXPECT_GE(x, 0); |
88 EXPECT_GE(y, 0); | 106 EXPECT_GE(y, 0); |
89 EXPECT_LT(x, tiling_.num_tiles_x()); | 107 EXPECT_LT(x, tiling_.num_tiles_x()); |
90 EXPECT_LT(y, tiling_.num_tiles_y()); | 108 EXPECT_LT(y, tiling_.num_tiles_y()); |
91 | 109 |
92 if (HasRecordingAt(x, y)) | 110 if (HasRecordingAt(x, y)) |
93 return; | 111 return; |
94 gfx::Rect bounds(tiling().TileBounds(x, y)); | 112 gfx::Rect bounds(tiling().TileBounds(x, y)); |
95 bounds.Inset(-buffer_pixels(), -buffer_pixels()); | 113 bounds.Inset(-buffer_pixels(), -buffer_pixels()); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 Clear(); | 175 Clear(); |
158 tiling_.SetBorderTexels(new_buffer_pixels); | 176 tiling_.SetBorderTexels(new_buffer_pixels); |
159 } | 177 } |
160 | 178 |
161 void FakePicturePileImpl::Clear() { | 179 void FakePicturePileImpl::Clear() { |
162 picture_map_.clear(); | 180 picture_map_.clear(); |
163 recorded_viewport_ = gfx::Rect(); | 181 recorded_viewport_ = gfx::Rect(); |
164 } | 182 } |
165 | 183 |
166 } // namespace cc | 184 } // namespace cc |
OLD | NEW |