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

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 340743002: cc: Removing base::TimeTicks argument to DrawLayers as it isn't used. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Also remove from DoComposite method. Created 5 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 layer->SetDrawsContent(true); 317 layer->SetDrawsContent(true);
318 layer->SetBounds(size); 318 layer->SetBounds(size);
319 layer->SetContentBounds(size); 319 layer->SetContentBounds(size);
320 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2)); 320 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2));
321 return layer.Pass(); 321 return layer.Pass();
322 } 322 }
323 323
324 void DrawFrame() { 324 void DrawFrame() {
325 LayerTreeHostImpl::FrameData frame; 325 LayerTreeHostImpl::FrameData frame;
326 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 326 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
327 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 327 host_impl_->DrawLayers(&frame);
328 host_impl_->DidDrawAllLayers(frame); 328 host_impl_->DidDrawAllLayers(frame);
329 } 329 }
330 330
331 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); 331 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor);
332 void pinch_zoom_pan_viewport_test(float device_scale_factor); 332 void pinch_zoom_pan_viewport_test(float device_scale_factor);
333 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); 333 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor);
334 void pinch_zoom_pan_viewport_and_scroll_boundary_test( 334 void pinch_zoom_pan_viewport_and_scroll_boundary_test(
335 float device_scale_factor); 335 float device_scale_factor);
336 336
337 void CheckNotifyCalledIfCanDrawChanged(bool always_draw) { 337 void CheckNotifyCalledIfCanDrawChanged(bool always_draw) {
(...skipping 1660 matching lines...) Expand 10 before | Expand all | Expand 10 after
1998 host_impl_->active_tree()->root_layer()); 1998 host_impl_->active_tree()->root_layer());
1999 1999
2000 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 2000 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
2001 root->SetHasRenderSurface(true); 2001 root->SetHasRenderSurface(true);
2002 DidDrawCheckLayer* layer = 2002 DidDrawCheckLayer* layer =
2003 static_cast<DidDrawCheckLayer*>(root->children()[0]); 2003 static_cast<DidDrawCheckLayer*>(root->children()[0]);
2004 2004
2005 { 2005 {
2006 LayerTreeHostImpl::FrameData frame; 2006 LayerTreeHostImpl::FrameData frame;
2007 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2007 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2008 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2008 host_impl_->DrawLayers(&frame);
2009 host_impl_->DidDrawAllLayers(frame); 2009 host_impl_->DidDrawAllLayers(frame);
2010 2010
2011 EXPECT_TRUE(layer->will_draw_called()); 2011 EXPECT_TRUE(layer->will_draw_called());
2012 EXPECT_TRUE(layer->append_quads_called()); 2012 EXPECT_TRUE(layer->append_quads_called());
2013 EXPECT_TRUE(layer->did_draw_called()); 2013 EXPECT_TRUE(layer->did_draw_called());
2014 } 2014 }
2015 2015
2016 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); 2016 host_impl_->SetViewportDamage(gfx::Rect(10, 10));
2017 2017
2018 { 2018 {
2019 LayerTreeHostImpl::FrameData frame; 2019 LayerTreeHostImpl::FrameData frame;
2020 2020
2021 layer->set_will_draw_returns_false(); 2021 layer->set_will_draw_returns_false();
2022 layer->ClearDidDrawCheck(); 2022 layer->ClearDidDrawCheck();
2023 2023
2024 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2024 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2025 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2025 host_impl_->DrawLayers(&frame);
2026 host_impl_->DidDrawAllLayers(frame); 2026 host_impl_->DidDrawAllLayers(frame);
2027 2027
2028 EXPECT_TRUE(layer->will_draw_called()); 2028 EXPECT_TRUE(layer->will_draw_called());
2029 EXPECT_FALSE(layer->append_quads_called()); 2029 EXPECT_FALSE(layer->append_quads_called());
2030 EXPECT_FALSE(layer->did_draw_called()); 2030 EXPECT_FALSE(layer->did_draw_called());
2031 } 2031 }
2032 } 2032 }
2033 2033
2034 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { 2034 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) {
2035 // The root layer is always drawn, so run this test on a child layer that 2035 // The root layer is always drawn, so run this test on a child layer that
(...skipping 11 matching lines...) Expand all
2047 layer->SetPosition(gfx::PointF(100.f, 100.f)); 2047 layer->SetPosition(gfx::PointF(100.f, 100.f));
2048 layer->SetBounds(gfx::Size(10, 10)); 2048 layer->SetBounds(gfx::Size(10, 10));
2049 layer->SetContentBounds(gfx::Size(10, 10)); 2049 layer->SetContentBounds(gfx::Size(10, 10));
2050 2050
2051 LayerTreeHostImpl::FrameData frame; 2051 LayerTreeHostImpl::FrameData frame;
2052 2052
2053 EXPECT_FALSE(layer->will_draw_called()); 2053 EXPECT_FALSE(layer->will_draw_called());
2054 EXPECT_FALSE(layer->did_draw_called()); 2054 EXPECT_FALSE(layer->did_draw_called());
2055 2055
2056 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2056 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2057 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2057 host_impl_->DrawLayers(&frame);
2058 host_impl_->DidDrawAllLayers(frame); 2058 host_impl_->DidDrawAllLayers(frame);
2059 2059
2060 EXPECT_FALSE(layer->will_draw_called()); 2060 EXPECT_FALSE(layer->will_draw_called());
2061 EXPECT_FALSE(layer->did_draw_called()); 2061 EXPECT_FALSE(layer->did_draw_called());
2062 2062
2063 EXPECT_TRUE(layer->visible_content_rect().IsEmpty()); 2063 EXPECT_TRUE(layer->visible_content_rect().IsEmpty());
2064 2064
2065 // Ensure visible_content_rect for layer is not empty 2065 // Ensure visible_content_rect for layer is not empty
2066 layer->SetPosition(gfx::PointF()); 2066 layer->SetPosition(gfx::PointF());
2067 2067
2068 EXPECT_FALSE(layer->will_draw_called()); 2068 EXPECT_FALSE(layer->will_draw_called());
2069 EXPECT_FALSE(layer->did_draw_called()); 2069 EXPECT_FALSE(layer->did_draw_called());
2070 2070
2071 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2071 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2072 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2072 host_impl_->DrawLayers(&frame);
2073 host_impl_->DidDrawAllLayers(frame); 2073 host_impl_->DidDrawAllLayers(frame);
2074 2074
2075 EXPECT_TRUE(layer->will_draw_called()); 2075 EXPECT_TRUE(layer->will_draw_called());
2076 EXPECT_TRUE(layer->did_draw_called()); 2076 EXPECT_TRUE(layer->did_draw_called());
2077 2077
2078 EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); 2078 EXPECT_FALSE(layer->visible_content_rect().IsEmpty());
2079 } 2079 }
2080 2080
2081 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { 2081 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) {
2082 gfx::Size big_size(1000, 1000); 2082 gfx::Size big_size(1000, 1000);
(...skipping 19 matching lines...) Expand all
2102 top_layer->SetContentsOpaque(true); 2102 top_layer->SetContentsOpaque(true);
2103 2103
2104 LayerTreeHostImpl::FrameData frame; 2104 LayerTreeHostImpl::FrameData frame;
2105 2105
2106 EXPECT_FALSE(occluded_layer->will_draw_called()); 2106 EXPECT_FALSE(occluded_layer->will_draw_called());
2107 EXPECT_FALSE(occluded_layer->did_draw_called()); 2107 EXPECT_FALSE(occluded_layer->did_draw_called());
2108 EXPECT_FALSE(top_layer->will_draw_called()); 2108 EXPECT_FALSE(top_layer->will_draw_called());
2109 EXPECT_FALSE(top_layer->did_draw_called()); 2109 EXPECT_FALSE(top_layer->did_draw_called());
2110 2110
2111 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2111 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2112 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2112 host_impl_->DrawLayers(&frame);
2113 host_impl_->DidDrawAllLayers(frame); 2113 host_impl_->DidDrawAllLayers(frame);
2114 2114
2115 EXPECT_FALSE(occluded_layer->will_draw_called()); 2115 EXPECT_FALSE(occluded_layer->will_draw_called());
2116 EXPECT_FALSE(occluded_layer->did_draw_called()); 2116 EXPECT_FALSE(occluded_layer->did_draw_called());
2117 EXPECT_TRUE(top_layer->will_draw_called()); 2117 EXPECT_TRUE(top_layer->will_draw_called());
2118 EXPECT_TRUE(top_layer->did_draw_called()); 2118 EXPECT_TRUE(top_layer->did_draw_called());
2119 } 2119 }
2120 2120
2121 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { 2121 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) {
2122 host_impl_->active_tree()->SetRootLayer( 2122 host_impl_->active_tree()->SetRootLayer(
(...skipping 14 matching lines...) Expand all
2137 layer1->SetShouldFlattenTransform(true); 2137 layer1->SetShouldFlattenTransform(true);
2138 2138
2139 EXPECT_FALSE(root->did_draw_called()); 2139 EXPECT_FALSE(root->did_draw_called());
2140 EXPECT_FALSE(layer1->did_draw_called()); 2140 EXPECT_FALSE(layer1->did_draw_called());
2141 EXPECT_FALSE(layer2->did_draw_called()); 2141 EXPECT_FALSE(layer2->did_draw_called());
2142 2142
2143 LayerTreeHostImpl::FrameData frame; 2143 LayerTreeHostImpl::FrameData frame;
2144 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( 2144 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(
2145 host_impl_->active_tree()->root_layer()); 2145 host_impl_->active_tree()->root_layer());
2146 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2146 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2147 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2147 host_impl_->DrawLayers(&frame);
2148 host_impl_->DidDrawAllLayers(frame); 2148 host_impl_->DidDrawAllLayers(frame);
2149 2149
2150 EXPECT_TRUE(root->did_draw_called()); 2150 EXPECT_TRUE(root->did_draw_called());
2151 EXPECT_TRUE(layer1->did_draw_called()); 2151 EXPECT_TRUE(layer1->did_draw_called());
2152 EXPECT_TRUE(layer2->did_draw_called()); 2152 EXPECT_TRUE(layer2->did_draw_called());
2153 2153
2154 EXPECT_NE(root->render_surface(), layer1->render_surface()); 2154 EXPECT_NE(root->render_surface(), layer1->render_surface());
2155 EXPECT_TRUE(!!layer1->render_surface()); 2155 EXPECT_TRUE(!!layer1->render_surface());
2156 } 2156 }
2157 2157
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
2287 cases.back().layer_before.is_animating = true; 2287 cases.back().layer_before.is_animating = true;
2288 2288
2289 host_impl_->active_tree()->SetRootLayer( 2289 host_impl_->active_tree()->SetRootLayer(
2290 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 2290 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
2291 DidDrawCheckLayer* root = 2291 DidDrawCheckLayer* root =
2292 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2292 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2293 root->SetHasRenderSurface(true); 2293 root->SetHasRenderSurface(true);
2294 2294
2295 LayerTreeHostImpl::FrameData frame; 2295 LayerTreeHostImpl::FrameData frame;
2296 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2296 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2297 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2297 host_impl_->DrawLayers(&frame);
2298 host_impl_->DidDrawAllLayers(frame); 2298 host_impl_->DidDrawAllLayers(frame);
2299 host_impl_->SwapBuffers(frame); 2299 host_impl_->SwapBuffers(frame);
2300 2300
2301 for (size_t i = 0; i < cases.size(); ++i) { 2301 for (size_t i = 0; i < cases.size(); ++i) {
2302 const auto& testcase = cases[i]; 2302 const auto& testcase = cases[i];
2303 std::vector<LayerImpl*> to_remove; 2303 std::vector<LayerImpl*> to_remove;
2304 for (auto* child : root->children()) 2304 for (auto* child : root->children())
2305 to_remove.push_back(child); 2305 to_remove.push_back(child);
2306 for (auto* child : to_remove) 2306 for (auto* child : to_remove)
2307 root->RemoveChild(child); 2307 root->RemoveChild(child);
(...skipping 27 matching lines...) Expand all
2335 DidDrawCheckLayer* after = 2335 DidDrawCheckLayer* after =
2336 static_cast<DidDrawCheckLayer*>(root->children().back()); 2336 static_cast<DidDrawCheckLayer*>(root->children().back());
2337 if (testcase.layer_after.has_copy_request) 2337 if (testcase.layer_after.has_copy_request)
2338 after->AddCopyRequest(); 2338 after->AddCopyRequest();
2339 2339
2340 if (testcase.high_res_required) 2340 if (testcase.high_res_required)
2341 host_impl_->SetRequiresHighResToDraw(); 2341 host_impl_->SetRequiresHighResToDraw();
2342 2342
2343 LayerTreeHostImpl::FrameData frame; 2343 LayerTreeHostImpl::FrameData frame;
2344 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame)); 2344 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame));
2345 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2345 host_impl_->DrawLayers(&frame);
2346 host_impl_->DidDrawAllLayers(frame); 2346 host_impl_->DidDrawAllLayers(frame);
2347 host_impl_->SwapBuffers(frame); 2347 host_impl_->SwapBuffers(frame);
2348 } 2348 }
2349 } 2349 }
2350 2350
2351 TEST_F(LayerTreeHostImplTest, 2351 TEST_F(LayerTreeHostImplTest,
2352 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) { 2352 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) {
2353 CreateHostImpl(DefaultSettings(), 2353 CreateHostImpl(DefaultSettings(),
2354 FakeOutputSurface::CreateAlwaysDrawAndSwap3d()); 2354 FakeOutputSurface::CreateAlwaysDrawAndSwap3d());
2355 EXPECT_TRUE(host_impl_->output_surface() 2355 EXPECT_TRUE(host_impl_->output_surface()
(...skipping 18 matching lines...) Expand all
2374 cases.back().layer_between.has_missing_tile = true; 2374 cases.back().layer_between.has_missing_tile = true;
2375 2375
2376 host_impl_->active_tree()->SetRootLayer( 2376 host_impl_->active_tree()->SetRootLayer(
2377 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 2377 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
2378 DidDrawCheckLayer* root = 2378 DidDrawCheckLayer* root =
2379 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2379 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2380 root->SetHasRenderSurface(true); 2380 root->SetHasRenderSurface(true);
2381 2381
2382 LayerTreeHostImpl::FrameData frame; 2382 LayerTreeHostImpl::FrameData frame;
2383 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2383 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2384 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2384 host_impl_->DrawLayers(&frame);
2385 host_impl_->DidDrawAllLayers(frame); 2385 host_impl_->DidDrawAllLayers(frame);
2386 host_impl_->SwapBuffers(frame); 2386 host_impl_->SwapBuffers(frame);
2387 2387
2388 for (size_t i = 0; i < cases.size(); ++i) { 2388 for (size_t i = 0; i < cases.size(); ++i) {
2389 const auto& testcase = cases[i]; 2389 const auto& testcase = cases[i];
2390 std::vector<LayerImpl*> to_remove; 2390 std::vector<LayerImpl*> to_remove;
2391 for (auto* child : root->children()) 2391 for (auto* child : root->children())
2392 to_remove.push_back(child); 2392 to_remove.push_back(child);
2393 for (auto* child : to_remove) 2393 for (auto* child : to_remove)
2394 root->RemoveChild(child); 2394 root->RemoveChild(child);
(...skipping 27 matching lines...) Expand all
2422 DidDrawCheckLayer* after = 2422 DidDrawCheckLayer* after =
2423 static_cast<DidDrawCheckLayer*>(root->children().back()); 2423 static_cast<DidDrawCheckLayer*>(root->children().back());
2424 if (testcase.layer_after.has_copy_request) 2424 if (testcase.layer_after.has_copy_request)
2425 after->AddCopyRequest(); 2425 after->AddCopyRequest();
2426 2426
2427 if (testcase.high_res_required) 2427 if (testcase.high_res_required)
2428 host_impl_->SetRequiresHighResToDraw(); 2428 host_impl_->SetRequiresHighResToDraw();
2429 2429
2430 LayerTreeHostImpl::FrameData frame; 2430 LayerTreeHostImpl::FrameData frame;
2431 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame)); 2431 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame));
2432 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2432 host_impl_->DrawLayers(&frame);
2433 host_impl_->DidDrawAllLayers(frame); 2433 host_impl_->DidDrawAllLayers(frame);
2434 host_impl_->SwapBuffers(frame); 2434 host_impl_->SwapBuffers(frame);
2435 } 2435 }
2436 } 2436 }
2437 2437
2438 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { 2438 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) {
2439 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2439 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2440 root->SetScrollClipLayer(Layer::INVALID_ID); 2440 root->SetScrollClipLayer(Layer::INVALID_ID);
2441 root->SetHasRenderSurface(true); 2441 root->SetHasRenderSurface(true);
2442 host_impl_->active_tree()->SetRootLayer(root.Pass()); 2442 host_impl_->active_tree()->SetRootLayer(root.Pass());
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after
3383 EXPECT_EQ(1.f, scroll->contents_scale_y()); 3383 EXPECT_EQ(1.f, scroll->contents_scale_y());
3384 EXPECT_EQ(1.f, child->contents_scale_x()); 3384 EXPECT_EQ(1.f, child->contents_scale_x());
3385 EXPECT_EQ(1.f, child->contents_scale_y()); 3385 EXPECT_EQ(1.f, child->contents_scale_y());
3386 EXPECT_EQ(1.f, grand_child->contents_scale_x()); 3386 EXPECT_EQ(1.f, grand_child->contents_scale_x());
3387 EXPECT_EQ(1.f, grand_child->contents_scale_y()); 3387 EXPECT_EQ(1.f, grand_child->contents_scale_y());
3388 3388
3389 // Make sure all the layers are drawn with the page scale delta applied, i.e., 3389 // Make sure all the layers are drawn with the page scale delta applied, i.e.,
3390 // the page scale delta on the root layer is applied hierarchically. 3390 // the page scale delta on the root layer is applied hierarchically.
3391 LayerTreeHostImpl::FrameData frame; 3391 LayerTreeHostImpl::FrameData frame;
3392 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 3392 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
3393 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3393 host_impl_->DrawLayers(&frame);
3394 host_impl_->DidDrawAllLayers(frame); 3394 host_impl_->DidDrawAllLayers(frame);
3395 3395
3396 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); 3396 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0));
3397 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); 3397 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1));
3398 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); 3398 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0));
3399 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); 3399 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1));
3400 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); 3400 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0));
3401 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); 3401 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1));
3402 EXPECT_EQ(new_page_scale, 3402 EXPECT_EQ(new_page_scale,
3403 grand_child->draw_transform().matrix().getDouble(0, 0)); 3403 grand_child->draw_transform().matrix().getDouble(0, 0));
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
4057 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties()); 4057 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties());
4058 4058
4059 // Set external scroll delta on delegate and notify LayerTreeHost. 4059 // Set external scroll delta on delegate and notify LayerTreeHost.
4060 gfx::ScrollOffset scroll_offset(10.f, 10.f); 4060 gfx::ScrollOffset scroll_offset(10.f, 10.f);
4061 scroll_delegate.set_getter_return_value(scroll_offset); 4061 scroll_delegate.set_getter_return_value(scroll_offset);
4062 host_impl_->OnRootLayerDelegatedScrollOffsetChanged(); 4062 host_impl_->OnRootLayerDelegatedScrollOffsetChanged();
4063 4063
4064 // Check scroll delta reflected in layer. 4064 // Check scroll delta reflected in layer.
4065 LayerTreeHostImpl::FrameData frame; 4065 LayerTreeHostImpl::FrameData frame;
4066 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4066 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4067 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4067 host_impl_->DrawLayers(&frame);
4068 host_impl_->DidDrawAllLayers(frame); 4068 host_impl_->DidDrawAllLayers(frame);
4069 EXPECT_FALSE(frame.has_no_damage); 4069 EXPECT_FALSE(frame.has_no_damage);
4070 CheckLayerScrollDelta(scroll_layer, ScrollOffsetToVector2dF(scroll_offset)); 4070 CheckLayerScrollDelta(scroll_layer, ScrollOffsetToVector2dF(scroll_offset));
4071 4071
4072 host_impl_->SetRootLayerScrollOffsetDelegate(NULL); 4072 host_impl_->SetRootLayerScrollOffsetDelegate(NULL);
4073 } 4073 }
4074 4074
4075 TEST_F(LayerTreeHostImplTest, OverscrollRoot) { 4075 TEST_F(LayerTreeHostImplTest, OverscrollRoot) {
4076 InputHandlerScrollResult scroll_result; 4076 InputHandlerScrollResult scroll_result;
4077 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 4077 SetupScrollAndContentsLayers(gfx::Size(100, 100));
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
4516 static_cast<BlendStateCheckLayer*>(root->children()[0]); 4516 static_cast<BlendStateCheckLayer*>(root->children()[0]);
4517 layer1->SetPosition(gfx::PointF(2.f, 2.f)); 4517 layer1->SetPosition(gfx::PointF(2.f, 2.f));
4518 4518
4519 LayerTreeHostImpl::FrameData frame; 4519 LayerTreeHostImpl::FrameData frame;
4520 4520
4521 // Opaque layer, drawn without blending. 4521 // Opaque layer, drawn without blending.
4522 layer1->SetContentsOpaque(true); 4522 layer1->SetContentsOpaque(true);
4523 layer1->SetExpectation(false, false); 4523 layer1->SetExpectation(false, false);
4524 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4524 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4525 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4525 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4526 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4526 host_impl_->DrawLayers(&frame);
4527 EXPECT_TRUE(layer1->quads_appended()); 4527 EXPECT_TRUE(layer1->quads_appended());
4528 host_impl_->DidDrawAllLayers(frame); 4528 host_impl_->DidDrawAllLayers(frame);
4529 4529
4530 // Layer with translucent content and painting, so drawn with blending. 4530 // Layer with translucent content and painting, so drawn with blending.
4531 layer1->SetContentsOpaque(false); 4531 layer1->SetContentsOpaque(false);
4532 layer1->SetExpectation(true, false); 4532 layer1->SetExpectation(true, false);
4533 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4533 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4534 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4534 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4535 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4535 host_impl_->DrawLayers(&frame);
4536 EXPECT_TRUE(layer1->quads_appended()); 4536 EXPECT_TRUE(layer1->quads_appended());
4537 host_impl_->DidDrawAllLayers(frame); 4537 host_impl_->DidDrawAllLayers(frame);
4538 4538
4539 // Layer with translucent opacity, drawn with blending. 4539 // Layer with translucent opacity, drawn with blending.
4540 layer1->SetContentsOpaque(true); 4540 layer1->SetContentsOpaque(true);
4541 layer1->SetOpacity(0.5f); 4541 layer1->SetOpacity(0.5f);
4542 layer1->SetExpectation(true, false); 4542 layer1->SetExpectation(true, false);
4543 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4543 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4544 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4544 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4545 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4545 host_impl_->DrawLayers(&frame);
4546 EXPECT_TRUE(layer1->quads_appended()); 4546 EXPECT_TRUE(layer1->quads_appended());
4547 host_impl_->DidDrawAllLayers(frame); 4547 host_impl_->DidDrawAllLayers(frame);
4548 4548
4549 // Layer with translucent opacity and painting, drawn with blending. 4549 // Layer with translucent opacity and painting, drawn with blending.
4550 layer1->SetContentsOpaque(true); 4550 layer1->SetContentsOpaque(true);
4551 layer1->SetOpacity(0.5f); 4551 layer1->SetOpacity(0.5f);
4552 layer1->SetExpectation(true, false); 4552 layer1->SetExpectation(true, false);
4553 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4553 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4554 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4554 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4555 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4555 host_impl_->DrawLayers(&frame);
4556 EXPECT_TRUE(layer1->quads_appended()); 4556 EXPECT_TRUE(layer1->quads_appended());
4557 host_impl_->DidDrawAllLayers(frame); 4557 host_impl_->DidDrawAllLayers(frame);
4558 4558
4559 layer1->AddChild( 4559 layer1->AddChild(
4560 BlendStateCheckLayer::Create(host_impl_->active_tree(), 4560 BlendStateCheckLayer::Create(host_impl_->active_tree(),
4561 3, 4561 3,
4562 host_impl_->resource_provider())); 4562 host_impl_->resource_provider()));
4563 BlendStateCheckLayer* layer2 = 4563 BlendStateCheckLayer* layer2 =
4564 static_cast<BlendStateCheckLayer*>(layer1->children()[0]); 4564 static_cast<BlendStateCheckLayer*>(layer1->children()[0]);
4565 layer2->SetPosition(gfx::PointF(4.f, 4.f)); 4565 layer2->SetPosition(gfx::PointF(4.f, 4.f));
4566 4566
4567 // 2 opaque layers, drawn without blending. 4567 // 2 opaque layers, drawn without blending.
4568 layer1->SetContentsOpaque(true); 4568 layer1->SetContentsOpaque(true);
4569 layer1->SetOpacity(1.f); 4569 layer1->SetOpacity(1.f);
4570 layer1->SetExpectation(false, false); 4570 layer1->SetExpectation(false, false);
4571 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4571 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4572 layer2->SetContentsOpaque(true); 4572 layer2->SetContentsOpaque(true);
4573 layer2->SetOpacity(1.f); 4573 layer2->SetOpacity(1.f);
4574 layer2->SetExpectation(false, false); 4574 layer2->SetExpectation(false, false);
4575 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4575 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4576 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4576 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4577 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4577 host_impl_->DrawLayers(&frame);
4578 EXPECT_TRUE(layer1->quads_appended()); 4578 EXPECT_TRUE(layer1->quads_appended());
4579 EXPECT_TRUE(layer2->quads_appended()); 4579 EXPECT_TRUE(layer2->quads_appended());
4580 host_impl_->DidDrawAllLayers(frame); 4580 host_impl_->DidDrawAllLayers(frame);
4581 4581
4582 // Parent layer with translucent content, drawn with blending. 4582 // Parent layer with translucent content, drawn with blending.
4583 // Child layer with opaque content, drawn without blending. 4583 // Child layer with opaque content, drawn without blending.
4584 layer1->SetContentsOpaque(false); 4584 layer1->SetContentsOpaque(false);
4585 layer1->SetExpectation(true, false); 4585 layer1->SetExpectation(true, false);
4586 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4586 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4587 layer2->SetExpectation(false, false); 4587 layer2->SetExpectation(false, false);
4588 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4588 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4589 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4589 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4590 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4590 host_impl_->DrawLayers(&frame);
4591 EXPECT_TRUE(layer1->quads_appended()); 4591 EXPECT_TRUE(layer1->quads_appended());
4592 EXPECT_TRUE(layer2->quads_appended()); 4592 EXPECT_TRUE(layer2->quads_appended());
4593 host_impl_->DidDrawAllLayers(frame); 4593 host_impl_->DidDrawAllLayers(frame);
4594 4594
4595 // Parent layer with translucent content but opaque painting, drawn without 4595 // Parent layer with translucent content but opaque painting, drawn without
4596 // blending. 4596 // blending.
4597 // Child layer with opaque content, drawn without blending. 4597 // Child layer with opaque content, drawn without blending.
4598 layer1->SetContentsOpaque(true); 4598 layer1->SetContentsOpaque(true);
4599 layer1->SetExpectation(false, false); 4599 layer1->SetExpectation(false, false);
4600 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4600 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4601 layer2->SetExpectation(false, false); 4601 layer2->SetExpectation(false, false);
4602 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4602 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4603 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4603 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4604 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4604 host_impl_->DrawLayers(&frame);
4605 EXPECT_TRUE(layer1->quads_appended()); 4605 EXPECT_TRUE(layer1->quads_appended());
4606 EXPECT_TRUE(layer2->quads_appended()); 4606 EXPECT_TRUE(layer2->quads_appended());
4607 host_impl_->DidDrawAllLayers(frame); 4607 host_impl_->DidDrawAllLayers(frame);
4608 4608
4609 // Parent layer with translucent opacity and opaque content. Since it has a 4609 // Parent layer with translucent opacity and opaque content. Since it has a
4610 // drawing child, it's drawn to a render surface which carries the opacity, 4610 // drawing child, it's drawn to a render surface which carries the opacity,
4611 // so it's itself drawn without blending. 4611 // so it's itself drawn without blending.
4612 // Child layer with opaque content, drawn without blending (parent surface 4612 // Child layer with opaque content, drawn without blending (parent surface
4613 // carries the inherited opacity). 4613 // carries the inherited opacity).
4614 layer1->SetContentsOpaque(true); 4614 layer1->SetContentsOpaque(true);
4615 layer1->SetOpacity(0.5f); 4615 layer1->SetOpacity(0.5f);
4616 layer1->SetHasRenderSurface(true); 4616 layer1->SetHasRenderSurface(true);
4617 layer1->SetExpectation(false, true); 4617 layer1->SetExpectation(false, true);
4618 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4618 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4619 layer2->SetExpectation(false, false); 4619 layer2->SetExpectation(false, false);
4620 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4620 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4621 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( 4621 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(
4622 host_impl_->active_tree()->root_layer()); 4622 host_impl_->active_tree()->root_layer());
4623 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4623 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4624 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4624 host_impl_->DrawLayers(&frame);
4625 EXPECT_TRUE(layer1->quads_appended()); 4625 EXPECT_TRUE(layer1->quads_appended());
4626 EXPECT_TRUE(layer2->quads_appended()); 4626 EXPECT_TRUE(layer2->quads_appended());
4627 host_impl_->DidDrawAllLayers(frame); 4627 host_impl_->DidDrawAllLayers(frame);
4628 layer1->SetHasRenderSurface(false); 4628 layer1->SetHasRenderSurface(false);
4629 4629
4630 // Draw again, but with child non-opaque, to make sure 4630 // Draw again, but with child non-opaque, to make sure
4631 // layer1 not culled. 4631 // layer1 not culled.
4632 layer1->SetContentsOpaque(true); 4632 layer1->SetContentsOpaque(true);
4633 layer1->SetOpacity(1.f); 4633 layer1->SetOpacity(1.f);
4634 layer1->SetExpectation(false, false); 4634 layer1->SetExpectation(false, false);
4635 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4635 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4636 layer2->SetContentsOpaque(true); 4636 layer2->SetContentsOpaque(true);
4637 layer2->SetOpacity(0.5f); 4637 layer2->SetOpacity(0.5f);
4638 layer2->SetExpectation(true, false); 4638 layer2->SetExpectation(true, false);
4639 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4639 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4640 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4640 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4641 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4641 host_impl_->DrawLayers(&frame);
4642 EXPECT_TRUE(layer1->quads_appended()); 4642 EXPECT_TRUE(layer1->quads_appended());
4643 EXPECT_TRUE(layer2->quads_appended()); 4643 EXPECT_TRUE(layer2->quads_appended());
4644 host_impl_->DidDrawAllLayers(frame); 4644 host_impl_->DidDrawAllLayers(frame);
4645 4645
4646 // A second way of making the child non-opaque. 4646 // A second way of making the child non-opaque.
4647 layer1->SetContentsOpaque(true); 4647 layer1->SetContentsOpaque(true);
4648 layer1->SetOpacity(1.f); 4648 layer1->SetOpacity(1.f);
4649 layer1->SetExpectation(false, false); 4649 layer1->SetExpectation(false, false);
4650 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4650 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4651 layer2->SetContentsOpaque(false); 4651 layer2->SetContentsOpaque(false);
4652 layer2->SetOpacity(1.f); 4652 layer2->SetOpacity(1.f);
4653 layer2->SetExpectation(true, false); 4653 layer2->SetExpectation(true, false);
4654 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4654 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4655 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4655 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4656 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4656 host_impl_->DrawLayers(&frame);
4657 EXPECT_TRUE(layer1->quads_appended()); 4657 EXPECT_TRUE(layer1->quads_appended());
4658 EXPECT_TRUE(layer2->quads_appended()); 4658 EXPECT_TRUE(layer2->quads_appended());
4659 host_impl_->DidDrawAllLayers(frame); 4659 host_impl_->DidDrawAllLayers(frame);
4660 4660
4661 // And when the layer says its not opaque but is painted opaque, it is not 4661 // And when the layer says its not opaque but is painted opaque, it is not
4662 // blended. 4662 // blended.
4663 layer1->SetContentsOpaque(true); 4663 layer1->SetContentsOpaque(true);
4664 layer1->SetOpacity(1.f); 4664 layer1->SetOpacity(1.f);
4665 layer1->SetExpectation(false, false); 4665 layer1->SetExpectation(false, false);
4666 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4666 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4667 layer2->SetContentsOpaque(true); 4667 layer2->SetContentsOpaque(true);
4668 layer2->SetOpacity(1.f); 4668 layer2->SetOpacity(1.f);
4669 layer2->SetExpectation(false, false); 4669 layer2->SetExpectation(false, false);
4670 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4670 layer2->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4671 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4671 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4672 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4672 host_impl_->DrawLayers(&frame);
4673 EXPECT_TRUE(layer1->quads_appended()); 4673 EXPECT_TRUE(layer1->quads_appended());
4674 EXPECT_TRUE(layer2->quads_appended()); 4674 EXPECT_TRUE(layer2->quads_appended());
4675 host_impl_->DidDrawAllLayers(frame); 4675 host_impl_->DidDrawAllLayers(frame);
4676 4676
4677 // Layer with partially opaque contents, drawn with blending. 4677 // Layer with partially opaque contents, drawn with blending.
4678 layer1->SetContentsOpaque(false); 4678 layer1->SetContentsOpaque(false);
4679 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 4679 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
4680 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5)); 4680 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5));
4681 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 4681 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
4682 layer1->SetExpectation(true, false); 4682 layer1->SetExpectation(true, false);
4683 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4683 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4684 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4684 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4685 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4685 host_impl_->DrawLayers(&frame);
4686 EXPECT_TRUE(layer1->quads_appended()); 4686 EXPECT_TRUE(layer1->quads_appended());
4687 host_impl_->DidDrawAllLayers(frame); 4687 host_impl_->DidDrawAllLayers(frame);
4688 4688
4689 // Layer with partially opaque contents partially culled, drawn with blending. 4689 // Layer with partially opaque contents partially culled, drawn with blending.
4690 layer1->SetContentsOpaque(false); 4690 layer1->SetContentsOpaque(false);
4691 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 4691 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
4692 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2)); 4692 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2));
4693 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 4693 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
4694 layer1->SetExpectation(true, false); 4694 layer1->SetExpectation(true, false);
4695 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4695 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4696 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4696 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4697 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4697 host_impl_->DrawLayers(&frame);
4698 EXPECT_TRUE(layer1->quads_appended()); 4698 EXPECT_TRUE(layer1->quads_appended());
4699 host_impl_->DidDrawAllLayers(frame); 4699 host_impl_->DidDrawAllLayers(frame);
4700 4700
4701 // Layer with partially opaque contents culled, drawn with blending. 4701 // Layer with partially opaque contents culled, drawn with blending.
4702 layer1->SetContentsOpaque(false); 4702 layer1->SetContentsOpaque(false);
4703 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 4703 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
4704 layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5)); 4704 layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5));
4705 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 4705 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
4706 layer1->SetExpectation(true, false); 4706 layer1->SetExpectation(true, false);
4707 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4707 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4708 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4708 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4709 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4709 host_impl_->DrawLayers(&frame);
4710 EXPECT_TRUE(layer1->quads_appended()); 4710 EXPECT_TRUE(layer1->quads_appended());
4711 host_impl_->DidDrawAllLayers(frame); 4711 host_impl_->DidDrawAllLayers(frame);
4712 4712
4713 // Layer with partially opaque contents and translucent contents culled, drawn 4713 // Layer with partially opaque contents and translucent contents culled, drawn
4714 // without blending. 4714 // without blending.
4715 layer1->SetContentsOpaque(false); 4715 layer1->SetContentsOpaque(false);
4716 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); 4716 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
4717 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5)); 4717 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5));
4718 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); 4718 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
4719 layer1->SetExpectation(false, false); 4719 layer1->SetExpectation(false, false);
4720 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4720 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4721 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4721 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4722 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4722 host_impl_->DrawLayers(&frame);
4723 EXPECT_TRUE(layer1->quads_appended()); 4723 EXPECT_TRUE(layer1->quads_appended());
4724 host_impl_->DidDrawAllLayers(frame); 4724 host_impl_->DidDrawAllLayers(frame);
4725 } 4725 }
4726 4726
4727 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { 4727 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest {
4728 protected: 4728 protected:
4729 LayerTreeHostImplViewportCoveredTest() : 4729 LayerTreeHostImplViewportCoveredTest() :
4730 gutter_quad_material_(DrawQuad::SOLID_COLOR), 4730 gutter_quad_material_(DrawQuad::SOLID_COLOR),
4731 child_(NULL), 4731 child_(NULL),
4732 did_activate_pending_tree_(false) {} 4732 did_activate_pending_tree_(false) {}
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
4992 root->SetDrawsContent(true); 4992 root->SetDrawsContent(true);
4993 root->SetHasRenderSurface(true); 4993 root->SetHasRenderSurface(true);
4994 host_impl_->active_tree()->SetRootLayer(root.Pass()); 4994 host_impl_->active_tree()->SetRootLayer(root.Pass());
4995 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); 4995 EXPECT_FALSE(provider->TestContext3d()->reshape_called());
4996 provider->TestContext3d()->clear_reshape_called(); 4996 provider->TestContext3d()->clear_reshape_called();
4997 4997
4998 LayerTreeHostImpl::FrameData frame; 4998 LayerTreeHostImpl::FrameData frame;
4999 host_impl_->SetViewportSize(gfx::Size(10, 10)); 4999 host_impl_->SetViewportSize(gfx::Size(10, 10));
5000 host_impl_->SetDeviceScaleFactor(1.f); 5000 host_impl_->SetDeviceScaleFactor(1.f);
5001 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5001 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5002 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5002 host_impl_->DrawLayers(&frame);
5003 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 5003 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
5004 EXPECT_EQ(provider->TestContext3d()->width(), 10); 5004 EXPECT_EQ(provider->TestContext3d()->width(), 10);
5005 EXPECT_EQ(provider->TestContext3d()->height(), 10); 5005 EXPECT_EQ(provider->TestContext3d()->height(), 10);
5006 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); 5006 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f);
5007 host_impl_->DidDrawAllLayers(frame); 5007 host_impl_->DidDrawAllLayers(frame);
5008 provider->TestContext3d()->clear_reshape_called(); 5008 provider->TestContext3d()->clear_reshape_called();
5009 5009
5010 host_impl_->SetViewportSize(gfx::Size(20, 30)); 5010 host_impl_->SetViewportSize(gfx::Size(20, 30));
5011 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5011 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5012 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5012 host_impl_->DrawLayers(&frame);
5013 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 5013 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
5014 EXPECT_EQ(provider->TestContext3d()->width(), 20); 5014 EXPECT_EQ(provider->TestContext3d()->width(), 20);
5015 EXPECT_EQ(provider->TestContext3d()->height(), 30); 5015 EXPECT_EQ(provider->TestContext3d()->height(), 30);
5016 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); 5016 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f);
5017 host_impl_->DidDrawAllLayers(frame); 5017 host_impl_->DidDrawAllLayers(frame);
5018 provider->TestContext3d()->clear_reshape_called(); 5018 provider->TestContext3d()->clear_reshape_called();
5019 5019
5020 host_impl_->SetDeviceScaleFactor(2.f); 5020 host_impl_->SetDeviceScaleFactor(2.f);
5021 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5021 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5022 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5022 host_impl_->DrawLayers(&frame);
5023 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 5023 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
5024 EXPECT_EQ(provider->TestContext3d()->width(), 20); 5024 EXPECT_EQ(provider->TestContext3d()->width(), 20);
5025 EXPECT_EQ(provider->TestContext3d()->height(), 30); 5025 EXPECT_EQ(provider->TestContext3d()->height(), 30);
5026 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 2.f); 5026 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 2.f);
5027 host_impl_->DidDrawAllLayers(frame); 5027 host_impl_->DidDrawAllLayers(frame);
5028 provider->TestContext3d()->clear_reshape_called(); 5028 provider->TestContext3d()->clear_reshape_called();
5029 } 5029 }
5030 5030
5031 // Make sure damage tracking propagates all the way to the graphics context, 5031 // Make sure damage tracking propagates all the way to the graphics context,
5032 // where it should request to swap only the sub-buffer that is damaged. 5032 // where it should request to swap only the sub-buffer that is damaged.
(...skipping 30 matching lines...) Expand all
5063 root->SetBounds(gfx::Size(500, 500)); 5063 root->SetBounds(gfx::Size(500, 500));
5064 root->SetContentBounds(gfx::Size(500, 500)); 5064 root->SetContentBounds(gfx::Size(500, 500));
5065 root->SetDrawsContent(true); 5065 root->SetDrawsContent(true);
5066 root->AddChild(child.Pass()); 5066 root->AddChild(child.Pass());
5067 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass()); 5067 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass());
5068 5068
5069 LayerTreeHostImpl::FrameData frame; 5069 LayerTreeHostImpl::FrameData frame;
5070 5070
5071 // First frame, the entire screen should get swapped. 5071 // First frame, the entire screen should get swapped.
5072 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); 5072 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame));
5073 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 5073 layer_tree_host_impl->DrawLayers(&frame);
5074 layer_tree_host_impl->DidDrawAllLayers(frame); 5074 layer_tree_host_impl->DidDrawAllLayers(frame);
5075 layer_tree_host_impl->SwapBuffers(frame); 5075 layer_tree_host_impl->SwapBuffers(frame);
5076 gfx::Rect expected_swap_rect(0, 0, 500, 500); 5076 gfx::Rect expected_swap_rect(0, 0, 500, 500);
5077 EXPECT_EQ(expected_swap_rect.ToString(), 5077 EXPECT_EQ(expected_swap_rect.ToString(),
5078 fake_output_surface->last_swap_rect().ToString()); 5078 fake_output_surface->last_swap_rect().ToString());
5079 5079
5080 // Second frame, only the damaged area should get swapped. Damage should be 5080 // Second frame, only the damaged area should get swapped. Damage should be
5081 // the union of old and new child rects. 5081 // the union of old and new child rects.
5082 // expected damage rect: gfx::Rect(26, 28); 5082 // expected damage rect: gfx::Rect(26, 28);
5083 // expected swap rect: vertically flipped, with origin at bottom left corner. 5083 // expected swap rect: vertically flipped, with origin at bottom left corner.
5084 layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition( 5084 layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition(
5085 gfx::PointF()); 5085 gfx::PointF());
5086 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); 5086 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame));
5087 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 5087 layer_tree_host_impl->DrawLayers(&frame);
5088 host_impl_->DidDrawAllLayers(frame); 5088 host_impl_->DidDrawAllLayers(frame);
5089 layer_tree_host_impl->SwapBuffers(frame); 5089 layer_tree_host_impl->SwapBuffers(frame);
5090 5090
5091 // Make sure that partial swap is constrained to the viewport dimensions 5091 // Make sure that partial swap is constrained to the viewport dimensions
5092 // expected damage rect: gfx::Rect(500, 500); 5092 // expected damage rect: gfx::Rect(500, 500);
5093 // expected swap rect: flipped damage rect, but also clamped to viewport 5093 // expected swap rect: flipped damage rect, but also clamped to viewport
5094 expected_swap_rect = gfx::Rect(0, 500-28, 26, 28); 5094 expected_swap_rect = gfx::Rect(0, 500-28, 26, 28);
5095 EXPECT_EQ(expected_swap_rect.ToString(), 5095 EXPECT_EQ(expected_swap_rect.ToString(),
5096 fake_output_surface->last_swap_rect().ToString()); 5096 fake_output_surface->last_swap_rect().ToString());
5097 5097
5098 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10)); 5098 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10));
5099 // This will damage everything. 5099 // This will damage everything.
5100 layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor( 5100 layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor(
5101 SK_ColorBLACK); 5101 SK_ColorBLACK);
5102 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); 5102 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame));
5103 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 5103 layer_tree_host_impl->DrawLayers(&frame);
5104 host_impl_->DidDrawAllLayers(frame); 5104 host_impl_->DidDrawAllLayers(frame);
5105 layer_tree_host_impl->SwapBuffers(frame); 5105 layer_tree_host_impl->SwapBuffers(frame);
5106 5106
5107 expected_swap_rect = gfx::Rect(0, 0, 10, 10); 5107 expected_swap_rect = gfx::Rect(0, 0, 10, 10);
5108 EXPECT_EQ(expected_swap_rect.ToString(), 5108 EXPECT_EQ(expected_swap_rect.ToString(),
5109 fake_output_surface->last_swap_rect().ToString()); 5109 fake_output_surface->last_swap_rect().ToString());
5110 } 5110 }
5111 5111
5112 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) { 5112 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) {
5113 scoped_ptr<LayerImpl> root = 5113 scoped_ptr<LayerImpl> root =
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
5257 CreateHostImpl(settings, 5257 CreateHostImpl(settings,
5258 FakeOutputSurface::Create3d(mock_context_owned.Pass())); 5258 FakeOutputSurface::Create3d(mock_context_owned.Pass()));
5259 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 5259 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
5260 5260
5261 // Without partial swap, and no clipping, no scissor is set. 5261 // Without partial swap, and no clipping, no scissor is set.
5262 harness.MustDrawSolidQuad(); 5262 harness.MustDrawSolidQuad();
5263 harness.MustSetNoScissor(); 5263 harness.MustSetNoScissor();
5264 { 5264 {
5265 LayerTreeHostImpl::FrameData frame; 5265 LayerTreeHostImpl::FrameData frame;
5266 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5266 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5267 host_impl_->DrawLayers(&frame);
5268 host_impl_->DidDrawAllLayers(frame); 5268 host_impl_->DidDrawAllLayers(frame);
5269 } 5269 }
5270 Mock::VerifyAndClearExpectations(&mock_context); 5270 Mock::VerifyAndClearExpectations(&mock_context);
5271 5271
5272 // Without partial swap, but a layer does clip its subtree, one scissor is 5272 // Without partial swap, but a layer does clip its subtree, one scissor is
5273 // set. 5273 // set.
5274 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true); 5274 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true);
5275 harness.MustDrawSolidQuad(); 5275 harness.MustDrawSolidQuad();
5276 harness.MustSetScissor(0, 0, 10, 10); 5276 harness.MustSetScissor(0, 0, 10, 10);
5277 { 5277 {
5278 LayerTreeHostImpl::FrameData frame; 5278 LayerTreeHostImpl::FrameData frame;
5279 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5279 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5280 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5280 host_impl_->DrawLayers(&frame);
5281 host_impl_->DidDrawAllLayers(frame); 5281 host_impl_->DidDrawAllLayers(frame);
5282 } 5282 }
5283 Mock::VerifyAndClearExpectations(&mock_context); 5283 Mock::VerifyAndClearExpectations(&mock_context);
5284 } 5284 }
5285 5285
5286 TEST_F(LayerTreeHostImplTest, PartialSwap) { 5286 TEST_F(LayerTreeHostImplTest, PartialSwap) {
5287 scoped_ptr<MockContext> context_owned(new MockContext); 5287 scoped_ptr<MockContext> context_owned(new MockContext);
5288 MockContext* mock_context = context_owned.get(); 5288 MockContext* mock_context = context_owned.get();
5289 MockContextHarness harness(mock_context); 5289 MockContextHarness harness(mock_context);
5290 5290
5291 LayerTreeSettings settings = DefaultSettings(); 5291 LayerTreeSettings settings = DefaultSettings();
5292 settings.renderer_settings.partial_swap_enabled = true; 5292 settings.renderer_settings.partial_swap_enabled = true;
5293 CreateHostImpl(settings, FakeOutputSurface::Create3d(context_owned.Pass())); 5293 CreateHostImpl(settings, FakeOutputSurface::Create3d(context_owned.Pass()));
5294 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 5294 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
5295 5295
5296 // The first frame is not a partially-swapped one. No scissor should be set. 5296 // The first frame is not a partially-swapped one. No scissor should be set.
5297 harness.MustSetNoScissor(); 5297 harness.MustSetNoScissor();
5298 harness.MustDrawSolidQuad(); 5298 harness.MustDrawSolidQuad();
5299 { 5299 {
5300 LayerTreeHostImpl::FrameData frame; 5300 LayerTreeHostImpl::FrameData frame;
5301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5302 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5302 host_impl_->DrawLayers(&frame);
5303 host_impl_->DidDrawAllLayers(frame); 5303 host_impl_->DidDrawAllLayers(frame);
5304 } 5304 }
5305 Mock::VerifyAndClearExpectations(&mock_context); 5305 Mock::VerifyAndClearExpectations(&mock_context);
5306 5306
5307 // Damage a portion of the frame. 5307 // Damage a portion of the frame.
5308 host_impl_->active_tree()->root_layer()->SetUpdateRect( 5308 host_impl_->active_tree()->root_layer()->SetUpdateRect(
5309 gfx::Rect(0, 0, 2, 3)); 5309 gfx::Rect(0, 0, 2, 3));
5310 5310
5311 // The second frame will be partially-swapped (the y coordinates are flipped). 5311 // The second frame will be partially-swapped (the y coordinates are flipped).
5312 harness.MustSetScissor(0, 7, 2, 3); 5312 harness.MustSetScissor(0, 7, 2, 3);
5313 harness.MustDrawSolidQuad(); 5313 harness.MustDrawSolidQuad();
5314 { 5314 {
5315 LayerTreeHostImpl::FrameData frame; 5315 LayerTreeHostImpl::FrameData frame;
5316 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5316 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5317 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5317 host_impl_->DrawLayers(&frame);
5318 host_impl_->DidDrawAllLayers(frame); 5318 host_impl_->DidDrawAllLayers(frame);
5319 } 5319 }
5320 Mock::VerifyAndClearExpectations(&mock_context); 5320 Mock::VerifyAndClearExpectations(&mock_context);
5321 } 5321 }
5322 5322
5323 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity( 5323 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity(
5324 bool partial_swap, 5324 bool partial_swap,
5325 LayerTreeHostImplClient* client, 5325 LayerTreeHostImplClient* client,
5326 Proxy* proxy, 5326 Proxy* proxy,
5327 SharedBitmapManager* manager, 5327 SharedBitmapManager* manager,
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
5412 5412
5413 // Verify all quads have been computed 5413 // Verify all quads have been computed
5414 ASSERT_EQ(2U, frame.render_passes.size()); 5414 ASSERT_EQ(2U, frame.render_passes.size());
5415 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 5415 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
5416 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 5416 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
5417 EXPECT_EQ(DrawQuad::SOLID_COLOR, 5417 EXPECT_EQ(DrawQuad::SOLID_COLOR,
5418 frame.render_passes[0]->quad_list.front()->material); 5418 frame.render_passes[0]->quad_list.front()->material);
5419 EXPECT_EQ(DrawQuad::RENDER_PASS, 5419 EXPECT_EQ(DrawQuad::RENDER_PASS,
5420 frame.render_passes[1]->quad_list.front()->material); 5420 frame.render_passes[1]->quad_list.front()->material);
5421 5421
5422 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 5422 my_host_impl->DrawLayers(&frame);
5423 my_host_impl->DidDrawAllLayers(frame); 5423 my_host_impl->DidDrawAllLayers(frame);
5424 } 5424 }
5425 } 5425 }
5426 5426
5427 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { 5427 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) {
5428 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 5428 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
5429 new TestSharedBitmapManager()); 5429 new TestSharedBitmapManager());
5430 scoped_ptr<LayerTreeHostImpl> my_host_impl = 5430 scoped_ptr<LayerTreeHostImpl> my_host_impl =
5431 SetupLayersForOpacity(false, 5431 SetupLayersForOpacity(false,
5432 this, 5432 this,
5433 &proxy_, 5433 &proxy_,
5434 shared_bitmap_manager.get(), 5434 shared_bitmap_manager.get(),
5435 &stats_instrumentation_); 5435 &stats_instrumentation_);
5436 { 5436 {
5437 LayerTreeHostImpl::FrameData frame; 5437 LayerTreeHostImpl::FrameData frame;
5438 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); 5438 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame));
5439 5439
5440 // Verify all quads have been computed 5440 // Verify all quads have been computed
5441 ASSERT_EQ(2U, frame.render_passes.size()); 5441 ASSERT_EQ(2U, frame.render_passes.size());
5442 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 5442 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
5443 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 5443 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
5444 EXPECT_EQ(DrawQuad::SOLID_COLOR, 5444 EXPECT_EQ(DrawQuad::SOLID_COLOR,
5445 frame.render_passes[0]->quad_list.front()->material); 5445 frame.render_passes[0]->quad_list.front()->material);
5446 EXPECT_EQ(DrawQuad::RENDER_PASS, 5446 EXPECT_EQ(DrawQuad::RENDER_PASS,
5447 frame.render_passes[1]->quad_list.front()->material); 5447 frame.render_passes[1]->quad_list.front()->material);
5448 5448
5449 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 5449 my_host_impl->DrawLayers(&frame);
5450 my_host_impl->DidDrawAllLayers(frame); 5450 my_host_impl->DidDrawAllLayers(frame);
5451 } 5451 }
5452 } 5452 }
5453 5453
5454 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { 5454 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) {
5455 scoped_ptr<TestWebGraphicsContext3D> context = 5455 scoped_ptr<TestWebGraphicsContext3D> context =
5456 TestWebGraphicsContext3D::Create(); 5456 TestWebGraphicsContext3D::Create();
5457 TestWebGraphicsContext3D* context3d = context.get(); 5457 TestWebGraphicsContext3D* context3d = context.get();
5458 scoped_ptr<OutputSurface> output_surface( 5458 scoped_ptr<OutputSurface> output_surface(
5459 FakeOutputSurface::Create3d(context.Pass())); 5459 FakeOutputSurface::Create3d(context.Pass()));
(...skipping 23 matching lines...) Expand all
5483 io_surface_layer->SetDrawsContent(true); 5483 io_surface_layer->SetDrawsContent(true);
5484 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); 5484 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10));
5485 root_layer->AddChild(io_surface_layer.Pass()); 5485 root_layer->AddChild(io_surface_layer.Pass());
5486 5486
5487 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); 5487 host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
5488 5488
5489 EXPECT_EQ(0u, context3d->NumTextures()); 5489 EXPECT_EQ(0u, context3d->NumTextures());
5490 5490
5491 LayerTreeHostImpl::FrameData frame; 5491 LayerTreeHostImpl::FrameData frame;
5492 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5492 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5493 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5493 host_impl_->DrawLayers(&frame);
5494 host_impl_->DidDrawAllLayers(frame); 5494 host_impl_->DidDrawAllLayers(frame);
5495 host_impl_->SwapBuffers(frame); 5495 host_impl_->SwapBuffers(frame);
5496 5496
5497 EXPECT_GT(context3d->NumTextures(), 0u); 5497 EXPECT_GT(context3d->NumTextures(), 0u);
5498 5498
5499 // Kill the layer tree. 5499 // Kill the layer tree.
5500 host_impl_->active_tree()->SetRootLayer( 5500 host_impl_->active_tree()->SetRootLayer(
5501 LayerImpl::Create(host_impl_->active_tree(), 100)); 5501 LayerImpl::Create(host_impl_->active_tree(), 100));
5502 // There should be no textures left in use after. 5502 // There should be no textures left in use after.
5503 EXPECT_EQ(0u, context3d->NumTextures()); 5503 EXPECT_EQ(0u, context3d->NumTextures());
(...skipping 22 matching lines...) Expand all
5526 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); 5526 host_impl_->active_tree()->set_background_color(SK_ColorWHITE);
5527 5527
5528 // Verify one quad is drawn when transparent background set is not set. 5528 // Verify one quad is drawn when transparent background set is not set.
5529 host_impl_->active_tree()->set_has_transparent_background(false); 5529 host_impl_->active_tree()->set_has_transparent_background(false);
5530 EXPECT_CALL(*mock_context, useProgram(_)) 5530 EXPECT_CALL(*mock_context, useProgram(_))
5531 .Times(1); 5531 .Times(1);
5532 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) 5532 EXPECT_CALL(*mock_context, drawElements(_, _, _, _))
5533 .Times(1); 5533 .Times(1);
5534 LayerTreeHostImpl::FrameData frame; 5534 LayerTreeHostImpl::FrameData frame;
5535 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5535 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5536 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5536 host_impl_->DrawLayers(&frame);
5537 host_impl_->DidDrawAllLayers(frame); 5537 host_impl_->DidDrawAllLayers(frame);
5538 Mock::VerifyAndClearExpectations(&mock_context); 5538 Mock::VerifyAndClearExpectations(&mock_context);
5539 5539
5540 // Verify no quads are drawn when transparent background is set. 5540 // Verify no quads are drawn when transparent background is set.
5541 host_impl_->active_tree()->set_has_transparent_background(true); 5541 host_impl_->active_tree()->set_has_transparent_background(true);
5542 host_impl_->SetFullRootLayerDamage(); 5542 host_impl_->SetFullRootLayerDamage();
5543 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5543 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5544 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5544 host_impl_->DrawLayers(&frame);
5545 host_impl_->DidDrawAllLayers(frame); 5545 host_impl_->DidDrawAllLayers(frame);
5546 Mock::VerifyAndClearExpectations(&mock_context); 5546 Mock::VerifyAndClearExpectations(&mock_context);
5547 } 5547 }
5548 5548
5549 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) { 5549 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) {
5550 set_reduce_memory_result(false); 5550 set_reduce_memory_result(false);
5551 5551
5552 // If changing the memory limit wouldn't result in changing what was 5552 // If changing the memory limit wouldn't result in changing what was
5553 // committed, then no commit should be requested. 5553 // committed, then no commit should be requested.
5554 set_reduce_memory_result(false); 5554 set_reduce_memory_result(false);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
5617 gfx::RectF expected_child_visible_rect(child->content_bounds()); 5617 gfx::RectF expected_child_visible_rect(child->content_bounds());
5618 EXPECT_EQ(expected_child_visible_rect, 5618 EXPECT_EQ(expected_child_visible_rect,
5619 root_render_pass->quad_list.front()->visible_rect); 5619 root_render_pass->quad_list.front()->visible_rect);
5620 5620
5621 LayerImpl* root = host_impl_->active_tree()->root_layer(); 5621 LayerImpl* root = host_impl_->active_tree()->root_layer();
5622 gfx::RectF expected_root_visible_rect(root->content_bounds()); 5622 gfx::RectF expected_root_visible_rect(root->content_bounds());
5623 EXPECT_EQ(expected_root_visible_rect, 5623 EXPECT_EQ(expected_root_visible_rect,
5624 root_render_pass->quad_list.ElementAt(1)->visible_rect); 5624 root_render_pass->quad_list.ElementAt(1)->visible_rect);
5625 } 5625 }
5626 5626
5627 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5627 host_impl_->DrawLayers(&frame);
5628 host_impl_->DidDrawAllLayers(frame); 5628 host_impl_->DidDrawAllLayers(frame);
5629 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); 5629 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame));
5630 } 5630 }
5631 }; 5631 };
5632 5632
5633 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { 5633 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) {
5634 scoped_ptr<SolidColorLayerImpl> root = 5634 scoped_ptr<SolidColorLayerImpl> root =
5635 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 5635 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
5636 root->SetPosition(gfx::PointF()); 5636 root->SetPosition(gfx::PointF());
5637 root->SetBounds(gfx::Size(10, 10)); 5637 root->SetBounds(gfx::Size(10, 10));
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
5751 5751
5752 ASSERT_EQ(1u, frame.render_passes.size()); 5752 ASSERT_EQ(1u, frame.render_passes.size());
5753 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); 5753 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size());
5754 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); 5754 const DrawQuad* quad = frame.render_passes[0]->quad_list.front();
5755 5755
5756 bool antialiased = 5756 bool antialiased =
5757 GLRendererWithSetupQuadForAntialiasing::ShouldAntialiasQuad( 5757 GLRendererWithSetupQuadForAntialiasing::ShouldAntialiasQuad(
5758 quad->quadTransform(), quad, false); 5758 quad->quadTransform(), quad, false);
5759 EXPECT_FALSE(antialiased); 5759 EXPECT_FALSE(antialiased);
5760 5760
5761 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5761 host_impl_->DrawLayers(&frame);
5762 host_impl_->DidDrawAllLayers(frame); 5762 host_impl_->DidDrawAllLayers(frame);
5763 } 5763 }
5764 5764
5765 5765
5766 class CompositorFrameMetadataTest : public LayerTreeHostImplTest { 5766 class CompositorFrameMetadataTest : public LayerTreeHostImplTest {
5767 public: 5767 public:
5768 CompositorFrameMetadataTest() 5768 CompositorFrameMetadataTest()
5769 : swap_buffers_complete_(0) {} 5769 : swap_buffers_complete_(0) {}
5770 5770
5771 void DidSwapBuffersCompleteOnImplThread() override { 5771 void DidSwapBuffersCompleteOnImplThread() override {
5772 swap_buffers_complete_++; 5772 swap_buffers_complete_++;
5773 } 5773 }
5774 5774
5775 int swap_buffers_complete_; 5775 int swap_buffers_complete_;
5776 }; 5776 };
5777 5777
5778 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { 5778 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) {
5779 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 5779 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
5780 { 5780 {
5781 LayerTreeHostImpl::FrameData frame; 5781 LayerTreeHostImpl::FrameData frame;
5782 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5782 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5783 host_impl_->DrawLayers(&frame, base::TimeTicks()); 5783 host_impl_->DrawLayers(&frame);
5784 host_impl_->DidDrawAllLayers(frame); 5784 host_impl_->DidDrawAllLayers(frame);
5785 } 5785 }
5786 CompositorFrameAck ack; 5786 CompositorFrameAck ack;
5787 host_impl_->ReclaimResources(&ack); 5787 host_impl_->ReclaimResources(&ack);
5788 host_impl_->DidSwapBuffersComplete(); 5788 host_impl_->DidSwapBuffersComplete();
5789 EXPECT_EQ(swap_buffers_complete_, 1); 5789 EXPECT_EQ(swap_buffers_complete_, 1);
5790 } 5790 }
5791 5791
5792 class CountingSoftwareDevice : public SoftwareOutputDevice { 5792 class CountingSoftwareDevice : public SoftwareOutputDevice {
5793 public: 5793 public:
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
5868 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( 5868 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create(
5869 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0); 5869 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0);
5870 video_layer->SetBounds(gfx::Size(10, 10)); 5870 video_layer->SetBounds(gfx::Size(10, 10));
5871 video_layer->SetContentBounds(gfx::Size(10, 10)); 5871 video_layer->SetContentBounds(gfx::Size(10, 10));
5872 video_layer->SetDrawsContent(true); 5872 video_layer->SetDrawsContent(true);
5873 root_layer->AddChild(video_layer.Pass()); 5873 root_layer->AddChild(video_layer.Pass());
5874 SetupRootLayerImpl(root_layer.Pass()); 5874 SetupRootLayerImpl(root_layer.Pass());
5875 5875
5876 LayerTreeHostImpl::FrameData frame; 5876 LayerTreeHostImpl::FrameData frame;
5877 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5877 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5878 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5878 host_impl_->DrawLayers(&frame);
5879 host_impl_->DidDrawAllLayers(frame); 5879 host_impl_->DidDrawAllLayers(frame);
5880 5880
5881 EXPECT_EQ(1u, frame.will_draw_layers.size()); 5881 EXPECT_EQ(1u, frame.will_draw_layers.size());
5882 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); 5882 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]);
5883 } 5883 }
5884 5884
5885 // Checks that we have a non-0 default allocation if we pass a context that 5885 // Checks that we have a non-0 default allocation if we pass a context that
5886 // doesn't support memory management extensions. 5886 // doesn't support memory management extensions.
5887 TEST_F(LayerTreeHostImplTest, DefaultMemoryAllocation) { 5887 TEST_F(LayerTreeHostImplTest, DefaultMemoryAllocation) {
5888 LayerTreeSettings settings; 5888 LayerTreeSettings settings;
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
6095 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 6095 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
6096 6096
6097 ScopedPtrVector<CopyOutputRequest> requests; 6097 ScopedPtrVector<CopyOutputRequest> requests;
6098 requests.push_back(CopyOutputRequest::CreateRequest( 6098 requests.push_back(CopyOutputRequest::CreateRequest(
6099 base::Bind(&ShutdownReleasesContext_Callback))); 6099 base::Bind(&ShutdownReleasesContext_Callback)));
6100 6100
6101 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); 6101 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests);
6102 6102
6103 LayerTreeHostImpl::FrameData frame; 6103 LayerTreeHostImpl::FrameData frame;
6104 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6104 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6105 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6105 host_impl_->DrawLayers(&frame);
6106 host_impl_->DidDrawAllLayers(frame); 6106 host_impl_->DidDrawAllLayers(frame);
6107 6107
6108 // The CopyOutputResult's callback has a ref on the ContextProvider and a 6108 // The CopyOutputResult's callback has a ref on the ContextProvider and a
6109 // texture in a texture mailbox. 6109 // texture in a texture mailbox.
6110 EXPECT_FALSE(context_provider->HasOneRef()); 6110 EXPECT_FALSE(context_provider->HasOneRef());
6111 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); 6111 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures());
6112 6112
6113 host_impl_ = nullptr; 6113 host_impl_ = nullptr;
6114 6114
6115 // The CopyOutputResult's callback was cancelled, the CopyOutputResult 6115 // The CopyOutputResult's callback was cancelled, the CopyOutputResult
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
6492 latency_info.AddLatencyNumber( 6492 latency_info.AddLatencyNumber(
6493 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0); 6493 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0);
6494 scoped_ptr<SwapPromise> swap_promise( 6494 scoped_ptr<SwapPromise> swap_promise(
6495 new LatencyInfoSwapPromise(latency_info)); 6495 new LatencyInfoSwapPromise(latency_info));
6496 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass()); 6496 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass());
6497 host_impl_->SetNeedsRedraw(); 6497 host_impl_->SetNeedsRedraw();
6498 6498
6499 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); 6499 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize());
6500 LayerTreeHostImpl::FrameData frame; 6500 LayerTreeHostImpl::FrameData frame;
6501 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6501 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6502 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6502 host_impl_->DrawLayers(&frame);
6503 host_impl_->DidDrawAllLayers(frame); 6503 host_impl_->DidDrawAllLayers(frame);
6504 EXPECT_TRUE(host_impl_->SwapBuffers(frame)); 6504 EXPECT_TRUE(host_impl_->SwapBuffers(frame));
6505 6505
6506 const std::vector<ui::LatencyInfo>& metadata_latency_after = 6506 const std::vector<ui::LatencyInfo>& metadata_latency_after =
6507 fake_output_surface->last_sent_frame().metadata.latency_info; 6507 fake_output_surface->last_sent_frame().metadata.latency_info;
6508 EXPECT_EQ(1u, metadata_latency_after.size()); 6508 EXPECT_EQ(1u, metadata_latency_after.size());
6509 EXPECT_TRUE(metadata_latency_after[0].FindLatency( 6509 EXPECT_TRUE(metadata_latency_after[0].FindLatency(
6510 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); 6510 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL));
6511 } 6511 }
6512 6512
(...skipping 27 matching lines...) Expand all
6540 selection.start.edge_top = selection_top; 6540 selection.start.edge_top = selection_top;
6541 selection.end = selection.start; 6541 selection.end = selection.start;
6542 host_impl_->active_tree()->RegisterSelection(selection); 6542 host_impl_->active_tree()->RegisterSelection(selection);
6543 6543
6544 // Trigger a draw-swap sequence. 6544 // Trigger a draw-swap sequence.
6545 host_impl_->SetNeedsRedraw(); 6545 host_impl_->SetNeedsRedraw();
6546 6546
6547 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); 6547 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize());
6548 LayerTreeHostImpl::FrameData frame; 6548 LayerTreeHostImpl::FrameData frame;
6549 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6549 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6550 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6550 host_impl_->DrawLayers(&frame);
6551 host_impl_->DidDrawAllLayers(frame); 6551 host_impl_->DidDrawAllLayers(frame);
6552 EXPECT_TRUE(host_impl_->SwapBuffers(frame)); 6552 EXPECT_TRUE(host_impl_->SwapBuffers(frame));
6553 6553
6554 // Ensure the selection bounds have propagated to the frame metadata. 6554 // Ensure the selection bounds have propagated to the frame metadata.
6555 const ViewportSelection& selection_after = 6555 const ViewportSelection& selection_after =
6556 fake_output_surface->last_sent_frame().metadata.selection; 6556 fake_output_surface->last_sent_frame().metadata.selection;
6557 EXPECT_EQ(selection.start.type, selection_after.start.type); 6557 EXPECT_EQ(selection.start.type, selection_after.start.type);
6558 EXPECT_EQ(selection.end.type, selection_after.end.type); 6558 EXPECT_EQ(selection.end.type, selection_after.end.type);
6559 EXPECT_EQ(selection_bottom, selection_after.start.edge_bottom); 6559 EXPECT_EQ(selection_bottom, selection_after.start.edge_bottom);
6560 EXPECT_EQ(selection_top, selection_after.start.edge_top); 6560 EXPECT_EQ(selection_top, selection_after.start.edge_top);
(...skipping 1320 matching lines...) Expand 10 before | Expand all | Expand 10 after
7881 EXPECT_FALSE(frame.render_passes_by_id[RenderPassId(2, 0)]); 7881 EXPECT_FALSE(frame.render_passes_by_id[RenderPassId(2, 0)]);
7882 EXPECT_FALSE(frame.render_passes_by_id[RenderPassId(3, 0)]); 7882 EXPECT_FALSE(frame.render_passes_by_id[RenderPassId(3, 0)]);
7883 EXPECT_EQ(1u, frame.render_passes.size()); 7883 EXPECT_EQ(1u, frame.render_passes.size());
7884 EXPECT_EQ(RenderPassId(1, 0), frame.render_passes[0]->id); 7884 EXPECT_EQ(RenderPassId(1, 0), frame.render_passes[0]->id);
7885 // The RenderPassDrawQuad should be removed from pass1. 7885 // The RenderPassDrawQuad should be removed from pass1.
7886 EXPECT_EQ(0u, pass1->quad_list.size()); 7886 EXPECT_EQ(0u, pass1->quad_list.size());
7887 } 7887 }
7888 7888
7889 } // namespace 7889 } // namespace
7890 } // namespace cc 7890 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698