1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/web_applications/web_app.h" 6 7 #include "chrome/browser/web_applications/components/web_app_constants.h" 8 #include "chrome/browser/web_applications/components/web_app_helpers.h" 9 #include "testing/gtest/include/gtest/gtest.h" 10 11 namespace web_app { 12 TEST(WebAppTest,HasAnySources)13TEST(WebAppTest, HasAnySources) { 14 WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; 15 16 EXPECT_FALSE(app.HasAnySources()); 17 for (int i = Source::kMinValue; i <= Source::kMaxValue; ++i) { 18 app.AddSource(static_cast<Source::Type>(i)); 19 EXPECT_TRUE(app.HasAnySources()); 20 } 21 22 for (int i = Source::kMinValue; i <= Source::kMaxValue; ++i) { 23 EXPECT_TRUE(app.HasAnySources()); 24 app.RemoveSource(static_cast<Source::Type>(i)); 25 } 26 EXPECT_FALSE(app.HasAnySources()); 27 } 28 TEST(WebAppTest,HasOnlySource)29TEST(WebAppTest, HasOnlySource) { 30 WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; 31 32 for (int i = Source::kMinValue; i <= Source::kMaxValue; ++i) { 33 auto source = static_cast<Source::Type>(i); 34 35 app.AddSource(source); 36 EXPECT_TRUE(app.HasOnlySource(source)); 37 38 app.RemoveSource(source); 39 EXPECT_FALSE(app.HasOnlySource(source)); 40 } 41 42 app.AddSource(Source::kMinValue); 43 EXPECT_TRUE(app.HasOnlySource(Source::kMinValue)); 44 45 for (int i = Source::kMinValue + 1; i <= Source::kMaxValue; ++i) { 46 auto source = static_cast<Source::Type>(i); 47 app.AddSource(source); 48 EXPECT_FALSE(app.HasOnlySource(source)); 49 EXPECT_FALSE(app.HasOnlySource(Source::kMinValue)); 50 } 51 52 for (int i = Source::kMinValue + 1; i <= Source::kMaxValue; ++i) { 53 auto source = static_cast<Source::Type>(i); 54 EXPECT_FALSE(app.HasOnlySource(Source::kMinValue)); 55 app.RemoveSource(source); 56 EXPECT_FALSE(app.HasOnlySource(source)); 57 } 58 59 EXPECT_TRUE(app.HasOnlySource(Source::kMinValue)); 60 app.RemoveSource(Source::kMinValue); 61 EXPECT_FALSE(app.HasOnlySource(Source::kMinValue)); 62 EXPECT_FALSE(app.HasAnySources()); 63 } 64 TEST(WebAppTest,WasInstalledByUser)65TEST(WebAppTest, WasInstalledByUser) { 66 WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; 67 68 app.AddSource(Source::kSync); 69 EXPECT_TRUE(app.WasInstalledByUser()); 70 71 app.AddSource(Source::kWebAppStore); 72 EXPECT_TRUE(app.WasInstalledByUser()); 73 74 app.RemoveSource(Source::kSync); 75 EXPECT_TRUE(app.WasInstalledByUser()); 76 77 app.RemoveSource(Source::kWebAppStore); 78 EXPECT_FALSE(app.WasInstalledByUser()); 79 80 app.AddSource(Source::kDefault); 81 EXPECT_FALSE(app.WasInstalledByUser()); 82 83 app.AddSource(Source::kSystem); 84 EXPECT_FALSE(app.WasInstalledByUser()); 85 86 app.AddSource(Source::kPolicy); 87 EXPECT_FALSE(app.WasInstalledByUser()); 88 89 app.RemoveSource(Source::kDefault); 90 EXPECT_FALSE(app.WasInstalledByUser()); 91 92 app.RemoveSource(Source::kSystem); 93 EXPECT_FALSE(app.WasInstalledByUser()); 94 95 app.RemoveSource(Source::kPolicy); 96 EXPECT_FALSE(app.WasInstalledByUser()); 97 } 98 TEST(WebAppTest,CanUserUninstallExternalApp)99TEST(WebAppTest, CanUserUninstallExternalApp) { 100 WebApp app{GenerateAppIdFromURL(GURL("https://example.com"))}; 101 102 app.AddSource(Source::kDefault); 103 EXPECT_TRUE(app.IsDefaultApp()); 104 EXPECT_TRUE(app.CanUserUninstallExternalApp()); 105 106 app.AddSource(Source::kSync); 107 EXPECT_TRUE(app.CanUserUninstallExternalApp()); 108 app.AddSource(Source::kWebAppStore); 109 EXPECT_TRUE(app.CanUserUninstallExternalApp()); 110 111 app.AddSource(Source::kPolicy); 112 EXPECT_FALSE(app.CanUserUninstallExternalApp()); 113 app.AddSource(Source::kSystem); 114 EXPECT_FALSE(app.CanUserUninstallExternalApp()); 115 116 app.RemoveSource(Source::kSync); 117 EXPECT_FALSE(app.CanUserUninstallExternalApp()); 118 app.RemoveSource(Source::kWebAppStore); 119 EXPECT_FALSE(app.CanUserUninstallExternalApp()); 120 121 app.RemoveSource(Source::kSystem); 122 EXPECT_FALSE(app.CanUserUninstallExternalApp()); 123 124 app.RemoveSource(Source::kPolicy); 125 EXPECT_TRUE(app.CanUserUninstallExternalApp()); 126 127 EXPECT_TRUE(app.IsDefaultApp()); 128 app.RemoveSource(Source::kDefault); 129 EXPECT_FALSE(app.IsDefaultApp()); 130 } 131 132 } // namespace web_app 133