| Index: chrome/browser/extensions/extension_service_unittest.cc
|
| diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
|
| index 0e9e7576ebcaff1cb329df0f39edaa520e8fa33e..3b0a8b33e911c545be6a377cdd3063476e287e94 100644
|
| --- a/chrome/browser/extensions/extension_service_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_service_unittest.cc
|
| @@ -270,7 +270,7 @@ class MockExtensionProvider : public extensions::ExternalProviderInterface {
|
|
|
| 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 @@ class MockProviderVisitor
|
| 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 @@ TEST_F(ExtensionServiceTest, InstallingExternalExtensionWithFlags) {
|
| 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 @@ TEST_F(ExtensionServiceTest, UninstallingExternalExtensions) {
|
| path,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false)) {
|
| observer.Wait();
|
| }
|
| @@ -1621,6 +1625,7 @@ TEST_F(ExtensionServiceTest, UninstallingExternalExtensions) {
|
| path,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false);
|
| base::RunLoop().RunUntilIdle();
|
| ASSERT_TRUE(NULL == service()->GetExtensionById(good_crx, false));
|
| @@ -1635,6 +1640,7 @@ TEST_F(ExtensionServiceTest, UninstallingExternalExtensions) {
|
| path,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false);
|
| base::RunLoop().RunUntilIdle();
|
| ASSERT_TRUE(NULL == service()->GetExtensionById(good_crx, false));
|
| @@ -1702,6 +1708,7 @@ TEST_F(ExtensionServiceTest, FailOnWrongId) {
|
| path,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false);
|
|
|
| observer.Wait();
|
| @@ -1716,6 +1723,7 @@ TEST_F(ExtensionServiceTest, FailOnWrongId) {
|
| path,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false)) {
|
| observer2.Wait();
|
| }
|
| @@ -1739,6 +1747,7 @@ TEST_F(ExtensionServiceTest, FailOnWrongVersion) {
|
| path,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false);
|
|
|
| observer.Wait();
|
| @@ -1755,6 +1764,7 @@ TEST_F(ExtensionServiceTest, FailOnWrongVersion) {
|
| path,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false)) {
|
| observer2.Wait();
|
| }
|
| @@ -6825,6 +6835,7 @@ TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) {
|
|
|
| const int kCreationFlags = 0;
|
| const bool kDontMarkAcknowledged = false;
|
| + const bool kDontInstallImmediately = false;
|
|
|
| InitializeEmptyExtensionService();
|
|
|
| @@ -6852,12 +6863,14 @@ TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) {
|
| 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 @@ TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) {
|
| 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 @@ TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) {
|
| // 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 @@ TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) {
|
| 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 @@ TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) {
|
| // 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 @@ TEST_F(ExtensionServiceTest, ConcurrentExternalLocalFile) {
|
| 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 @@ TEST_F(ExtensionServiceTest, ConcurrentExternalLocalFile) {
|
| 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 @@ class ExtensionSourcePriorityTest : public ExtensionServiceTest {
|
| crx_path_,
|
| Manifest::EXTERNAL_PREF,
|
| Extension::NO_FLAGS,
|
| + false,
|
| false);
|
| }
|
|
|
|
|