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

Unified Diff: cc/layers/scrollbar_layer_unittest.cc

Issue 537943003: Releasing Track & Thumb UIResources based on their Geometry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed review comments Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/painted_scrollbar_layer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/scrollbar_layer_unittest.cc
diff --git a/cc/layers/scrollbar_layer_unittest.cc b/cc/layers/scrollbar_layer_unittest.cc
index 4c5e5b480366f2f239dcc804d3f8bc55bf951e8b..7cb0e25118c4a04f26d9c40af92768be445789b8 100644
--- a/cc/layers/scrollbar_layer_unittest.cc
+++ b/cc/layers/scrollbar_layer_unittest.cc
@@ -626,9 +626,9 @@ TEST_F(ScrollbarLayerTestMaxTextureSize, DelegatingRenderer) {
RunTest(true, true, true);
}
-class MockLayerTreeHost : public LayerTreeHost {
+class FakeLayerTreeHost : public LayerTreeHost {
public:
- MockLayerTreeHost(FakeLayerTreeHostClient* client,
+ FakeLayerTreeHost(FakeLayerTreeHostClient* client,
const LayerTreeSettings& settings)
: LayerTreeHost(client, NULL, settings),
next_id_(1),
@@ -682,10 +682,9 @@ class MockLayerTreeHost : public LayerTreeHost {
int total_ui_resource_deleted_;
};
-
-class ScrollbarLayerTestResourceCreation : public testing::Test {
+class ScrollbarLayerTestResourceCreationAndRelease : public testing::Test {
public:
- ScrollbarLayerTestResourceCreation()
+ ScrollbarLayerTestResourceCreationAndRelease()
: fake_client_(FakeLayerTreeHostClient::DIRECT_3D) {}
void TestResourceUpload(int num_updates,
@@ -694,7 +693,7 @@ class ScrollbarLayerTestResourceCreation : public testing::Test {
int expected_deleted,
bool use_solid_color_scrollbar) {
layer_tree_host_.reset(
- new MockLayerTreeHost(&fake_client_, layer_tree_settings_));
+ new FakeLayerTreeHost(&fake_client_, layer_tree_settings_));
scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, false));
scoped_refptr<Layer> layer_tree_root = Layer::Create();
@@ -754,10 +753,10 @@ class ScrollbarLayerTestResourceCreation : public testing::Test {
protected:
FakeLayerTreeHostClient fake_client_;
LayerTreeSettings layer_tree_settings_;
- scoped_ptr<MockLayerTreeHost> layer_tree_host_;
+ scoped_ptr<FakeLayerTreeHost> layer_tree_host_;
};
-TEST_F(ScrollbarLayerTestResourceCreation, ResourceUpload) {
+TEST_F(ScrollbarLayerTestResourceCreationAndRelease, ResourceUpload) {
bool use_solid_color_scrollbars = false;
TestResourceUpload(0, 0, 0, 0, use_solid_color_scrollbars);
int num_updates[3] = {1, 5, 10};
@@ -770,12 +769,155 @@ TEST_F(ScrollbarLayerTestResourceCreation, ResourceUpload) {
}
}
-TEST_F(ScrollbarLayerTestResourceCreation, SolidColorNoResourceUpload) {
+TEST_F(ScrollbarLayerTestResourceCreationAndRelease,
+ SolidColorNoResourceUpload) {
bool use_solid_color_scrollbars = true;
TestResourceUpload(0, 0, 0, 0, use_solid_color_scrollbars);
TestResourceUpload(1, 0, 0, 0, use_solid_color_scrollbars);
}
+TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) {
+ FakeLayerTreeHostClient fake_client_(FakeLayerTreeHostClient::DIRECT_3D);
+ LayerTreeSettings layer_tree_settings_;
+ scoped_ptr<FakeLayerTreeHost> layer_tree_host_;
+
+ layer_tree_host_.reset(
+ new FakeLayerTreeHost(&fake_client_, layer_tree_settings_));
+
+ gfx::Point scrollbar_location(0, 185);
+ scoped_refptr<Layer> layer_tree_root = Layer::Create();
+ scoped_refptr<Layer> content_layer = Layer::Create();
+ scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer =
+ FakePaintedScrollbarLayer::Create(false, true, layer_tree_root->id());
+
+ layer_tree_root->AddChild(content_layer);
+ layer_tree_root->AddChild(scrollbar_layer);
+
+ layer_tree_host_->SetRootLayer(layer_tree_root);
+
+ scrollbar_layer->SetIsDrawable(true);
+ scrollbar_layer->SetBounds(gfx::Size(100, 15));
+ scrollbar_layer->SetPosition(scrollbar_location);
+ layer_tree_root->SetBounds(gfx::Size(100, 200));
+ content_layer->SetBounds(gfx::Size(100, 200));
+
+ scrollbar_layer->draw_properties().content_bounds = gfx::Size(100, 200);
+ scrollbar_layer->draw_properties().visible_content_rect =
+ gfx::Rect(0, 0, 100, 200);
+
+ scrollbar_layer->CreateRenderSurface();
+ scrollbar_layer->draw_properties().render_target = scrollbar_layer.get();
+
+ testing::Mock::VerifyAndClearExpectations(layer_tree_host_.get());
+ EXPECT_EQ(scrollbar_layer->layer_tree_host(), layer_tree_host_.get());
+
+ ResourceUpdateQueue queue;
+ gfx::Rect screen_space_clip_rect;
+ size_t resource_count;
+ int expected_created, expected_deleted;
+ OcclusionTracker<Layer> occlusion_tracker(screen_space_clip_rect);
+ scrollbar_layer->SavePaintProperties();
+
+ resource_count = 2;
+ expected_created = 2;
+ expected_deleted = 0;
+ EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_NE(0, scrollbar_layer->track_resource_id());
+ EXPECT_NE(0, scrollbar_layer->thumb_resource_id());
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
danakj 2014/09/18 18:04:46 oh these checks are great, thanks.
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+
+ resource_count = 0;
+ expected_created = 2;
+ expected_deleted = 2;
+ scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(0, 0, 0, 0));
+ EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_EQ(0, scrollbar_layer->track_resource_id());
+ EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+
+ resource_count = 0;
+ expected_created = 2;
+ expected_deleted = 2;
+ scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(0, 0, 0, 0));
+ EXPECT_FALSE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_EQ(0, scrollbar_layer->track_resource_id());
+ EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+
+ resource_count = 2;
+ expected_created = 4;
+ expected_deleted = 2;
+ scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10));
+ EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_NE(0, scrollbar_layer->track_resource_id());
+ EXPECT_NE(0, scrollbar_layer->thumb_resource_id());
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+
+ resource_count = 1;
+ expected_created = 5;
+ expected_deleted = 4;
+ scrollbar_layer->fake_scrollbar()->set_has_thumb(false);
+ EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_NE(0, scrollbar_layer->track_resource_id());
+ EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+
+ resource_count = 0;
+ expected_created = 5;
+ expected_deleted = 5;
+ scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(0, 0, 0, 0));
+ EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_EQ(0, scrollbar_layer->track_resource_id());
+ EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+
+ resource_count = 2;
+ expected_created = 7;
+ expected_deleted = 5;
+ scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10));
+ scrollbar_layer->fake_scrollbar()->set_has_thumb(true);
+ EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_NE(0, scrollbar_layer->track_resource_id());
+ EXPECT_NE(0, scrollbar_layer->thumb_resource_id());
+
+ resource_count = 1;
+ expected_created = 8;
+ expected_deleted = 7;
+ scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10));
+ scrollbar_layer->fake_scrollbar()->set_has_thumb(false);
+ scrollbar_layer->SetBounds(gfx::Size(90, 15));
+ EXPECT_TRUE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+ EXPECT_EQ(
+ gfx::Size(90, 15),
+ layer_tree_host_->ui_resource_size(scrollbar_layer->track_resource_id()));
+
+ scrollbar_layer->ResetNeedsDisplayForTesting();
+ EXPECT_FALSE(scrollbar_layer->Update(&queue, &occlusion_tracker));
+ EXPECT_NE(0, scrollbar_layer->track_resource_id());
+ EXPECT_EQ(0, scrollbar_layer->thumb_resource_id());
+ EXPECT_EQ(resource_count, layer_tree_host_->UIResourceCount());
+ EXPECT_EQ(expected_created, layer_tree_host_->TotalUIResourceCreated());
+ EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted());
+
+ testing::Mock::VerifyAndClearExpectations(layer_tree_host_.get());
+ scrollbar_layer->ClearRenderSurface();
+}
+
class ScaledScrollbarLayerTestResourceCreation : public testing::Test {
public:
ScaledScrollbarLayerTestResourceCreation()
@@ -783,7 +925,7 @@ class ScaledScrollbarLayerTestResourceCreation : public testing::Test {
void TestResourceUpload(const float test_scale) {
layer_tree_host_.reset(
- new MockLayerTreeHost(&fake_client_, layer_tree_settings_));
+ new FakeLayerTreeHost(&fake_client_, layer_tree_settings_));
gfx::Point scrollbar_location(0, 185);
scoped_refptr<Layer> layer_tree_root = Layer::Create();
@@ -847,7 +989,7 @@ class ScaledScrollbarLayerTestResourceCreation : public testing::Test {
protected:
FakeLayerTreeHostClient fake_client_;
LayerTreeSettings layer_tree_settings_;
- scoped_ptr<MockLayerTreeHost> layer_tree_host_;
+ scoped_ptr<FakeLayerTreeHost> layer_tree_host_;
};
TEST_F(ScaledScrollbarLayerTestResourceCreation, ScaledResourceUpload) {
@@ -865,7 +1007,7 @@ class ScaledScrollbarLayerTestScaledRasterization : public testing::Test {
void TestScale(const gfx::Rect scrollbar_rect, const float test_scale) {
layer_tree_host_.reset(
- new MockLayerTreeHost(&fake_client_, layer_tree_settings_));
+ new FakeLayerTreeHost(&fake_client_, layer_tree_settings_));
bool paint_during_update = true;
bool has_thumb = false;
@@ -943,7 +1085,7 @@ class ScaledScrollbarLayerTestScaledRasterization : public testing::Test {
FakeLayerTreeHostClient fake_client_;
LayerTreeSettings layer_tree_settings_;
- scoped_ptr<MockLayerTreeHost> layer_tree_host_;
+ scoped_ptr<FakeLayerTreeHost> layer_tree_host_;
};
TEST_F(ScaledScrollbarLayerTestScaledRasterization, TestLostPrecisionInClip) {
« no previous file with comments | « cc/layers/painted_scrollbar_layer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698