Index: cc/layers/scrollbar_layer_unittest.cc |
diff --git a/cc/layers/scrollbar_layer_unittest.cc b/cc/layers/scrollbar_layer_unittest.cc |
index aa972940715722fad5aac62cbaf410a12cf4b7cd..1596920c298bac8a80e7bf791dc8caa2f44109d8 100644 |
--- a/cc/layers/scrollbar_layer_unittest.cc |
+++ b/cc/layers/scrollbar_layer_unittest.cc |
@@ -29,16 +29,17 @@ namespace cc { |
namespace { |
scoped_ptr<LayerImpl> LayerImplForScrollAreaAndScrollbar( |
+ LayerTreeHost* host, |
FakeLayerTreeHostImpl* host_impl, |
scoped_ptr<Scrollbar> scrollbar, |
- bool reverse_order) { |
+ bool reverse_order, bool is_solid_color) { |
scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
scoped_refptr<Layer> child1 = Layer::Create(); |
scoped_refptr<Layer> child2 = |
- ScrollbarLayer::Create(scrollbar.Pass(), |
- child1->id()); |
+ ScrollbarLayer::Create(scrollbar.Pass(), child1->id(), is_solid_color); |
layer_tree_root->AddChild(child1); |
layer_tree_root->InsertChild(child2, reverse_order ? 0 : 1); |
+ layer_tree_root->SetLayerTreeHost(host); |
scoped_ptr<LayerImpl> layer_impl = |
TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), |
scoped_ptr<LayerImpl>(), |
@@ -47,15 +48,27 @@ scoped_ptr<LayerImpl> LayerImplForScrollAreaAndScrollbar( |
return layer_impl.Pass(); |
} |
+class MockLayerTreeHost : public LayerTreeHost { |
+ public: |
+ MockLayerTreeHost(LayerTreeHostClient* client, |
+ const LayerTreeSettings& settings) |
+ : LayerTreeHost(client, settings) { |
+ Initialize(NULL); |
+ } |
+}; |
+ |
TEST(ScrollbarLayerTest, ResolveScrollLayerPointer) { |
FakeImplProxy proxy; |
FakeLayerTreeHostImpl host_impl(&proxy); |
- |
+ FakeLayerTreeHostClient fake_client(FakeLayerTreeHostClient::DIRECT_SOFTWARE); |
+ LayerTreeSettings layer_tree_settings; |
+ scoped_ptr<MockLayerTreeHost> layer_tree_host( |
+ new MockLayerTreeHost(&fake_client, layer_tree_settings)); |
{ |
scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
scoped_ptr<LayerImpl> layer_impl_tree_root = |
LayerImplForScrollAreaAndScrollbar( |
- &host_impl, scrollbar.Pass(), false); |
+ layer_tree_host.get(), &host_impl, scrollbar.Pass(), false, false); |
LayerImpl* cc_child1 = layer_impl_tree_root->children()[0]; |
ScrollbarLayerImpl* cc_child2 = static_cast<ScrollbarLayerImpl*>( |
@@ -68,7 +81,7 @@ TEST(ScrollbarLayerTest, ResolveScrollLayerPointer) { |
scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
scoped_ptr<LayerImpl> layer_impl_tree_root = |
LayerImplForScrollAreaAndScrollbar( |
- &host_impl, scrollbar.Pass(), true); |
+ layer_tree_host.get(), &host_impl, scrollbar.Pass(), true, false); |
ScrollbarLayerImpl* cc_child1 = static_cast<ScrollbarLayerImpl*>( |
layer_impl_tree_root->children()[0]); |
@@ -81,11 +94,16 @@ TEST(ScrollbarLayerTest, ResolveScrollLayerPointer) { |
TEST(ScrollbarLayerTest, ShouldScrollNonOverlayOnMainThread) { |
FakeImplProxy proxy; |
FakeLayerTreeHostImpl host_impl(&proxy); |
+ FakeLayerTreeHostClient fake_client(FakeLayerTreeHostClient::DIRECT_SOFTWARE); |
+ LayerTreeSettings layer_tree_settings; |
+ scoped_ptr<MockLayerTreeHost> layer_tree_host( |
+ new MockLayerTreeHost(&fake_client, layer_tree_settings)); |
// Create and attach a non-overlay scrollbar. |
scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
scoped_ptr<LayerImpl> layer_impl_tree_root = |
- LayerImplForScrollAreaAndScrollbar(&host_impl, scrollbar.Pass(), false); |
+ LayerImplForScrollAreaAndScrollbar( |
+ layer_tree_host.get(), &host_impl, scrollbar.Pass(), false, false); |
ScrollbarLayerImpl* scrollbar_layer_impl = |
static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]); |
@@ -99,8 +117,8 @@ TEST(ScrollbarLayerTest, ShouldScrollNonOverlayOnMainThread) { |
// Create and attach an overlay scrollbar. |
scrollbar.reset(new FakeScrollbar(false, false, true)); |
- layer_impl_tree_root = |
- LayerImplForScrollAreaAndScrollbar(&host_impl, scrollbar.Pass(), false); |
+ layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( |
+ layer_tree_host.get(), &host_impl, scrollbar.Pass(), false, false); |
scrollbar_layer_impl = |
static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]); |
@@ -114,15 +132,19 @@ TEST(ScrollbarLayerTest, ShouldScrollNonOverlayOnMainThread) { |
TEST(ScrollbarLayerTest, ScrollOffsetSynchronization) { |
FakeImplProxy proxy; |
FakeLayerTreeHostImpl host_impl(&proxy); |
+ FakeLayerTreeHostClient fake_client(FakeLayerTreeHostClient::DIRECT_SOFTWARE); |
+ LayerTreeSettings layer_tree_settings; |
+ scoped_ptr<MockLayerTreeHost> layer_tree_host( |
+ new MockLayerTreeHost(&fake_client, layer_tree_settings)); |
scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
scoped_refptr<Layer> content_layer = Layer::Create(); |
scoped_refptr<Layer> scrollbar_layer = |
- ScrollbarLayer::Create(scrollbar.Pass(), |
- layer_tree_root->id()); |
+ ScrollbarLayer::Create(scrollbar.Pass(), layer_tree_root->id(), false); |
layer_tree_root->AddChild(content_layer); |
layer_tree_root->AddChild(scrollbar_layer); |
+ layer_tree_root->SetLayerTreeHost(layer_tree_host.get()); |
layer_tree_root->SetScrollOffset(gfx::Vector2d(10, 20)); |
layer_tree_root->SetMaxScrollOffset(gfx::Vector2d(30, 50)); |
@@ -171,18 +193,41 @@ TEST(ScrollbarLayerTest, ScrollOffsetSynchronization) { |
EXPECT_EQ(300, cc_scrollbar_layer->Maximum()); |
} |
-TEST(ScrollbarLayerTest, SolidColorDrawQuads) { |
+class SolidScrollbarLayerQuadTest |
+ : public ::testing::TestWithParam<bool> { |
+ public: |
+ SolidScrollbarLayerQuadTest() |
+ : fake_client_(FakeLayerTreeHostClient::DIRECT_3D) { |
+ layer_tree_settings.force_solid_color_scrollbars = GetParam(); |
+ layer_tree_settings.solid_color_scrollbar_thickness_dip = 3; |
+ layer_tree_host_.reset( |
+ new MockLayerTreeHost(&fake_client_, layer_tree_settings)); |
+ |
+ host_impl = |
+ make_scoped_ptr(new FakeLayerTreeHostImpl(layer_tree_settings, &proxy)); |
+ scrollbar = make_scoped_ptr(new FakeScrollbar(false, true, true)); |
+ layer_impl_tree_root = |
+ LayerImplForScrollAreaAndScrollbar(layer_tree_host_.get(), |
+ host_impl.get(), |
+ scrollbar.Pass(), |
+ false, |
+ !GetParam()); |
+ scrollbar_layer_impl = |
+ static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]); |
+ } |
+ |
+ protected: |
LayerTreeSettings layer_tree_settings; |
- layer_tree_settings.solid_color_scrollbars = true; |
- layer_tree_settings.solid_color_scrollbar_thickness_dip = 3; |
FakeImplProxy proxy; |
- FakeLayerTreeHostImpl host_impl(layer_tree_settings, &proxy); |
+ scoped_ptr<FakeLayerTreeHostImpl> host_impl; |
+ scoped_ptr<Scrollbar> scrollbar; |
+ scoped_ptr<LayerImpl> layer_impl_tree_root; |
+ ScrollbarLayerImpl* scrollbar_layer_impl; |
+ FakeLayerTreeHostClient fake_client_; |
+ scoped_ptr<MockLayerTreeHost> layer_tree_host_; |
+}; |
- scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); |
- scoped_ptr<LayerImpl> layer_impl_tree_root = |
- LayerImplForScrollAreaAndScrollbar(&host_impl, scrollbar.Pass(), false); |
- ScrollbarLayerImpl* scrollbar_layer_impl = |
- static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]); |
+TEST_P(SolidScrollbarLayerQuadTest, DrawQuads) { |
scrollbar_layer_impl->set_thumb_thickness(3); |
scrollbar_layer_impl->SetCurrentPos(10.f); |
scrollbar_layer_impl->SetMaximum(100); |
@@ -232,19 +277,7 @@ TEST(ScrollbarLayerTest, SolidColorDrawQuads) { |
} |
} |
-TEST(ScrollbarLayerTest, LayerDrivenSolidColorDrawQuads) { |
- LayerTreeSettings layer_tree_settings; |
- layer_tree_settings.solid_color_scrollbars = true; |
- layer_tree_settings.solid_color_scrollbar_thickness_dip = 3; |
- FakeImplProxy proxy; |
- FakeLayerTreeHostImpl host_impl(layer_tree_settings, &proxy); |
- |
- scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); |
- scoped_ptr<LayerImpl> layer_impl_tree_root = |
- LayerImplForScrollAreaAndScrollbar(&host_impl, scrollbar.Pass(), false); |
- ScrollbarLayerImpl* scrollbar_layer_impl = |
- static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]); |
- |
+TEST_P(SolidScrollbarLayerQuadTest, LayerDrivenSolidColorDrawQuads) { |
scrollbar_layer_impl->set_thumb_thickness(3); |
scrollbar_layer_impl->set_track_length(10); |
scrollbar_layer_impl->SetCurrentPos(4.f); |
@@ -267,17 +300,21 @@ TEST(ScrollbarLayerTest, LayerDrivenSolidColorDrawQuads) { |
} |
} |
-class ScrollbarLayerSolidColorThumbTest : public testing::Test { |
+INSTANTIATE_TEST_CASE_P(ParameterizedSolidColorScrollbarTest, |
+ SolidScrollbarLayerQuadTest, |
+ ::testing::Values(true, false)); |
+ |
+class ScrollbarLayerSolidColorThumbTest : public testing::TestWithParam<bool> { |
public: |
ScrollbarLayerSolidColorThumbTest() { |
LayerTreeSettings layer_tree_settings; |
- layer_tree_settings.solid_color_scrollbars = true; |
+ layer_tree_settings.force_solid_color_scrollbars = GetParam(); |
host_impl_.reset(new FakeLayerTreeHostImpl(layer_tree_settings, &proxy_)); |
horizontal_scrollbar_layer_ = ScrollbarLayerImpl::Create( |
- host_impl_->active_tree(), 1, HORIZONTAL); |
+ host_impl_->active_tree(), 1, HORIZONTAL, true); |
vertical_scrollbar_layer_ = ScrollbarLayerImpl::Create( |
- host_impl_->active_tree(), 2, VERTICAL); |
+ host_impl_->active_tree(), 2, VERTICAL, true); |
} |
protected: |
@@ -287,7 +324,7 @@ class ScrollbarLayerSolidColorThumbTest : public testing::Test { |
scoped_ptr<ScrollbarLayerImpl> vertical_scrollbar_layer_; |
}; |
-TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbLength) { |
+TEST_P(ScrollbarLayerSolidColorThumbTest, SolidColorThumbLength) { |
horizontal_scrollbar_layer_->SetCurrentPos(0); |
horizontal_scrollbar_layer_->SetMaximum(10); |
horizontal_scrollbar_layer_->set_thumb_thickness(3); |
@@ -304,7 +341,7 @@ TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbLength) { |
EXPECT_EQ(3, horizontal_scrollbar_layer_->ComputeThumbQuadRect().width()); |
} |
-TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbPosition) { |
+TEST_P(ScrollbarLayerSolidColorThumbTest, SolidColorThumbPosition) { |
horizontal_scrollbar_layer_->set_track_length(100); |
horizontal_scrollbar_layer_->set_visible_to_total_length_ratio(0.1f); |
horizontal_scrollbar_layer_->set_thumb_thickness(3); |
@@ -325,7 +362,7 @@ TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbPosition) { |
EXPECT_EQ(72, horizontal_scrollbar_layer_->ComputeThumbQuadRect().x()); |
} |
-TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbVerticalAdjust) { |
+TEST_P(ScrollbarLayerSolidColorThumbTest, SolidColorThumbVerticalAdjust) { |
ScrollbarLayerImpl* layers[2] = |
{ horizontal_scrollbar_layer_.get(), vertical_scrollbar_layer_.get() }; |
for (size_t i = 0; i < 2; ++i) { |
@@ -354,6 +391,10 @@ TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbVerticalAdjust) { |
vertical_scrollbar_layer_->ComputeThumbQuadRect()); |
} |
+INSTANTIATE_TEST_CASE_P(ParameterizedSolidColorThumbTest, |
+ ScrollbarLayerSolidColorThumbTest, |
+ ::testing::Values(true, false)); |
+ |
class ScrollbarLayerTestMaxTextureSize : public LayerTreeTest { |
public: |
ScrollbarLayerTestMaxTextureSize() {} |
@@ -362,7 +403,7 @@ class ScrollbarLayerTestMaxTextureSize : public LayerTreeTest { |
virtual void BeginTest() OVERRIDE { |
scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
- scrollbar_layer_ = ScrollbarLayer::Create(scrollbar.Pass(), 1); |
+ scrollbar_layer_ = ScrollbarLayer::Create(scrollbar.Pass(), 1, false); |
scrollbar_layer_->SetLayerTreeHost(layer_tree_host()); |
scrollbar_layer_->SetBounds(bounds_); |
layer_tree_host()->root_layer()->AddChild(scrollbar_layer_); |
@@ -415,16 +456,6 @@ TEST_F(ScrollbarLayerTestMaxTextureSize, DelegatingRenderer) { |
RunTest(true, true, true); |
} |
-class MockLayerTreeHost : public LayerTreeHost { |
- public: |
- MockLayerTreeHost(LayerTreeHostClient* client, |
- const LayerTreeSettings& settings) |
- : LayerTreeHost(client, settings) { |
- Initialize(NULL); |
- } |
-}; |
- |
- |
class ScrollbarLayerTestResourceCreation : public testing::Test { |
public: |
ScrollbarLayerTestResourceCreation() |
@@ -438,7 +469,7 @@ class ScrollbarLayerTestResourceCreation : public testing::Test { |
scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
scoped_refptr<Layer> content_layer = Layer::Create(); |
scoped_refptr<Layer> scrollbar_layer = |
- ScrollbarLayer::Create(scrollbar.Pass(), layer_tree_root->id()); |
+ ScrollbarLayer::Create(scrollbar.Pass(), layer_tree_root->id(), false); |
layer_tree_root->AddChild(content_layer); |
layer_tree_root->AddChild(scrollbar_layer); |
@@ -482,12 +513,12 @@ class ScrollbarLayerTestResourceCreation : public testing::Test { |
}; |
TEST_F(ScrollbarLayerTestResourceCreation, ResourceUpload) { |
- layer_tree_settings_.solid_color_scrollbars = false; |
+ layer_tree_settings_.force_solid_color_scrollbars = false; |
TestResourceUpload(2); |
} |
TEST_F(ScrollbarLayerTestResourceCreation, SolidColorNoResourceUpload) { |
- layer_tree_settings_.solid_color_scrollbars = true; |
+ layer_tree_settings_.force_solid_color_scrollbars = true; |
TestResourceUpload(0); |
} |
@@ -506,9 +537,8 @@ class ScaledScrollbarLayerTestResourceCreation : public testing::Test { |
scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
scoped_refptr<Layer> content_layer = Layer::Create(); |
- scoped_refptr<Layer> scrollbar_layer = |
- ScrollbarLayer::Create(scrollbar.PassAs<cc::Scrollbar>(), |
- layer_tree_root->id()); |
+ scoped_refptr<Layer> scrollbar_layer = ScrollbarLayer::Create( |
+ scrollbar.PassAs<cc::Scrollbar>(), layer_tree_root->id(), false); |
layer_tree_root->AddChild(content_layer); |
layer_tree_root->AddChild(scrollbar_layer); |
@@ -575,7 +605,7 @@ class ScaledScrollbarLayerTestResourceCreation : public testing::Test { |
}; |
TEST_F(ScaledScrollbarLayerTestResourceCreation, ScaledResourceUpload) { |
- layer_tree_settings_.solid_color_scrollbars = false; |
+ layer_tree_settings_.force_solid_color_scrollbars = false; |
// Pick a test scale that moves the scrollbar's (non-zero) position to |
// a non-pixel-aligned location. |
TestResourceUpload(2, 1.41f); |