123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "cc/layers/painted_overlay_scrollbar_layer.h"
- #include "cc/animation/animation_host.h"
- #include "cc/test/fake_layer_tree_host.h"
- #include "cc/test/fake_layer_tree_host_client.h"
- #include "cc/test/fake_scrollbar.h"
- #include "cc/test/test_task_graph_runner.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace cc {
- namespace {
- class MockScrollbar : public FakeScrollbar {
- public:
- MockScrollbar() {
- set_should_paint(true);
- set_has_thumb(true);
- set_is_overlay(true);
- }
- void PaintPart(PaintCanvas*, ScrollbarPart part, const gfx::Rect&) override {
- if (part == ScrollbarPart::TRACK_BUTTONS_TICKMARKS)
- paint_tickmarks_called_ = true;
- }
- bool UsesNinePatchThumbResource() const override { return true; }
- gfx::Size NinePatchThumbCanvasSize() const override {
- return gfx::Size(10, 10);
- }
- bool PaintTickmarksCalled() { return paint_tickmarks_called_; }
- void SetPaintTickmarksCalled(bool called) {
- paint_tickmarks_called_ = called;
- }
- private:
- ~MockScrollbar() override = default;
- bool paint_tickmarks_called_ = false;
- };
- TEST(PaintedOverlayScrollbarLayerTest, PaintTickmarks) {
- FakeLayerTreeHostClient fake_client_;
- TestTaskGraphRunner task_graph_runner_;
- auto animation_host = AnimationHost::CreateForTesting(ThreadInstance::MAIN);
- auto layer_tree_host = FakeLayerTreeHost::Create(
- &fake_client_, &task_graph_runner_, animation_host.get());
- auto scrollbar = base::MakeRefCounted<MockScrollbar>();
- scrollbar->set_has_tickmarks(false);
- scoped_refptr<PaintedOverlayScrollbarLayer> scrollbar_layer =
- PaintedOverlayScrollbarLayer::Create(scrollbar);
- scrollbar_layer->SetIsDrawable(true);
- scrollbar_layer->SetBounds(gfx::Size(100, 100));
- layer_tree_host->SetRootLayer(scrollbar_layer);
- EXPECT_EQ(scrollbar_layer->layer_tree_host(), layer_tree_host.get());
- // Request no paint when initialization.
- scrollbar_layer->Update();
- EXPECT_FALSE(scrollbar->PaintTickmarksCalled());
- // The next update will paint nothing because still no tickmarks applied.
- scrollbar_layer->Update();
- EXPECT_FALSE(scrollbar->PaintTickmarksCalled());
- // Enable the tickmarks.
- scrollbar->set_has_tickmarks(true);
- scrollbar_layer->Update();
- EXPECT_TRUE(scrollbar->PaintTickmarksCalled());
- scrollbar->SetPaintTickmarksCalled(false);
- // Disable the tickmarks. No paint.
- scrollbar->set_has_tickmarks(false);
- scrollbar_layer->Update();
- EXPECT_FALSE(scrollbar->PaintTickmarksCalled());
- }
- } // namespace
- } // namespace cc
|