kiosk: Ensure launching latest version.
- Add a install_immediately flag to ExternalProviderImpl;
- Set install_immediately flag to true for kiosk app provider
so that updated app install is not delayed;
- Set auto acknowledge since kiosk should not show external
install alert;
BUG=461419
Review URL: https://codereview.chromium.org/974713002
Cr-Commit-Position: refs/heads/master@{#319005}
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 0e9e757..3b0a8b3 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -270,7 +270,7 @@
visitor_->OnExternalExtensionFileFound(
i->first, &version, i->second.second, location_,
- Extension::NO_FLAGS, false);
+ Extension::NO_FLAGS, false, false);
}
visitor_->OnExternalProviderReady(this);
}
@@ -377,7 +377,8 @@
const base::FilePath& path,
Manifest::Location unused,
int creation_flags,
- bool mark_acknowledged) override {
+ bool mark_acknowledged,
+ bool install_immediately) override {
EXPECT_EQ(expected_creation_flags_, creation_flags);
++ids_found_;
@@ -1564,12 +1565,14 @@
content::WindowedNotificationObserver observer(
extensions::NOTIFICATION_CRX_INSTALLER_DONE,
content::NotificationService::AllSources());
- if (service()->OnExternalExtensionFileFound(good_crx,
- &version,
- path,
- Manifest::EXTERNAL_PREF,
- Extension::FROM_BOOKMARK,
- false /* mark_acknowledged */)) {
+ if (service()->OnExternalExtensionFileFound(
+ good_crx,
+ &version,
+ path,
+ Manifest::EXTERNAL_PREF,
+ Extension::FROM_BOOKMARK,
+ false /* mark_acknowledged */,
+ false /* install_immediately */)) {
observer.Wait();
}
@@ -1604,6 +1607,7 @@
path,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false)) {
observer.Wait();
}
@@ -1621,6 +1625,7 @@
path,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false);
base::RunLoop().RunUntilIdle();
ASSERT_TRUE(NULL == service()->GetExtensionById(good_crx, false));
@@ -1635,6 +1640,7 @@
path,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false);
base::RunLoop().RunUntilIdle();
ASSERT_TRUE(NULL == service()->GetExtensionById(good_crx, false));
@@ -1702,6 +1708,7 @@
path,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false);
observer.Wait();
@@ -1716,6 +1723,7 @@
path,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false)) {
observer2.Wait();
}
@@ -1739,6 +1747,7 @@
path,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false);
observer.Wait();
@@ -1755,6 +1764,7 @@
path,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false)) {
observer2.Wait();
}
@@ -6825,6 +6835,7 @@
const int kCreationFlags = 0;
const bool kDontMarkAcknowledged = false;
+ const bool kDontInstallImmediately = false;
InitializeEmptyExtensionService();
@@ -6852,12 +6863,14 @@
content::WindowedNotificationObserver observer(
extensions::NOTIFICATION_CRX_INSTALLER_DONE,
content::NotificationService::AllSources());
- EXPECT_TRUE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::INTERNAL,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::INTERNAL,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
observer.Wait();
VerifyCrxInstall(kInvalidPathToCrx, INSTALL_FAILED);
@@ -6868,12 +6881,14 @@
content::WindowedNotificationObserver observer(
extensions::NOTIFICATION_CRX_INSTALLER_DONE,
content::NotificationService::AllSources());
- EXPECT_TRUE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
observer.Wait();
VerifyCrxInstall(kInvalidPathToCrx, INSTALL_FAILED);
@@ -6882,21 +6897,25 @@
// Simulate an external source adding as EXTERNAL_PREF again.
// This is rejected because the version and the location are the same as
// the previous installation, which is still pending.
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
// Try INTERNAL again. Should fail.
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::INTERNAL,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::INTERNAL,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
{
@@ -6904,33 +6923,38 @@
content::WindowedNotificationObserver observer(
extensions::NOTIFICATION_CRX_INSTALLER_DONE,
content::NotificationService::AllSources());
- EXPECT_TRUE(
- service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_REGISTRY,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_REGISTRY,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
observer.Wait();
VerifyCrxInstall(kInvalidPathToCrx, INSTALL_FAILED);
}
// Registry outranks both external pref and internal, so both fail.
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::INTERNAL,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::INTERNAL,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
pending->Remove(kGoodId);
@@ -6954,70 +6978,83 @@
// older, or the same, and succeed if the version is newer.
// Older than the installed version...
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::INTERNAL,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::INTERNAL,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_FALSE(pending->IsIdPending(kGoodId));
// Same version as the installed version...
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- ext->version(),
- kInvalidPathToCrx,
- Manifest::INTERNAL,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ ext->version(),
+ kInvalidPathToCrx,
+ Manifest::INTERNAL,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_FALSE(pending->IsIdPending(kGoodId));
// Newer than the installed version...
- EXPECT_TRUE(service()->OnExternalExtensionFileFound(kGoodId,
- &newer_version,
- kInvalidPathToCrx,
- Manifest::INTERNAL,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &newer_version,
+ kInvalidPathToCrx,
+ Manifest::INTERNAL,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
// An external install for a higher priority install source should succeed
// if the version is greater. |older_version| is not...
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &older_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &older_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
// |newer_version| is newer.
- EXPECT_TRUE(service()->OnExternalExtensionFileFound(kGoodId,
- &newer_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &newer_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
// An external install for an even higher priority install source should
// succeed if the version is greater.
- EXPECT_TRUE(
- service()->OnExternalExtensionFileFound(kGoodId,
- &newer_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_REGISTRY,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &newer_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_REGISTRY,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
// Because EXTERNAL_PREF is a lower priority source than EXTERNAL_REGISTRY,
// adding from external pref will now fail.
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &newer_version,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &newer_version,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE(pending->IsIdPending(kGoodId));
}
@@ -7028,6 +7065,7 @@
const base::FilePath kInvalidPathToCrx(FILE_PATH_LITERAL("invalid_path"));
const int kCreationFlags = 0;
const bool kDontMarkAcknowledged = false;
+ const bool kDontInstallImmediately = false;
InitializeEmptyExtensionService();
@@ -7036,48 +7074,55 @@
EXPECT_FALSE(pending->IsIdPending(kGoodId));
// An external provider starts installing from a local crx.
- EXPECT_TRUE(service()->OnExternalExtensionFileFound(kGoodId,
- &kVersion123,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &kVersion123,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
const extensions::PendingExtensionInfo* info;
EXPECT_TRUE((info = pending->GetById(kGoodId)));
EXPECT_TRUE(info->version().IsValid());
EXPECT_TRUE(info->version().Equals(kVersion123));
// Adding a newer version overrides the currently pending version.
- EXPECT_TRUE(service()->OnExternalExtensionFileFound(kGoodId,
- &kVersion124,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_TRUE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &kVersion124,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE((info = pending->GetById(kGoodId)));
EXPECT_TRUE(info->version().IsValid());
EXPECT_TRUE(info->version().Equals(kVersion124));
// Adding an older version fails.
- EXPECT_FALSE(service()->OnExternalExtensionFileFound(kGoodId,
- &kVersion123,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_PREF,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &kVersion123,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_PREF,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE((info = pending->GetById(kGoodId)));
EXPECT_TRUE(info->version().IsValid());
EXPECT_TRUE(info->version().Equals(kVersion124));
// Adding an older version fails even when coming from a higher-priority
// location.
- EXPECT_FALSE(
- service()->OnExternalExtensionFileFound(kGoodId,
- &kVersion123,
- kInvalidPathToCrx,
- Manifest::EXTERNAL_REGISTRY,
- kCreationFlags,
- kDontMarkAcknowledged));
+ EXPECT_FALSE(service()->OnExternalExtensionFileFound(
+ kGoodId,
+ &kVersion123,
+ kInvalidPathToCrx,
+ Manifest::EXTERNAL_REGISTRY,
+ kCreationFlags,
+ kDontMarkAcknowledged,
+ kDontInstallImmediately));
EXPECT_TRUE((info = pending->GetById(kGoodId)));
EXPECT_TRUE(info->version().IsValid());
EXPECT_TRUE(info->version().Equals(kVersion124));
@@ -7150,6 +7195,7 @@
crx_path_,
Manifest::EXTERNAL_PREF,
Extension::NO_FLAGS,
+ false,
false);
}