blob: fe8453d666be3ba5a8686b8282186a0adf7e79bf [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// 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/external_install_options.h"
#include <string>
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/web_applications/user_display_mode.h"
#include "chrome/browser/web_applications/web_app_install_params.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace web_app {
namespace {
ExternalInstallOptions ConvertParamsToExternalInstallOptions(
const WebAppInstallParams& install_params) {
ExternalInstallOptions install_options(
/*install_url=*/install_params.fallback_start_url,
/*user_display_mode=*/install_params.user_display_mode,
/*install_source=*/ExternalInstallSource::kExternalDefault);
install_options.force_reinstall = install_params.force_reinstall;
if (install_params.fallback_app_name.has_value()) {
install_options.fallback_app_name =
base::UTF16ToUTF8(install_params.fallback_app_name.value());
}
install_options.add_to_applications_menu =
install_params.add_to_applications_menu;
install_options.add_to_desktop = install_params.add_to_desktop;
install_options.add_to_quick_launch_bar =
install_params.add_to_quick_launch_bar;
install_options.add_to_search = install_params.add_to_search;
install_options.add_to_management = install_params.add_to_management;
install_options.is_disabled = install_params.is_disabled;
install_options.bypass_service_worker_check =
install_params.bypass_service_worker_check;
install_options.require_manifest = install_params.require_manifest;
install_options.additional_search_terms =
install_params.additional_search_terms;
install_options.launch_query_params = install_params.launch_query_params;
install_options.system_app_type = install_params.system_app_type;
install_options.oem_installed = install_params.oem_installed;
return install_options;
}
} // namespace
TEST(WebAppExternalInstallOptions,
ConvertExternalInstallOptionsToParams_DefaultConstructor) {
ExternalInstallOptions install_options(
/*install_url=*/GURL{"https://example.org"},
/*user_display_mode=*/UserDisplayMode::kStandalone,
/*install_source=*/ExternalInstallSource::kExternalDefault);
WebAppInstallParams install_params =
ConvertExternalInstallOptionsToParams(install_options);
ExternalInstallOptions converted_install_options =
ConvertParamsToExternalInstallOptions(install_params);
EXPECT_EQ(converted_install_options, install_options);
}
TEST(WebAppExternalInstallOptions,
ConvertExternalInstallOptionsToParams_NotDefaultConstructor) {
ExternalInstallOptions install_options(
/*install_url=*/GURL{"https://example.com"},
/*user_display_mode=*/UserDisplayMode::kStandalone,
/*install_source=*/ExternalInstallSource::kExternalDefault);
// The values below are deliberately different from default
// ExternalInstallOptions constructor values.
install_options.force_reinstall = true;
install_options.user_display_mode = UserDisplayMode::kStandalone;
install_options.fallback_app_name = "Fallback App Name";
install_options.add_to_applications_menu = false;
install_options.add_to_desktop = false;
install_options.add_to_quick_launch_bar = false;
install_options.add_to_search = false;
install_options.add_to_management = false;
install_options.is_disabled = true;
install_options.bypass_service_worker_check = true;
install_options.require_manifest = true;
install_options.additional_search_terms = {"str1", "str2"};
install_options.launch_query_params = "param";
install_options.system_app_type = ash::SystemWebAppType::SAMPLE;
install_options.oem_installed = true;
WebAppInstallParams install_params =
ConvertExternalInstallOptionsToParams(install_options);
ExternalInstallOptions converted_install_options =
ConvertParamsToExternalInstallOptions(install_params);
EXPECT_EQ(converted_install_options, install_options);
}
} // namespace web_app