blob: 7ae33c812e36e2a5bb4fca7b1d7039d550f9636b [file] [log] [blame]
// 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