| Index: chrome/browser/apps/ephemeral_app_launcher_browsertest.cc
|
| diff --git a/chrome/browser/apps/ephemeral_app_launcher_browsertest.cc b/chrome/browser/apps/ephemeral_app_launcher_browsertest.cc
|
| index dcb1a7396795ee54aa68d8002e58c7d131ab9ede..23c6a7b5e45a9e7135c7593ab381cb1203cbf70b 100644
|
| --- a/chrome/browser/apps/ephemeral_app_launcher_browsertest.cc
|
| +++ b/chrome/browser/apps/ephemeral_app_launcher_browsertest.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "base/message_loop/message_loop_proxy.h"
|
| #include "chrome/browser/apps/ephemeral_app_launcher.h"
|
| +#include "chrome/browser/apps/ephemeral_app_service.h"
|
| #include "chrome/browser/extensions/extension_install_checker.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/extensions/extension_test_message_listener.h"
|
| @@ -19,6 +20,7 @@
|
| #include "extensions/browser/extension_system.h"
|
| #include "extensions/browser/extension_util.h"
|
| #include "extensions/browser/management_policy.h"
|
| +#include "extensions/common/switches.h"
|
|
|
| using extensions::Extension;
|
| using extensions::ExtensionPrefs;
|
| @@ -193,10 +195,23 @@ class EphemeralAppLauncherTest : public WebstoreInstallerTest {
|
| virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
|
| WebstoreInstallerTest::SetUpCommandLine(command_line);
|
|
|
| + // Make event pages get suspended immediately.
|
| + command_line->AppendSwitchASCII(extensions::switches::kEventPageIdleTime,
|
| + "10");
|
| + command_line->AppendSwitchASCII(
|
| + extensions::switches::kEventPageSuspendingTime, "10");
|
| +
|
| // Enable ephemeral apps flag.
|
| command_line->AppendSwitch(switches::kEnableEphemeralApps);
|
| }
|
|
|
| + virtual void SetUpOnMainThread() OVERRIDE {
|
| + WebstoreInstallerTest::SetUpOnMainThread();
|
| +
|
| + // Unload ephemeral apps immediately after they stop running in tests.
|
| + EphemeralAppService::Get(profile())->set_unload_delay_for_test(0);
|
| + }
|
| +
|
| base::FilePath GetTestPath(const char* test_name) {
|
| return test_data_dir_.AppendASCII("platform_apps/ephemeral_launcher")
|
| .AppendASCII(test_name);
|
| @@ -261,11 +276,6 @@ class EphemeralAppLauncherTest : public WebstoreInstallerTest {
|
| if (!app)
|
| return NULL;
|
|
|
| - if (disable_reason == Extension::DISABLE_GREYLIST) {
|
| - ExtensionPrefs::Get(profile())->SetExtensionBlacklistState(
|
| - app->id(), extensions::BLACKLISTED_MALWARE);
|
| - }
|
| -
|
| ExtensionService* service =
|
| ExtensionSystem::Get(profile())->extension_service();
|
| service->DisableExtension(app->id(), disable_reason);
|
| @@ -277,8 +287,8 @@ class EphemeralAppLauncherTest : public WebstoreInstallerTest {
|
| ->SetDidExtensionEscalatePermissions(app, true);
|
| }
|
|
|
| - EXPECT_FALSE(
|
| - ExtensionRegistry::Get(profile())->enabled_extensions().Contains(
|
| + EXPECT_TRUE(
|
| + ExtensionRegistry::Get(profile())->disabled_extensions().Contains(
|
| app->id()));
|
| return app;
|
| }
|
| @@ -304,6 +314,10 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTestDisabled, FeatureDisabled) {
|
| // ephemerally and launched without prompting the user.
|
| IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest,
|
| LaunchAppWithNoPermissionWarnings) {
|
| + content::WindowedNotificationObserver unloaded_signal(
|
| + chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
|
| + content::Source<Profile>(profile()));
|
| +
|
| scoped_refptr<EphemeralAppLauncherForTest> launcher(
|
| new EphemeralAppLauncherForTest(kDefaultAppId, profile()));
|
| StartLauncherAndCheckResult(launcher.get(), webstore_install::SUCCESS, true);
|
| @@ -312,6 +326,9 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest,
|
| // Apps with no permission warnings should not result in a prompt.
|
| EXPECT_FALSE(launcher->install_prompt_created());
|
|
|
| + // Ephemeral apps are unloaded after they stop running.
|
| + unloaded_signal.Wait();
|
| +
|
| // After an app has been installed ephemerally, it can be launched again
|
| // without installing from the web store.
|
| RunLaunchTest(kDefaultAppId, webstore_install::SUCCESS, false);
|
| @@ -502,10 +519,16 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, LaunchAppBlockedByPolicy) {
|
|
|
| // Verifies that an installed blacklisted app cannot be launched.
|
| IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, LaunchBlacklistedApp) {
|
| - const Extension* app =
|
| - InstallAndDisableApp(kDefaultAppTestPath, Extension::DISABLE_GREYLIST);
|
| + const Extension* app = InstallExtension(GetTestPath(kDefaultAppTestPath), 1);
|
| ASSERT_TRUE(app);
|
|
|
| + ExtensionService* service =
|
| + ExtensionSystem::Get(profile())->extension_service();
|
| + service->BlacklistExtensionForTest(app->id());
|
| + ASSERT_TRUE(
|
| + ExtensionRegistry::Get(profile())->blacklisted_extensions().Contains(
|
| + app->id()));
|
| +
|
| RunLaunchTest(app->id(), webstore_install::BLACKLISTED, false);
|
| }
|
|
|
|
|