blob: 7f0f56fc9da837fd40c5788d6748d682043c82b1 [file] [log] [blame]
// Copyright 2018 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/extensions/external_install_error.h"
#include "base/test/scoped_feature_list.h"
#include "base/values.h"
#include "chrome/browser/extensions/external_install_error_constants.h"
#include "chrome/common/chrome_features.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace extensions {
TEST(ExternalInstallErrorTest, DefaultButtonFromFeature) {
base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndEnableFeatureWithParameters(
features::kExternalExtensionDefaultButtonControl,
{{WebstoreDataFetcherDelegate::kExternalInstallDefaultButtonKey,
kDefaultDialogButtonSettingOk}});
EXPECT_EQ(ExternalInstallError::DIALOG_BUTTON_OK,
ExternalInstallError::GetDefaultDialogButton({}));
}
TEST(ExternalInstallErrorTest, DefaultButtonFromWebstoreResponse) {
// Set the default button from the feature as well. The webstore response,
// when present, should have priority.
base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndEnableFeatureWithParameters(
features::kExternalExtensionDefaultButtonControl,
{{WebstoreDataFetcherDelegate::kExternalInstallDefaultButtonKey,
kDefaultDialogButtonSettingOk}});
base::Value::Dict webstore_data;
webstore_data.Set(
WebstoreDataFetcherDelegate::kExternalInstallDefaultButtonKey,
kDefaultDialogButtonSettingCancel);
EXPECT_EQ(ExternalInstallError::DIALOG_BUTTON_CANCEL,
ExternalInstallError::GetDefaultDialogButton(webstore_data));
}
TEST(ExternalInstallErrorTest, DefaultButtonFallback) {
EXPECT_EQ(ExternalInstallError::NOT_SPECIFIED,
ExternalInstallError::GetDefaultDialogButton({}));
}
} // namespace extensions