| OLD | NEW |
| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 did_request_manage_tiles_(false), | 89 did_request_manage_tiles_(false), |
| 90 reduce_memory_result_(true), | 90 reduce_memory_result_(true), |
| 91 current_limit_bytes_(0), | 91 current_limit_bytes_(0), |
| 92 current_priority_cutoff_value_(0) { | 92 current_priority_cutoff_value_(0) { |
| 93 } | 93 } |
| 94 | 94 |
| 95 LayerTreeSettings DefaultSettings() { | 95 LayerTreeSettings DefaultSettings() { |
| 96 LayerTreeSettings settings; | 96 LayerTreeSettings settings; |
| 97 settings.minimum_occlusion_tracking_size = gfx::Size(); | 97 settings.minimum_occlusion_tracking_size = gfx::Size(); |
| 98 settings.impl_side_painting = true; | 98 settings.impl_side_painting = true; |
| 99 settings.texture_id_allocation_chunk_size = 1; | 99 settings.renderer_settings.texture_id_allocation_chunk_size = 1; |
| 100 settings.report_overscroll_only_for_scrollable_axes = true; | 100 settings.report_overscroll_only_for_scrollable_axes = true; |
| 101 settings.use_pinch_virtual_viewport = true; | 101 settings.use_pinch_virtual_viewport = true; |
| 102 return settings; | 102 return settings; |
| 103 } | 103 } |
| 104 | 104 |
| 105 void SetUp() override { | 105 void SetUp() override { |
| 106 CreateHostImpl(DefaultSettings(), CreateOutputSurface()); | 106 CreateHostImpl(DefaultSettings(), CreateOutputSurface()); |
| 107 } | 107 } |
| 108 | 108 |
| 109 void TearDown() override {} | 109 void TearDown() override {} |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 contents->SetContentBounds(content_size); | 249 contents->SetContentBounds(content_size); |
| 250 contents->SetPosition(gfx::PointF()); | 250 contents->SetPosition(gfx::PointF()); |
| 251 | 251 |
| 252 scroll->AddChild(contents.Pass()); | 252 scroll->AddChild(contents.Pass()); |
| 253 page_scale->AddChild(scroll.Pass()); | 253 page_scale->AddChild(scroll.Pass()); |
| 254 clip->AddChild(page_scale.Pass()); | 254 clip->AddChild(page_scale.Pass()); |
| 255 root->AddChild(clip.Pass()); | 255 root->AddChild(clip.Pass()); |
| 256 | 256 |
| 257 layer_tree_impl->SetRootLayer(root.Pass()); | 257 layer_tree_impl->SetRootLayer(root.Pass()); |
| 258 layer_tree_impl->SetViewportLayersFromIds( | 258 layer_tree_impl->SetViewportLayersFromIds( |
| 259 kPageScaleLayerId, kInnerViewportScrollLayerId, Layer::INVALID_ID); | 259 Layer::INVALID_ID, kPageScaleLayerId, kInnerViewportScrollLayerId, |
| 260 Layer::INVALID_ID); |
| 260 | 261 |
| 261 return scroll_layer; | 262 return scroll_layer; |
| 262 } | 263 } |
| 263 | 264 |
| 264 LayerImpl* SetupScrollAndContentsLayers(const gfx::Size& content_size) { | 265 LayerImpl* SetupScrollAndContentsLayers(const gfx::Size& content_size) { |
| 265 LayerImpl* scroll_layer = CreateScrollAndContentsLayers( | 266 LayerImpl* scroll_layer = CreateScrollAndContentsLayers( |
| 266 host_impl_->active_tree(), content_size); | 267 host_impl_->active_tree(), content_size); |
| 267 host_impl_->active_tree()->DidBecomeActive(); | 268 host_impl_->active_tree()->DidBecomeActive(); |
| 268 return scroll_layer; | 269 return scroll_layer; |
| 269 } | 270 } |
| (...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 | 1153 |
| 1153 // Non-anchor zoom-in | 1154 // Non-anchor zoom-in |
| 1154 { | 1155 { |
| 1155 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1156 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
| 1156 min_page_scale, | 1157 min_page_scale, |
| 1157 max_page_scale); | 1158 max_page_scale); |
| 1158 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); | 1159 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
| 1159 | 1160 |
| 1160 did_request_redraw_ = false; | 1161 did_request_redraw_ = false; |
| 1161 did_request_animate_ = false; | 1162 did_request_animate_ = false; |
| 1162 host_impl_->active_tree()->SetPageScaleAnimation( | 1163 host_impl_->active_tree()->SetPendingPageScaleAnimation( |
| 1163 gfx::Vector2d(), | 1164 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( |
| 1164 false, | 1165 gfx::Vector2d(), |
| 1165 2.f, | 1166 false, |
| 1166 duration); | 1167 2.f, |
| 1168 duration))); |
| 1167 host_impl_->ActivateSyncTree(); | 1169 host_impl_->ActivateSyncTree(); |
| 1168 EXPECT_FALSE(did_request_redraw_); | 1170 EXPECT_FALSE(did_request_redraw_); |
| 1169 EXPECT_TRUE(did_request_animate_); | 1171 EXPECT_TRUE(did_request_animate_); |
| 1170 | 1172 |
| 1171 did_request_redraw_ = false; | 1173 did_request_redraw_ = false; |
| 1172 did_request_animate_ = false; | 1174 did_request_animate_ = false; |
| 1173 host_impl_->Animate(start_time); | 1175 host_impl_->Animate(start_time); |
| 1174 EXPECT_TRUE(did_request_redraw_); | 1176 EXPECT_TRUE(did_request_redraw_); |
| 1175 EXPECT_TRUE(did_request_animate_); | 1177 EXPECT_TRUE(did_request_animate_); |
| 1176 | 1178 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1195 | 1197 |
| 1196 // Anchor zoom-out | 1198 // Anchor zoom-out |
| 1197 { | 1199 { |
| 1198 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1200 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
| 1199 min_page_scale, | 1201 min_page_scale, |
| 1200 max_page_scale); | 1202 max_page_scale); |
| 1201 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); | 1203 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
| 1202 | 1204 |
| 1203 did_request_redraw_ = false; | 1205 did_request_redraw_ = false; |
| 1204 did_request_animate_ = false; | 1206 did_request_animate_ = false; |
| 1205 host_impl_->active_tree()->SetPageScaleAnimation( | 1207 host_impl_->active_tree()->SetPendingPageScaleAnimation( |
| 1206 gfx::Vector2d(25, 25), true, min_page_scale, duration); | 1208 scoped_ptr<PendingPageScaleAnimation> (new PendingPageScaleAnimation( |
| 1209 gfx::Vector2d(25, 25), |
| 1210 true, |
| 1211 min_page_scale, |
| 1212 duration))); |
| 1207 host_impl_->ActivateSyncTree(); | 1213 host_impl_->ActivateSyncTree(); |
| 1208 EXPECT_FALSE(did_request_redraw_); | 1214 EXPECT_FALSE(did_request_redraw_); |
| 1209 EXPECT_TRUE(did_request_animate_); | 1215 EXPECT_TRUE(did_request_animate_); |
| 1210 | 1216 |
| 1211 did_request_redraw_ = false; | 1217 did_request_redraw_ = false; |
| 1212 did_request_animate_ = false; | 1218 did_request_animate_ = false; |
| 1213 host_impl_->Animate(start_time); | 1219 host_impl_->Animate(start_time); |
| 1214 EXPECT_TRUE(did_request_redraw_); | 1220 EXPECT_TRUE(did_request_redraw_); |
| 1215 EXPECT_TRUE(did_request_animate_); | 1221 EXPECT_TRUE(did_request_animate_); |
| 1216 | 1222 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1246 base::TimeTicks halfway_through_animation = start_time + duration / 2; | 1252 base::TimeTicks halfway_through_animation = start_time + duration / 2; |
| 1247 base::TimeTicks end_time = start_time + duration; | 1253 base::TimeTicks end_time = start_time + duration; |
| 1248 | 1254 |
| 1249 // Anchor zoom with unchanged page scale should not change scroll or scale. | 1255 // Anchor zoom with unchanged page scale should not change scroll or scale. |
| 1250 { | 1256 { |
| 1251 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1257 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
| 1252 min_page_scale, | 1258 min_page_scale, |
| 1253 max_page_scale); | 1259 max_page_scale); |
| 1254 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); | 1260 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
| 1255 | 1261 |
| 1256 host_impl_->active_tree()->SetPageScaleAnimation( | 1262 host_impl_->active_tree()->SetPendingPageScaleAnimation( |
| 1257 gfx::Vector2d(), | 1263 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( |
| 1258 true, | 1264 gfx::Vector2d(), |
| 1259 1.f, | 1265 true, |
| 1260 duration); | 1266 1.f, |
| 1267 duration))); |
| 1261 host_impl_->ActivateSyncTree(); | 1268 host_impl_->ActivateSyncTree(); |
| 1262 host_impl_->Animate(start_time); | 1269 host_impl_->Animate(start_time); |
| 1263 host_impl_->Animate(halfway_through_animation); | 1270 host_impl_->Animate(halfway_through_animation); |
| 1264 EXPECT_TRUE(did_request_redraw_); | 1271 EXPECT_TRUE(did_request_redraw_); |
| 1265 host_impl_->Animate(end_time); | 1272 host_impl_->Animate(end_time); |
| 1266 EXPECT_TRUE(did_request_commit_); | 1273 EXPECT_TRUE(did_request_commit_); |
| 1267 | 1274 |
| 1268 scoped_ptr<ScrollAndScaleSet> scroll_info = | 1275 scoped_ptr<ScrollAndScaleSet> scroll_info = |
| 1269 host_impl_->ProcessScrollDeltas(); | 1276 host_impl_->ProcessScrollDeltas(); |
| 1270 EXPECT_EQ(scroll_info->page_scale_delta, 1); | 1277 EXPECT_EQ(scroll_info->page_scale_delta, 1); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1294 base::TimeDelta::FromSeconds(1); | 1301 base::TimeDelta::FromSeconds(1); |
| 1295 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); | 1302 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); |
| 1296 base::TimeTicks third_through_animation = start_time + duration / 3; | 1303 base::TimeTicks third_through_animation = start_time + duration / 3; |
| 1297 base::TimeTicks halfway_through_animation = start_time + duration / 2; | 1304 base::TimeTicks halfway_through_animation = start_time + duration / 2; |
| 1298 base::TimeTicks end_time = start_time + duration; | 1305 base::TimeTicks end_time = start_time + duration; |
| 1299 float target_scale = 2.f; | 1306 float target_scale = 2.f; |
| 1300 | 1307 |
| 1301 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); | 1308 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
| 1302 | 1309 |
| 1303 // Make sure TakePageScaleAnimation works properly. | 1310 // Make sure TakePageScaleAnimation works properly. |
| 1304 host_impl_->sync_tree()->SetPageScaleAnimation( | 1311 |
| 1305 gfx::Vector2d(), | 1312 host_impl_->sync_tree()->SetPendingPageScaleAnimation( |
| 1306 false, | 1313 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( |
| 1307 target_scale, | 1314 gfx::Vector2d(), |
| 1308 duration); | 1315 false, |
| 1309 scoped_ptr<PageScaleAnimation> psa = | 1316 target_scale, |
| 1310 host_impl_->sync_tree()->TakePageScaleAnimation(); | 1317 duration))); |
| 1311 EXPECT_EQ(target_scale, psa->target_page_scale_factor()); | 1318 scoped_ptr<PendingPageScaleAnimation> psa = |
| 1312 EXPECT_EQ(duration, psa->duration()); | 1319 host_impl_->sync_tree()->TakePendingPageScaleAnimation(); |
| 1313 EXPECT_EQ(nullptr, host_impl_->sync_tree()->TakePageScaleAnimation()); | 1320 EXPECT_EQ(target_scale, psa->scale); |
| 1321 EXPECT_EQ(duration, psa->duration); |
| 1322 EXPECT_EQ(nullptr, host_impl_->sync_tree()->TakePendingPageScaleAnimation()); |
| 1314 | 1323 |
| 1315 // Recreate the PSA. Nothing should happen here since the tree containing the | 1324 // Recreate the PSA. Nothing should happen here since the tree containing the |
| 1316 // PSA hasn't been activated yet. | 1325 // PSA hasn't been activated yet. |
| 1317 did_request_redraw_ = false; | 1326 did_request_redraw_ = false; |
| 1318 did_request_animate_ = false; | 1327 did_request_animate_ = false; |
| 1319 host_impl_->sync_tree()->SetPageScaleAnimation( | 1328 host_impl_->sync_tree()->SetPendingPageScaleAnimation( |
| 1320 gfx::Vector2d(), | 1329 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( |
| 1321 false, | 1330 gfx::Vector2d(), |
| 1322 target_scale, | 1331 false, |
| 1323 duration); | 1332 target_scale, |
| 1333 duration))); |
| 1324 host_impl_->Animate(halfway_through_animation); | 1334 host_impl_->Animate(halfway_through_animation); |
| 1325 EXPECT_FALSE(did_request_animate_); | 1335 EXPECT_FALSE(did_request_animate_); |
| 1326 EXPECT_FALSE(did_request_redraw_); | 1336 EXPECT_FALSE(did_request_redraw_); |
| 1327 | 1337 |
| 1328 // Activate the sync tree. This should cause the animation to become enabled. | 1338 // Activate the sync tree. This should cause the animation to become enabled. |
| 1329 // It should also clear the pointer on the sync tree. | 1339 // It should also clear the pointer on the sync tree. |
| 1330 host_impl_->ActivateSyncTree(); | 1340 host_impl_->ActivateSyncTree(); |
| 1331 EXPECT_EQ(nullptr, host_impl_->sync_tree()->TakePageScaleAnimation().get()); | 1341 EXPECT_EQ(nullptr, |
| 1342 host_impl_->sync_tree()->TakePendingPageScaleAnimation().get()); |
| 1332 EXPECT_FALSE(did_request_redraw_); | 1343 EXPECT_FALSE(did_request_redraw_); |
| 1333 EXPECT_TRUE(did_request_animate_); | 1344 EXPECT_TRUE(did_request_animate_); |
| 1334 | 1345 |
| 1335 // From here on, make sure the animation runs as normal. | 1346 // From here on, make sure the animation runs as normal. |
| 1336 did_request_redraw_ = false; | 1347 did_request_redraw_ = false; |
| 1337 did_request_animate_ = false; | 1348 did_request_animate_ = false; |
| 1338 host_impl_->Animate(start_time); | 1349 host_impl_->Animate(start_time); |
| 1339 EXPECT_TRUE(did_request_redraw_); | 1350 EXPECT_TRUE(did_request_redraw_); |
| 1340 EXPECT_TRUE(did_request_animate_); | 1351 EXPECT_TRUE(did_request_animate_); |
| 1341 | 1352 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1388 } | 1399 } |
| 1389 | 1400 |
| 1390 void SetCurrentPhysicalTimeTicksForTest(base::TimeTicks fake_now) { | 1401 void SetCurrentPhysicalTimeTicksForTest(base::TimeTicks fake_now) { |
| 1391 fake_current_physical_time_ = fake_now; | 1402 fake_current_physical_time_ = fake_now; |
| 1392 } | 1403 } |
| 1393 | 1404 |
| 1394 private: | 1405 private: |
| 1395 base::TimeTicks fake_current_physical_time_; | 1406 base::TimeTicks fake_current_physical_time_; |
| 1396 }; | 1407 }; |
| 1397 | 1408 |
| 1398 #define SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST() \ | 1409 #define SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST() \ |
| 1399 gfx::Size viewport_size(10, 10); \ | 1410 gfx::Size viewport_size(10, 10); \ |
| 1400 gfx::Size content_size(100, 100); \ | 1411 gfx::Size content_size(100, 100); \ |
| 1401 \ | 1412 \ |
| 1402 LayerTreeHostImplOverridePhysicalTime* host_impl_override_time = \ | 1413 LayerTreeHostImplOverridePhysicalTime* host_impl_override_time = \ |
| 1403 new LayerTreeHostImplOverridePhysicalTime(settings, \ | 1414 new LayerTreeHostImplOverridePhysicalTime(settings, this, &proxy_, \ |
| 1404 this, \ | 1415 shared_bitmap_manager_.get(), \ |
| 1405 &proxy_, \ | 1416 &stats_instrumentation_); \ |
| 1406 shared_bitmap_manager_.get(), \ | 1417 host_impl_ = make_scoped_ptr(host_impl_override_time); \ |
| 1407 &stats_instrumentation_); \ | 1418 host_impl_->InitializeRenderer(CreateOutputSurface()); \ |
| 1408 host_impl_ = make_scoped_ptr(host_impl_override_time); \ | 1419 host_impl_->SetViewportSize(viewport_size); \ |
| 1409 host_impl_->InitializeRenderer(CreateOutputSurface()); \ | 1420 \ |
| 1410 host_impl_->SetViewportSize(viewport_size); \ | 1421 scoped_ptr<LayerImpl> root = \ |
| 1411 \ | 1422 LayerImpl::Create(host_impl_->active_tree(), 1); \ |
| 1412 scoped_ptr<LayerImpl> root = \ | 1423 root->SetBounds(viewport_size); \ |
| 1413 LayerImpl::Create(host_impl_->active_tree(), 1); \ | 1424 \ |
| 1414 root->SetBounds(viewport_size); \ | 1425 scoped_ptr<LayerImpl> scroll = \ |
| 1415 \ | 1426 LayerImpl::Create(host_impl_->active_tree(), 2); \ |
| 1416 scoped_ptr<LayerImpl> scroll = \ | 1427 scroll->SetScrollClipLayer(root->id()); \ |
| 1417 LayerImpl::Create(host_impl_->active_tree(), 2); \ | 1428 scroll->SetScrollOffset(gfx::ScrollOffset()); \ |
| 1418 scroll->SetScrollClipLayer(root->id()); \ | 1429 root->SetBounds(viewport_size); \ |
| 1419 scroll->SetScrollOffset(gfx::ScrollOffset()); \ | 1430 scroll->SetBounds(content_size); \ |
| 1420 root->SetBounds(viewport_size); \ | 1431 scroll->SetContentBounds(content_size); \ |
| 1421 scroll->SetBounds(content_size); \ | 1432 scroll->SetIsContainerForFixedPositionLayers(true); \ |
| 1422 scroll->SetContentBounds(content_size); \ | 1433 \ |
| 1423 scroll->SetIsContainerForFixedPositionLayers(true); \ | 1434 scoped_ptr<LayerImpl> contents = \ |
| 1424 \ | 1435 LayerImpl::Create(host_impl_->active_tree(), 3); \ |
| 1425 scoped_ptr<LayerImpl> contents = \ | 1436 contents->SetDrawsContent(true); \ |
| 1426 LayerImpl::Create(host_impl_->active_tree(), 3); \ | 1437 contents->SetBounds(content_size); \ |
| 1427 contents->SetDrawsContent(true); \ | 1438 contents->SetContentBounds(content_size); \ |
| 1428 contents->SetBounds(content_size); \ | 1439 \ |
| 1429 contents->SetContentBounds(content_size); \ | 1440 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \ |
| 1430 \ | 1441 SolidColorScrollbarLayerImpl::Create(host_impl_->active_tree(), 4, \ |
| 1431 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \ | 1442 VERTICAL, 10, 0, false, true); \ |
| 1432 SolidColorScrollbarLayerImpl::Create( \ | 1443 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \ |
| 1433 host_impl_->active_tree(), 4, VERTICAL, 10, 0, false, true); \ | 1444 \ |
| 1434 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \ | 1445 scroll->AddChild(contents.Pass()); \ |
| 1435 \ | 1446 root->AddChild(scroll.Pass()); \ |
| 1436 scroll->AddChild(contents.Pass()); \ | 1447 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \ |
| 1437 root->AddChild(scroll.Pass()); \ | 1448 root->AddChild(scrollbar.Pass()); \ |
| 1438 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \ | 1449 \ |
| 1439 root->AddChild(scrollbar.Pass()); \ | 1450 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ |
| 1440 \ | 1451 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, \ |
| 1441 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ | 1452 Layer::INVALID_ID); \ |
| 1442 host_impl_->active_tree()->SetViewportLayersFromIds( \ | 1453 host_impl_->active_tree()->DidBecomeActive(); \ |
| 1443 1, 2, Layer::INVALID_ID); \ | |
| 1444 host_impl_->active_tree()->DidBecomeActive(); \ | |
| 1445 DrawFrame(); | 1454 DrawFrame(); |
| 1446 | 1455 |
| 1447 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { | 1456 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { |
| 1448 LayerTreeSettings settings; | 1457 LayerTreeSettings settings; |
| 1449 settings.scrollbar_animator = LayerTreeSettings::LinearFade; | 1458 settings.scrollbar_animator = LayerTreeSettings::LinearFade; |
| 1450 settings.scrollbar_fade_delay_ms = 20; | 1459 settings.scrollbar_fade_delay_ms = 20; |
| 1451 settings.scrollbar_fade_duration_ms = 20; | 1460 settings.scrollbar_fade_duration_ms = 20; |
| 1452 | 1461 |
| 1453 SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST(); | 1462 SETUP_LAYERS_FOR_SCROLLBAR_ANIMATION_TEST(); |
| 1454 | 1463 |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1601 scrollbar->SetBounds(gfx::Size(15, viewport_size.height())); | 1610 scrollbar->SetBounds(gfx::Size(15, viewport_size.height())); |
| 1602 scrollbar->SetContentBounds(gfx::Size(15, viewport_size.height())); | 1611 scrollbar->SetContentBounds(gfx::Size(15, viewport_size.height())); |
| 1603 scrollbar->SetPosition(gfx::Point(285, 0)); | 1612 scrollbar->SetPosition(gfx::Point(285, 0)); |
| 1604 | 1613 |
| 1605 scroll->AddChild(contents.Pass()); | 1614 scroll->AddChild(contents.Pass()); |
| 1606 root->AddChild(scroll.Pass()); | 1615 root->AddChild(scroll.Pass()); |
| 1607 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); | 1616 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); |
| 1608 root->AddChild(scrollbar.Pass()); | 1617 root->AddChild(scrollbar.Pass()); |
| 1609 | 1618 |
| 1610 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 1619 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 1611 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 1620 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, |
| 1621 Layer::INVALID_ID); |
| 1612 host_impl_->active_tree()->DidBecomeActive(); | 1622 host_impl_->active_tree()->DidBecomeActive(); |
| 1613 DrawFrame(); | 1623 DrawFrame(); |
| 1614 | 1624 |
| 1615 LayerImpl* root_scroll = | 1625 LayerImpl* root_scroll = |
| 1616 host_impl_->active_tree()->InnerViewportScrollLayer(); | 1626 host_impl_->active_tree()->InnerViewportScrollLayer(); |
| 1617 ASSERT_TRUE(root_scroll->scrollbar_animation_controller()); | 1627 ASSERT_TRUE(root_scroll->scrollbar_animation_controller()); |
| 1618 ScrollbarAnimationControllerThinning* scrollbar_animation_controller = | 1628 ScrollbarAnimationControllerThinning* scrollbar_animation_controller = |
| 1619 static_cast<ScrollbarAnimationControllerThinning*>( | 1629 static_cast<ScrollbarAnimationControllerThinning*>( |
| 1620 root_scroll->scrollbar_animation_controller()); | 1630 root_scroll->scrollbar_animation_controller()); |
| 1621 scrollbar_animation_controller->set_mouse_move_distance_for_test(100.f); | 1631 scrollbar_animation_controller->set_mouse_move_distance_for_test(100.f); |
| (...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2275 root->SetBounds(layer_size_); | 2285 root->SetBounds(layer_size_); |
| 2276 root->SetContentBounds(layer_size_); | 2286 root->SetContentBounds(layer_size_); |
| 2277 root->SetPosition(gfx::PointF()); | 2287 root->SetPosition(gfx::PointF()); |
| 2278 root->SetDrawsContent(false); | 2288 root->SetDrawsContent(false); |
| 2279 root->SetIsContainerForFixedPositionLayers(true); | 2289 root->SetIsContainerForFixedPositionLayers(true); |
| 2280 int inner_viewport_scroll_layer_id = root->id(); | 2290 int inner_viewport_scroll_layer_id = root->id(); |
| 2281 int page_scale_layer_id = root_clip->id(); | 2291 int page_scale_layer_id = root_clip->id(); |
| 2282 root_clip->AddChild(root.Pass()); | 2292 root_clip->AddChild(root.Pass()); |
| 2283 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 2293 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 2284 host_impl_->active_tree()->SetViewportLayersFromIds( | 2294 host_impl_->active_tree()->SetViewportLayersFromIds( |
| 2285 page_scale_layer_id, inner_viewport_scroll_layer_id, Layer::INVALID_ID); | 2295 Layer::INVALID_ID, page_scale_layer_id, inner_viewport_scroll_layer_id, |
| 2296 Layer::INVALID_ID); |
| 2286 // Set a viewport size that is large enough to contain both the top controls | 2297 // Set a viewport size that is large enough to contain both the top controls |
| 2287 // and some content. | 2298 // and some content. |
| 2288 host_impl_->SetViewportSize(viewport_size_); | 2299 host_impl_->SetViewportSize(viewport_size_); |
| 2289 host_impl_->SetTopControlsLayoutHeight( | 2300 host_impl_->SetTopControlsLayoutHeight( |
| 2290 settings_.top_controls_height); | 2301 settings_.top_controls_height); |
| 2291 | 2302 |
| 2292 host_impl_->CreatePendingTree(); | 2303 host_impl_->CreatePendingTree(); |
| 2293 root = | 2304 root = |
| 2294 LayerImpl::Create(host_impl_->sync_tree(), 1); | 2305 LayerImpl::Create(host_impl_->sync_tree(), 1); |
| 2295 root_clip = | 2306 root_clip = |
| 2296 LayerImpl::Create(host_impl_->sync_tree(), 2); | 2307 LayerImpl::Create(host_impl_->sync_tree(), 2); |
| 2297 root_clip->SetBounds(clip_size_); | 2308 root_clip->SetBounds(clip_size_); |
| 2298 root->SetScrollClipLayer(root_clip->id()); | 2309 root->SetScrollClipLayer(root_clip->id()); |
| 2299 root->SetBounds(layer_size_); | 2310 root->SetBounds(layer_size_); |
| 2300 root->SetContentBounds(layer_size_); | 2311 root->SetContentBounds(layer_size_); |
| 2301 root->SetPosition(gfx::PointF()); | 2312 root->SetPosition(gfx::PointF()); |
| 2302 root->SetDrawsContent(false); | 2313 root->SetDrawsContent(false); |
| 2303 root->SetIsContainerForFixedPositionLayers(true); | 2314 root->SetIsContainerForFixedPositionLayers(true); |
| 2304 inner_viewport_scroll_layer_id = root->id(); | 2315 inner_viewport_scroll_layer_id = root->id(); |
| 2305 page_scale_layer_id = root_clip->id(); | 2316 page_scale_layer_id = root_clip->id(); |
| 2306 root_clip->AddChild(root.Pass()); | 2317 root_clip->AddChild(root.Pass()); |
| 2307 host_impl_->sync_tree()->SetRootLayer(root_clip.Pass()); | 2318 host_impl_->sync_tree()->SetRootLayer(root_clip.Pass()); |
| 2308 host_impl_->sync_tree()->SetViewportLayersFromIds( | 2319 host_impl_->sync_tree()->SetViewportLayersFromIds( |
| 2309 page_scale_layer_id, inner_viewport_scroll_layer_id, Layer::INVALID_ID); | 2320 Layer::INVALID_ID, page_scale_layer_id, inner_viewport_scroll_layer_id, |
| 2321 Layer::INVALID_ID); |
| 2310 // Set a viewport size that is large enough to contain both the top controls | 2322 // Set a viewport size that is large enough to contain both the top controls |
| 2311 // and some content. | 2323 // and some content. |
| 2312 host_impl_->SetViewportSize(viewport_size_); | 2324 host_impl_->SetViewportSize(viewport_size_); |
| 2313 host_impl_->sync_tree()->set_top_controls_layout_height( | 2325 host_impl_->sync_tree()->set_top_controls_layout_height( |
| 2314 settings_.top_controls_height); | 2326 settings_.top_controls_height); |
| 2315 } | 2327 } |
| 2316 | 2328 |
| 2317 void SetupTopControlsAndScrollLayerWithVirtualViewport( | 2329 void SetupTopControlsAndScrollLayerWithVirtualViewport( |
| 2318 const gfx::Size& inner_viewport_size, | 2330 const gfx::Size& inner_viewport_size, |
| 2319 const gfx::Size& outer_viewport_size, | 2331 const gfx::Size& outer_viewport_size, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2354 int outer_viewport_scroll_layer_id = outer_scroll->id(); | 2366 int outer_viewport_scroll_layer_id = outer_scroll->id(); |
| 2355 int page_scale_layer_id = page_scale->id(); | 2367 int page_scale_layer_id = page_scale->id(); |
| 2356 | 2368 |
| 2357 outer_clip->AddChild(outer_scroll.Pass()); | 2369 outer_clip->AddChild(outer_scroll.Pass()); |
| 2358 root->AddChild(outer_clip.Pass()); | 2370 root->AddChild(outer_clip.Pass()); |
| 2359 page_scale->AddChild(root.Pass()); | 2371 page_scale->AddChild(root.Pass()); |
| 2360 root_clip->AddChild(page_scale.Pass()); | 2372 root_clip->AddChild(page_scale.Pass()); |
| 2361 | 2373 |
| 2362 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 2374 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 2363 host_impl_->active_tree()->SetViewportLayersFromIds( | 2375 host_impl_->active_tree()->SetViewportLayersFromIds( |
| 2364 page_scale_layer_id, | 2376 Layer::INVALID_ID, page_scale_layer_id, inner_viewport_scroll_layer_id, |
| 2365 inner_viewport_scroll_layer_id, | |
| 2366 outer_viewport_scroll_layer_id); | 2377 outer_viewport_scroll_layer_id); |
| 2367 | 2378 |
| 2368 host_impl_->SetViewportSize(inner_viewport_size); | 2379 host_impl_->SetViewportSize(inner_viewport_size); |
| 2369 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); | 2380 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); |
| 2370 EXPECT_EQ(inner_viewport_size, root_clip_ptr->bounds()); | 2381 EXPECT_EQ(inner_viewport_size, root_clip_ptr->bounds()); |
| 2371 } | 2382 } |
| 2372 | 2383 |
| 2373 protected: | 2384 protected: |
| 2374 gfx::Size layer_size_; | 2385 gfx::Size layer_size_; |
| 2375 gfx::Size clip_size_; | 2386 gfx::Size clip_size_; |
| (...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2979 LayerImpl::Create(host_impl_->active_tree(), 2); | 2990 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 2980 scoped_ptr<LayerImpl> root_scrolling = | 2991 scoped_ptr<LayerImpl> root_scrolling = |
| 2981 CreateScrollableLayer(3, surface_size, root_clip.get()); | 2992 CreateScrollableLayer(3, surface_size, root_clip.get()); |
| 2982 EXPECT_EQ(viewport_size, root_clip->bounds()); | 2993 EXPECT_EQ(viewport_size, root_clip->bounds()); |
| 2983 root_scrolling->SetIsContainerForFixedPositionLayers(true); | 2994 root_scrolling->SetIsContainerForFixedPositionLayers(true); |
| 2984 root_clip->AddChild(root_scrolling.Pass()); | 2995 root_clip->AddChild(root_scrolling.Pass()); |
| 2985 root->AddChild(root_clip.Pass()); | 2996 root->AddChild(root_clip.Pass()); |
| 2986 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2997 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 2987 // The behaviour in this test assumes the page scale is applied at a layer | 2998 // The behaviour in this test assumes the page scale is applied at a layer |
| 2988 // above the clip layer. | 2999 // above the clip layer. |
| 2989 host_impl_->active_tree()->SetViewportLayersFromIds(1, 3, Layer::INVALID_ID); | 3000 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3, |
| 3001 Layer::INVALID_ID); |
| 2990 host_impl_->active_tree()->DidBecomeActive(); | 3002 host_impl_->active_tree()->DidBecomeActive(); |
| 2991 host_impl_->SetViewportSize(viewport_size); | 3003 host_impl_->SetViewportSize(viewport_size); |
| 2992 DrawFrame(); | 3004 DrawFrame(); |
| 2993 | 3005 |
| 2994 LayerImpl* root_scroll = | 3006 LayerImpl* root_scroll = |
| 2995 host_impl_->active_tree()->InnerViewportScrollLayer(); | 3007 host_impl_->active_tree()->InnerViewportScrollLayer(); |
| 2996 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); | 3008 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); |
| 2997 | 3009 |
| 2998 gfx::Vector2d scroll_delta(0, 10); | 3010 gfx::Vector2d scroll_delta(0, 10); |
| 2999 gfx::Vector2d expected_scroll_delta = scroll_delta; | 3011 gfx::Vector2d expected_scroll_delta = scroll_delta; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 3029 LayerImpl::Create(host_impl_->active_tree(), 2); | 3041 LayerImpl::Create(host_impl_->active_tree(), 2); |
| 3030 scoped_ptr<LayerImpl> root_scrolling = | 3042 scoped_ptr<LayerImpl> root_scrolling = |
| 3031 CreateScrollableLayer(3, surface_size, root_clip.get()); | 3043 CreateScrollableLayer(3, surface_size, root_clip.get()); |
| 3032 EXPECT_EQ(viewport_size, root_clip->bounds()); | 3044 EXPECT_EQ(viewport_size, root_clip->bounds()); |
| 3033 root_scrolling->SetIsContainerForFixedPositionLayers(true); | 3045 root_scrolling->SetIsContainerForFixedPositionLayers(true); |
| 3034 root_clip->AddChild(root_scrolling.Pass()); | 3046 root_clip->AddChild(root_scrolling.Pass()); |
| 3035 root->AddChild(root_clip.Pass()); | 3047 root->AddChild(root_clip.Pass()); |
| 3036 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 3048 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 3037 // The behaviour in this test assumes the page scale is applied at a layer | 3049 // The behaviour in this test assumes the page scale is applied at a layer |
| 3038 // above the clip layer. | 3050 // above the clip layer. |
| 3039 host_impl_->active_tree()->SetViewportLayersFromIds(1, 3, Layer::INVALID_ID); | 3051 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3, |
| 3052 Layer::INVALID_ID); |
| 3040 host_impl_->active_tree()->DidBecomeActive(); | 3053 host_impl_->active_tree()->DidBecomeActive(); |
| 3041 host_impl_->SetViewportSize(viewport_size); | 3054 host_impl_->SetViewportSize(viewport_size); |
| 3042 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale); | 3055 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale); |
| 3043 DrawFrame(); | 3056 DrawFrame(); |
| 3044 | 3057 |
| 3045 LayerImpl* root_scroll = | 3058 LayerImpl* root_scroll = |
| 3046 host_impl_->active_tree()->InnerViewportScrollLayer(); | 3059 host_impl_->active_tree()->InnerViewportScrollLayer(); |
| 3047 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); | 3060 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); |
| 3048 | 3061 |
| 3049 gfx::Vector2d scroll_delta(0, 10); | 3062 gfx::Vector2d scroll_delta(0, 10); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3144 root_scrolling->SetScrollClipLayer(root->id()); | 3157 root_scrolling->SetScrollClipLayer(root->id()); |
| 3145 root_scrolling->SetIsContainerForFixedPositionLayers(true); | 3158 root_scrolling->SetIsContainerForFixedPositionLayers(true); |
| 3146 LayerImpl* root_scrolling_ptr = root_scrolling.get(); | 3159 LayerImpl* root_scrolling_ptr = root_scrolling.get(); |
| 3147 root->AddChild(root_scrolling.Pass()); | 3160 root->AddChild(root_scrolling.Pass()); |
| 3148 int child_scroll_layer_id = 3; | 3161 int child_scroll_layer_id = 3; |
| 3149 scoped_ptr<LayerImpl> child_scrolling = CreateScrollableLayer( | 3162 scoped_ptr<LayerImpl> child_scrolling = CreateScrollableLayer( |
| 3150 child_scroll_layer_id, surface_size, root_scrolling_ptr); | 3163 child_scroll_layer_id, surface_size, root_scrolling_ptr); |
| 3151 LayerImpl* child = child_scrolling.get(); | 3164 LayerImpl* child = child_scrolling.get(); |
| 3152 root_scrolling_ptr->AddChild(child_scrolling.Pass()); | 3165 root_scrolling_ptr->AddChild(child_scrolling.Pass()); |
| 3153 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 3166 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 3154 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 3167 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, |
| 3168 Layer::INVALID_ID); |
| 3155 host_impl_->active_tree()->DidBecomeActive(); | 3169 host_impl_->active_tree()->DidBecomeActive(); |
| 3156 host_impl_->SetViewportSize(surface_size); | 3170 host_impl_->SetViewportSize(surface_size); |
| 3157 DrawFrame(); | 3171 DrawFrame(); |
| 3158 | 3172 |
| 3159 gfx::Vector2d scroll_delta(0, 10); | 3173 gfx::Vector2d scroll_delta(0, 10); |
| 3160 gfx::Vector2d expected_scroll_delta(scroll_delta); | 3174 gfx::Vector2d expected_scroll_delta(scroll_delta); |
| 3161 gfx::ScrollOffset expected_max_scroll(child->MaxScrollOffset()); | 3175 gfx::ScrollOffset expected_max_scroll(child->MaxScrollOffset()); |
| 3162 EXPECT_EQ(InputHandler::ScrollStarted, | 3176 EXPECT_EQ(InputHandler::ScrollStarted, |
| 3163 host_impl_->ScrollBegin(gfx::Point(5, 5), | 3177 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 3164 InputHandler::Wheel)); | 3178 InputHandler::Wheel)); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3247 scoped_ptr<LayerImpl> child = | 3261 scoped_ptr<LayerImpl> child = |
| 3248 CreateScrollableLayer(3, surface_size, root.get()); | 3262 CreateScrollableLayer(3, surface_size, root.get()); |
| 3249 LayerImpl* grand_child_layer = grand_child.get(); | 3263 LayerImpl* grand_child_layer = grand_child.get(); |
| 3250 child->AddChild(grand_child.Pass()); | 3264 child->AddChild(grand_child.Pass()); |
| 3251 | 3265 |
| 3252 LayerImpl* child_layer = child.get(); | 3266 LayerImpl* child_layer = child.get(); |
| 3253 root_scrolling->AddChild(child.Pass()); | 3267 root_scrolling->AddChild(child.Pass()); |
| 3254 root->AddChild(root_scrolling.Pass()); | 3268 root->AddChild(root_scrolling.Pass()); |
| 3255 EXPECT_EQ(viewport_size, root->bounds()); | 3269 EXPECT_EQ(viewport_size, root->bounds()); |
| 3256 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 3270 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 3257 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 3271 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, |
| 3272 Layer::INVALID_ID); |
| 3258 host_impl_->active_tree()->DidBecomeActive(); | 3273 host_impl_->active_tree()->DidBecomeActive(); |
| 3259 host_impl_->SetViewportSize(viewport_size); | 3274 host_impl_->SetViewportSize(viewport_size); |
| 3260 | 3275 |
| 3261 grand_child_layer->SetScrollOffset(gfx::ScrollOffset(0, 2)); | 3276 grand_child_layer->SetScrollOffset(gfx::ScrollOffset(0, 2)); |
| 3262 child_layer->SetScrollOffset(gfx::ScrollOffset(0, 3)); | 3277 child_layer->SetScrollOffset(gfx::ScrollOffset(0, 3)); |
| 3263 | 3278 |
| 3264 DrawFrame(); | 3279 DrawFrame(); |
| 3265 { | 3280 { |
| 3266 gfx::Vector2d scroll_delta(0, -10); | 3281 gfx::Vector2d scroll_delta(0, -10); |
| 3267 EXPECT_EQ(InputHandler::ScrollStarted, | 3282 EXPECT_EQ(InputHandler::ScrollStarted, |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3353 CreateScrollableLayer(2, content_size, root.get()); | 3368 CreateScrollableLayer(2, content_size, root.get()); |
| 3354 child->SetIsContainerForFixedPositionLayers(true); | 3369 child->SetIsContainerForFixedPositionLayers(true); |
| 3355 root->SetBounds(content_size); | 3370 root->SetBounds(content_size); |
| 3356 | 3371 |
| 3357 int root_scroll_id = root->id(); | 3372 int root_scroll_id = root->id(); |
| 3358 root->AddChild(child.Pass()); | 3373 root->AddChild(child.Pass()); |
| 3359 root_clip->AddChild(root.Pass()); | 3374 root_clip->AddChild(root.Pass()); |
| 3360 | 3375 |
| 3361 host_impl_->SetViewportSize(surface_size); | 3376 host_impl_->SetViewportSize(surface_size); |
| 3362 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 3377 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 3363 host_impl_->active_tree()->SetViewportLayersFromIds(3, 2, Layer::INVALID_ID); | 3378 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 2, |
| 3379 Layer::INVALID_ID); |
| 3364 host_impl_->active_tree()->DidBecomeActive(); | 3380 host_impl_->active_tree()->DidBecomeActive(); |
| 3365 DrawFrame(); | 3381 DrawFrame(); |
| 3366 { | 3382 { |
| 3367 gfx::Vector2d scroll_delta(0, 4); | 3383 gfx::Vector2d scroll_delta(0, 4); |
| 3368 EXPECT_EQ(InputHandler::ScrollStarted, | 3384 EXPECT_EQ(InputHandler::ScrollStarted, |
| 3369 host_impl_->ScrollBegin(gfx::Point(5, 5), | 3385 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 3370 InputHandler::Wheel)); | 3386 InputHandler::Wheel)); |
| 3371 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 3387 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 3372 host_impl_->ScrollEnd(); | 3388 host_impl_->ScrollEnd(); |
| 3373 | 3389 |
| 3374 scoped_ptr<ScrollAndScaleSet> scroll_info = | 3390 scoped_ptr<ScrollAndScaleSet> scroll_info = |
| 3375 host_impl_->ProcessScrollDeltas(); | 3391 host_impl_->ProcessScrollDeltas(); |
| 3376 | 3392 |
| 3377 // Only the root scroll should have scrolled. | 3393 // Only the root scroll should have scrolled. |
| 3378 ASSERT_EQ(scroll_info->scrolls.size(), 1u); | 3394 ASSERT_EQ(scroll_info->scrolls.size(), 1u); |
| 3379 ExpectContains(*scroll_info.get(), root_scroll_id, scroll_delta); | 3395 ExpectContains(*scroll_info.get(), root_scroll_id, scroll_delta); |
| 3380 } | 3396 } |
| 3381 } | 3397 } |
| 3382 | 3398 |
| 3383 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) { | 3399 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) { |
| 3384 gfx::Size surface_size(10, 10); | 3400 gfx::Size surface_size(10, 10); |
| 3385 scoped_ptr<LayerImpl> root_clip = | 3401 scoped_ptr<LayerImpl> root_clip = |
| 3386 LayerImpl::Create(host_impl_->active_tree(), 1); | 3402 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 3387 scoped_ptr<LayerImpl> root_scroll = | 3403 scoped_ptr<LayerImpl> root_scroll = |
| 3388 CreateScrollableLayer(2, surface_size, root_clip.get()); | 3404 CreateScrollableLayer(2, surface_size, root_clip.get()); |
| 3389 root_scroll->SetIsContainerForFixedPositionLayers(true); | 3405 root_scroll->SetIsContainerForFixedPositionLayers(true); |
| 3390 root_clip->AddChild(root_scroll.Pass()); | 3406 root_clip->AddChild(root_scroll.Pass()); |
| 3391 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 3407 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 3392 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 3408 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 2, |
| 3409 Layer::INVALID_ID); |
| 3393 host_impl_->active_tree()->DidBecomeActive(); | 3410 host_impl_->active_tree()->DidBecomeActive(); |
| 3394 host_impl_->SetViewportSize(surface_size); | 3411 host_impl_->SetViewportSize(surface_size); |
| 3395 | 3412 |
| 3396 // Draw one frame and then immediately rebuild the layer tree to mimic a tree | 3413 // Draw one frame and then immediately rebuild the layer tree to mimic a tree |
| 3397 // synchronization. | 3414 // synchronization. |
| 3398 DrawFrame(); | 3415 DrawFrame(); |
| 3399 host_impl_->active_tree()->DetachLayerTree(); | 3416 host_impl_->active_tree()->DetachLayerTree(); |
| 3400 scoped_ptr<LayerImpl> root_clip2 = | 3417 scoped_ptr<LayerImpl> root_clip2 = |
| 3401 LayerImpl::Create(host_impl_->active_tree(), 3); | 3418 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 3402 scoped_ptr<LayerImpl> root_scroll2 = | 3419 scoped_ptr<LayerImpl> root_scroll2 = |
| 3403 CreateScrollableLayer(4, surface_size, root_clip2.get()); | 3420 CreateScrollableLayer(4, surface_size, root_clip2.get()); |
| 3404 root_scroll2->SetIsContainerForFixedPositionLayers(true); | 3421 root_scroll2->SetIsContainerForFixedPositionLayers(true); |
| 3405 root_clip2->AddChild(root_scroll2.Pass()); | 3422 root_clip2->AddChild(root_scroll2.Pass()); |
| 3406 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass()); | 3423 host_impl_->active_tree()->SetRootLayer(root_clip2.Pass()); |
| 3407 host_impl_->active_tree()->SetViewportLayersFromIds(3, 4, Layer::INVALID_ID); | 3424 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 4, |
| 3425 Layer::INVALID_ID); |
| 3408 host_impl_->active_tree()->DidBecomeActive(); | 3426 host_impl_->active_tree()->DidBecomeActive(); |
| 3409 | 3427 |
| 3410 // Scrolling should still work even though we did not draw yet. | 3428 // Scrolling should still work even though we did not draw yet. |
| 3411 EXPECT_EQ(InputHandler::ScrollStarted, | 3429 EXPECT_EQ(InputHandler::ScrollStarted, |
| 3412 host_impl_->ScrollBegin(gfx::Point(5, 5), | 3430 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 3413 InputHandler::Wheel)); | 3431 InputHandler::Wheel)); |
| 3414 } | 3432 } |
| 3415 | 3433 |
| 3416 TEST_F(LayerTreeHostImplTest, ScrollAxisAlignedRotatedLayer) { | 3434 TEST_F(LayerTreeHostImplTest, ScrollAxisAlignedRotatedLayer) { |
| 3417 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 3435 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| (...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3985 root->SetIsContainerForFixedPositionLayers(true); | 4003 root->SetIsContainerForFixedPositionLayers(true); |
| 3986 scoped_ptr<LayerImpl> child = | 4004 scoped_ptr<LayerImpl> child = |
| 3987 CreateScrollableLayer(2, content_size, root_clip.get()); | 4005 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 3988 | 4006 |
| 3989 child->SetScrollClipLayer(Layer::INVALID_ID); | 4007 child->SetScrollClipLayer(Layer::INVALID_ID); |
| 3990 root->AddChild(child.Pass()); | 4008 root->AddChild(child.Pass()); |
| 3991 root_clip->AddChild(root.Pass()); | 4009 root_clip->AddChild(root.Pass()); |
| 3992 | 4010 |
| 3993 host_impl_->SetViewportSize(surface_size); | 4011 host_impl_->SetViewportSize(surface_size); |
| 3994 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 4012 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 3995 host_impl_->active_tree()->SetViewportLayersFromIds(3, 1, Layer::INVALID_ID); | 4013 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, |
| 4014 Layer::INVALID_ID); |
| 3996 host_impl_->active_tree()->DidBecomeActive(); | 4015 host_impl_->active_tree()->DidBecomeActive(); |
| 3997 DrawFrame(); | 4016 DrawFrame(); |
| 3998 { | 4017 { |
| 3999 gfx::Vector2d scroll_delta(0, 8); | 4018 gfx::Vector2d scroll_delta(0, 8); |
| 4000 EXPECT_EQ(InputHandler::ScrollStarted, | 4019 EXPECT_EQ(InputHandler::ScrollStarted, |
| 4001 host_impl_->ScrollBegin(gfx::Point(5, 5), | 4020 host_impl_->ScrollBegin(gfx::Point(5, 5), |
| 4002 InputHandler::Wheel)); | 4021 InputHandler::Wheel)); |
| 4003 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 4022 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 4004 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); | 4023 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); |
| 4005 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 4024 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4044 host_impl_->active_tree()->SetPageScaleFactorAndLimits( | 4063 host_impl_->active_tree()->SetPageScaleFactorAndLimits( |
| 4045 0.326531f, 0.326531f, 5.f); | 4064 0.326531f, 0.326531f, 5.f); |
| 4046 host_impl_->active_tree()->SetPageScaleDelta(1.f); | 4065 host_impl_->active_tree()->SetPageScaleDelta(1.f); |
| 4047 child->SetScrollClipLayer(Layer::INVALID_ID); | 4066 child->SetScrollClipLayer(Layer::INVALID_ID); |
| 4048 root->AddChild(child.Pass()); | 4067 root->AddChild(child.Pass()); |
| 4049 root_clip->AddChild(root.Pass()); | 4068 root_clip->AddChild(root.Pass()); |
| 4050 | 4069 |
| 4051 host_impl_->SetViewportSize(surface_size); | 4070 host_impl_->SetViewportSize(surface_size); |
| 4052 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4071 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4053 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 4072 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 4054 host_impl_->active_tree()->SetViewportLayersFromIds(3, 1, Layer::INVALID_ID); | 4073 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, |
| 4074 Layer::INVALID_ID); |
| 4055 host_impl_->active_tree()->DidBecomeActive(); | 4075 host_impl_->active_tree()->DidBecomeActive(); |
| 4056 DrawFrame(); | 4076 DrawFrame(); |
| 4057 { | 4077 { |
| 4058 // Horizontal & Vertical GlowEffect should not be applied when | 4078 // Horizontal & Vertical GlowEffect should not be applied when |
| 4059 // content size is less then view port size. For Example Horizontal & | 4079 // content size is less then view port size. For Example Horizontal & |
| 4060 // vertical GlowEffect should not be applied in about:blank page. | 4080 // vertical GlowEffect should not be applied in about:blank page. |
| 4061 EXPECT_EQ(InputHandler::ScrollStarted, | 4081 EXPECT_EQ(InputHandler::ScrollStarted, |
| 4062 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Wheel)); | 4082 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Wheel)); |
| 4063 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, -1)); | 4083 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, -1)); |
| 4064 EXPECT_EQ(gfx::Vector2dF().ToString(), | 4084 EXPECT_EQ(gfx::Vector2dF().ToString(), |
| (...skipping 13 matching lines...) Expand all Loading... |
| 4078 root->SetIsContainerForFixedPositionLayers(true); | 4098 root->SetIsContainerForFixedPositionLayers(true); |
| 4079 scoped_ptr<LayerImpl> child = | 4099 scoped_ptr<LayerImpl> child = |
| 4080 CreateScrollableLayer(2, content_size, root_clip.get()); | 4100 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 4081 | 4101 |
| 4082 child->SetScrollClipLayer(Layer::INVALID_ID); | 4102 child->SetScrollClipLayer(Layer::INVALID_ID); |
| 4083 root->AddChild(child.Pass()); | 4103 root->AddChild(child.Pass()); |
| 4084 root_clip->AddChild(root.Pass()); | 4104 root_clip->AddChild(root.Pass()); |
| 4085 | 4105 |
| 4086 host_impl_->SetViewportSize(surface_size); | 4106 host_impl_->SetViewportSize(surface_size); |
| 4087 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 4107 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 4088 host_impl_->active_tree()->SetViewportLayersFromIds(3, 1, Layer::INVALID_ID); | 4108 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, |
| 4109 Layer::INVALID_ID); |
| 4089 host_impl_->active_tree()->DidBecomeActive(); | 4110 host_impl_->active_tree()->DidBecomeActive(); |
| 4090 DrawFrame(); | 4111 DrawFrame(); |
| 4091 { | 4112 { |
| 4092 // Edge glow effect should be applicable only upon reaching Edges | 4113 // Edge glow effect should be applicable only upon reaching Edges |
| 4093 // of the content. unnecessary glow effect calls shouldn't be | 4114 // of the content. unnecessary glow effect calls shouldn't be |
| 4094 // called while scrolling up without reaching the edge of the content. | 4115 // called while scrolling up without reaching the edge of the content. |
| 4095 EXPECT_EQ(InputHandler::ScrollStarted, | 4116 EXPECT_EQ(InputHandler::ScrollStarted, |
| 4096 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Wheel)); | 4117 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Wheel)); |
| 4097 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 100)); | 4118 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0, 100)); |
| 4098 EXPECT_EQ(gfx::Vector2dF().ToString(), | 4119 EXPECT_EQ(gfx::Vector2dF().ToString(), |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4788 context_provider->BindToCurrentThread(); | 4809 context_provider->BindToCurrentThread(); |
| 4789 context_provider->TestContext3d()->set_have_post_sub_buffer(true); | 4810 context_provider->TestContext3d()->set_have_post_sub_buffer(true); |
| 4790 | 4811 |
| 4791 scoped_ptr<FakeOutputSurface> output_surface( | 4812 scoped_ptr<FakeOutputSurface> output_surface( |
| 4792 FakeOutputSurface::Create3d(context_provider)); | 4813 FakeOutputSurface::Create3d(context_provider)); |
| 4793 FakeOutputSurface* fake_output_surface = output_surface.get(); | 4814 FakeOutputSurface* fake_output_surface = output_surface.get(); |
| 4794 | 4815 |
| 4795 // This test creates its own LayerTreeHostImpl, so | 4816 // This test creates its own LayerTreeHostImpl, so |
| 4796 // that we can force partial swap enabled. | 4817 // that we can force partial swap enabled. |
| 4797 LayerTreeSettings settings; | 4818 LayerTreeSettings settings; |
| 4798 settings.partial_swap_enabled = true; | 4819 settings.renderer_settings.partial_swap_enabled = true; |
| 4799 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 4820 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 4800 new TestSharedBitmapManager()); | 4821 new TestSharedBitmapManager()); |
| 4801 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl = | 4822 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl = |
| 4802 LayerTreeHostImpl::Create(settings, | 4823 LayerTreeHostImpl::Create(settings, |
| 4803 this, | 4824 this, |
| 4804 &proxy_, | 4825 &proxy_, |
| 4805 &stats_instrumentation_, | 4826 &stats_instrumentation_, |
| 4806 shared_bitmap_manager.get(), | 4827 shared_bitmap_manager.get(), |
| 4807 NULL, | 4828 NULL, |
| 4808 0); | 4829 0); |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5004 } | 5025 } |
| 5005 }; | 5026 }; |
| 5006 | 5027 |
| 5007 TEST_F(LayerTreeHostImplTest, NoPartialSwap) { | 5028 TEST_F(LayerTreeHostImplTest, NoPartialSwap) { |
| 5008 scoped_ptr<MockContext> mock_context_owned(new MockContext); | 5029 scoped_ptr<MockContext> mock_context_owned(new MockContext); |
| 5009 MockContext* mock_context = mock_context_owned.get(); | 5030 MockContext* mock_context = mock_context_owned.get(); |
| 5010 MockContextHarness harness(mock_context); | 5031 MockContextHarness harness(mock_context); |
| 5011 | 5032 |
| 5012 // Run test case | 5033 // Run test case |
| 5013 LayerTreeSettings settings = DefaultSettings(); | 5034 LayerTreeSettings settings = DefaultSettings(); |
| 5014 settings.partial_swap_enabled = false; | 5035 settings.renderer_settings.partial_swap_enabled = false; |
| 5015 CreateHostImpl(settings, | 5036 CreateHostImpl(settings, |
| 5016 FakeOutputSurface::Create3d(mock_context_owned.Pass())); | 5037 FakeOutputSurface::Create3d(mock_context_owned.Pass())); |
| 5017 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 5038 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
| 5018 | 5039 |
| 5019 // Without partial swap, and no clipping, no scissor is set. | 5040 // Without partial swap, and no clipping, no scissor is set. |
| 5020 harness.MustDrawSolidQuad(); | 5041 harness.MustDrawSolidQuad(); |
| 5021 harness.MustSetNoScissor(); | 5042 harness.MustSetNoScissor(); |
| 5022 { | 5043 { |
| 5023 LayerTreeHostImpl::FrameData frame; | 5044 LayerTreeHostImpl::FrameData frame; |
| 5024 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5045 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 5040 } | 5061 } |
| 5041 Mock::VerifyAndClearExpectations(&mock_context); | 5062 Mock::VerifyAndClearExpectations(&mock_context); |
| 5042 } | 5063 } |
| 5043 | 5064 |
| 5044 TEST_F(LayerTreeHostImplTest, PartialSwap) { | 5065 TEST_F(LayerTreeHostImplTest, PartialSwap) { |
| 5045 scoped_ptr<MockContext> context_owned(new MockContext); | 5066 scoped_ptr<MockContext> context_owned(new MockContext); |
| 5046 MockContext* mock_context = context_owned.get(); | 5067 MockContext* mock_context = context_owned.get(); |
| 5047 MockContextHarness harness(mock_context); | 5068 MockContextHarness harness(mock_context); |
| 5048 | 5069 |
| 5049 LayerTreeSettings settings = DefaultSettings(); | 5070 LayerTreeSettings settings = DefaultSettings(); |
| 5050 settings.partial_swap_enabled = true; | 5071 settings.renderer_settings.partial_swap_enabled = true; |
| 5051 CreateHostImpl(settings, FakeOutputSurface::Create3d(context_owned.Pass())); | 5072 CreateHostImpl(settings, FakeOutputSurface::Create3d(context_owned.Pass())); |
| 5052 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 5073 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
| 5053 | 5074 |
| 5054 // The first frame is not a partially-swapped one. | 5075 // The first frame is not a partially-swapped one. |
| 5055 harness.MustSetScissor(0, 0, 10, 10); | 5076 harness.MustSetScissor(0, 0, 10, 10); |
| 5056 harness.MustDrawSolidQuad(); | 5077 harness.MustDrawSolidQuad(); |
| 5057 { | 5078 { |
| 5058 LayerTreeHostImpl::FrameData frame; | 5079 LayerTreeHostImpl::FrameData frame; |
| 5059 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5080 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5060 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5081 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 5084 Proxy* proxy, | 5105 Proxy* proxy, |
| 5085 SharedBitmapManager* manager, | 5106 SharedBitmapManager* manager, |
| 5086 RenderingStatsInstrumentation* stats_instrumentation) { | 5107 RenderingStatsInstrumentation* stats_instrumentation) { |
| 5087 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); | 5108 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); |
| 5088 scoped_ptr<OutputSurface> output_surface( | 5109 scoped_ptr<OutputSurface> output_surface( |
| 5089 FakeOutputSurface::Create3d(provider)); | 5110 FakeOutputSurface::Create3d(provider)); |
| 5090 provider->BindToCurrentThread(); | 5111 provider->BindToCurrentThread(); |
| 5091 provider->TestContext3d()->set_have_post_sub_buffer(true); | 5112 provider->TestContext3d()->set_have_post_sub_buffer(true); |
| 5092 | 5113 |
| 5093 LayerTreeSettings settings; | 5114 LayerTreeSettings settings; |
| 5094 settings.partial_swap_enabled = partial_swap; | 5115 settings.renderer_settings.partial_swap_enabled = partial_swap; |
| 5095 scoped_ptr<LayerTreeHostImpl> my_host_impl = LayerTreeHostImpl::Create( | 5116 scoped_ptr<LayerTreeHostImpl> my_host_impl = LayerTreeHostImpl::Create( |
| 5096 settings, client, proxy, stats_instrumentation, manager, NULL, 0); | 5117 settings, client, proxy, stats_instrumentation, manager, NULL, 0); |
| 5097 my_host_impl->InitializeRenderer(output_surface.Pass()); | 5118 my_host_impl->InitializeRenderer(output_surface.Pass()); |
| 5098 my_host_impl->SetViewportSize(gfx::Size(100, 100)); | 5119 my_host_impl->SetViewportSize(gfx::Size(100, 100)); |
| 5099 | 5120 |
| 5100 /* | 5121 /* |
| 5101 Layers are created as follows: | 5122 Layers are created as follows: |
| 5102 | 5123 |
| 5103 +--------------------+ | 5124 +--------------------+ |
| 5104 | 1 | | 5125 | 1 | |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5257 GLintptr offset)); | 5278 GLintptr offset)); |
| 5258 }; | 5279 }; |
| 5259 | 5280 |
| 5260 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { | 5281 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { |
| 5261 scoped_ptr<MockDrawQuadsToFillScreenContext> mock_context_owned( | 5282 scoped_ptr<MockDrawQuadsToFillScreenContext> mock_context_owned( |
| 5262 new MockDrawQuadsToFillScreenContext); | 5283 new MockDrawQuadsToFillScreenContext); |
| 5263 MockDrawQuadsToFillScreenContext* mock_context = mock_context_owned.get(); | 5284 MockDrawQuadsToFillScreenContext* mock_context = mock_context_owned.get(); |
| 5264 | 5285 |
| 5265 // Run test case | 5286 // Run test case |
| 5266 LayerTreeSettings settings = DefaultSettings(); | 5287 LayerTreeSettings settings = DefaultSettings(); |
| 5267 settings.partial_swap_enabled = false; | 5288 settings.renderer_settings.partial_swap_enabled = false; |
| 5268 CreateHostImpl(settings, | 5289 CreateHostImpl(settings, |
| 5269 FakeOutputSurface::Create3d(mock_context_owned.Pass())); | 5290 FakeOutputSurface::Create3d(mock_context_owned.Pass())); |
| 5270 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 5291 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 5271 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); | 5292 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); |
| 5272 | 5293 |
| 5273 // Verify one quad is drawn when transparent background set is not set. | 5294 // Verify one quad is drawn when transparent background set is not set. |
| 5274 host_impl_->active_tree()->set_has_transparent_background(false); | 5295 host_impl_->active_tree()->set_has_transparent_background(false); |
| 5275 EXPECT_CALL(*mock_context, useProgram(_)) | 5296 EXPECT_CALL(*mock_context, useProgram(_)) |
| 5276 .Times(1); | 5297 .Times(1); |
| 5277 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) | 5298 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) |
| (...skipping 1345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6623 root->SetIsContainerForFixedPositionLayers(true); | 6644 root->SetIsContainerForFixedPositionLayers(true); |
| 6624 scoped_ptr<LayerImpl> child = | 6645 scoped_ptr<LayerImpl> child = |
| 6625 CreateScrollableLayer(2, content_size, root_clip.get()); | 6646 CreateScrollableLayer(2, content_size, root_clip.get()); |
| 6626 | 6647 |
| 6627 root->AddChild(child.Pass()); | 6648 root->AddChild(child.Pass()); |
| 6628 int root_id = root->id(); | 6649 int root_id = root->id(); |
| 6629 root_clip->AddChild(root.Pass()); | 6650 root_clip->AddChild(root.Pass()); |
| 6630 | 6651 |
| 6631 host_impl_->SetViewportSize(surface_size); | 6652 host_impl_->SetViewportSize(surface_size); |
| 6632 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 6653 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
| 6633 host_impl_->active_tree()->SetViewportLayersFromIds(3, 1, Layer::INVALID_ID); | 6654 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 3, 1, |
| 6655 Layer::INVALID_ID); |
| 6634 host_impl_->active_tree()->DidBecomeActive(); | 6656 host_impl_->active_tree()->DidBecomeActive(); |
| 6635 DrawFrame(); | 6657 DrawFrame(); |
| 6636 { | 6658 { |
| 6637 EXPECT_EQ(InputHandler::ScrollStarted, | 6659 EXPECT_EQ(InputHandler::ScrollStarted, |
| 6638 host_impl_->ScrollBegin(gfx::Point(), | 6660 host_impl_->ScrollBegin(gfx::Point(), |
| 6639 InputHandler::Gesture)); | 6661 InputHandler::Gesture)); |
| 6640 | 6662 |
| 6641 EXPECT_EQ(InputHandler::ScrollStarted, | 6663 EXPECT_EQ(InputHandler::ScrollStarted, |
| 6642 host_impl_->FlingScrollBegin()); | 6664 host_impl_->FlingScrollBegin()); |
| 6643 | 6665 |
| (...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7465 contents->SetContentBounds(content_size); | 7487 contents->SetContentBounds(content_size); |
| 7466 contents->SetPosition(gfx::PointF()); | 7488 contents->SetPosition(gfx::PointF()); |
| 7467 | 7489 |
| 7468 outer_scroll->AddChild(contents.Pass()); | 7490 outer_scroll->AddChild(contents.Pass()); |
| 7469 outer_clip->AddChild(outer_scroll.Pass()); | 7491 outer_clip->AddChild(outer_scroll.Pass()); |
| 7470 inner_scroll->AddChild(outer_clip.Pass()); | 7492 inner_scroll->AddChild(outer_clip.Pass()); |
| 7471 page_scale->AddChild(inner_scroll.Pass()); | 7493 page_scale->AddChild(inner_scroll.Pass()); |
| 7472 inner_clip->AddChild(page_scale.Pass()); | 7494 inner_clip->AddChild(page_scale.Pass()); |
| 7473 | 7495 |
| 7474 layer_tree_impl->SetRootLayer(inner_clip.Pass()); | 7496 layer_tree_impl->SetRootLayer(inner_clip.Pass()); |
| 7475 layer_tree_impl->SetViewportLayersFromIds(kPageScaleLayerId, | 7497 layer_tree_impl->SetViewportLayersFromIds( |
| 7476 kInnerViewportScrollLayerId, kOuterViewportScrollLayerId); | 7498 Layer::INVALID_ID, kPageScaleLayerId, kInnerViewportScrollLayerId, |
| 7499 kOuterViewportScrollLayerId); |
| 7477 | 7500 |
| 7478 host_impl_->active_tree()->DidBecomeActive(); | 7501 host_impl_->active_tree()->DidBecomeActive(); |
| 7479 } | 7502 } |
| 7480 }; | 7503 }; |
| 7481 | 7504 |
| 7482 TEST_F(LayerTreeHostImplVirtualViewportTest, FlingScrollBubblesToInner) { | 7505 TEST_F(LayerTreeHostImplVirtualViewportTest, FlingScrollBubblesToInner) { |
| 7483 gfx::Size content_size = gfx::Size(100, 160); | 7506 gfx::Size content_size = gfx::Size(100, 160); |
| 7484 gfx::Size outer_viewport = gfx::Size(50, 80); | 7507 gfx::Size outer_viewport = gfx::Size(50, 80); |
| 7485 gfx::Size inner_viewport = gfx::Size(25, 40); | 7508 gfx::Size inner_viewport = gfx::Size(25, 40); |
| 7486 | 7509 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7520 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 7543 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 7521 inner_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y()); | 7544 inner_expected += gfx::Vector2dF(scroll_delta.x(), scroll_delta.y()); |
| 7522 | 7545 |
| 7523 host_impl_->ScrollEnd(); | 7546 host_impl_->ScrollEnd(); |
| 7524 | 7547 |
| 7525 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->TotalScrollOffset()); | 7548 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->TotalScrollOffset()); |
| 7526 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->TotalScrollOffset()); | 7549 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->TotalScrollOffset()); |
| 7527 } | 7550 } |
| 7528 } | 7551 } |
| 7529 | 7552 |
| 7553 TEST_F(LayerTreeHostImplVirtualViewportTest, |
| 7554 DiagonalScrollBubblesPerfectlyToInner) { |
| 7555 gfx::Size content_size = gfx::Size(100, 160); |
| 7556 gfx::Size outer_viewport = gfx::Size(50, 80); |
| 7557 gfx::Size inner_viewport = gfx::Size(25, 40); |
| 7558 |
| 7559 SetupVirtualViewportLayers(content_size, outer_viewport, inner_viewport); |
| 7560 |
| 7561 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); |
| 7562 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); |
| 7563 DrawFrame(); |
| 7564 { |
| 7565 gfx::Vector2dF inner_expected; |
| 7566 gfx::Vector2dF outer_expected; |
| 7567 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->TotalScrollOffset()); |
| 7568 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->TotalScrollOffset()); |
| 7569 |
| 7570 // Make sure the scroll goes to the outer viewport first. |
| 7571 EXPECT_EQ(InputHandler::ScrollStarted, |
| 7572 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| 7573 EXPECT_EQ(InputHandler::ScrollStarted, host_impl_->FlingScrollBegin()); |
| 7574 |
| 7575 // Scroll near the edge of the outer viewport. |
| 7576 gfx::Vector2d scroll_delta(inner_viewport.width(), inner_viewport.height()); |
| 7577 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 7578 outer_expected += scroll_delta; |
| 7579 |
| 7580 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->TotalScrollOffset()); |
| 7581 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->TotalScrollOffset()); |
| 7582 |
| 7583 // Now diagonal scroll across the outer viewport boundary in a single event. |
| 7584 // The entirety of the scroll should be consumed, as bubbling between inner |
| 7585 // and outer viewport layers is perfect. |
| 7586 host_impl_->ScrollBy(gfx::Point(), gfx::ScaleVector2d(scroll_delta, 2)); |
| 7587 outer_expected += scroll_delta; |
| 7588 inner_expected += scroll_delta; |
| 7589 host_impl_->ScrollEnd(); |
| 7590 |
| 7591 EXPECT_VECTOR_EQ(inner_expected, inner_scroll->TotalScrollOffset()); |
| 7592 EXPECT_VECTOR_EQ(outer_expected, outer_scroll->TotalScrollOffset()); |
| 7593 } |
| 7594 } |
| 7595 |
| 7530 class LayerTreeHostImplWithImplicitLimitsTest : public LayerTreeHostImplTest { | 7596 class LayerTreeHostImplWithImplicitLimitsTest : public LayerTreeHostImplTest { |
| 7531 public: | 7597 public: |
| 7532 void SetUp() override { | 7598 void SetUp() override { |
| 7533 LayerTreeSettings settings = DefaultSettings(); | 7599 LayerTreeSettings settings = DefaultSettings(); |
| 7534 settings.max_memory_for_prepaint_percentage = 50; | 7600 settings.max_memory_for_prepaint_percentage = 50; |
| 7535 CreateHostImpl(settings, CreateOutputSurface()); | 7601 CreateHostImpl(settings, CreateOutputSurface()); |
| 7536 } | 7602 } |
| 7537 }; | 7603 }; |
| 7538 | 7604 |
| 7539 TEST_F(LayerTreeHostImplWithImplicitLimitsTest, ImplicitMemoryLimits) { | 7605 TEST_F(LayerTreeHostImplWithImplicitLimitsTest, ImplicitMemoryLimits) { |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7749 // surface. | 7815 // surface. |
| 7750 EXPECT_EQ(0, num_lost_surfaces_); | 7816 EXPECT_EQ(0, num_lost_surfaces_); |
| 7751 host_impl_->DidLoseOutputSurface(); | 7817 host_impl_->DidLoseOutputSurface(); |
| 7752 EXPECT_EQ(1, num_lost_surfaces_); | 7818 EXPECT_EQ(1, num_lost_surfaces_); |
| 7753 host_impl_->DidLoseOutputSurface(); | 7819 host_impl_->DidLoseOutputSurface(); |
| 7754 EXPECT_LE(1, num_lost_surfaces_); | 7820 EXPECT_LE(1, num_lost_surfaces_); |
| 7755 } | 7821 } |
| 7756 | 7822 |
| 7757 } // namespace | 7823 } // namespace |
| 7758 } // namespace cc | 7824 } // namespace cc |
| OLD | NEW |