| 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
|
| deleted file mode 100644
|
| index 63e6bc966862ab7fd025b71c5424d918c48ee44b..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/apps/ephemeral_app_launcher_browsertest.cc
|
| +++ /dev/null
|
| @@ -1,563 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/thread_task_runner_handle.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/install_tracker.h"
|
| -#include "chrome/browser/extensions/test_blacklist.h"
|
| -#include "chrome/browser/extensions/webstore_installer_test.h"
|
| -#include "chrome/browser/ui/browser_finder.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "content/public/test/test_utils.h"
|
| -#include "extensions/browser/extension_prefs.h"
|
| -#include "extensions/browser/extension_registry.h"
|
| -#include "extensions/browser/extension_system.h"
|
| -#include "extensions/browser/extension_util.h"
|
| -#include "extensions/browser/management_policy.h"
|
| -#include "extensions/browser/process_manager.h"
|
| -#include "extensions/browser/test_extension_registry_observer.h"
|
| -#include "extensions/test/extension_test_message_listener.h"
|
| -
|
| -using extensions::Extension;
|
| -using extensions::ExtensionPrefs;
|
| -using extensions::ExtensionRegistry;
|
| -using extensions::ExtensionSystem;
|
| -using extensions::InstallTracker;
|
| -namespace webstore_install = extensions::webstore_install;
|
| -
|
| -namespace {
|
| -
|
| -const char kWebstoreDomain[] = "cws.com";
|
| -const char kAppDomain[] = "app.com";
|
| -const char kNonAppDomain[] = "nonapp.com";
|
| -const char kTestDataPath[] = "extensions/platform_apps/ephemeral_launcher";
|
| -
|
| -const char kExtensionId[] = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeid";
|
| -const char kExtensionTestPath[] = "extension";
|
| -const char kLegacyAppId[] = "lnbochkobjfnhbnbljgfgokadhmbahcn";
|
| -const char kLegacyAppTestPath[] = "legacy_app";
|
| -const char kNonExistentId[] = "baaaaaaaaaaaaaaaaaaaaaaaaaaaadid";
|
| -const char kDefaultAppId[] = "kbiancnbopdghkfedjhfdoegjadfjeal";
|
| -const char kDefaultAppCrxFilename[] = "app.crx";
|
| -const char kDefaultAppTestPath[] = "app";
|
| -const char kAppWithPermissionsId[] = "mbfcnecjknjpipkfkoangpfnhhlpamki";
|
| -const char kAppWithPermissionsFilename[] = "app_with_permissions.crx";
|
| -const char kHostedAppId[] = "haaaaaaaaaaaaaaaaaaaaaaaaaaappid";
|
| -const char kHostedAppLaunchUrl[] = "http://foo.bar.com";
|
| -
|
| -class ExtensionInstallCheckerMock : public extensions::ExtensionInstallChecker {
|
| - public:
|
| - ExtensionInstallCheckerMock(Profile* profile,
|
| - const std::string& requirements_error)
|
| - : extensions::ExtensionInstallChecker(profile),
|
| - requirements_error_(requirements_error) {}
|
| -
|
| - ~ExtensionInstallCheckerMock() override {}
|
| -
|
| - private:
|
| - void CheckRequirements() override {
|
| - // Simulate an asynchronous operation.
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&ExtensionInstallCheckerMock::RequirementsErrorCheckDone,
|
| - base::Unretained(this), current_sequence_number()));
|
| - }
|
| -
|
| - void RequirementsErrorCheckDone(int sequence_number) {
|
| - std::vector<std::string> errors;
|
| - errors.push_back(requirements_error_);
|
| - OnRequirementsCheckDone(sequence_number, errors);
|
| - }
|
| -
|
| - std::string requirements_error_;
|
| -};
|
| -
|
| -class EphemeralAppLauncherForTest : public EphemeralAppLauncher {
|
| - public:
|
| - EphemeralAppLauncherForTest(const std::string& id,
|
| - Profile* profile,
|
| - const LaunchCallback& callback)
|
| - : EphemeralAppLauncher(id, profile, NULL, callback),
|
| - install_initiated_(false),
|
| - install_prompt_created_(false) {}
|
| -
|
| - EphemeralAppLauncherForTest(const std::string& id, Profile* profile)
|
| - : EphemeralAppLauncher(id, profile, NULL, LaunchCallback()),
|
| - install_initiated_(false),
|
| - install_prompt_created_(false) {}
|
| -
|
| - bool install_initiated() const { return install_initiated_; }
|
| - bool install_prompt_created() const { return install_prompt_created_; }
|
| -
|
| - void set_requirements_error(const std::string& error) {
|
| - requirements_check_error_ = error;
|
| - }
|
| -
|
| - private:
|
| - // Override necessary functions for testing.
|
| -
|
| - scoped_ptr<extensions::ExtensionInstallChecker> CreateInstallChecker()
|
| - override {
|
| - if (requirements_check_error_.empty()) {
|
| - return EphemeralAppLauncher::CreateInstallChecker();
|
| - } else {
|
| - return scoped_ptr<extensions::ExtensionInstallChecker>(
|
| - new ExtensionInstallCheckerMock(profile(),
|
| - requirements_check_error_));
|
| - }
|
| - }
|
| -
|
| - scoped_ptr<ExtensionInstallPrompt> CreateInstallUI() override {
|
| - install_prompt_created_ = true;
|
| - return EphemeralAppLauncher::CreateInstallUI();
|
| - }
|
| -
|
| - scoped_ptr<extensions::WebstoreInstaller::Approval> CreateApproval()
|
| - const override {
|
| - install_initiated_ = true;
|
| - return EphemeralAppLauncher::CreateApproval();
|
| - }
|
| -
|
| - private:
|
| - ~EphemeralAppLauncherForTest() override {}
|
| - friend class base::RefCountedThreadSafe<EphemeralAppLauncherForTest>;
|
| -
|
| - mutable bool install_initiated_;
|
| - std::string requirements_check_error_;
|
| - bool install_prompt_created_;
|
| -};
|
| -
|
| -class LaunchObserver {
|
| - public:
|
| - LaunchObserver()
|
| - : done_(false),
|
| - waiting_(false),
|
| - result_(webstore_install::OTHER_ERROR) {}
|
| -
|
| - webstore_install::Result result() const { return result_; }
|
| - const std::string& error() const { return error_; }
|
| -
|
| - void OnLaunchCallback(webstore_install::Result result,
|
| - const std::string& error) {
|
| - result_ = result;
|
| - error_ = error;
|
| - done_ = true;
|
| - if (waiting_) {
|
| - waiting_ = false;
|
| - base::MessageLoopForUI::current()->Quit();
|
| - }
|
| - }
|
| -
|
| - void Wait() {
|
| - if (done_)
|
| - return;
|
| -
|
| - waiting_ = true;
|
| - content::RunMessageLoop();
|
| - }
|
| -
|
| - private:
|
| - bool done_;
|
| - bool waiting_;
|
| - webstore_install::Result result_;
|
| - std::string error_;
|
| -};
|
| -
|
| -class ManagementPolicyMock : public extensions::ManagementPolicy::Provider {
|
| - public:
|
| - ManagementPolicyMock() {}
|
| -
|
| - std::string GetDebugPolicyProviderName() const override {
|
| - return "ManagementPolicyMock";
|
| - }
|
| -
|
| - bool UserMayLoad(const Extension* extension,
|
| - base::string16* error) const override {
|
| - return false;
|
| - }
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -class EphemeralAppLauncherTest : public WebstoreInstallerTest {
|
| - public:
|
| - EphemeralAppLauncherTest()
|
| - : WebstoreInstallerTest(kWebstoreDomain,
|
| - kTestDataPath,
|
| - kDefaultAppCrxFilename,
|
| - kAppDomain,
|
| - kNonAppDomain) {}
|
| -
|
| - void SetUpCommandLine(base::CommandLine* command_line) override {
|
| - WebstoreInstallerTest::SetUpCommandLine(command_line);
|
| -
|
| - // Make event pages get suspended immediately.
|
| - extensions::ProcessManager::SetEventPageIdleTimeForTesting(1);
|
| - extensions::ProcessManager::SetEventPageSuspendingTimeForTesting(1);
|
| -
|
| - // Enable ephemeral apps flag.
|
| - command_line->AppendSwitch(switches::kEnableEphemeralAppsInWebstore);
|
| - }
|
| -
|
| - void SetUpOnMainThread() override {
|
| - WebstoreInstallerTest::SetUpOnMainThread();
|
| -
|
| - // Disable ephemeral apps immediately after they stop running in tests.
|
| - EphemeralAppService::Get(profile())->set_disable_delay_for_test(0);
|
| - }
|
| -
|
| - base::FilePath GetTestPath(const char* test_name) {
|
| - return test_data_dir_.AppendASCII("platform_apps/ephemeral_launcher")
|
| - .AppendASCII(test_name);
|
| - }
|
| -
|
| - const Extension* GetInstalledExtension(const std::string& id) {
|
| - return ExtensionRegistry::Get(profile())
|
| - ->GetExtensionById(id, ExtensionRegistry::EVERYTHING);
|
| - }
|
| -
|
| - void SetCrxFilename(const std::string& filename) {
|
| - GURL crx_url = GenerateTestServerUrl(kWebstoreDomain, filename);
|
| - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| - switches::kAppsGalleryUpdateURL, crx_url.spec());
|
| - }
|
| -
|
| - void StartLauncherAndCheckResult(EphemeralAppLauncherForTest* launcher,
|
| - webstore_install::Result expected_result,
|
| - bool expect_install_initiated) {
|
| - ExtensionTestMessageListener launched_listener("launched", false);
|
| - LaunchObserver launch_observer;
|
| -
|
| - launcher->launch_callback_ = base::Bind(&LaunchObserver::OnLaunchCallback,
|
| - base::Unretained(&launch_observer));
|
| - launcher->Start();
|
| - launch_observer.Wait();
|
| -
|
| - // Verify the launch result.
|
| - EXPECT_EQ(expected_result, launch_observer.result());
|
| - EXPECT_EQ(expect_install_initiated, launcher->install_initiated());
|
| -
|
| - // Verify that the app was actually launched if the launcher succeeded.
|
| - if (launch_observer.result() == webstore_install::SUCCESS)
|
| - EXPECT_TRUE(launched_listener.WaitUntilSatisfied());
|
| - else
|
| - EXPECT_FALSE(launched_listener.was_satisfied());
|
| -
|
| - // Check the reference count to ensure the launcher instance will not be
|
| - // leaked.
|
| - EXPECT_TRUE(launcher->HasOneRef());
|
| - }
|
| -
|
| - void RunLaunchTest(const std::string& id,
|
| - webstore_install::Result expected_result,
|
| - bool expect_install_initiated) {
|
| - InstallTracker* tracker = InstallTracker::Get(profile());
|
| - ASSERT_TRUE(tracker);
|
| - bool was_install_active = !!tracker->GetActiveInstall(id);
|
| -
|
| - scoped_refptr<EphemeralAppLauncherForTest> launcher(
|
| - new EphemeralAppLauncherForTest(id, profile()));
|
| - StartLauncherAndCheckResult(
|
| - launcher.get(), expected_result, expect_install_initiated);
|
| -
|
| - // Verify that the install was deregistered from the InstallTracker.
|
| - EXPECT_EQ(was_install_active, !!tracker->GetActiveInstall(id));
|
| - }
|
| -
|
| - void ValidateAppInstalledEphemerally(const std::string& id) {
|
| - EXPECT_TRUE(GetInstalledExtension(id));
|
| - EXPECT_TRUE(extensions::util::IsEphemeralApp(id, profile()));
|
| - }
|
| -
|
| - const Extension* InstallAndDisableApp(
|
| - const char* test_path,
|
| - Extension::DisableReason disable_reason) {
|
| - const Extension* app = InstallExtension(GetTestPath(test_path), 1);
|
| - EXPECT_TRUE(app);
|
| - if (!app)
|
| - return NULL;
|
| -
|
| - ExtensionService* service =
|
| - ExtensionSystem::Get(profile())->extension_service();
|
| - service->DisableExtension(app->id(), disable_reason);
|
| -
|
| - EXPECT_TRUE(
|
| - ExtensionRegistry::Get(profile())->disabled_extensions().Contains(
|
| - app->id()));
|
| - return app;
|
| - }
|
| -};
|
| -
|
| -class EphemeralAppLauncherTestDisabled : public EphemeralAppLauncherTest {
|
| - public:
|
| - void SetUpCommandLine(base::CommandLine* command_line) override {
|
| - // Skip EphemeralAppLauncherTest as it enables the feature.
|
| - WebstoreInstallerTest::SetUpCommandLine(command_line);
|
| - }
|
| -};
|
| -
|
| -// Verifies that an ephemeral app will not be installed and launched if the
|
| -// feature is disabled.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTestDisabled, FeatureDisabled) {
|
| - RunLaunchTest(
|
| - kDefaultAppCrxFilename, webstore_install::LAUNCH_FEATURE_DISABLED, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kDefaultAppId));
|
| -}
|
| -
|
| -// Verifies that an app with no permission warnings will be installed
|
| -// ephemerally and launched without prompting the user.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest,
|
| - LaunchAppWithNoPermissionWarnings) {
|
| - extensions::TestExtensionRegistryObserver observer(
|
| - ExtensionRegistry::Get(profile()));
|
| -
|
| - scoped_refptr<EphemeralAppLauncherForTest> launcher(
|
| - new EphemeralAppLauncherForTest(kDefaultAppId, profile()));
|
| - StartLauncherAndCheckResult(launcher.get(), webstore_install::SUCCESS, true);
|
| - ValidateAppInstalledEphemerally(kDefaultAppId);
|
| -
|
| - // 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.
|
| - observer.WaitForExtensionUnloaded();
|
| -
|
| - // After an app has been installed ephemerally, it can be launched again
|
| - // without installing from the web store.
|
| - RunLaunchTest(kDefaultAppId, webstore_install::SUCCESS, false);
|
| -}
|
| -
|
| -// Verifies that an app with permission warnings will be installed
|
| -// ephemerally and launched if accepted by the user.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest,
|
| - LaunchAppWithPermissionsWarnings) {
|
| - SetCrxFilename(kAppWithPermissionsFilename);
|
| - AutoAcceptInstall();
|
| -
|
| - scoped_refptr<EphemeralAppLauncherForTest> launcher(
|
| - new EphemeralAppLauncherForTest(kAppWithPermissionsId, profile()));
|
| - StartLauncherAndCheckResult(launcher.get(), webstore_install::SUCCESS, true);
|
| - ValidateAppInstalledEphemerally(kAppWithPermissionsId);
|
| - EXPECT_TRUE(launcher->install_prompt_created());
|
| -}
|
| -
|
| -// Verifies that an app with permission warnings will not be installed
|
| -// ephemerally if cancelled by the user.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest,
|
| - CancelInstallAppWithPermissionWarnings) {
|
| - SetCrxFilename(kAppWithPermissionsFilename);
|
| - AutoCancelInstall();
|
| -
|
| - scoped_refptr<EphemeralAppLauncherForTest> launcher(
|
| - new EphemeralAppLauncherForTest(kAppWithPermissionsId, profile()));
|
| - StartLauncherAndCheckResult(
|
| - launcher.get(), webstore_install::USER_CANCELLED, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kAppWithPermissionsId));
|
| - EXPECT_TRUE(launcher->install_prompt_created());
|
| -}
|
| -
|
| -// Verifies that an extension will not be installed ephemerally.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, InstallExtension) {
|
| - RunLaunchTest(
|
| - kExtensionId, webstore_install::LAUNCH_UNSUPPORTED_EXTENSION_TYPE, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kExtensionId));
|
| -}
|
| -
|
| -// Verifies that an already installed extension will not be launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, LaunchExtension) {
|
| - const Extension* extension =
|
| - InstallExtension(GetTestPath(kExtensionTestPath), 1);
|
| - ASSERT_TRUE(extension);
|
| - RunLaunchTest(extension->id(),
|
| - webstore_install::LAUNCH_UNSUPPORTED_EXTENSION_TYPE,
|
| - false);
|
| -}
|
| -
|
| -// Verifies that a legacy packaged app will not be installed ephemerally.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, InstallLegacyApp) {
|
| - RunLaunchTest(
|
| - kLegacyAppId, webstore_install::LAUNCH_UNSUPPORTED_EXTENSION_TYPE, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kLegacyAppId));
|
| -}
|
| -
|
| -// Verifies that a legacy packaged app that is already installed can be
|
| -// launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, LaunchLegacyApp) {
|
| - const Extension* extension =
|
| - InstallExtension(GetTestPath(kLegacyAppTestPath), 1);
|
| - ASSERT_TRUE(extension);
|
| - RunLaunchTest(extension->id(), webstore_install::SUCCESS, false);
|
| -}
|
| -
|
| -// Verifies that a hosted app is not installed. Launch succeeds because we
|
| -// navigate to its launch url.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, LaunchHostedApp) {
|
| - LaunchObserver launch_observer;
|
| -
|
| - scoped_refptr<EphemeralAppLauncherForTest> launcher(
|
| - new EphemeralAppLauncherForTest(
|
| - kHostedAppId,
|
| - profile(),
|
| - base::Bind(&LaunchObserver::OnLaunchCallback,
|
| - base::Unretained(&launch_observer))));
|
| - launcher->Start();
|
| - launch_observer.Wait();
|
| -
|
| - EXPECT_EQ(webstore_install::SUCCESS, launch_observer.result());
|
| - EXPECT_FALSE(launcher->install_initiated());
|
| - EXPECT_FALSE(GetInstalledExtension(kHostedAppId));
|
| -
|
| - // Verify that a navigation to the launch url was attempted.
|
| - Browser* browser =
|
| - FindBrowserWithProfile(profile(), chrome::GetActiveDesktop());
|
| - ASSERT_TRUE(browser);
|
| - content::WebContents* web_contents =
|
| - browser->tab_strip_model()->GetActiveWebContents();
|
| - ASSERT_TRUE(web_contents);
|
| - EXPECT_EQ(GURL(kHostedAppLaunchUrl), web_contents->GetVisibleURL());
|
| -}
|
| -
|
| -// Verifies that the EphemeralAppLauncher handles non-existent extension ids.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, NonExistentExtensionId) {
|
| - RunLaunchTest(
|
| - kNonExistentId, webstore_install::WEBSTORE_REQUEST_ERROR, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kNonExistentId));
|
| -}
|
| -
|
| -// Verifies that an app blocked by management policy is not installed
|
| -// ephemerally.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, BlockedByPolicy) {
|
| - // Register a provider that blocks the installation of all apps.
|
| - ManagementPolicyMock policy;
|
| - ExtensionSystem::Get(profile())->management_policy()->RegisterProvider(
|
| - &policy);
|
| -
|
| - RunLaunchTest(kDefaultAppId, webstore_install::BLOCKED_BY_POLICY, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kDefaultAppId));
|
| -}
|
| -
|
| -// The blacklist relies on safe-browsing database infrastructure.
|
| -#if defined(SAFE_BROWSING_DB_LOCAL)
|
| -// Verifies that an app blacklisted for malware is not installed ephemerally.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, BlacklistedForMalware) {
|
| - // Mock a BLACKLISTED_MALWARE return status.
|
| - extensions::TestBlacklist blacklist_tester(
|
| - extensions::Blacklist::Get(profile()));
|
| - blacklist_tester.SetBlacklistState(
|
| - kDefaultAppId, extensions::BLACKLISTED_MALWARE, false);
|
| -
|
| - RunLaunchTest(kDefaultAppId, webstore_install::BLACKLISTED, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kDefaultAppId));
|
| -}
|
| -
|
| -// Verifies that an app with unknown blacklist status is installed ephemerally
|
| -// and launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, BlacklistStateUnknown) {
|
| - // Mock a BLACKLISTED_MALWARE return status.
|
| - extensions::TestBlacklist blacklist_tester(
|
| - extensions::Blacklist::Get(profile()));
|
| - blacklist_tester.SetBlacklistState(
|
| - kDefaultAppId, extensions::BLACKLISTED_UNKNOWN, false);
|
| -
|
| - RunLaunchTest(kDefaultAppId, webstore_install::SUCCESS, true);
|
| - ValidateAppInstalledEphemerally(kDefaultAppId);
|
| -}
|
| -#endif
|
| -
|
| -// Verifies that an app with unsupported requirements is not installed
|
| -// ephemerally.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, UnsupportedRequirements) {
|
| - scoped_refptr<EphemeralAppLauncherForTest> launcher(
|
| - new EphemeralAppLauncherForTest(kDefaultAppId, profile()));
|
| - launcher->set_requirements_error("App has unsupported requirements");
|
| -
|
| - StartLauncherAndCheckResult(
|
| - launcher.get(), webstore_install::REQUIREMENT_VIOLATIONS, false);
|
| - EXPECT_FALSE(GetInstalledExtension(kDefaultAppId));
|
| -}
|
| -
|
| -// Verifies that an app disabled due to permissions increase can be enabled
|
| -// and launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, EnableAndLaunchApp) {
|
| - const Extension* app = InstallAndDisableApp(
|
| - kDefaultAppTestPath, Extension::DISABLE_PERMISSIONS_INCREASE);
|
| - ASSERT_TRUE(app);
|
| -
|
| - AutoAcceptInstall();
|
| - RunLaunchTest(app->id(), webstore_install::SUCCESS, false);
|
| -}
|
| -
|
| -// Verifies that if the user cancels the enable flow, the app will not be
|
| -// enabled and launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, EnableCancelled) {
|
| - const Extension* app = InstallAndDisableApp(
|
| - kDefaultAppTestPath, Extension::DISABLE_PERMISSIONS_INCREASE);
|
| - ASSERT_TRUE(app);
|
| -
|
| - AutoCancelInstall();
|
| - RunLaunchTest(app->id(), webstore_install::USER_CANCELLED, false);
|
| -}
|
| -
|
| -// Verifies that an installed app that had been blocked by policy cannot be
|
| -// launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, LaunchAppBlockedByPolicy) {
|
| - const Extension* app = InstallExtension(GetTestPath(kDefaultAppTestPath), 1);
|
| - ASSERT_TRUE(app);
|
| -
|
| - // Simulate blocking of the app after it has been installed.
|
| - ManagementPolicyMock policy;
|
| - ExtensionSystem::Get(profile())->management_policy()->RegisterProvider(
|
| - &policy);
|
| - ExtensionSystem::Get(profile())->extension_service()->CheckManagementPolicy();
|
| -
|
| - RunLaunchTest(app->id(), webstore_install::BLOCKED_BY_POLICY, false);
|
| -}
|
| -
|
| -// Verifies that an installed blacklisted app cannot be launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, LaunchBlacklistedApp) {
|
| - 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);
|
| -}
|
| -
|
| -// Verifies that an installed app with unsupported requirements cannot be
|
| -// launched.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest,
|
| - LaunchAppWithUnsupportedRequirements) {
|
| - const Extension* app = InstallAndDisableApp(
|
| - kDefaultAppTestPath, Extension::DISABLE_UNSUPPORTED_REQUIREMENT);
|
| - ASSERT_TRUE(app);
|
| -
|
| - RunLaunchTest(app->id(), webstore_install::REQUIREMENT_VIOLATIONS, false);
|
| -}
|
| -
|
| -// Verifies that a launch will fail if the app is currently being installed.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, InstallInProgress) {
|
| - extensions::ActiveInstallData install_data(kDefaultAppId);
|
| - InstallTracker::Get(profile())->AddActiveInstall(install_data);
|
| -
|
| - RunLaunchTest(kDefaultAppId, webstore_install::INSTALL_IN_PROGRESS, false);
|
| -}
|
| -
|
| -// Verifies that a launch will fail if a duplicate launch is in progress.
|
| -IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, DuplicateLaunchInProgress) {
|
| - extensions::ActiveInstallData install_data(kDefaultAppId);
|
| - install_data.is_ephemeral = true;
|
| - InstallTracker::Get(profile())->AddActiveInstall(install_data);
|
| -
|
| - RunLaunchTest(kDefaultAppId, webstore_install::LAUNCH_IN_PROGRESS, false);
|
| -}
|
|
|