| 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 7d9aca1386191643f8b5d04fa2387ca2cda6c193..89f9a781bda484f7fb7ae12cfc55af2c5300ee88 100644
|
| --- a/chrome/browser/extensions/extension_service_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_service_unittest.cc
|
| @@ -1450,6 +1450,66 @@ TEST_F(ExtensionServiceTest, UpdateOnStartup) {
|
| prefs->GetDelayedInstallInfo("bjafgdebaacbbbecmhlhpofkepfkgcpa"));
|
| }
|
|
|
| +// Test various cases for delayed install because of missing imports.
|
| +TEST_F(ExtensionServiceTest, PendingImports) {
|
| + InitPluginService();
|
| +
|
| + base::FilePath source_install_dir = data_dir_
|
| + .AppendASCII("pending_updates_with_imports")
|
| + .AppendASCII("Extensions");
|
| + base::FilePath pref_path = source_install_dir
|
| + .DirName()
|
| + .AppendASCII("Preferences");
|
| +
|
| + InitializeInstalledExtensionService(pref_path, source_install_dir);
|
| +
|
| + // Verify there are no pending extensions initially.
|
| + EXPECT_FALSE(service_->pending_extension_manager()->HasPendingExtensions());
|
| +
|
| + service_->Init();
|
| + // Wait for GarbageCollectExtensions task to complete.
|
| + loop_.RunUntilIdle();
|
| +
|
| + // These extensions are used by the extensions we test below, they must be
|
| + // installed.
|
| + EXPECT_TRUE(file_util::PathExists(extensions_install_dir_.AppendASCII(
|
| + "bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0")));
|
| + EXPECT_TRUE(file_util::PathExists(extensions_install_dir_.AppendASCII(
|
| + "hpiknbiabeeppbpihjehijgoemciehgk/2")));
|
| +
|
| + // Each of these extensions should have been rejected because of dependencies
|
| + // that cannot be satisfied.
|
| + ExtensionPrefs* prefs = service_->extension_prefs();
|
| + EXPECT_FALSE(
|
| + prefs->GetDelayedInstallInfo("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
|
| + EXPECT_FALSE(
|
| + prefs->GetInstalledExtensionInfo("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
|
| + EXPECT_FALSE(
|
| + prefs->GetDelayedInstallInfo("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"));
|
| + EXPECT_FALSE(
|
| + prefs->GetInstalledExtensionInfo("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"));
|
| + EXPECT_FALSE(
|
| + prefs->GetDelayedInstallInfo("cccccccccccccccccccccccccccccccc"));
|
| + EXPECT_FALSE(
|
| + prefs->GetInstalledExtensionInfo("cccccccccccccccccccccccccccccccc"));
|
| +
|
| + // Make sure the import started for the extension with a dependency.
|
| + EXPECT_TRUE(
|
| + prefs->GetDelayedInstallInfo("behllobkkfkfnphdnhnkndlbkcpglgmj"));
|
| + EXPECT_EQ(ExtensionPrefs::DELAY_REASON_WAIT_FOR_IMPORTS,
|
| + prefs->GetDelayedInstallReason("behllobkkfkfnphdnhnkndlbkcpglgmj"));
|
| +
|
| + EXPECT_FALSE(file_util::PathExists(extensions_install_dir_.AppendASCII(
|
| + "behllobkkfkfnphdnhnkndlbkcpglgmj/1.0.0.0")));
|
| +
|
| + EXPECT_TRUE(service_->pending_extension_manager()->HasPendingExtensions());
|
| + std::string pending_id("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
|
| + EXPECT_TRUE(service_->pending_extension_manager()->IsIdPending(pending_id));
|
| + // Remove it because we are not testing the pending extension manager's
|
| + // ability to download and install extensions.
|
| + EXPECT_TRUE(service_->pending_extension_manager()->Remove(pending_id));
|
| +}
|
| +
|
| // Test installing extensions. This test tries to install few extensions using
|
| // crx files. If you need to change those crx files, feel free to repackage
|
| // them, throw away the key used and change the id's above.
|
|
|