OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extensions_service_unittest.h" | 5 #include "chrome/browser/extensions/extensions_service_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 EXPECT_FALSE(installed_) << path.value(); | 422 EXPECT_FALSE(installed_) << path.value(); |
423 EXPECT_EQ(0u, loaded_.size()) << path.value(); | 423 EXPECT_EQ(0u, loaded_.size()) << path.value(); |
424 EXPECT_EQ(1u, errors.size()) << path.value(); | 424 EXPECT_EQ(1u, errors.size()) << path.value(); |
425 } | 425 } |
426 | 426 |
427 installed_ = NULL; | 427 installed_ = NULL; |
428 loaded_.clear(); | 428 loaded_.clear(); |
429 ExtensionErrorReporter::GetInstance()->ClearErrors(); | 429 ExtensionErrorReporter::GetInstance()->ClearErrors(); |
430 } | 430 } |
431 | 431 |
| 432 enum UpdateState { |
| 433 FAILED_SILENTLY, |
| 434 FAILED, |
| 435 UPDATED, |
| 436 INSTALLED, |
| 437 ENABLED |
| 438 }; |
| 439 |
432 void UpdateExtension(const std::string& id, const FilePath& in_path, | 440 void UpdateExtension(const std::string& id, const FilePath& in_path, |
433 bool should_succeed, bool should_install, | 441 UpdateState expected_state) { |
434 bool expect_report_on_failure) { | |
435 ASSERT_TRUE(file_util::PathExists(in_path)); | 442 ASSERT_TRUE(file_util::PathExists(in_path)); |
436 | 443 |
437 // We need to copy this to a temporary location because Update() will delete | 444 // We need to copy this to a temporary location because Update() will delete |
438 // it. | 445 // it. |
439 FilePath path = temp_dir_.path(); | 446 FilePath path = temp_dir_.path(); |
440 path = path.Append(in_path.BaseName()); | 447 path = path.Append(in_path.BaseName()); |
441 ASSERT_TRUE(file_util::CopyFile(in_path, path)); | 448 ASSERT_TRUE(file_util::CopyFile(in_path, path)); |
442 | 449 |
| 450 int previous_enabled_extension_count = |
| 451 service_->extensions()->size(); |
| 452 int previous_installed_extension_count = |
| 453 previous_enabled_extension_count + |
| 454 service_->disabled_extensions()->size(); |
| 455 |
443 service_->UpdateExtension(id, path, GURL()); | 456 service_->UpdateExtension(id, path, GURL()); |
444 loop_.RunAllPending(); | 457 loop_.RunAllPending(); |
| 458 |
445 std::vector<std::string> errors = GetErrors(); | 459 std::vector<std::string> errors = GetErrors(); |
| 460 int error_count = errors.size(); |
| 461 int enabled_extension_count = |
| 462 service_->extensions()->size(); |
| 463 int installed_extension_count = |
| 464 enabled_extension_count + service_->disabled_extensions()->size(); |
446 | 465 |
447 if (should_succeed) { | 466 int expected_error_count = (expected_state == FAILED) ? 1 : 0; |
448 EXPECT_EQ(0u, errors.size()) << path.value(); | 467 EXPECT_EQ(expected_error_count, error_count) << path.value(); |
449 EXPECT_EQ(should_install ? 1u : 0u, service_->extensions()->size()); | 468 |
| 469 if (expected_state <= FAILED) { |
| 470 EXPECT_EQ(previous_enabled_extension_count, |
| 471 enabled_extension_count); |
| 472 EXPECT_EQ(previous_installed_extension_count, |
| 473 installed_extension_count); |
450 } else { | 474 } else { |
451 if (expect_report_on_failure) { | 475 int expected_installed_extension_count = |
452 EXPECT_EQ(1u, errors.size()) << path.value(); | 476 (expected_state >= INSTALLED) ? 1 : 0; |
453 } | 477 int expected_enabled_extension_count = |
| 478 (expected_state >= ENABLED) ? 1 : 0; |
| 479 EXPECT_EQ(expected_installed_extension_count, |
| 480 installed_extension_count); |
| 481 EXPECT_EQ(expected_enabled_extension_count, |
| 482 enabled_extension_count); |
454 } | 483 } |
455 | 484 |
456 // Update() should delete the temporary input file. | 485 // Update() should delete the temporary input file. |
457 EXPECT_FALSE(file_util::PathExists(path)); | 486 EXPECT_FALSE(file_util::PathExists(path)); |
458 } | 487 } |
459 | 488 |
460 void ValidatePrefKeyCount(size_t count) { | 489 void ValidatePrefKeyCount(size_t count) { |
461 DictionaryValue* dict = | 490 DictionaryValue* dict = |
462 prefs_->GetMutableDictionary(L"extensions.settings"); | 491 prefs_->GetMutableDictionary(L"extensions.settings"); |
463 ASSERT_TRUE(dict != NULL); | 492 ASSERT_TRUE(dict != NULL); |
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 extensions_path = extensions_path.AppendASCII("extensions"); | 1161 extensions_path = extensions_path.AppendASCII("extensions"); |
1133 | 1162 |
1134 FilePath path = extensions_path.AppendASCII("good.crx"); | 1163 FilePath path = extensions_path.AppendASCII("good.crx"); |
1135 | 1164 |
1136 InstallExtension(path, true); | 1165 InstallExtension(path, true); |
1137 Extension* good = service_->extensions()->at(0); | 1166 Extension* good = service_->extensions()->at(0); |
1138 ASSERT_EQ("1.0.0.0", good->VersionString()); | 1167 ASSERT_EQ("1.0.0.0", good->VersionString()); |
1139 ASSERT_EQ(good_crx, good->id()); | 1168 ASSERT_EQ(good_crx, good->id()); |
1140 | 1169 |
1141 path = extensions_path.AppendASCII("good2.crx"); | 1170 path = extensions_path.AppendASCII("good2.crx"); |
1142 UpdateExtension(good_crx, path, true, true, true); | 1171 UpdateExtension(good_crx, path, ENABLED); |
1143 ASSERT_EQ("1.0.0.1", loaded_[0]->version()->GetString()); | 1172 ASSERT_EQ("1.0.0.1", loaded_[0]->version()->GetString()); |
1144 } | 1173 } |
1145 | 1174 |
1146 // Test updating a not-already-installed extension - this should fail | 1175 // Test updating a not-already-installed extension - this should fail |
1147 TEST_F(ExtensionsServiceTest, UpdateNotInstalledExtension) { | 1176 TEST_F(ExtensionsServiceTest, UpdateNotInstalledExtension) { |
1148 InitializeEmptyExtensionsService(); | 1177 InitializeEmptyExtensionsService(); |
1149 FilePath extensions_path; | 1178 FilePath extensions_path; |
1150 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1179 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1151 extensions_path = extensions_path.AppendASCII("extensions"); | 1180 extensions_path = extensions_path.AppendASCII("extensions"); |
1152 | 1181 |
1153 FilePath path = extensions_path.AppendASCII("good.crx"); | 1182 FilePath path = extensions_path.AppendASCII("good.crx"); |
1154 UpdateExtension(good_crx, path, true, false, true); | 1183 UpdateExtension(good_crx, path, UPDATED); |
1155 loop_.RunAllPending(); | 1184 loop_.RunAllPending(); |
1156 | 1185 |
1157 ASSERT_EQ(0u, service_->extensions()->size()); | 1186 ASSERT_EQ(0u, service_->extensions()->size()); |
1158 ASSERT_FALSE(installed_); | 1187 ASSERT_FALSE(installed_); |
1159 ASSERT_EQ(0u, loaded_.size()); | 1188 ASSERT_EQ(0u, loaded_.size()); |
1160 } | 1189 } |
1161 | 1190 |
1162 // Makes sure you can't downgrade an extension via UpdateExtension | 1191 // Makes sure you can't downgrade an extension via UpdateExtension |
1163 TEST_F(ExtensionsServiceTest, UpdateWillNotDowngrade) { | 1192 TEST_F(ExtensionsServiceTest, UpdateWillNotDowngrade) { |
1164 InitializeEmptyExtensionsService(); | 1193 InitializeEmptyExtensionsService(); |
1165 FilePath extensions_path; | 1194 FilePath extensions_path; |
1166 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1195 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1167 extensions_path = extensions_path.AppendASCII("extensions"); | 1196 extensions_path = extensions_path.AppendASCII("extensions"); |
1168 | 1197 |
1169 FilePath path = extensions_path.AppendASCII("good2.crx"); | 1198 FilePath path = extensions_path.AppendASCII("good2.crx"); |
1170 | 1199 |
1171 InstallExtension(path, true); | 1200 InstallExtension(path, true); |
1172 Extension* good = service_->extensions()->at(0); | 1201 Extension* good = service_->extensions()->at(0); |
1173 ASSERT_EQ("1.0.0.1", good->VersionString()); | 1202 ASSERT_EQ("1.0.0.1", good->VersionString()); |
1174 ASSERT_EQ(good_crx, good->id()); | 1203 ASSERT_EQ(good_crx, good->id()); |
1175 | 1204 |
1176 // Change path from good2.crx -> good.crx | 1205 // Change path from good2.crx -> good.crx |
1177 path = extensions_path.AppendASCII("good.crx"); | 1206 path = extensions_path.AppendASCII("good.crx"); |
1178 UpdateExtension(good_crx, path, false, false, true); | 1207 UpdateExtension(good_crx, path, FAILED); |
1179 ASSERT_EQ("1.0.0.1", service_->extensions()->at(0)->VersionString()); | 1208 ASSERT_EQ("1.0.0.1", service_->extensions()->at(0)->VersionString()); |
1180 } | 1209 } |
1181 | 1210 |
1182 // Make sure calling update with an identical version does nothing | 1211 // Make sure calling update with an identical version does nothing |
1183 TEST_F(ExtensionsServiceTest, UpdateToSameVersionIsNoop) { | 1212 TEST_F(ExtensionsServiceTest, UpdateToSameVersionIsNoop) { |
1184 InitializeEmptyExtensionsService(); | 1213 InitializeEmptyExtensionsService(); |
1185 FilePath extensions_path; | 1214 FilePath extensions_path; |
1186 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1215 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1187 extensions_path = extensions_path.AppendASCII("extensions"); | 1216 extensions_path = extensions_path.AppendASCII("extensions"); |
1188 | 1217 |
1189 FilePath path = extensions_path.AppendASCII("good.crx"); | 1218 FilePath path = extensions_path.AppendASCII("good.crx"); |
1190 | 1219 |
1191 InstallExtension(path, true); | 1220 InstallExtension(path, true); |
1192 Extension* good = service_->extensions()->at(0); | 1221 Extension* good = service_->extensions()->at(0); |
1193 ASSERT_EQ(good_crx, good->id()); | 1222 ASSERT_EQ(good_crx, good->id()); |
1194 UpdateExtension(good_crx, path, false, false, false); | 1223 UpdateExtension(good_crx, path, FAILED_SILENTLY); |
1195 } | 1224 } |
1196 | 1225 |
1197 // Test adding a pending extension. | 1226 // Test adding a pending extension. |
1198 TEST_F(ExtensionsServiceTest, AddPendingExtension) { | 1227 TEST_F(ExtensionsServiceTest, AddPendingExtension) { |
1199 InitializeEmptyExtensionsService(); | 1228 InitializeEmptyExtensionsService(); |
1200 | 1229 |
1201 const std::string kFakeId("fake-id"); | 1230 const std::string kFakeId("fake-id"); |
1202 const GURL kFakeUpdateURL("http:://fake.update/url"); | 1231 const GURL kFakeUpdateURL("http:://fake.update/url"); |
1203 scoped_ptr<Version> fake_version(Version::GetVersionFromString("4.3.2.1")); | |
1204 ASSERT_TRUE(fake_version.get()); | |
1205 const bool kFakeIsTheme(false); | 1232 const bool kFakeIsTheme(false); |
1206 const bool kFakeInstallSilently(true); | 1233 const bool kFakeInstallSilently(true); |
| 1234 const Extension::State kFakeInitialState(Extension::ENABLED); |
| 1235 const bool kFakeInitialIncognitoEnabled(false); |
1207 | 1236 |
1208 service_->AddPendingExtension(kFakeId, kFakeUpdateURL, | 1237 service_->AddPendingExtension( |
1209 *fake_version, kFakeIsTheme, | 1238 kFakeId, kFakeUpdateURL, kFakeIsTheme, kFakeInstallSilently, |
1210 kFakeInstallSilently); | 1239 kFakeInitialState, kFakeInitialIncognitoEnabled); |
1211 PendingExtensionMap::const_iterator it = | 1240 PendingExtensionMap::const_iterator it = |
1212 service_->pending_extensions().find(kFakeId); | 1241 service_->pending_extensions().find(kFakeId); |
1213 ASSERT_TRUE(it != service_->pending_extensions().end()); | 1242 ASSERT_TRUE(it != service_->pending_extensions().end()); |
1214 EXPECT_EQ(kFakeUpdateURL, it->second.update_url); | 1243 EXPECT_EQ(kFakeUpdateURL, it->second.update_url); |
1215 EXPECT_EQ(kFakeIsTheme, it->second.is_theme); | 1244 EXPECT_EQ(kFakeIsTheme, it->second.is_theme); |
1216 EXPECT_EQ(kFakeInstallSilently, it->second.install_silently); | 1245 EXPECT_EQ(kFakeInstallSilently, it->second.install_silently); |
1217 EXPECT_TRUE(it->second.version.Equals(*fake_version)); | |
1218 } | 1246 } |
1219 | 1247 |
1220 namespace { | 1248 namespace { |
1221 const char kGoodId[] = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; | 1249 const char kGoodId[] = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; |
1222 const char kGoodUpdateURL[] = "http://good.update/url"; | 1250 const char kGoodUpdateURL[] = "http://good.update/url"; |
1223 const bool kGoodIsTheme = false; | 1251 const bool kGoodIsTheme = false; |
1224 const bool kGoodInstallSilently = true; | 1252 const bool kGoodInstallSilently = true; |
1225 const char kGoodVersion[] = "1.2.3.4"; | 1253 const Extension::State kGoodInitialState = Extension::DISABLED; |
| 1254 const bool kGoodInitialIncognitoEnabled = true; |
1226 } // namespace | 1255 } // namespace |
1227 | 1256 |
1228 // Test updating a pending extension. | 1257 // Test updating a pending extension. |
1229 TEST_F(ExtensionsServiceTest, UpdatePendingExtension) { | 1258 TEST_F(ExtensionsServiceTest, UpdatePendingExtension) { |
1230 InitializeEmptyExtensionsService(); | 1259 InitializeEmptyExtensionsService(); |
1231 scoped_ptr<Version> good_version( | 1260 service_->AddPendingExtension( |
1232 Version::GetVersionFromString(kGoodVersion)); | 1261 kGoodId, GURL(kGoodUpdateURL), kGoodIsTheme, |
1233 ASSERT_TRUE(good_version.get()); | 1262 kGoodInstallSilently, kGoodInitialState, |
1234 service_->AddPendingExtension(kGoodId, GURL(kGoodUpdateURL), | 1263 kGoodInitialIncognitoEnabled); |
1235 *good_version, kGoodIsTheme, | |
1236 kGoodInstallSilently); | |
1237 EXPECT_TRUE(ContainsKey(service_->pending_extensions(), kGoodId)); | 1264 EXPECT_TRUE(ContainsKey(service_->pending_extensions(), kGoodId)); |
1238 | 1265 |
1239 FilePath extensions_path; | 1266 FilePath extensions_path; |
1240 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1267 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1241 extensions_path = extensions_path.AppendASCII("extensions"); | 1268 extensions_path = extensions_path.AppendASCII("extensions"); |
1242 FilePath path = extensions_path.AppendASCII("good.crx"); | 1269 FilePath path = extensions_path.AppendASCII("good.crx"); |
1243 UpdateExtension(kGoodId, path, true, true, false); | 1270 UpdateExtension(kGoodId, path, INSTALLED); |
1244 | 1271 |
1245 EXPECT_FALSE(ContainsKey(service_->pending_extensions(), kGoodId)); | 1272 EXPECT_FALSE(ContainsKey(service_->pending_extensions(), kGoodId)); |
| 1273 |
| 1274 Extension* extension = service_->GetExtensionById(kGoodId, true); |
| 1275 ASSERT_TRUE(extension); |
| 1276 |
| 1277 bool enabled = service_->GetExtensionById(kGoodId, false); |
| 1278 EXPECT_EQ(kGoodInitialState == Extension::ENABLED, enabled); |
| 1279 EXPECT_EQ(kGoodInitialState, |
| 1280 service_->extension_prefs()->GetExtensionState(extension->id())); |
| 1281 EXPECT_EQ(kGoodInitialIncognitoEnabled, |
| 1282 service_->IsIncognitoEnabled(extension)); |
1246 } | 1283 } |
1247 | 1284 |
1248 // TODO(akalin): Test updating a pending extension non-silently once | 1285 // TODO(akalin): Test updating a pending extension non-silently once |
1249 // we can mock out ExtensionInstallUI and inject our version into | 1286 // we can mock out ExtensionInstallUI and inject our version into |
1250 // UpdateExtension(). | 1287 // UpdateExtension(). |
1251 | 1288 |
1252 // Test updating a pending extension with wrong is_theme. | 1289 // Test updating a pending extension with wrong is_theme. |
1253 TEST_F(ExtensionsServiceTest, UpdatePendingExtensionWrongIsTheme) { | 1290 TEST_F(ExtensionsServiceTest, UpdatePendingExtensionWrongIsTheme) { |
1254 InitializeEmptyExtensionsService(); | 1291 InitializeEmptyExtensionsService(); |
1255 scoped_ptr<Version> good_version( | |
1256 Version::GetVersionFromString(kGoodVersion)); | |
1257 ASSERT_TRUE(good_version.get()); | |
1258 // Add pending extension with a flipped is_theme. | 1292 // Add pending extension with a flipped is_theme. |
1259 service_->AddPendingExtension(kGoodId, GURL(kGoodUpdateURL), | 1293 service_->AddPendingExtension( |
1260 *good_version, !kGoodIsTheme, | 1294 kGoodId, GURL(kGoodUpdateURL), !kGoodIsTheme, |
1261 kGoodInstallSilently); | 1295 kGoodInstallSilently, kGoodInitialState, |
| 1296 kGoodInitialIncognitoEnabled); |
1262 EXPECT_TRUE(ContainsKey(service_->pending_extensions(), kGoodId)); | 1297 EXPECT_TRUE(ContainsKey(service_->pending_extensions(), kGoodId)); |
1263 | 1298 |
1264 FilePath extensions_path; | 1299 FilePath extensions_path; |
1265 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1300 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1266 extensions_path = extensions_path.AppendASCII("extensions"); | 1301 extensions_path = extensions_path.AppendASCII("extensions"); |
1267 FilePath path = extensions_path.AppendASCII("good.crx"); | 1302 FilePath path = extensions_path.AppendASCII("good.crx"); |
1268 UpdateExtension(kGoodId, path, true, false, false); | 1303 UpdateExtension(kGoodId, path, UPDATED); |
1269 | 1304 |
1270 // TODO(akalin): Figure out how to check that the extensions | 1305 // TODO(akalin): Figure out how to check that the extensions |
1271 // directory is cleaned up properly in OnExtensionInstalled(). | 1306 // directory is cleaned up properly in OnExtensionInstalled(). |
1272 | 1307 |
1273 EXPECT_TRUE(ContainsKey(service_->pending_extensions(), kGoodId)); | 1308 EXPECT_TRUE(ContainsKey(service_->pending_extensions(), kGoodId)); |
1274 } | 1309 } |
1275 | 1310 |
1276 // Test updating a pending extension for one that is not pending. | 1311 // Test updating a pending extension for one that is not pending. |
1277 TEST_F(ExtensionsServiceTest, UpdatePendingExtensionNotPending) { | 1312 TEST_F(ExtensionsServiceTest, UpdatePendingExtensionNotPending) { |
1278 InitializeEmptyExtensionsService(); | 1313 InitializeEmptyExtensionsService(); |
1279 | 1314 |
1280 FilePath extensions_path; | 1315 FilePath extensions_path; |
1281 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1316 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1282 extensions_path = extensions_path.AppendASCII("extensions"); | 1317 extensions_path = extensions_path.AppendASCII("extensions"); |
1283 FilePath path = extensions_path.AppendASCII("good.crx"); | 1318 FilePath path = extensions_path.AppendASCII("good.crx"); |
1284 UpdateExtension(kGoodId, path, true, false, false); | 1319 UpdateExtension(kGoodId, path, UPDATED); |
1285 | 1320 |
1286 EXPECT_FALSE(ContainsKey(service_->pending_extensions(), kGoodId)); | 1321 EXPECT_FALSE(ContainsKey(service_->pending_extensions(), kGoodId)); |
1287 } | 1322 } |
1288 | 1323 |
1289 // Test updating a pending extension for one that is already | 1324 // Test updating a pending extension for one that is already |
1290 // installed. | 1325 // installed. |
1291 TEST_F(ExtensionsServiceTest, UpdatePendingExtensionAlreadyInstalled) { | 1326 TEST_F(ExtensionsServiceTest, UpdatePendingExtensionAlreadyInstalled) { |
1292 InitializeEmptyExtensionsService(); | 1327 InitializeEmptyExtensionsService(); |
1293 | 1328 |
1294 FilePath extensions_path; | 1329 FilePath extensions_path; |
1295 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1330 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1296 extensions_path = extensions_path.AppendASCII("extensions"); | 1331 extensions_path = extensions_path.AppendASCII("extensions"); |
1297 FilePath path = extensions_path.AppendASCII("good.crx"); | 1332 FilePath path = extensions_path.AppendASCII("good.crx"); |
1298 InstallExtension(path, true); | 1333 InstallExtension(path, true); |
1299 ASSERT_EQ(1u, service_->extensions()->size()); | 1334 ASSERT_EQ(1u, service_->extensions()->size()); |
1300 Extension* good = service_->extensions()->at(0); | 1335 Extension* good = service_->extensions()->at(0); |
1301 | 1336 |
1302 // Use AddPendingExtensionInternal() as AddPendingExtension() would | 1337 // Use AddPendingExtensionInternal() as AddPendingExtension() would |
1303 // balk. | 1338 // balk. |
1304 service_->AddPendingExtensionInternal( | 1339 service_->AddPendingExtensionInternal( |
1305 good->id(), good->update_url(), *good->version(), | 1340 good->id(), good->update_url(), good->is_theme(), |
1306 good->is_theme(), kGoodInstallSilently); | 1341 kGoodInstallSilently, kGoodInitialState, |
| 1342 kGoodInitialIncognitoEnabled); |
1307 | 1343 |
1308 UpdateExtension(good->id(), path, true, true, false); | 1344 UpdateExtension(good->id(), path, INSTALLED); |
1309 | 1345 |
1310 EXPECT_FALSE(ContainsKey(service_->pending_extensions(), kGoodId)); | 1346 EXPECT_FALSE(ContainsKey(service_->pending_extensions(), kGoodId)); |
1311 } | 1347 } |
1312 | 1348 |
1313 // Test pref settings for blacklist and unblacklist extensions. | 1349 // Test pref settings for blacklist and unblacklist extensions. |
1314 TEST_F(ExtensionsServiceTest, SetUnsetBlacklistInPrefs) { | 1350 TEST_F(ExtensionsServiceTest, SetUnsetBlacklistInPrefs) { |
1315 InitializeEmptyExtensionsService(); | 1351 InitializeEmptyExtensionsService(); |
1316 std::vector<std::string> blacklist; | 1352 std::vector<std::string> blacklist; |
1317 blacklist.push_back(good0); | 1353 blacklist.push_back(good0); |
1318 blacklist.push_back("invalid_id"); // an invalid id | 1354 blacklist.push_back("invalid_id"); // an invalid id |
(...skipping 25 matching lines...) Expand all Loading... |
1344 InitializeEmptyExtensionsService(); | 1380 InitializeEmptyExtensionsService(); |
1345 FilePath extensions_path; | 1381 FilePath extensions_path; |
1346 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 1382 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
1347 extensions_path = extensions_path.AppendASCII("extensions"); | 1383 extensions_path = extensions_path.AppendASCII("extensions"); |
1348 | 1384 |
1349 FilePath path = extensions_path.AppendASCII("good.crx"); | 1385 FilePath path = extensions_path.AppendASCII("good.crx"); |
1350 | 1386 |
1351 InstallExtension(path, true); | 1387 InstallExtension(path, true); |
1352 Extension* good = service_->extensions()->at(0); | 1388 Extension* good = service_->extensions()->at(0); |
1353 EXPECT_EQ(good_crx, good->id()); | 1389 EXPECT_EQ(good_crx, good->id()); |
1354 UpdateExtension(good_crx, path, false, false, false); | 1390 UpdateExtension(good_crx, path, FAILED_SILENTLY); |
1355 | 1391 |
1356 std::vector<std::string> blacklist; | 1392 std::vector<std::string> blacklist; |
1357 blacklist.push_back(good_crx); | 1393 blacklist.push_back(good_crx); |
1358 service_->UpdateExtensionBlacklist(blacklist); | 1394 service_->UpdateExtensionBlacklist(blacklist); |
1359 // Make sure pref is updated | 1395 // Make sure pref is updated |
1360 loop_.RunAllPending(); | 1396 loop_.RunAllPending(); |
1361 | 1397 |
1362 // Now, the good_crx is blacklisted. | 1398 // Now, the good_crx is blacklisted. |
1363 ValidateBooleanPref(good_crx, L"blacklist", true); | 1399 ValidateBooleanPref(good_crx, L"blacklist", true); |
1364 EXPECT_EQ(0u, service_->extensions()->size()); | 1400 EXPECT_EQ(0u, service_->extensions()->size()); |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1995 // Component extensions shouldn't get recourded in the prefs. | 2031 // Component extensions shouldn't get recourded in the prefs. |
1996 ValidatePrefKeyCount(0); | 2032 ValidatePrefKeyCount(0); |
1997 | 2033 |
1998 // Reload all extensions, and make sure it comes back. | 2034 // Reload all extensions, and make sure it comes back. |
1999 std::string extension_id = service_->extensions()->at(0)->id(); | 2035 std::string extension_id = service_->extensions()->at(0)->id(); |
2000 loaded_.clear(); | 2036 loaded_.clear(); |
2001 service_->ReloadExtensions(); | 2037 service_->ReloadExtensions(); |
2002 ASSERT_EQ(1u, service_->extensions()->size()); | 2038 ASSERT_EQ(1u, service_->extensions()->size()); |
2003 EXPECT_EQ(extension_id, service_->extensions()->at(0)->id()); | 2039 EXPECT_EQ(extension_id, service_->extensions()->at(0)->id()); |
2004 } | 2040 } |
OLD | NEW |