| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "base/containers/hash_tables.h" | 5 #include "base/containers/hash_tables.h" |
| 6 #include "base/thread_task_runner_handle.h" | 6 #include "base/thread_task_runner_handle.h" |
| 7 #include "cc/animation/scrollbar_animation_controller.h" | 7 #include "cc/animation/scrollbar_animation_controller.h" |
| 8 #include "cc/layers/append_quads_data.h" | 8 #include "cc/layers/append_quads_data.h" |
| 9 #include "cc/layers/painted_scrollbar_layer.h" | 9 #include "cc/layers/painted_scrollbar_layer.h" |
| 10 #include "cc/layers/painted_scrollbar_layer_impl.h" | 10 #include "cc/layers/painted_scrollbar_layer_impl.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "cc/trees/layer_tree_impl.h" | 28 #include "cc/trees/layer_tree_impl.h" |
| 29 #include "cc/trees/occlusion_tracker.h" | 29 #include "cc/trees/occlusion_tracker.h" |
| 30 #include "cc/trees/single_thread_proxy.h" | 30 #include "cc/trees/single_thread_proxy.h" |
| 31 #include "cc/trees/tree_synchronizer.h" | 31 #include "cc/trees/tree_synchronizer.h" |
| 32 #include "testing/gmock/include/gmock/gmock.h" | 32 #include "testing/gmock/include/gmock/gmock.h" |
| 33 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
| 34 | 34 |
| 35 namespace cc { | 35 namespace cc { |
| 36 namespace { | 36 namespace { |
| 37 | 37 |
| 38 LayerImpl* LayerImplForScrollAreaAndScrollbar(FakeLayerTreeHost* host, | 38 LayerImpl* LayerImplForScrollAreaAndScrollbar(const LayerSettings& settings, |
| 39 FakeLayerTreeHost* host, |
| 39 scoped_ptr<Scrollbar> scrollbar, | 40 scoped_ptr<Scrollbar> scrollbar, |
| 40 bool reverse_order, | 41 bool reverse_order, |
| 41 bool use_solid_color_scrollbar, | 42 bool use_solid_color_scrollbar, |
| 42 int thumb_thickness, | 43 int thumb_thickness, |
| 43 int track_start) { | 44 int track_start) { |
| 44 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 45 scoped_refptr<Layer> layer_tree_root = Layer::Create(settings); |
| 45 scoped_refptr<Layer> child1 = Layer::Create(); | 46 scoped_refptr<Layer> child1 = Layer::Create(settings); |
| 46 scoped_refptr<Layer> child2; | 47 scoped_refptr<Layer> child2; |
| 47 if (use_solid_color_scrollbar) { | 48 if (use_solid_color_scrollbar) { |
| 48 const bool kIsLeftSideVerticalScrollbar = false; | 49 const bool kIsLeftSideVerticalScrollbar = false; |
| 49 child2 = SolidColorScrollbarLayer::Create(scrollbar->Orientation(), | 50 child2 = SolidColorScrollbarLayer::Create( |
| 50 thumb_thickness, | 51 settings, scrollbar->Orientation(), thumb_thickness, track_start, |
| 51 track_start, | 52 kIsLeftSideVerticalScrollbar, child1->id()); |
| 52 kIsLeftSideVerticalScrollbar, | |
| 53 child1->id()); | |
| 54 } else { | 53 } else { |
| 55 child2 = PaintedScrollbarLayer::Create(scrollbar.Pass(), child1->id()); | 54 child2 = |
| 55 PaintedScrollbarLayer::Create(settings, scrollbar.Pass(), child1->id()); |
| 56 } | 56 } |
| 57 child2->ToScrollbarLayer()->SetClipLayer(layer_tree_root->id()); | 57 child2->ToScrollbarLayer()->SetClipLayer(layer_tree_root->id()); |
| 58 layer_tree_root->AddChild(child1); | 58 layer_tree_root->AddChild(child1); |
| 59 layer_tree_root->InsertChild(child2, reverse_order ? 0 : 1); | 59 layer_tree_root->InsertChild(child2, reverse_order ? 0 : 1); |
| 60 host->SetRootLayer(layer_tree_root); | 60 host->SetRootLayer(layer_tree_root); |
| 61 return host->CommitAndCreateLayerImplTree(); | 61 return host->CommitAndCreateLayerImplTree(); |
| 62 } | 62 } |
| 63 | 63 |
| 64 class FakeResourceTrackingLayerTreeHost : public FakeLayerTreeHost { | 64 class FakeResourceTrackingLayerTreeHost : public FakeLayerTreeHost { |
| 65 public: | 65 public: |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 params.settings = &layer_tree_settings_; | 127 params.settings = &layer_tree_settings_; |
| 128 | 128 |
| 129 layer_tree_host_.reset( | 129 layer_tree_host_.reset( |
| 130 new FakeResourceTrackingLayerTreeHost(&fake_client_, ¶ms)); | 130 new FakeResourceTrackingLayerTreeHost(&fake_client_, ¶ms)); |
| 131 fake_client_.SetLayerTreeHost(layer_tree_host_.get()); | 131 fake_client_.SetLayerTreeHost(layer_tree_host_.get()); |
| 132 // Force output surface creation for renderer capabilities. | 132 // Force output surface creation for renderer capabilities. |
| 133 layer_tree_host_->Composite(base::TimeTicks()); | 133 layer_tree_host_->Composite(base::TimeTicks()); |
| 134 EXPECT_FALSE(layer_tree_host_->output_surface_lost()); | 134 EXPECT_FALSE(layer_tree_host_->output_surface_lost()); |
| 135 } | 135 } |
| 136 | 136 |
| 137 const LayerSettings& layer_settings() { return layer_settings_; } |
| 138 |
| 137 protected: | 139 protected: |
| 138 FakeLayerTreeHostClient fake_client_; | 140 FakeLayerTreeHostClient fake_client_; |
| 139 LayerTreeSettings layer_tree_settings_; | 141 LayerTreeSettings layer_tree_settings_; |
| 142 LayerSettings layer_settings_; |
| 140 scoped_ptr<FakeResourceTrackingLayerTreeHost> layer_tree_host_; | 143 scoped_ptr<FakeResourceTrackingLayerTreeHost> layer_tree_host_; |
| 141 }; | 144 }; |
| 142 | 145 |
| 143 TEST_F(ScrollbarLayerTest, ResolveScrollLayerPointer) { | 146 TEST_F(ScrollbarLayerTest, ResolveScrollLayerPointer) { |
| 144 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); | 147 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
| 145 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( | 148 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( |
| 146 layer_tree_host_.get(), scrollbar.Pass(), false, false, 0, 0); | 149 layer_settings(), layer_tree_host_.get(), scrollbar.Pass(), false, false, |
| 150 0, 0); |
| 147 | 151 |
| 148 LayerImpl* cc_child1 = layer_impl_tree_root->children()[0]; | 152 LayerImpl* cc_child1 = layer_impl_tree_root->children()[0]; |
| 149 PaintedScrollbarLayerImpl* cc_child2 = | 153 PaintedScrollbarLayerImpl* cc_child2 = |
| 150 static_cast<PaintedScrollbarLayerImpl*>( | 154 static_cast<PaintedScrollbarLayerImpl*>( |
| 151 layer_impl_tree_root->children()[1]); | 155 layer_impl_tree_root->children()[1]); |
| 152 | 156 |
| 153 EXPECT_EQ(cc_child1->scrollbars()->size(), 1UL); | 157 EXPECT_EQ(cc_child1->scrollbars()->size(), 1UL); |
| 154 EXPECT_EQ(*(cc_child1->scrollbars()->begin()), cc_child2); | 158 EXPECT_EQ(*(cc_child1->scrollbars()->begin()), cc_child2); |
| 155 } | 159 } |
| 156 | 160 |
| 157 TEST_F(ScrollbarLayerTest, ResolveScrollLayerPointer_ReverseOrder) { | 161 TEST_F(ScrollbarLayerTest, ResolveScrollLayerPointer_ReverseOrder) { |
| 158 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); | 162 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
| 159 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( | 163 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( |
| 160 layer_tree_host_.get(), scrollbar.Pass(), true, false, 0, 0); | 164 layer_settings(), layer_tree_host_.get(), scrollbar.Pass(), true, false, |
| 165 0, 0); |
| 161 | 166 |
| 162 PaintedScrollbarLayerImpl* cc_child1 = | 167 PaintedScrollbarLayerImpl* cc_child1 = |
| 163 static_cast<PaintedScrollbarLayerImpl*>( | 168 static_cast<PaintedScrollbarLayerImpl*>( |
| 164 layer_impl_tree_root->children()[0]); | 169 layer_impl_tree_root->children()[0]); |
| 165 LayerImpl* cc_child2 = layer_impl_tree_root->children()[1]; | 170 LayerImpl* cc_child2 = layer_impl_tree_root->children()[1]; |
| 166 | 171 |
| 167 EXPECT_EQ(cc_child2->scrollbars()->size(), 1UL); | 172 EXPECT_EQ(cc_child2->scrollbars()->size(), 1UL); |
| 168 EXPECT_EQ(*(cc_child2->scrollbars()->begin()), cc_child1); | 173 EXPECT_EQ(*(cc_child2->scrollbars()->begin()), cc_child1); |
| 169 } | 174 } |
| 170 | 175 |
| 171 TEST_F(ScrollbarLayerTest, ShouldScrollNonOverlayOnMainThread) { | 176 TEST_F(ScrollbarLayerTest, ShouldScrollNonOverlayOnMainThread) { |
| 172 // Create and attach a non-overlay scrollbar. | 177 // Create and attach a non-overlay scrollbar. |
| 173 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); | 178 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
| 174 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( | 179 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( |
| 175 layer_tree_host_.get(), scrollbar.Pass(), false, false, 0, 0); | 180 layer_settings(), layer_tree_host_.get(), scrollbar.Pass(), false, false, |
| 181 0, 0); |
| 176 PaintedScrollbarLayerImpl* scrollbar_layer_impl = | 182 PaintedScrollbarLayerImpl* scrollbar_layer_impl = |
| 177 static_cast<PaintedScrollbarLayerImpl*>( | 183 static_cast<PaintedScrollbarLayerImpl*>( |
| 178 layer_impl_tree_root->children()[1]); | 184 layer_impl_tree_root->children()[1]); |
| 179 | 185 |
| 180 // When the scrollbar is not an overlay scrollbar, the scroll should be | 186 // When the scrollbar is not an overlay scrollbar, the scroll should be |
| 181 // responded to on the main thread as the compositor does not yet implement | 187 // responded to on the main thread as the compositor does not yet implement |
| 182 // scrollbar scrolling. | 188 // scrollbar scrolling. |
| 183 EXPECT_EQ( | 189 EXPECT_EQ( |
| 184 InputHandler::SCROLL_ON_MAIN_THREAD, | 190 InputHandler::SCROLL_ON_MAIN_THREAD, |
| 185 scrollbar_layer_impl->TryScroll(gfx::Point(0, 0), InputHandler::GESTURE, | 191 scrollbar_layer_impl->TryScroll(gfx::Point(0, 0), InputHandler::GESTURE, |
| 186 SCROLL_BLOCKS_ON_NONE)); | 192 SCROLL_BLOCKS_ON_NONE)); |
| 187 | 193 |
| 188 // Create and attach an overlay scrollbar. | 194 // Create and attach an overlay scrollbar. |
| 189 scrollbar.reset(new FakeScrollbar(false, false, true)); | 195 scrollbar.reset(new FakeScrollbar(false, false, true)); |
| 190 | 196 |
| 191 layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( | 197 layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( |
| 192 layer_tree_host_.get(), scrollbar.Pass(), false, false, 0, 0); | 198 layer_settings(), layer_tree_host_.get(), scrollbar.Pass(), false, false, |
| 199 0, 0); |
| 193 scrollbar_layer_impl = static_cast<PaintedScrollbarLayerImpl*>( | 200 scrollbar_layer_impl = static_cast<PaintedScrollbarLayerImpl*>( |
| 194 layer_impl_tree_root->children()[1]); | 201 layer_impl_tree_root->children()[1]); |
| 195 | 202 |
| 196 // The user shouldn't be able to drag an overlay scrollbar and the scroll | 203 // The user shouldn't be able to drag an overlay scrollbar and the scroll |
| 197 // may be handled in the compositor. | 204 // may be handled in the compositor. |
| 198 EXPECT_EQ( | 205 EXPECT_EQ( |
| 199 InputHandler::SCROLL_IGNORED, | 206 InputHandler::SCROLL_IGNORED, |
| 200 scrollbar_layer_impl->TryScroll(gfx::Point(0, 0), InputHandler::GESTURE, | 207 scrollbar_layer_impl->TryScroll(gfx::Point(0, 0), InputHandler::GESTURE, |
| 201 SCROLL_BLOCKS_ON_NONE)); | 208 SCROLL_BLOCKS_ON_NONE)); |
| 202 } | 209 } |
| 203 | 210 |
| 204 TEST_F(ScrollbarLayerTest, ScrollOffsetSynchronization) { | 211 TEST_F(ScrollbarLayerTest, ScrollOffsetSynchronization) { |
| 205 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); | 212 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
| 206 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 213 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings()); |
| 207 scoped_refptr<Layer> scroll_layer = Layer::Create(); | 214 scoped_refptr<Layer> scroll_layer = Layer::Create(layer_settings()); |
| 208 scoped_refptr<Layer> content_layer = Layer::Create(); | 215 scoped_refptr<Layer> content_layer = Layer::Create(layer_settings()); |
| 209 scoped_refptr<Layer> scrollbar_layer = | 216 scoped_refptr<Layer> scrollbar_layer = PaintedScrollbarLayer::Create( |
| 210 PaintedScrollbarLayer::Create(scrollbar.Pass(), layer_tree_root->id()); | 217 layer_settings(), scrollbar.Pass(), layer_tree_root->id()); |
| 211 | 218 |
| 212 // Choose bounds to give max_scroll_offset = (30, 50). | 219 // Choose bounds to give max_scroll_offset = (30, 50). |
| 213 layer_tree_root->SetBounds(gfx::Size(70, 150)); | 220 layer_tree_root->SetBounds(gfx::Size(70, 150)); |
| 214 scroll_layer->SetScrollClipLayerId(layer_tree_root->id()); | 221 scroll_layer->SetScrollClipLayerId(layer_tree_root->id()); |
| 215 scroll_layer->SetScrollOffset(gfx::ScrollOffset(10, 20)); | 222 scroll_layer->SetScrollOffset(gfx::ScrollOffset(10, 20)); |
| 216 scroll_layer->SetBounds(gfx::Size(100, 200)); | 223 scroll_layer->SetBounds(gfx::Size(100, 200)); |
| 217 content_layer->SetBounds(gfx::Size(100, 200)); | 224 content_layer->SetBounds(gfx::Size(100, 200)); |
| 218 | 225 |
| 219 layer_tree_host_->SetRootLayer(layer_tree_root); | 226 layer_tree_host_->SetRootLayer(layer_tree_root); |
| 220 layer_tree_root->AddChild(scroll_layer); | 227 layer_tree_root->AddChild(scroll_layer); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 scrollbar_layer->UpdateInternalContentScale(); \ | 272 scrollbar_layer->UpdateInternalContentScale(); \ |
| 266 scrollbar_layer->UpdateThumbAndTrackGeometry(); \ | 273 scrollbar_layer->UpdateThumbAndTrackGeometry(); \ |
| 267 root_clip_layer_impl = layer_tree_host_->CommitAndCreateLayerImplTree(); \ | 274 root_clip_layer_impl = layer_tree_host_->CommitAndCreateLayerImplTree(); \ |
| 268 root_layer_impl = root_clip_layer_impl->children()[0]; \ | 275 root_layer_impl = root_clip_layer_impl->children()[0]; \ |
| 269 scrollbar_layer_impl = static_cast<PaintedScrollbarLayerImpl*>( \ | 276 scrollbar_layer_impl = static_cast<PaintedScrollbarLayerImpl*>( \ |
| 270 root_layer_impl->children()[1]); \ | 277 root_layer_impl->children()[1]); \ |
| 271 scrollbar_layer_impl->ScrollbarParametersDidChange(false); \ | 278 scrollbar_layer_impl->ScrollbarParametersDidChange(false); \ |
| 272 } while (false) | 279 } while (false) |
| 273 | 280 |
| 274 TEST_F(ScrollbarLayerTest, UpdatePropertiesOfScrollBarWhenThumbRemoved) { | 281 TEST_F(ScrollbarLayerTest, UpdatePropertiesOfScrollBarWhenThumbRemoved) { |
| 275 scoped_refptr<Layer> root_clip_layer = Layer::Create(); | 282 scoped_refptr<Layer> root_clip_layer = Layer::Create(layer_settings()); |
| 276 scoped_refptr<Layer> root_layer = Layer::Create(); | 283 scoped_refptr<Layer> root_layer = Layer::Create(layer_settings()); |
| 277 scoped_refptr<Layer> content_layer = Layer::Create(); | 284 scoped_refptr<Layer> content_layer = Layer::Create(layer_settings()); |
| 278 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = | 285 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = |
| 279 FakePaintedScrollbarLayer::Create(false, true, root_layer->id()); | 286 FakePaintedScrollbarLayer::Create(layer_settings(), false, true, |
| 287 root_layer->id()); |
| 280 | 288 |
| 281 root_layer->SetScrollClipLayerId(root_clip_layer->id()); | 289 root_layer->SetScrollClipLayerId(root_clip_layer->id()); |
| 282 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). | 290 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). |
| 283 root_clip_layer->SetBounds(gfx::Size(20, 50)); | 291 root_clip_layer->SetBounds(gfx::Size(20, 50)); |
| 284 root_layer->SetBounds(gfx::Size(100, 50)); | 292 root_layer->SetBounds(gfx::Size(100, 50)); |
| 285 content_layer->SetBounds(gfx::Size(100, 50)); | 293 content_layer->SetBounds(gfx::Size(100, 50)); |
| 286 | 294 |
| 287 layer_tree_host_->SetRootLayer(root_clip_layer); | 295 layer_tree_host_->SetRootLayer(root_clip_layer); |
| 288 root_clip_layer->AddChild(root_layer); | 296 root_clip_layer->AddChild(root_layer); |
| 289 root_layer->AddChild(content_layer); | 297 root_layer->AddChild(content_layer); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 306 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); | 314 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); |
| 307 | 315 |
| 308 scrollbar_layer->fake_scrollbar()->set_has_thumb(false); | 316 scrollbar_layer->fake_scrollbar()->set_has_thumb(false); |
| 309 | 317 |
| 310 UPDATE_AND_EXTRACT_LAYER_POINTERS(); | 318 UPDATE_AND_EXTRACT_LAYER_POINTERS(); |
| 311 EXPECT_EQ(gfx::Rect(10, 0, 0, 0).ToString(), | 319 EXPECT_EQ(gfx::Rect(10, 0, 0, 0).ToString(), |
| 312 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); | 320 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); |
| 313 } | 321 } |
| 314 | 322 |
| 315 TEST_F(ScrollbarLayerTest, ThumbRect) { | 323 TEST_F(ScrollbarLayerTest, ThumbRect) { |
| 316 scoped_refptr<Layer> root_clip_layer = Layer::Create(); | 324 scoped_refptr<Layer> root_clip_layer = Layer::Create(layer_settings()); |
| 317 scoped_refptr<Layer> root_layer = Layer::Create(); | 325 scoped_refptr<Layer> root_layer = Layer::Create(layer_settings()); |
| 318 scoped_refptr<Layer> content_layer = Layer::Create(); | 326 scoped_refptr<Layer> content_layer = Layer::Create(layer_settings()); |
| 319 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = | 327 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = |
| 320 FakePaintedScrollbarLayer::Create(false, true, root_layer->id()); | 328 FakePaintedScrollbarLayer::Create(layer_settings(), false, true, |
| 329 root_layer->id()); |
| 321 | 330 |
| 322 root_layer->SetScrollClipLayerId(root_clip_layer->id()); | 331 root_layer->SetScrollClipLayerId(root_clip_layer->id()); |
| 323 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). | 332 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). |
| 324 root_clip_layer->SetBounds(gfx::Size(20, 50)); | 333 root_clip_layer->SetBounds(gfx::Size(20, 50)); |
| 325 root_layer->SetBounds(gfx::Size(100, 50)); | 334 root_layer->SetBounds(gfx::Size(100, 50)); |
| 326 content_layer->SetBounds(gfx::Size(100, 50)); | 335 content_layer->SetBounds(gfx::Size(100, 50)); |
| 327 | 336 |
| 328 layer_tree_host_->SetRootLayer(root_clip_layer); | 337 layer_tree_host_->SetRootLayer(root_clip_layer); |
| 329 root_clip_layer->AddChild(root_layer); | 338 root_clip_layer->AddChild(root_layer); |
| 330 root_layer->AddChild(content_layer); | 339 root_layer->AddChild(content_layer); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); | 399 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); |
| 391 } | 400 } |
| 392 | 401 |
| 393 TEST_F(ScrollbarLayerTest, SolidColorDrawQuads) { | 402 TEST_F(ScrollbarLayerTest, SolidColorDrawQuads) { |
| 394 const int kThumbThickness = 3; | 403 const int kThumbThickness = 3; |
| 395 const int kTrackStart = 1; | 404 const int kTrackStart = 1; |
| 396 const int kTrackLength = 100; | 405 const int kTrackLength = 100; |
| 397 | 406 |
| 398 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); | 407 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); |
| 399 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( | 408 LayerImpl* layer_impl_tree_root = LayerImplForScrollAreaAndScrollbar( |
| 400 layer_tree_host_.get(), scrollbar.Pass(), false, true, kThumbThickness, | 409 layer_settings(), layer_tree_host_.get(), scrollbar.Pass(), false, true, |
| 401 kTrackStart); | 410 kThumbThickness, kTrackStart); |
| 402 ScrollbarLayerImplBase* scrollbar_layer_impl = | 411 ScrollbarLayerImplBase* scrollbar_layer_impl = |
| 403 static_cast<SolidColorScrollbarLayerImpl*>( | 412 static_cast<SolidColorScrollbarLayerImpl*>( |
| 404 layer_impl_tree_root->children()[1]); | 413 layer_impl_tree_root->children()[1]); |
| 405 scrollbar_layer_impl->SetBounds(gfx::Size(kTrackLength, kThumbThickness)); | 414 scrollbar_layer_impl->SetBounds(gfx::Size(kTrackLength, kThumbThickness)); |
| 406 scrollbar_layer_impl->SetCurrentPos(10.f); | 415 scrollbar_layer_impl->SetCurrentPos(10.f); |
| 407 scrollbar_layer_impl->SetMaximum(100); | 416 scrollbar_layer_impl->SetMaximum(100); |
| 408 scrollbar_layer_impl->SetVisibleToTotalLengthRatio(0.4f); | 417 scrollbar_layer_impl->SetVisibleToTotalLengthRatio(0.4f); |
| 409 | 418 |
| 410 // Thickness should be overridden to 3. | 419 // Thickness should be overridden to 3. |
| 411 { | 420 { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 } | 474 } |
| 466 | 475 |
| 467 TEST_F(ScrollbarLayerTest, LayerDrivenSolidColorDrawQuads) { | 476 TEST_F(ScrollbarLayerTest, LayerDrivenSolidColorDrawQuads) { |
| 468 const int kThumbThickness = 3; | 477 const int kThumbThickness = 3; |
| 469 const int kTrackStart = 0; | 478 const int kTrackStart = 0; |
| 470 const int kTrackLength = 10; | 479 const int kTrackLength = 10; |
| 471 | 480 |
| 472 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); | 481 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); |
| 473 | 482 |
| 474 { | 483 { |
| 475 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 484 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings()); |
| 476 scoped_refptr<Layer> scroll_layer = Layer::Create(); | 485 scoped_refptr<Layer> scroll_layer = Layer::Create(layer_settings()); |
| 477 scroll_layer->SetScrollClipLayerId(layer_tree_root->id()); | 486 scroll_layer->SetScrollClipLayerId(layer_tree_root->id()); |
| 478 scoped_refptr<Layer> child1 = Layer::Create(); | 487 scoped_refptr<Layer> child1 = Layer::Create(layer_settings()); |
| 479 scoped_refptr<Layer> child2; | 488 scoped_refptr<Layer> child2; |
| 480 const bool kIsLeftSideVerticalScrollbar = false; | 489 const bool kIsLeftSideVerticalScrollbar = false; |
| 481 child2 = SolidColorScrollbarLayer::Create(scrollbar->Orientation(), | 490 child2 = SolidColorScrollbarLayer::Create( |
| 482 kThumbThickness, | 491 layer_settings(), scrollbar->Orientation(), kThumbThickness, |
| 483 kTrackStart, | 492 kTrackStart, kIsLeftSideVerticalScrollbar, child1->id()); |
| 484 kIsLeftSideVerticalScrollbar, | |
| 485 child1->id()); | |
| 486 child2->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); | 493 child2->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); |
| 487 child2->ToScrollbarLayer()->SetClipLayer(layer_tree_root->id()); | 494 child2->ToScrollbarLayer()->SetClipLayer(layer_tree_root->id()); |
| 488 scroll_layer->AddChild(child1); | 495 scroll_layer->AddChild(child1); |
| 489 scroll_layer->InsertChild(child2, 1); | 496 scroll_layer->InsertChild(child2, 1); |
| 490 layer_tree_root->AddChild(scroll_layer); | 497 layer_tree_root->AddChild(scroll_layer); |
| 491 layer_tree_host_->SetRootLayer(layer_tree_root); | 498 layer_tree_host_->SetRootLayer(layer_tree_root); |
| 492 } | 499 } |
| 493 LayerImpl* layer_impl_tree_root = | 500 LayerImpl* layer_impl_tree_root = |
| 494 layer_tree_host_->CommitAndCreateLayerImplTree(); | 501 layer_tree_host_->CommitAndCreateLayerImplTree(); |
| 495 LayerImpl* scroll_layer_impl = layer_impl_tree_root->children()[0]; | 502 LayerImpl* scroll_layer_impl = layer_impl_tree_root->children()[0]; |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 vertical_scrollbar_layer_->ComputeThumbQuadRect()); | 631 vertical_scrollbar_layer_->ComputeThumbQuadRect()); |
| 625 } | 632 } |
| 626 | 633 |
| 627 class ScrollbarLayerTestMaxTextureSize : public LayerTreeTest { | 634 class ScrollbarLayerTestMaxTextureSize : public LayerTreeTest { |
| 628 public: | 635 public: |
| 629 ScrollbarLayerTestMaxTextureSize() {} | 636 ScrollbarLayerTestMaxTextureSize() {} |
| 630 | 637 |
| 631 void SetScrollbarBounds(const gfx::Size& bounds) { bounds_ = bounds; } | 638 void SetScrollbarBounds(const gfx::Size& bounds) { bounds_ = bounds; } |
| 632 | 639 |
| 633 void BeginTest() override { | 640 void BeginTest() override { |
| 634 scroll_layer_ = Layer::Create(); | 641 scroll_layer_ = Layer::Create(layer_settings()); |
| 635 layer_tree_host()->root_layer()->AddChild(scroll_layer_); | 642 layer_tree_host()->root_layer()->AddChild(scroll_layer_); |
| 636 | 643 |
| 637 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); | 644 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
| 638 scrollbar_layer_ = | 645 scrollbar_layer_ = PaintedScrollbarLayer::Create( |
| 639 PaintedScrollbarLayer::Create(scrollbar.Pass(), scroll_layer_->id()); | 646 layer_settings(), scrollbar.Pass(), scroll_layer_->id()); |
| 640 scrollbar_layer_->SetScrollLayer(scroll_layer_->id()); | 647 scrollbar_layer_->SetScrollLayer(scroll_layer_->id()); |
| 641 scrollbar_layer_->SetLayerTreeHost(layer_tree_host()); | 648 scrollbar_layer_->SetLayerTreeHost(layer_tree_host()); |
| 642 scrollbar_layer_->SetBounds(bounds_); | 649 scrollbar_layer_->SetBounds(bounds_); |
| 643 scrollbar_layer_->SetIsDrawable(true); | 650 scrollbar_layer_->SetIsDrawable(true); |
| 644 layer_tree_host()->root_layer()->AddChild(scrollbar_layer_); | 651 layer_tree_host()->root_layer()->AddChild(scrollbar_layer_); |
| 645 | 652 |
| 646 PostSetNeedsCommitToMainThread(); | 653 PostSetNeedsCommitToMainThread(); |
| 647 } | 654 } |
| 648 | 655 |
| 649 void DidCommitAndDrawFrame() override { | 656 void DidCommitAndDrawFrame() override { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 } | 695 } |
| 689 | 696 |
| 690 class ScrollbarLayerTestResourceCreationAndRelease : public ScrollbarLayerTest { | 697 class ScrollbarLayerTestResourceCreationAndRelease : public ScrollbarLayerTest { |
| 691 public: | 698 public: |
| 692 void TestResourceUpload(int num_updates, | 699 void TestResourceUpload(int num_updates, |
| 693 size_t expected_resources, | 700 size_t expected_resources, |
| 694 int expected_created, | 701 int expected_created, |
| 695 int expected_deleted, | 702 int expected_deleted, |
| 696 bool use_solid_color_scrollbar) { | 703 bool use_solid_color_scrollbar) { |
| 697 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, false)); | 704 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, false)); |
| 698 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 705 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings()); |
| 699 scoped_refptr<Layer> content_layer = Layer::Create(); | 706 scoped_refptr<Layer> content_layer = Layer::Create(layer_settings()); |
| 700 scoped_refptr<Layer> scrollbar_layer; | 707 scoped_refptr<Layer> scrollbar_layer; |
| 701 if (use_solid_color_scrollbar) { | 708 if (use_solid_color_scrollbar) { |
| 702 const int kThumbThickness = 3; | 709 const int kThumbThickness = 3; |
| 703 const int kTrackStart = 0; | 710 const int kTrackStart = 0; |
| 704 const bool kIsLeftSideVerticalScrollbar = false; | 711 const bool kIsLeftSideVerticalScrollbar = false; |
| 705 scrollbar_layer = | 712 scrollbar_layer = SolidColorScrollbarLayer::Create( |
| 706 SolidColorScrollbarLayer::Create(scrollbar->Orientation(), | 713 layer_settings(), scrollbar->Orientation(), kThumbThickness, |
| 707 kThumbThickness, | 714 kTrackStart, kIsLeftSideVerticalScrollbar, layer_tree_root->id()); |
| 708 kTrackStart, | |
| 709 kIsLeftSideVerticalScrollbar, | |
| 710 layer_tree_root->id()); | |
| 711 } else { | 715 } else { |
| 712 scrollbar_layer = PaintedScrollbarLayer::Create(scrollbar.Pass(), | 716 scrollbar_layer = PaintedScrollbarLayer::Create( |
| 713 layer_tree_root->id()); | 717 layer_settings(), scrollbar.Pass(), layer_tree_root->id()); |
| 714 } | 718 } |
| 715 layer_tree_root->AddChild(content_layer); | 719 layer_tree_root->AddChild(content_layer); |
| 716 layer_tree_root->AddChild(scrollbar_layer); | 720 layer_tree_root->AddChild(scrollbar_layer); |
| 717 | 721 |
| 718 layer_tree_host_->SetRootLayer(layer_tree_root); | 722 layer_tree_host_->SetRootLayer(layer_tree_root); |
| 719 | 723 |
| 720 scrollbar_layer->SetIsDrawable(true); | 724 scrollbar_layer->SetIsDrawable(true); |
| 721 scrollbar_layer->SetBounds(gfx::Size(100, 100)); | 725 scrollbar_layer->SetBounds(gfx::Size(100, 100)); |
| 722 layer_tree_root->SetScrollOffset(gfx::ScrollOffset(10, 20)); | 726 layer_tree_root->SetScrollOffset(gfx::ScrollOffset(10, 20)); |
| 723 layer_tree_root->SetBounds(gfx::Size(100, 200)); | 727 layer_tree_root->SetBounds(gfx::Size(100, 200)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 | 770 |
| 767 TEST_F(ScrollbarLayerTestResourceCreationAndRelease, | 771 TEST_F(ScrollbarLayerTestResourceCreationAndRelease, |
| 768 SolidColorNoResourceUpload) { | 772 SolidColorNoResourceUpload) { |
| 769 bool use_solid_color_scrollbars = true; | 773 bool use_solid_color_scrollbars = true; |
| 770 TestResourceUpload(0, 0, 0, 0, use_solid_color_scrollbars); | 774 TestResourceUpload(0, 0, 0, 0, use_solid_color_scrollbars); |
| 771 TestResourceUpload(1, 0, 0, 0, use_solid_color_scrollbars); | 775 TestResourceUpload(1, 0, 0, 0, use_solid_color_scrollbars); |
| 772 } | 776 } |
| 773 | 777 |
| 774 TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) { | 778 TEST_F(ScrollbarLayerTestResourceCreationAndRelease, TestResourceUpdate) { |
| 775 gfx::Point scrollbar_location(0, 185); | 779 gfx::Point scrollbar_location(0, 185); |
| 776 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 780 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings()); |
| 777 scoped_refptr<Layer> content_layer = Layer::Create(); | 781 scoped_refptr<Layer> content_layer = Layer::Create(layer_settings()); |
| 778 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = | 782 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = |
| 779 FakePaintedScrollbarLayer::Create(false, true, layer_tree_root->id()); | 783 FakePaintedScrollbarLayer::Create(layer_settings(), false, true, |
| 784 layer_tree_root->id()); |
| 780 | 785 |
| 781 layer_tree_root->AddChild(content_layer); | 786 layer_tree_root->AddChild(content_layer); |
| 782 layer_tree_root->AddChild(scrollbar_layer); | 787 layer_tree_root->AddChild(scrollbar_layer); |
| 783 | 788 |
| 784 layer_tree_host_->SetRootLayer(layer_tree_root); | 789 layer_tree_host_->SetRootLayer(layer_tree_root); |
| 785 | 790 |
| 786 scrollbar_layer->SetIsDrawable(true); | 791 scrollbar_layer->SetIsDrawable(true); |
| 787 scrollbar_layer->SetBounds(gfx::Size(100, 15)); | 792 scrollbar_layer->SetBounds(gfx::Size(100, 15)); |
| 788 scrollbar_layer->SetPosition(scrollbar_location); | 793 scrollbar_layer->SetPosition(scrollbar_location); |
| 789 layer_tree_root->SetBounds(gfx::Size(100, 200)); | 794 layer_tree_root->SetBounds(gfx::Size(100, 200)); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted()); | 908 EXPECT_EQ(expected_deleted, layer_tree_host_->TotalUIResourceDeleted()); |
| 904 | 909 |
| 905 testing::Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 910 testing::Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 906 scrollbar_layer->ClearRenderSurface(); | 911 scrollbar_layer->ClearRenderSurface(); |
| 907 } | 912 } |
| 908 | 913 |
| 909 class ScaledScrollbarLayerTestResourceCreation : public ScrollbarLayerTest { | 914 class ScaledScrollbarLayerTestResourceCreation : public ScrollbarLayerTest { |
| 910 public: | 915 public: |
| 911 void TestResourceUpload(const float test_scale) { | 916 void TestResourceUpload(const float test_scale) { |
| 912 gfx::Point scrollbar_location(0, 185); | 917 gfx::Point scrollbar_location(0, 185); |
| 913 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 918 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings()); |
| 914 scoped_refptr<Layer> content_layer = Layer::Create(); | 919 scoped_refptr<Layer> content_layer = Layer::Create(layer_settings()); |
| 915 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = | 920 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = |
| 916 FakePaintedScrollbarLayer::Create(false, true, layer_tree_root->id()); | 921 FakePaintedScrollbarLayer::Create(layer_settings(), false, true, |
| 922 layer_tree_root->id()); |
| 917 | 923 |
| 918 layer_tree_root->AddChild(content_layer); | 924 layer_tree_root->AddChild(content_layer); |
| 919 layer_tree_root->AddChild(scrollbar_layer); | 925 layer_tree_root->AddChild(scrollbar_layer); |
| 920 | 926 |
| 921 layer_tree_host_->SetRootLayer(layer_tree_root); | 927 layer_tree_host_->SetRootLayer(layer_tree_root); |
| 922 | 928 |
| 923 scrollbar_layer->SetIsDrawable(true); | 929 scrollbar_layer->SetIsDrawable(true); |
| 924 scrollbar_layer->SetBounds(gfx::Size(100, 15)); | 930 scrollbar_layer->SetBounds(gfx::Size(100, 15)); |
| 925 scrollbar_layer->SetPosition(scrollbar_location); | 931 scrollbar_layer->SetPosition(scrollbar_location); |
| 926 layer_tree_root->SetBounds(gfx::Size(100, 200)); | 932 layer_tree_root->SetBounds(gfx::Size(100, 200)); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 979 TestResourceUpload(.041f); | 985 TestResourceUpload(.041f); |
| 980 TestResourceUpload(1.41f); | 986 TestResourceUpload(1.41f); |
| 981 TestResourceUpload(4.1f); | 987 TestResourceUpload(4.1f); |
| 982 } | 988 } |
| 983 | 989 |
| 984 class ScaledScrollbarLayerTestScaledRasterization : public ScrollbarLayerTest { | 990 class ScaledScrollbarLayerTestScaledRasterization : public ScrollbarLayerTest { |
| 985 public: | 991 public: |
| 986 void TestScale(const gfx::Rect scrollbar_rect, const float test_scale) { | 992 void TestScale(const gfx::Rect scrollbar_rect, const float test_scale) { |
| 987 bool paint_during_update = true; | 993 bool paint_during_update = true; |
| 988 bool has_thumb = false; | 994 bool has_thumb = false; |
| 989 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 995 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings()); |
| 990 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = | 996 scoped_refptr<FakePaintedScrollbarLayer> scrollbar_layer = |
| 991 FakePaintedScrollbarLayer::Create(paint_during_update, | 997 FakePaintedScrollbarLayer::Create(layer_settings(), paint_during_update, |
| 992 has_thumb, | 998 has_thumb, layer_tree_root->id()); |
| 993 layer_tree_root->id()); | |
| 994 | 999 |
| 995 layer_tree_root->AddChild(scrollbar_layer); | 1000 layer_tree_root->AddChild(scrollbar_layer); |
| 996 | 1001 |
| 997 layer_tree_host_->SetRootLayer(layer_tree_root); | 1002 layer_tree_host_->SetRootLayer(layer_tree_root); |
| 998 | 1003 |
| 999 scrollbar_layer->SetBounds(scrollbar_rect.size()); | 1004 scrollbar_layer->SetBounds(scrollbar_rect.size()); |
| 1000 scrollbar_layer->SetPosition(scrollbar_rect.origin()); | 1005 scrollbar_layer->SetPosition(scrollbar_rect.origin()); |
| 1001 scrollbar_layer->fake_scrollbar()->set_location(scrollbar_rect.origin()); | 1006 scrollbar_layer->fake_scrollbar()->set_location(scrollbar_rect.origin()); |
| 1002 scrollbar_layer->fake_scrollbar()->set_track_rect(scrollbar_rect); | 1007 scrollbar_layer->fake_scrollbar()->set_track_rect(scrollbar_rect); |
| 1003 gfx::SizeF scaled_size = | 1008 gfx::SizeF scaled_size = |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1066 TestScale(gfx::Rect(1240, 0, 15, 1333), 2.7754839f); | 1071 TestScale(gfx::Rect(1240, 0, 15, 1333), 2.7754839f); |
| 1067 TestScale(gfx::Rect(1240, 0, 15, 677), 2.46677136f); | 1072 TestScale(gfx::Rect(1240, 0, 15, 677), 2.46677136f); |
| 1068 | 1073 |
| 1069 // Horizontal Scrollbars. | 1074 // Horizontal Scrollbars. |
| 1070 TestScale(gfx::Rect(0, 1240, 1333, 15), 2.7754839f); | 1075 TestScale(gfx::Rect(0, 1240, 1333, 15), 2.7754839f); |
| 1071 TestScale(gfx::Rect(0, 1240, 677, 15), 2.46677136f); | 1076 TestScale(gfx::Rect(0, 1240, 677, 15), 2.46677136f); |
| 1072 } | 1077 } |
| 1073 | 1078 |
| 1074 } // namespace | 1079 } // namespace |
| 1075 } // namespace cc | 1080 } // namespace cc |
| OLD | NEW |