| // Copyright 2019 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/web_applications/web_app.h" |
| |
| #include "chrome/browser/web_applications/components/web_app_constants.h" |
| #include "chrome/browser/web_applications/components/web_app_helpers.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace web_app { |
| |
| TEST(WebAppTest, HasAnySources) { |
| WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; |
| |
| EXPECT_FALSE(app.HasAnySources()); |
| for (int i = Source::kMinValue; i <= Source::kMaxValue; ++i) { |
| app.AddSource(static_cast<Source::Type>(i)); |
| EXPECT_TRUE(app.HasAnySources()); |
| } |
| |
| for (int i = Source::kMinValue; i <= Source::kMaxValue; ++i) { |
| EXPECT_TRUE(app.HasAnySources()); |
| app.RemoveSource(static_cast<Source::Type>(i)); |
| } |
| EXPECT_FALSE(app.HasAnySources()); |
| } |
| |
| TEST(WebAppTest, HasOnlySource) { |
| WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; |
| |
| for (int i = Source::kMinValue; i <= Source::kMaxValue; ++i) { |
| auto source = static_cast<Source::Type>(i); |
| |
| app.AddSource(source); |
| EXPECT_TRUE(app.HasOnlySource(source)); |
| |
| app.RemoveSource(source); |
| EXPECT_FALSE(app.HasOnlySource(source)); |
| } |
| |
| app.AddSource(Source::kMinValue); |
| EXPECT_TRUE(app.HasOnlySource(Source::kMinValue)); |
| |
| for (int i = Source::kMinValue + 1; i <= Source::kMaxValue; ++i) { |
| auto source = static_cast<Source::Type>(i); |
| app.AddSource(source); |
| EXPECT_FALSE(app.HasOnlySource(source)); |
| EXPECT_FALSE(app.HasOnlySource(Source::kMinValue)); |
| } |
| |
| for (int i = Source::kMinValue + 1; i <= Source::kMaxValue; ++i) { |
| auto source = static_cast<Source::Type>(i); |
| EXPECT_FALSE(app.HasOnlySource(Source::kMinValue)); |
| app.RemoveSource(source); |
| EXPECT_FALSE(app.HasOnlySource(source)); |
| } |
| |
| EXPECT_TRUE(app.HasOnlySource(Source::kMinValue)); |
| app.RemoveSource(Source::kMinValue); |
| EXPECT_FALSE(app.HasOnlySource(Source::kMinValue)); |
| EXPECT_FALSE(app.HasAnySources()); |
| } |
| |
| TEST(WebAppTest, WasInstalledByUser) { |
| WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; |
| |
| app.AddSource(Source::kSync); |
| EXPECT_TRUE(app.WasInstalledByUser()); |
| |
| app.AddSource(Source::kWebAppStore); |
| EXPECT_TRUE(app.WasInstalledByUser()); |
| |
| app.RemoveSource(Source::kSync); |
| EXPECT_TRUE(app.WasInstalledByUser()); |
| |
| app.RemoveSource(Source::kWebAppStore); |
| EXPECT_FALSE(app.WasInstalledByUser()); |
| |
| app.AddSource(Source::kDefault); |
| EXPECT_FALSE(app.WasInstalledByUser()); |
| |
| app.AddSource(Source::kSystem); |
| EXPECT_FALSE(app.WasInstalledByUser()); |
| |
| app.AddSource(Source::kPolicy); |
| EXPECT_FALSE(app.WasInstalledByUser()); |
| |
| app.RemoveSource(Source::kDefault); |
| EXPECT_FALSE(app.WasInstalledByUser()); |
| |
| app.RemoveSource(Source::kSystem); |
| EXPECT_FALSE(app.WasInstalledByUser()); |
| |
| app.RemoveSource(Source::kPolicy); |
| EXPECT_FALSE(app.WasInstalledByUser()); |
| } |
| |
| TEST(WebAppTest, CanUserUninstallExternalApp) { |
| WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; |
| |
| app.AddSource(Source::kDefault); |
| EXPECT_TRUE(app.IsDefaultApp()); |
| EXPECT_TRUE(app.CanUserUninstallExternalApp()); |
| |
| app.AddSource(Source::kSync); |
| EXPECT_TRUE(app.CanUserUninstallExternalApp()); |
| app.AddSource(Source::kWebAppStore); |
| EXPECT_TRUE(app.CanUserUninstallExternalApp()); |
| |
| app.AddSource(Source::kPolicy); |
| EXPECT_FALSE(app.CanUserUninstallExternalApp()); |
| app.AddSource(Source::kSystem); |
| EXPECT_FALSE(app.CanUserUninstallExternalApp()); |
| |
| app.RemoveSource(Source::kSync); |
| EXPECT_FALSE(app.CanUserUninstallExternalApp()); |
| app.RemoveSource(Source::kWebAppStore); |
| EXPECT_FALSE(app.CanUserUninstallExternalApp()); |
| |
| app.RemoveSource(Source::kSystem); |
| EXPECT_FALSE(app.CanUserUninstallExternalApp()); |
| |
| app.RemoveSource(Source::kPolicy); |
| EXPECT_TRUE(app.CanUserUninstallExternalApp()); |
| |
| EXPECT_TRUE(app.IsDefaultApp()); |
| app.RemoveSource(Source::kDefault); |
| EXPECT_FALSE(app.IsDefaultApp()); |
| } |
| |
| } // namespace web_app |