| Index: chrome/browser/extensions/crx_installer_browsertest.cc
|
| diff --git a/chrome/browser/extensions/crx_installer_browsertest.cc b/chrome/browser/extensions/crx_installer_browsertest.cc
|
| index 45b651f616dfd877d7cf7239010ef893c057b089..093311d66b7cad1644be9300c68a34980596fa3d 100644
|
| --- a/chrome/browser/extensions/crx_installer_browsertest.cc
|
| +++ b/chrome/browser/extensions/crx_installer_browsertest.cc
|
| @@ -203,24 +203,6 @@ class ManagementPolicyMock : public extensions::ManagementPolicy::Provider {
|
| }
|
| };
|
|
|
| -// Appends "enable-experimental-extension-apis" to the command line for the
|
| -// lifetime of this class.
|
| -class ScopedExperimentalCommandLine {
|
| - public:
|
| - ScopedExperimentalCommandLine()
|
| - : saved_(*base::CommandLine::ForCurrentProcess()) {
|
| - base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| - switches::kEnableExperimentalExtensionApis);
|
| - }
|
| -
|
| - ~ScopedExperimentalCommandLine() {
|
| - *base::CommandLine::ForCurrentProcess() = saved_;
|
| - }
|
| -
|
| - private:
|
| - base::CommandLine saved_;
|
| -};
|
| -
|
| } // namespace
|
|
|
| class ExtensionCrxInstallerTest : public ExtensionBrowserTest {
|
| @@ -279,8 +261,6 @@ class ExtensionCrxInstallerTest : public ExtensionBrowserTest {
|
| // |record_oauth2_grant| is true.
|
| void CheckHasEmptyScopesAfterInstall(const std::string& ext_relpath,
|
| bool record_oauth2_grant) {
|
| - ScopedExperimentalCommandLine scope;
|
| -
|
| scoped_ptr<MockPromptProxy> mock_prompt =
|
| CreateMockPromptProxyForBrowser(browser());
|
|
|
| @@ -292,18 +272,6 @@ class ExtensionCrxInstallerTest : public ExtensionBrowserTest {
|
| ASSERT_TRUE(permissions.get());
|
| }
|
|
|
| - // Returns a FilePath to an unpacked "experimental" extension (a test
|
| - // Extension which requests the "experimental" permission).
|
| - base::FilePath PackExperimentalExtension() {
|
| - // We must modify the command line temporarily in order to pack an
|
| - // extension that requests the experimental permission.
|
| - ScopedExperimentalCommandLine scope;
|
| - base::FilePath test_path = test_data_dir_.AppendASCII("experimental");
|
| - base::FilePath crx_path = PackExtension(test_path);
|
| - CHECK(!crx_path.empty()) << "Extension not found at " << test_path.value();
|
| - return crx_path;
|
| - }
|
| -
|
| void InstallWebAppAndVerifyNoErrors() {
|
| ExtensionService* service =
|
| extensions::ExtensionSystem::Get(browser()->profile())
|
| @@ -328,6 +296,15 @@ class ExtensionCrxInstallerTest : public ExtensionBrowserTest {
|
| }
|
| };
|
|
|
| +class ExtensionCrxInstallerTestWithExperimentalApis
|
| + : public ExtensionCrxInstallerTest {
|
| + protected:
|
| + void SetUpCommandLine(base::CommandLine* command_line) override {
|
| + ExtensionCrxInstallerTest::SetUpCommandLine(command_line);
|
| + command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis);
|
| + }
|
| +};
|
| +
|
| // This test is skipped on ChromeOS because it requires the NPAPI,
|
| // which is not available on that platform.
|
| #if !defined(OS_CHROMEOS)
|
| @@ -349,8 +326,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest,
|
| ExperimentalExtensionFromGallery) {
|
| // Gallery-installed extensions should have their experimental permission
|
| // preserved, since we allow the Webstore to make that decision.
|
| - base::FilePath crx_path = PackExperimentalExtension();
|
| - const Extension* extension = InstallExtensionFromWebstore(crx_path, 1);
|
| + const Extension* extension = InstallExtensionFromWebstore(
|
| + test_data_dir_.AppendASCII("experimental.crx"), 1);
|
| ASSERT_TRUE(extension);
|
| EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
|
| APIPermission::kExperimental));
|
| @@ -360,27 +337,26 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest,
|
| ExperimentalExtensionFromOutsideGallery) {
|
| // Non-gallery-installed extensions should lose their experimental
|
| // permission if the flag isn't enabled.
|
| - base::FilePath crx_path = PackExperimentalExtension();
|
| - const Extension* extension = InstallExtension(crx_path, 1);
|
| + const Extension* extension = InstallExtension(
|
| + test_data_dir_.AppendASCII("experimental.crx"), 1);
|
| ASSERT_TRUE(extension);
|
| EXPECT_FALSE(extension->permissions_data()->HasAPIPermission(
|
| APIPermission::kExperimental));
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest,
|
| +IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTestWithExperimentalApis,
|
| ExperimentalExtensionFromOutsideGalleryWithFlag) {
|
| // Non-gallery-installed extensions should maintain their experimental
|
| // permission if the flag is enabled.
|
| - base::FilePath crx_path = PackExperimentalExtension();
|
| - ScopedExperimentalCommandLine scope;
|
| - const Extension* extension = InstallExtension(crx_path, 1);
|
| + const Extension* extension = InstallExtension(
|
| + test_data_dir_.AppendASCII("experimental.crx"), 1);
|
| ASSERT_TRUE(extension);
|
| EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
|
| APIPermission::kExperimental));
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, PlatformAppCrx) {
|
| - ScopedExperimentalCommandLine scope;
|
| +IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTestWithExperimentalApis,
|
| + PlatformAppCrx) {
|
| EXPECT_TRUE(InstallExtension(
|
| test_data_dir_.AppendASCII("minimal_platform_app.crx"), 1));
|
| }
|
| @@ -429,12 +405,14 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, PackAndInstallExtension) {
|
| #else
|
| #define MAYBE_GrantScopes GrantScopes
|
| #endif
|
| -IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, MAYBE_GrantScopes) {
|
| +IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTestWithExperimentalApis,
|
| + MAYBE_GrantScopes) {
|
| EXPECT_NO_FATAL_FAILURE(CheckHasEmptyScopesAfterInstall("browsertest/scopes",
|
| true));
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTest, DoNotGrantScopes) {
|
| +IN_PROC_BROWSER_TEST_F(ExtensionCrxInstallerTestWithExperimentalApis,
|
| + DoNotGrantScopes) {
|
| EXPECT_NO_FATAL_FAILURE(CheckHasEmptyScopesAfterInstall("browsertest/scopes",
|
| false));
|
| }
|
|
|