Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 204983020: Remove ExtensionService Garbage-Collecting methods. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove lazy global empty delta Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/chrome_browser_extensions.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/extension_service_unittest.h" 5 #include "chrome/browser/extensions/extension_service_unittest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 1447 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 std::string("Could not load extension from '*'. ") + 1458 std::string("Could not load extension from '*'. ") +
1459 extensions::manifest_errors::kMissingFile)) << 1459 extensions::manifest_errors::kMissingFile)) <<
1460 base::UTF16ToUTF8(GetErrors()[2]); 1460 base::UTF16ToUTF8(GetErrors()[2]);
1461 1461
1462 EXPECT_TRUE(MatchPattern(base::UTF16ToUTF8(GetErrors()[3]), 1462 EXPECT_TRUE(MatchPattern(base::UTF16ToUTF8(GetErrors()[3]),
1463 std::string("Could not load extension from '*'. ") + 1463 std::string("Could not load extension from '*'. ") +
1464 extensions::manifest_errors::kManifestUnreadable)) << 1464 extensions::manifest_errors::kManifestUnreadable)) <<
1465 base::UTF16ToUTF8(GetErrors()[3]); 1465 base::UTF16ToUTF8(GetErrors()[3]);
1466 }; 1466 };
1467 1467
1468 // Test that partially deleted extensions are cleaned up during startup
1469 // Test loading bad extensions from the profile directory.
1470 TEST_F(ExtensionServiceTest, CleanupOnStartup) {
1471 InitPluginService();
1472 InitializeGoodInstalledExtensionService();
1473
1474 // Simulate that one of them got partially deleted by clearing its pref.
1475 {
1476 DictionaryPrefUpdate update(profile_->GetPrefs(), "extensions.settings");
1477 base::DictionaryValue* dict = update.Get();
1478 ASSERT_TRUE(dict != NULL);
1479 dict->Remove("behllobkkfkfnphdnhnkndlbkcpglgmj", NULL);
1480 }
1481
1482 service_->Init();
1483 // A delayed task to call GarbageCollectExtensions is posted by
1484 // ExtensionService::Init. As the test won't wait for the delayed task to
1485 // be called, call it manually instead.
1486 service_->GarbageCollectExtensions();
1487 // Wait for GarbageCollectExtensions task to complete.
1488 base::RunLoop().RunUntilIdle();
1489
1490 base::FileEnumerator dirs(extensions_install_dir_, false,
1491 base::FileEnumerator::DIRECTORIES);
1492 size_t count = 0;
1493 while (!dirs.Next().empty())
1494 count++;
1495
1496 // We should have only gotten two extensions now.
1497 EXPECT_EQ(2u, count);
1498
1499 // And extension1 dir should now be toast.
1500 base::FilePath extension_dir = extensions_install_dir_
1501 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj");
1502 ASSERT_FALSE(base::PathExists(extension_dir));
1503 }
1504
1505 // Test that GarbageCollectExtensions deletes the right versions of an
1506 // extension.
1507 TEST_F(ExtensionServiceTest, GarbageCollectWithPendingUpdates) {
1508 InitPluginService();
1509
1510 base::FilePath source_install_dir = data_dir_
1511 .AppendASCII("pending_updates")
1512 .AppendASCII("Extensions");
1513 base::FilePath pref_path =
1514 source_install_dir.DirName().Append(chrome::kPreferencesFilename);
1515
1516 InitializeInstalledExtensionService(pref_path, source_install_dir);
1517
1518 // This is the directory that is going to be deleted, so make sure it actually
1519 // is there before the garbage collection.
1520 ASSERT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
1521 "hpiknbiabeeppbpihjehijgoemciehgk/3")));
1522
1523 service_->GarbageCollectExtensions();
1524 // Wait for GarbageCollectExtensions task to complete.
1525 base::RunLoop().RunUntilIdle();
1526
1527 // Verify that the pending update for the first extension didn't get
1528 // deleted.
1529 EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
1530 "bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0")));
1531 EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
1532 "bjafgdebaacbbbecmhlhpofkepfkgcpa/2.0")));
1533 EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
1534 "hpiknbiabeeppbpihjehijgoemciehgk/2")));
1535 EXPECT_FALSE(base::PathExists(extensions_install_dir_.AppendASCII(
1536 "hpiknbiabeeppbpihjehijgoemciehgk/3")));
1537 }
1538
1539 // Test that pending updates are properly handled on startup.
1540 TEST_F(ExtensionServiceTest, UpdateOnStartup) {
1541 InitPluginService();
1542
1543 base::FilePath source_install_dir = data_dir_
1544 .AppendASCII("pending_updates")
1545 .AppendASCII("Extensions");
1546 base::FilePath pref_path =
1547 source_install_dir.DirName().Append(chrome::kPreferencesFilename);
1548
1549 InitializeInstalledExtensionService(pref_path, source_install_dir);
1550
1551 // This is the directory that is going to be deleted, so make sure it actually
1552 // is there before the garbage collection.
1553 ASSERT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
1554 "hpiknbiabeeppbpihjehijgoemciehgk/3")));
1555
1556 service_->Init();
1557 // A delayed task to call GarbageCollectExtensions is posted by
1558 // ExtensionService::Init. As the test won't wait for the delayed task to
1559 // be called, call it manually instead.
1560 service_->GarbageCollectExtensions();
1561 // Wait for GarbageCollectExtensions task to complete.
1562 base::RunLoop().RunUntilIdle();
1563
1564 // Verify that the pending update for the first extension got installed.
1565 EXPECT_FALSE(base::PathExists(extensions_install_dir_.AppendASCII(
1566 "bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0")));
1567 EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
1568 "bjafgdebaacbbbecmhlhpofkepfkgcpa/2.0")));
1569 EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
1570 "hpiknbiabeeppbpihjehijgoemciehgk/2")));
1571 EXPECT_FALSE(base::PathExists(extensions_install_dir_.AppendASCII(
1572 "hpiknbiabeeppbpihjehijgoemciehgk/3")));
1573
1574 // Make sure update information got deleted.
1575 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_.get());
1576 EXPECT_FALSE(
1577 prefs->GetDelayedInstallInfo("bjafgdebaacbbbecmhlhpofkepfkgcpa"));
1578 }
1579
1580 // Test various cases for delayed install because of missing imports. 1468 // Test various cases for delayed install because of missing imports.
1581 TEST_F(ExtensionServiceTest, PendingImports) { 1469 TEST_F(ExtensionServiceTest, PendingImports) {
1582 InitPluginService(); 1470 InitPluginService();
1583 1471
1584 base::FilePath source_install_dir = data_dir_ 1472 base::FilePath source_install_dir = data_dir_
1585 .AppendASCII("pending_updates_with_imports") 1473 .AppendASCII("pending_updates_with_imports")
1586 .AppendASCII("Extensions"); 1474 .AppendASCII("Extensions");
1587 base::FilePath pref_path = 1475 base::FilePath pref_path =
1588 source_install_dir.DirName().Append(chrome::kPreferencesFilename); 1476 source_install_dir.DirName().Append(chrome::kPreferencesFilename);
1589 1477
(...skipping 5412 matching lines...) Expand 10 before | Expand all | Expand 10 after
7002 // ReconcileKnownDisabled(). 6890 // ReconcileKnownDisabled().
7003 service_->EnableExtension(good2); 6891 service_->EnableExtension(good2);
7004 service_->ReconcileKnownDisabled(); 6892 service_->ReconcileKnownDisabled();
7005 expected_extensions.insert(good2); 6893 expected_extensions.insert(good2);
7006 expected_disabled_extensions.erase(good2); 6894 expected_disabled_extensions.erase(good2);
7007 6895
7008 EXPECT_EQ(expected_extensions, registry_->enabled_extensions().GetIDs()); 6896 EXPECT_EQ(expected_extensions, registry_->enabled_extensions().GetIDs());
7009 EXPECT_EQ(expected_disabled_extensions, 6897 EXPECT_EQ(expected_disabled_extensions,
7010 registry_->disabled_extensions().GetIDs()); 6898 registry_->disabled_extensions().GetIDs());
7011 } 6899 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/chrome_browser_extensions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698