| Index: chrome/common/extensions/manifest_tests/extension_manifests_options_unittest.cc
|
| diff --git a/chrome/common/extensions/manifest_tests/extension_manifests_options_unittest.cc b/chrome/common/extensions/manifest_tests/extension_manifests_options_unittest.cc
|
| index 941c62e57aca58bd66b4d9ecadf242ffd8b020e8..e14abf6ddea3a20f44a86245820e13cd61296d4b 100644
|
| --- a/chrome/common/extensions/manifest_tests/extension_manifests_options_unittest.cc
|
| +++ b/chrome/common/extensions/manifest_tests/extension_manifests_options_unittest.cc
|
| @@ -14,7 +14,56 @@ using namespace extensions;
|
|
|
| namespace errors = extensions::manifest_errors;
|
|
|
| +namespace {
|
| +
|
| class OptionsPageManifestTest : public ChromeManifestTest {
|
| + protected:
|
| + // Tests how the options_ui manifest key affects the open-in-tab and
|
| + // chromes-style behaviour.
|
| + testing::AssertionResult TestOptionsUIChromeStyleAndOpenInTab() {
|
| + // Explicitly specifying true in the manifest for options_ui.chrome_style
|
| + // and options_ui.open_in_tab sets them both to true.
|
| + scoped_refptr<Extension> extension =
|
| + LoadAndExpectSuccess("options_ui_flags_true.json");
|
| + EXPECT_TRUE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| + EXPECT_TRUE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| +
|
| + // Explicitly specifying false in the manifest for options_ui.chrome_style
|
| + // and options_ui.open_in_tab sets them both to false.
|
| + extension = LoadAndExpectSuccess("options_ui_flags_false.json");
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| +
|
| + // Specifying an options_ui key but neither options_ui.chrome_style nor
|
| + // options_ui.open_in_tab uses the default values: false for open-in-tab,
|
| + // false for use-chrome-style.
|
| + extension = LoadAndExpectSuccess("options_ui_page_basic.json");
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| +
|
| + // This extension has both options_page and options_ui specified. The
|
| + // options_ui key should take precedence.
|
| + extension = LoadAndExpectSuccess("options_ui_page_with_legacy_page.json");
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| +
|
| + return testing::AssertionSuccess();
|
| + }
|
| +
|
| + // Tests how the options_page manifest key affects the open-in-tab and
|
| + // chromes-style behaviour.
|
| + testing::AssertionResult TestOptionsPageChromeStyleAndOpenInTab(
|
| + bool expect_open_in_tab) {
|
| + scoped_refptr<Extension> extension =
|
| + LoadAndExpectSuccess("init_valid_options.json");
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| + if (expect_open_in_tab) {
|
| + EXPECT_TRUE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| + } else {
|
| + EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| + }
|
| + return testing::AssertionSuccess();
|
| + }
|
| };
|
|
|
| TEST_F(OptionsPageManifestTest, OptionsPageInApps) {
|
| @@ -65,61 +114,29 @@ TEST_F(OptionsPageManifestTest, OptionsUIPage) {
|
| RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_WARNING);
|
| }
|
|
|
| -// Tests for the options_ui.chrome_style and options_ui.open_in_tab fields with
|
| -// the flag enabled. This makes open_in_tab default to true if unspecified.
|
| +// Runs TestOptionsUIChromeStyleAndOpenInTab with and without the
|
| +// embedded-extension-options flag. The results should always be the same.
|
| TEST_F(OptionsPageManifestTest, OptionsUIChromeStyleAndOpenInTab) {
|
| - FeatureSwitch::ScopedOverride enable_flag(
|
| - FeatureSwitch::embedded_extension_options(), true);
|
| -
|
| - // Explicitly specifying true in the manifest for options_ui.chrome_style and
|
| - // options_ui.open_in_tab sets them both to true.
|
| - scoped_refptr<Extension> extension =
|
| - LoadAndExpectSuccess("options_ui_flags_true.json");
|
| - EXPECT_TRUE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_TRUE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| -
|
| - // Explicitly specifying false in the manifest for options_ui.chrome_style
|
| - // and options_ui.open_in_tab sets them both to false.
|
| - extension = LoadAndExpectSuccess("options_ui_flags_false.json");
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| -
|
| - // Specifying an options_ui key but neither options_ui.chrome_style nor
|
| - // options_ui.open_in_tab uses the default values: false for open-in-tab,
|
| - // false for use-chrome-style.
|
| - extension = LoadAndExpectSuccess("options_ui_page_basic.json");
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| -
|
| - // Likewise specifying no options_ui key at all.
|
| - extension = LoadAndExpectSuccess("init_valid_options.json");
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| + ASSERT_FALSE(FeatureSwitch::embedded_extension_options()->IsEnabled());
|
| + EXPECT_TRUE(TestOptionsUIChromeStyleAndOpenInTab());
|
| + {
|
| + FeatureSwitch::ScopedOverride enable_flag(
|
| + FeatureSwitch::embedded_extension_options(), true);
|
| + EXPECT_TRUE(TestOptionsUIChromeStyleAndOpenInTab());
|
| + }
|
| }
|
|
|
| -// Tests for the options_ui.chrome_style and options_ui.open_in_tab fields when
|
| -// the flag for embedded extension options is turned off. This makes
|
| -// open_in_tab default to false.
|
| -TEST_F(OptionsPageManifestTest, OptionsUIChromeStyleAndOpenInTabNoFlag) {
|
| +// Runs TestOptionsPageChromeStyleAndOpenInTab with and without the
|
| +// embedded-extension-options flag. The default value of open-in-tab differs
|
| +// depending on the flag's value.
|
| +TEST_F(OptionsPageManifestTest, OptionsPageChromeStyleAndOpenInTab) {
|
| ASSERT_FALSE(FeatureSwitch::embedded_extension_options()->IsEnabled());
|
| -
|
| - // These conditions are the same as OptionsUIChromeStyleAndOpenInTab, except
|
| - // when the flag is off the default for open-in-tab is true.
|
| -
|
| - scoped_refptr<Extension> extension =
|
| - LoadAndExpectSuccess("options_ui_flags_true.json");
|
| - EXPECT_TRUE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_TRUE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| -
|
| - extension = LoadAndExpectSuccess("options_ui_flags_false.json");
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| -
|
| - extension = LoadAndExpectSuccess("options_ui_page_basic.json");
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_TRUE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| -
|
| - extension = LoadAndExpectSuccess("init_valid_options.json");
|
| - EXPECT_FALSE(OptionsPageInfo::ShouldUseChromeStyle(extension.get()));
|
| - EXPECT_TRUE(OptionsPageInfo::ShouldOpenInTab(extension.get()));
|
| + EXPECT_TRUE(TestOptionsPageChromeStyleAndOpenInTab(true));
|
| + {
|
| + FeatureSwitch::ScopedOverride enable_flag(
|
| + FeatureSwitch::embedded_extension_options(), true);
|
| + EXPECT_TRUE(TestOptionsPageChromeStyleAndOpenInTab(false));
|
| + }
|
| }
|
| +
|
| +} // namespace
|
|
|