| // Copyright 2017 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 "chrome/browser/vr/elements/vector_icon.h" |
| |
| #include <memory> |
| |
| #include "base/test/gtest_util.h" |
| #include "cc/test/test_skcanvas.h" |
| #include "chrome/browser/vr/elements/ui_texture.h" |
| #include "chrome/browser/vr/test/animation_utils.h" |
| #include "chrome/browser/vr/test/constants.h" |
| #include "chrome/browser/vr/ui_scene.h" |
| #include "components/vector_icons/vector_icons.h" |
| |
| namespace vr { |
| |
| namespace { |
| |
| using testing::_; |
| using testing::InSequence; |
| |
| static constexpr int kMaximumWidth = 512; |
| |
| class TestVectorIcon : public VectorIcon { |
| public: |
| explicit TestVectorIcon(int maximum_width) : VectorIcon(maximum_width) {} |
| ~TestVectorIcon() override {} |
| |
| UiTexture* GetTexture() const override { return VectorIcon::GetTexture(); } |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(TestVectorIcon); |
| }; |
| |
| } // namespace |
| |
| TEST(VectorIcon, SmokeTest) { |
| UiScene scene; |
| auto icon = std::make_unique<TestVectorIcon>(kMaximumWidth); |
| icon->SetIcon(vector_icons::kCloseRoundedIcon); |
| UiTexture* texture = icon->GetTexture(); |
| scene.AddUiElement(kRoot, std::move(icon)); |
| base::TimeTicks start_time = MsToTicks(1); |
| scene.OnBeginFrame(start_time, kStartHeadPose); |
| |
| InSequence scope; |
| cc::MockCanvas canvas; |
| |
| // The drawing of vector icons is bookended with a scoped save layer. |
| EXPECT_CALL(canvas, willSave()); |
| |
| // This matrix is concatenated to apply to the vector icon. |
| EXPECT_CALL(canvas, didConcat(_)); |
| |
| // This is the call to draw the path comprising the vector icon. |
| EXPECT_CALL(canvas, onDrawPath(_, _)); |
| |
| // The drawing of vector icons is bookended with a scoped save layer. |
| EXPECT_CALL(canvas, willRestore()); |
| |
| texture->Draw(&canvas, gfx::Size(kMaximumWidth, kMaximumWidth)); |
| } |
| |
| } // namespace vr |