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..5f60409599266210a40787a3fa2a119320391aa3 100644 |
--- a/chrome/browser/apps/ephemeral_app_launcher_browsertest.cc |
+++ b/chrome/browser/apps/ephemeral_app_launcher_browsertest.cc |
@@ -7,6 +7,7 @@ |
#include "chrome/browser/extensions/extension_install_checker.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_test_message_listener.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" |
@@ -24,6 +25,7 @@ using extensions::Extension; |
using extensions::ExtensionPrefs; |
using extensions::ExtensionRegistry; |
using extensions::ExtensionSystem; |
+using extensions::InstallTracker; |
namespace webstore_install = extensions::webstore_install; |
namespace { |
@@ -242,10 +244,17 @@ class EphemeralAppLauncherTest : public WebstoreInstallerTest { |
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) { |
@@ -519,3 +528,20 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppLauncherTest, |
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); |
+} |