Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(545)

Side by Side Diff: cc/layers/picture_layer_unittest.cc

Issue 1783613004: CC Animation: Erase cc::LayerSettings everywhere. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@eraseandroid
Patch Set: Rebase. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/layers/picture_layer.h" 5 #include "cc/layers/picture_layer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "cc/layers/append_quads_data.h" 10 #include "cc/layers/append_quads_data.h"
11 #include "cc/layers/content_layer_client.h" 11 #include "cc/layers/content_layer_client.h"
12 #include "cc/layers/empty_content_layer_client.h" 12 #include "cc/layers/empty_content_layer_client.h"
13 #include "cc/layers/layer_settings.h"
14 #include "cc/layers/picture_layer_impl.h" 13 #include "cc/layers/picture_layer_impl.h"
15 #include "cc/playback/display_item_list_settings.h" 14 #include "cc/playback/display_item_list_settings.h"
16 #include "cc/proto/layer.pb.h" 15 #include "cc/proto/layer.pb.h"
17 #include "cc/test/fake_display_list_recording_source.h" 16 #include "cc/test/fake_display_list_recording_source.h"
18 #include "cc/test/fake_image_serialization_processor.h" 17 #include "cc/test/fake_image_serialization_processor.h"
19 #include "cc/test/fake_layer_tree_host.h" 18 #include "cc/test/fake_layer_tree_host.h"
20 #include "cc/test/fake_output_surface.h" 19 #include "cc/test/fake_output_surface.h"
21 #include "cc/test/fake_picture_layer.h" 20 #include "cc/test/fake_picture_layer.h"
22 #include "cc/test/fake_picture_layer_impl.h" 21 #include "cc/test/fake_picture_layer_impl.h"
23 #include "cc/test/fake_proxy.h" 22 #include "cc/test/fake_proxy.h"
24 #include "cc/test/layer_tree_settings_for_testing.h"
25 #include "cc/test/skia_common.h" 23 #include "cc/test/skia_common.h"
26 #include "cc/test/test_shared_bitmap_manager.h" 24 #include "cc/test/test_shared_bitmap_manager.h"
27 #include "cc/test/test_task_graph_runner.h" 25 #include "cc/test/test_task_graph_runner.h"
28 #include "cc/trees/single_thread_proxy.h" 26 #include "cc/trees/single_thread_proxy.h"
29 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
30 28
31 namespace cc { 29 namespace cc {
32 30
33 class TestSerializationPictureLayer : public PictureLayer { 31 class TestSerializationPictureLayer : public PictureLayer {
34 public: 32 public:
35 static scoped_refptr<TestSerializationPictureLayer> Create( 33 static scoped_refptr<TestSerializationPictureLayer> Create(
36 const gfx::Size& recording_source_viewport) { 34 const gfx::Size& recording_source_viewport) {
37 return make_scoped_refptr(new TestSerializationPictureLayer( 35 return make_scoped_refptr(new TestSerializationPictureLayer(
38 LayerSettings(), EmptyContentLayerClient::GetInstance(), 36 EmptyContentLayerClient::GetInstance(),
39 FakeDisplayListRecordingSource::CreateFilledRecordingSource( 37 FakeDisplayListRecordingSource::CreateFilledRecordingSource(
40 recording_source_viewport), 38 recording_source_viewport),
41 recording_source_viewport)); 39 recording_source_viewport));
42 } 40 }
43 41
44 FakeDisplayListRecordingSource* recording_source() { 42 FakeDisplayListRecordingSource* recording_source() {
45 return static_cast<FakeDisplayListRecordingSource*>( 43 return static_cast<FakeDisplayListRecordingSource*>(
46 recording_source_.get()); 44 recording_source_.get());
47 } 45 }
48 46
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 // Validate that the PictureLayer specific fields are properly set. 84 // Validate that the PictureLayer specific fields are properly set.
87 EXPECT_TRUE(recording_source()->EqualsTo(*layer->recording_source())); 85 EXPECT_TRUE(recording_source()->EqualsTo(*layer->recording_source()));
88 EXPECT_EQ(last_updated_visible_layer_rect_, 86 EXPECT_EQ(last_updated_visible_layer_rect_,
89 layer->last_updated_visible_layer_rect_); 87 layer->last_updated_visible_layer_rect_);
90 EXPECT_EQ(update_source_frame_number_, layer->update_source_frame_number_); 88 EXPECT_EQ(update_source_frame_number_, layer->update_source_frame_number_);
91 EXPECT_EQ(is_mask_, layer->is_mask_); 89 EXPECT_EQ(is_mask_, layer->is_mask_);
92 EXPECT_EQ(nearest_neighbor_, layer->nearest_neighbor_); 90 EXPECT_EQ(nearest_neighbor_, layer->nearest_neighbor_);
93 } 91 }
94 92
95 private: 93 private:
96 TestSerializationPictureLayer(const LayerSettings& settings, 94 TestSerializationPictureLayer(ContentLayerClient* client,
97 ContentLayerClient* client,
98 scoped_ptr<DisplayListRecordingSource> source, 95 scoped_ptr<DisplayListRecordingSource> source,
99 const gfx::Size& recording_source_viewport) 96 const gfx::Size& recording_source_viewport)
100 : PictureLayer(settings, client, std::move(source)), 97 : PictureLayer(client, std::move(source)),
101 recording_source_viewport_(recording_source_viewport) {} 98 recording_source_viewport_(recording_source_viewport) {}
102 ~TestSerializationPictureLayer() override {} 99 ~TestSerializationPictureLayer() override {}
103 100
104 gfx::Size recording_source_viewport_; 101 gfx::Size recording_source_viewport_;
105 102
106 DISALLOW_COPY_AND_ASSIGN(TestSerializationPictureLayer); 103 DISALLOW_COPY_AND_ASSIGN(TestSerializationPictureLayer);
107 }; 104 };
108 105
109 namespace { 106 namespace {
110 107
(...skipping 26 matching lines...) Expand all
137 layer->recording_source()->add_draw_rect( 134 layer->recording_source()->add_draw_rect(
138 gfx::Rect(recording_source_viewport)); 135 gfx::Rect(recording_source_viewport));
139 layer->recording_source()->SetGenerateDiscardableImagesMetadata(true); 136 layer->recording_source()->SetGenerateDiscardableImagesMetadata(true);
140 layer->recording_source()->Rerecord(); 137 layer->recording_source()->Rerecord();
141 layer->ValidateSerialization(); 138 layer->ValidateSerialization();
142 } 139 }
143 140
144 TEST(PictureLayerTest, TestSerializationDeserialization) { 141 TEST(PictureLayerTest, TestSerializationDeserialization) {
145 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D); 142 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D);
146 TestTaskGraphRunner task_graph_runner; 143 TestTaskGraphRunner task_graph_runner;
147 LayerTreeSettings settings;
148 settings.use_compositor_animation_timelines = true;
149 scoped_ptr<FakeImageSerializationProcessor> 144 scoped_ptr<FakeImageSerializationProcessor>
150 fake_image_serialization_processor = 145 fake_image_serialization_processor =
151 make_scoped_ptr(new FakeImageSerializationProcessor); 146 make_scoped_ptr(new FakeImageSerializationProcessor);
152 scoped_ptr<FakeLayerTreeHost> host = 147 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(
153 FakeLayerTreeHost::Create(&host_client, &task_graph_runner, settings, 148 &host_client, &task_graph_runner, LayerTreeSettings(),
154 CompositorMode::SINGLE_THREADED, 149 CompositorMode::SINGLE_THREADED,
155 fake_image_serialization_processor.get()); 150 fake_image_serialization_processor.get());
156 gfx::Size recording_source_viewport(256, 256); 151 gfx::Size recording_source_viewport(256, 256);
157 scoped_refptr<TestSerializationPictureLayer> layer = 152 scoped_refptr<TestSerializationPictureLayer> layer =
158 TestSerializationPictureLayer::Create(recording_source_viewport); 153 TestSerializationPictureLayer::Create(recording_source_viewport);
159 host->SetRootLayer(layer); 154 host->SetRootLayer(layer);
160 155
161 layer->SetBounds(recording_source_viewport); 156 layer->SetBounds(recording_source_viewport);
162 layer->set_update_source_frame_number(0); 157 layer->set_update_source_frame_number(0);
163 layer->recording_source()->SetDisplayListUsesCachedPicture(false); 158 layer->recording_source()->SetDisplayListUsesCachedPicture(false);
164 layer->recording_source()->add_draw_rect( 159 layer->recording_source()->add_draw_rect(
165 gfx::Rect(recording_source_viewport)); 160 gfx::Rect(recording_source_viewport));
(...skipping 10 matching lines...) Expand all
176 171
177 gfx::Size recording_source_viewport(256, 256); 172 gfx::Size recording_source_viewport(256, 256);
178 scoped_refptr<TestSerializationPictureLayer> layer = 173 scoped_refptr<TestSerializationPictureLayer> layer =
179 TestSerializationPictureLayer::Create(recording_source_viewport); 174 TestSerializationPictureLayer::Create(recording_source_viewport);
180 host->SetRootLayer(layer); 175 host->SetRootLayer(layer);
181 layer->ValidateSerialization(); 176 layer->ValidateSerialization();
182 } 177 }
183 178
184 TEST(PictureLayerTest, NoTilesIfEmptyBounds) { 179 TEST(PictureLayerTest, NoTilesIfEmptyBounds) {
185 ContentLayerClient* client = EmptyContentLayerClient::GetInstance(); 180 ContentLayerClient* client = EmptyContentLayerClient::GetInstance();
186 scoped_refptr<PictureLayer> layer = 181 scoped_refptr<PictureLayer> layer = PictureLayer::Create(client);
187 PictureLayer::Create(LayerSettings(), client);
188 layer->SetBounds(gfx::Size(10, 10)); 182 layer->SetBounds(gfx::Size(10, 10));
189 183
190 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D); 184 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D);
191 TestTaskGraphRunner task_graph_runner; 185 TestTaskGraphRunner task_graph_runner;
192 scoped_ptr<FakeLayerTreeHost> host = 186 scoped_ptr<FakeLayerTreeHost> host =
193 FakeLayerTreeHost::Create(&host_client, &task_graph_runner); 187 FakeLayerTreeHost::Create(&host_client, &task_graph_runner);
194 host->SetRootLayer(layer); 188 host->SetRootLayer(layer);
195 layer->SetIsDrawable(true); 189 layer->SetIsDrawable(true);
196 layer->SavePaintProperties(); 190 layer->SavePaintProperties();
197 layer->Update(); 191 layer->Update();
198 192
199 EXPECT_EQ(0, host->source_frame_number()); 193 EXPECT_EQ(0, host->source_frame_number());
200 host->CommitComplete(); 194 host->CommitComplete();
201 EXPECT_EQ(1, host->source_frame_number()); 195 EXPECT_EQ(1, host->source_frame_number());
202 196
203 layer->SetBounds(gfx::Size(0, 0)); 197 layer->SetBounds(gfx::Size(0, 0));
204 layer->SavePaintProperties(); 198 layer->SavePaintProperties();
205 // Intentionally skipping Update since it would normally be skipped on 199 // Intentionally skipping Update since it would normally be skipped on
206 // a layer with empty bounds. 200 // a layer with empty bounds.
207 201
208 FakeImplTaskRunnerProvider impl_task_runner_provider; 202 FakeImplTaskRunnerProvider impl_task_runner_provider;
209 203
210 TestSharedBitmapManager shared_bitmap_manager; 204 TestSharedBitmapManager shared_bitmap_manager;
211 scoped_ptr<FakeOutputSurface> output_surface = 205 scoped_ptr<FakeOutputSurface> output_surface =
212 FakeOutputSurface::CreateSoftware( 206 FakeOutputSurface::CreateSoftware(
213 make_scoped_ptr(new SoftwareOutputDevice)); 207 make_scoped_ptr(new SoftwareOutputDevice));
214 FakeLayerTreeHostImpl host_impl(LayerTreeSettingsForTesting(), 208 FakeLayerTreeHostImpl host_impl(LayerTreeSettings(),
215 &impl_task_runner_provider, 209 &impl_task_runner_provider,
216 &shared_bitmap_manager, &task_graph_runner); 210 &shared_bitmap_manager, &task_graph_runner);
217 host_impl.InitializeRenderer(output_surface.get()); 211 host_impl.InitializeRenderer(output_surface.get());
218 host_impl.CreatePendingTree(); 212 host_impl.CreatePendingTree();
219 scoped_ptr<FakePictureLayerImpl> layer_impl = 213 scoped_ptr<FakePictureLayerImpl> layer_impl =
220 FakePictureLayerImpl::Create(host_impl.pending_tree(), 1); 214 FakePictureLayerImpl::Create(host_impl.pending_tree(), 1);
221 215
222 layer->PushPropertiesTo(layer_impl.get()); 216 layer->PushPropertiesTo(layer_impl.get());
223 EXPECT_FALSE(layer_impl->CanHaveTilings()); 217 EXPECT_FALSE(layer_impl->CanHaveTilings());
224 EXPECT_TRUE(layer_impl->bounds() == gfx::Size(0, 0)); 218 EXPECT_TRUE(layer_impl->bounds() == gfx::Size(0, 0));
225 EXPECT_EQ(gfx::Size(), layer_impl->raster_source()->GetSize()); 219 EXPECT_EQ(gfx::Size(), layer_impl->raster_source()->GetSize());
226 EXPECT_FALSE(layer_impl->raster_source()->HasRecordings()); 220 EXPECT_FALSE(layer_impl->raster_source()->HasRecordings());
227 } 221 }
228 222
229 TEST(PictureLayerTest, ClearVisibleRectWhenNoTiling) { 223 TEST(PictureLayerTest, ClearVisibleRectWhenNoTiling) {
230 gfx::Size layer_size(50, 50); 224 gfx::Size layer_size(50, 50);
231 FakeContentLayerClient client; 225 FakeContentLayerClient client;
232 client.set_bounds(layer_size); 226 client.set_bounds(layer_size);
233 skia::RefPtr<SkImage> image = CreateDiscardableImage(layer_size); 227 skia::RefPtr<SkImage> image = CreateDiscardableImage(layer_size);
234 client.add_draw_image(image.get(), gfx::Point(), SkPaint()); 228 client.add_draw_image(image.get(), gfx::Point(), SkPaint());
235 scoped_refptr<PictureLayer> layer = 229 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&client);
236 PictureLayer::Create(LayerSettings(), &client);
237 layer->SetBounds(gfx::Size(10, 10)); 230 layer->SetBounds(gfx::Size(10, 10));
238 231
239 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D); 232 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D);
240 TestTaskGraphRunner task_graph_runner; 233 TestTaskGraphRunner task_graph_runner;
241 scoped_ptr<FakeLayerTreeHost> host = 234 scoped_ptr<FakeLayerTreeHost> host =
242 FakeLayerTreeHost::Create(&host_client, &task_graph_runner); 235 FakeLayerTreeHost::Create(&host_client, &task_graph_runner);
243 host->SetRootLayer(layer); 236 host->SetRootLayer(layer);
244 layer->SetIsDrawable(true); 237 layer->SetIsDrawable(true);
245 layer->SavePaintProperties(); 238 layer->SavePaintProperties();
246 layer->Update(); 239 layer->Update();
247 240
248 EXPECT_EQ(0, host->source_frame_number()); 241 EXPECT_EQ(0, host->source_frame_number());
249 host->CommitComplete(); 242 host->CommitComplete();
250 EXPECT_EQ(1, host->source_frame_number()); 243 EXPECT_EQ(1, host->source_frame_number());
251 244
252 layer->SavePaintProperties(); 245 layer->SavePaintProperties();
253 layer->Update(); 246 layer->Update();
254 247
255 FakeImplTaskRunnerProvider impl_task_runner_provider; 248 FakeImplTaskRunnerProvider impl_task_runner_provider;
256 249
257 TestSharedBitmapManager shared_bitmap_manager; 250 TestSharedBitmapManager shared_bitmap_manager;
258 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d()); 251 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d());
259 LayerTreeSettings layer_tree_settings = LayerTreeSettingsForTesting(); 252 LayerTreeSettings layer_tree_settings = LayerTreeSettings();
260 layer_tree_settings.image_decode_tasks_enabled = true; 253 layer_tree_settings.image_decode_tasks_enabled = true;
261 FakeLayerTreeHostImpl host_impl(layer_tree_settings, 254 FakeLayerTreeHostImpl host_impl(layer_tree_settings,
262 &impl_task_runner_provider, 255 &impl_task_runner_provider,
263 &shared_bitmap_manager, &task_graph_runner); 256 &shared_bitmap_manager, &task_graph_runner);
264 host_impl.SetVisible(true); 257 host_impl.SetVisible(true);
265 EXPECT_TRUE(host_impl.InitializeRenderer(output_surface.get())); 258 EXPECT_TRUE(host_impl.InitializeRenderer(output_surface.get()));
266 259
267 host_impl.CreatePendingTree(); 260 host_impl.CreatePendingTree();
268 host_impl.pending_tree()->SetRootLayer( 261 host_impl.pending_tree()->SetRootLayer(
269 FakePictureLayerImpl::Create(host_impl.pending_tree(), 1)); 262 FakePictureLayerImpl::Create(host_impl.pending_tree(), 1));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 300
308 TEST(PictureLayerTest, SuitableForGpuRasterization) { 301 TEST(PictureLayerTest, SuitableForGpuRasterization) {
309 scoped_ptr<FakeDisplayListRecordingSource> recording_source_owned( 302 scoped_ptr<FakeDisplayListRecordingSource> recording_source_owned(
310 new FakeDisplayListRecordingSource); 303 new FakeDisplayListRecordingSource);
311 FakeDisplayListRecordingSource* recording_source = 304 FakeDisplayListRecordingSource* recording_source =
312 recording_source_owned.get(); 305 recording_source_owned.get();
313 306
314 ContentLayerClient* client = EmptyContentLayerClient::GetInstance(); 307 ContentLayerClient* client = EmptyContentLayerClient::GetInstance();
315 scoped_refptr<FakePictureLayer> layer = 308 scoped_refptr<FakePictureLayer> layer =
316 FakePictureLayer::CreateWithRecordingSource( 309 FakePictureLayer::CreateWithRecordingSource(
317 LayerSettings(), client, std::move(recording_source_owned)); 310 client, std::move(recording_source_owned));
318 311
319 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D); 312 FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D);
320 TestTaskGraphRunner task_graph_runner; 313 TestTaskGraphRunner task_graph_runner;
321 scoped_ptr<FakeLayerTreeHost> host = 314 scoped_ptr<FakeLayerTreeHost> host =
322 FakeLayerTreeHost::Create(&host_client, &task_graph_runner); 315 FakeLayerTreeHost::Create(&host_client, &task_graph_runner);
323 host->SetRootLayer(layer); 316 host->SetRootLayer(layer);
324 317
325 // Update layers to initialize the recording source. 318 // Update layers to initialize the recording source.
326 gfx::Size layer_bounds(200, 200); 319 gfx::Size layer_bounds(200, 200);
327 gfx::Rect layer_rect(layer_bounds); 320 gfx::Rect layer_rect(layer_bounds);
(...skipping 10 matching lines...) Expand all
338 recording_source->SetUnsuitableForGpuRasterization(); 331 recording_source->SetUnsuitableForGpuRasterization();
339 EXPECT_FALSE(recording_source->IsSuitableForGpuRasterization()); 332 EXPECT_FALSE(recording_source->IsSuitableForGpuRasterization());
340 EXPECT_FALSE(layer->IsSuitableForGpuRasterization()); 333 EXPECT_FALSE(layer->IsSuitableForGpuRasterization());
341 } 334 }
342 335
343 // PicturePile uses the source frame number as a unit for measuring invalidation 336 // PicturePile uses the source frame number as a unit for measuring invalidation
344 // frequency. When a pile moves between compositors, the frame number increases 337 // frequency. When a pile moves between compositors, the frame number increases
345 // non-monotonically. This executes that code path under this scenario allowing 338 // non-monotonically. This executes that code path under this scenario allowing
346 // for the code to verify correctness with DCHECKs. 339 // for the code to verify correctness with DCHECKs.
347 TEST(PictureLayerTest, NonMonotonicSourceFrameNumber) { 340 TEST(PictureLayerTest, NonMonotonicSourceFrameNumber) {
348 LayerTreeSettingsForTesting settings; 341 LayerTreeSettings settings;
349 settings.single_thread_proxy_scheduler = false; 342 settings.single_thread_proxy_scheduler = false;
350 settings.use_zero_copy = true; 343 settings.use_zero_copy = true;
351 344
352 FakeLayerTreeHostClient host_client1(FakeLayerTreeHostClient::DIRECT_3D); 345 FakeLayerTreeHostClient host_client1(FakeLayerTreeHostClient::DIRECT_3D);
353 FakeLayerTreeHostClient host_client2(FakeLayerTreeHostClient::DIRECT_3D); 346 FakeLayerTreeHostClient host_client2(FakeLayerTreeHostClient::DIRECT_3D);
354 TestSharedBitmapManager shared_bitmap_manager; 347 TestSharedBitmapManager shared_bitmap_manager;
355 TestTaskGraphRunner task_graph_runner; 348 TestTaskGraphRunner task_graph_runner;
356 349
357 ContentLayerClient* client = EmptyContentLayerClient::GetInstance(); 350 ContentLayerClient* client = EmptyContentLayerClient::GetInstance();
358 scoped_refptr<FakePictureLayer> layer = 351 scoped_refptr<FakePictureLayer> layer = FakePictureLayer::Create(client);
359 FakePictureLayer::Create(LayerSettings(), client);
360 352
361 LayerTreeHost::InitParams params; 353 LayerTreeHost::InitParams params;
362 params.client = &host_client1; 354 params.client = &host_client1;
363 params.shared_bitmap_manager = &shared_bitmap_manager; 355 params.shared_bitmap_manager = &shared_bitmap_manager;
364 params.settings = &settings; 356 params.settings = &settings;
365 params.task_graph_runner = &task_graph_runner; 357 params.task_graph_runner = &task_graph_runner;
366 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); 358 params.main_task_runner = base::ThreadTaskRunnerHandle::Get();
367 scoped_ptr<LayerTreeHost> host1 = 359 scoped_ptr<LayerTreeHost> host1 =
368 LayerTreeHost::CreateSingleThreaded(&host_client1, &params); 360 LayerTreeHost::CreateSingleThreaded(&host_client1, &params);
369 host1->SetVisible(true); 361 host1->SetVisible(true);
(...skipping 27 matching lines...) Expand all
397 // Do a main frame, record the picture layers. The frame number has changed 389 // Do a main frame, record the picture layers. The frame number has changed
398 // non-monotonically. 390 // non-monotonically.
399 layer->SetNeedsDisplay(); 391 layer->SetNeedsDisplay();
400 host2->Composite(base::TimeTicks::Now()); 392 host2->Composite(base::TimeTicks::Now());
401 EXPECT_EQ(3, layer->update_count()); 393 EXPECT_EQ(3, layer->update_count());
402 EXPECT_EQ(1, host2->source_frame_number()); 394 EXPECT_EQ(1, host2->source_frame_number());
403 } 395 }
404 396
405 } // namespace 397 } // namespace
406 } // namespace cc 398 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698