| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <list> | 5 #include <list> |
| 6 #include <map> | 6 #include <map> |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" |
| 11 #include "base/bind_helpers.h" |
| 10 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 11 #include "base/compiler_specific.h" | 13 #include "base/compiler_specific.h" |
| 12 #include "base/file_util.h" | 14 #include "base/file_util.h" |
| 13 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
| 17 #include "base/message_loop.h" |
| 18 #include "base/run_loop.h" |
| 19 #include "base/sequenced_task_runner.h" |
| 15 #include "base/stl_util.h" | 20 #include "base/stl_util.h" |
| 16 #include "base/string_number_conversions.h" | 21 #include "base/string_number_conversions.h" |
| 17 #include "base/string_split.h" | 22 #include "base/string_split.h" |
| 18 #include "base/string_util.h" | 23 #include "base/string_util.h" |
| 19 #include "base/stringprintf.h" | 24 #include "base/stringprintf.h" |
| 20 #include "base/threading/thread.h" | 25 #include "base/threading/thread.h" |
| 21 #include "base/version.h" | 26 #include "base/version.h" |
| 22 #include "chrome/browser/extensions/blacklist.h" | 27 #include "chrome/browser/extensions/blacklist.h" |
| 23 #include "chrome/browser/extensions/crx_installer.h" | 28 #include "chrome/browser/extensions/crx_installer.h" |
| 24 #include "chrome/browser/extensions/extension_error_reporter.h" | 29 #include "chrome/browser/extensions/extension_error_reporter.h" |
| 25 #include "chrome/browser/extensions/extension_sync_data.h" | 30 #include "chrome/browser/extensions/extension_sync_data.h" |
| 26 #include "chrome/browser/extensions/extension_system.h" | 31 #include "chrome/browser/extensions/extension_system.h" |
| 32 #include "chrome/browser/extensions/test_blacklist.h" |
| 27 #include "chrome/browser/extensions/test_extension_prefs.h" | 33 #include "chrome/browser/extensions/test_extension_prefs.h" |
| 28 #include "chrome/browser/extensions/test_extension_service.h" | 34 #include "chrome/browser/extensions/test_extension_service.h" |
| 29 #include "chrome/browser/extensions/test_extension_system.h" | 35 #include "chrome/browser/extensions/test_extension_system.h" |
| 30 #include "chrome/browser/extensions/updater/extension_downloader.h" | 36 #include "chrome/browser/extensions/updater/extension_downloader.h" |
| 31 #include "chrome/browser/extensions/updater/extension_downloader_delegate.h" | 37 #include "chrome/browser/extensions/updater/extension_downloader_delegate.h" |
| 32 #include "chrome/browser/extensions/updater/extension_updater.h" | 38 #include "chrome/browser/extensions/updater/extension_updater.h" |
| 33 #include "chrome/browser/extensions/updater/manifest_fetch_data.h" | 39 #include "chrome/browser/extensions/updater/manifest_fetch_data.h" |
| 34 #include "chrome/browser/google/google_util.h" | 40 #include "chrome/browser/google/google_util.h" |
| 35 #include "chrome/browser/prefs/pref_service.h" | 41 #include "chrome/browser/prefs/pref_service.h" |
| 36 #include "chrome/common/chrome_notification_types.h" | 42 #include "chrome/common/chrome_notification_types.h" |
| (...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 909 FilePath tmpfile_path = service->install_path(); | 915 FilePath tmpfile_path = service->install_path(); |
| 910 EXPECT_FALSE(tmpfile_path.empty()); | 916 EXPECT_FALSE(tmpfile_path.empty()); |
| 911 EXPECT_EQ(test_url, service->download_url()); | 917 EXPECT_EQ(test_url, service->download_url()); |
| 912 EXPECT_EQ(extension_file_path, tmpfile_path); | 918 EXPECT_EQ(extension_file_path, tmpfile_path); |
| 913 } | 919 } |
| 914 | 920 |
| 915 void TestBlacklistDownloading() { | 921 void TestBlacklistDownloading() { |
| 916 net::TestURLFetcherFactory factory; | 922 net::TestURLFetcherFactory factory; |
| 917 net::TestURLFetcher* fetcher = NULL; | 923 net::TestURLFetcher* fetcher = NULL; |
| 918 MockService service(prefs_.get()); | 924 MockService service(prefs_.get()); |
| 925 TestBlacklist blacklist(service.blacklist()); |
| 919 ExtensionUpdater updater( | 926 ExtensionUpdater updater( |
| 920 &service, service.extension_prefs(), service.pref_service(), | 927 &service, service.extension_prefs(), service.pref_service(), |
| 921 service.profile(), service.blacklist(), kUpdateFrequencySecs); | 928 service.profile(), blacklist.blacklist(), kUpdateFrequencySecs); |
| 922 updater.Start(); | 929 updater.Start(); |
| 923 ResetDownloader( | 930 ResetDownloader( |
| 924 &updater, | 931 &updater, |
| 925 new ExtensionDownloader(&updater, service.request_context())); | 932 new ExtensionDownloader(&updater, service.request_context())); |
| 926 GURL test_url("http://localhost/extension.crx"); | 933 GURL test_url("http://localhost/extension.crx"); |
| 927 | 934 |
| 928 std::string id = "com.google.crx.blacklist"; | 935 std::string id = "com.google.crx.blacklist"; |
| 929 | 936 |
| 930 std::string hash = | 937 std::string hash = |
| 931 "CCEA231D3CD30A348DA1383ED311EAC11E82360773CB2BA4E2C3A5FF16E337CC"; | 938 "CCEA231D3CD30A348DA1383ED311EAC11E82360773CB2BA4E2C3A5FF16E337CC"; |
| 932 | 939 |
| 933 std::string version = "0.0.1"; | 940 std::string version = "0.0.1"; |
| 934 std::set<int> requests; | 941 std::set<int> requests; |
| 935 requests.insert(0); | 942 requests.insert(0); |
| 936 updater.downloader_->FetchUpdatedExtension(id, test_url, hash, version, | 943 updater.downloader_->FetchUpdatedExtension(id, test_url, hash, version, |
| 937 requests); | 944 requests); |
| 938 | 945 |
| 939 // Call back the ExtensionUpdater with a 200 response and some test data. | 946 // Call back the ExtensionUpdater with a 200 response and some test data. |
| 940 std::string extension_data("aaaabbbbcccceeeeaaaabbbbcccceeee"); | 947 std::string extension_data("aaaabbbbcccceeeeaaaabbbbcccceeee"); |
| 941 EXPECT_FALSE(service.blacklist()->IsBlacklisted(extension_data)); | 948 EXPECT_FALSE(blacklist.IsBlacklisted(extension_data)); |
| 942 | 949 |
| 943 fetcher = factory.GetFetcherByID(ExtensionDownloader::kExtensionFetcherId); | 950 fetcher = factory.GetFetcherByID(ExtensionDownloader::kExtensionFetcherId); |
| 944 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); | 951 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); |
| 945 EXPECT_TRUE(fetcher->GetLoadFlags() == kExpectedLoadFlags); | 952 EXPECT_TRUE(fetcher->GetLoadFlags() == kExpectedLoadFlags); |
| 946 | 953 |
| 947 fetcher->set_url(test_url); | 954 fetcher->set_url(test_url); |
| 948 fetcher->set_status(net::URLRequestStatus()); | 955 fetcher->set_status(net::URLRequestStatus()); |
| 949 fetcher->set_response_code(200); | 956 fetcher->set_response_code(200); |
| 950 fetcher->SetResponseString(extension_data); | 957 fetcher->SetResponseString(extension_data); |
| 951 fetcher->delegate()->OnURLFetchComplete(fetcher); | 958 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 952 | 959 |
| 953 RunUntilIdle(); | 960 RunUntilIdle(); |
| 954 | 961 |
| 955 EXPECT_TRUE(service.blacklist()->IsBlacklisted(extension_data)); | 962 EXPECT_TRUE(blacklist.IsBlacklisted(extension_data)); |
| 956 | 963 |
| 957 EXPECT_EQ(version, service.pref_service()-> | 964 EXPECT_EQ(version, service.pref_service()-> |
| 958 GetString(prefs::kExtensionBlacklistUpdateVersion)); | 965 GetString(prefs::kExtensionBlacklistUpdateVersion)); |
| 959 } | 966 } |
| 960 | 967 |
| 961 // Two extensions are updated. If |updates_start_running| is true, the | 968 // Two extensions are updated. If |updates_start_running| is true, the |
| 962 // mock extensions service has UpdateExtension(...) return true, and | 969 // mock extensions service has UpdateExtension(...) return true, and |
| 963 // the test is responsible for creating fake CrxInstallers. Otherwise, | 970 // the test is responsible for creating fake CrxInstallers. Otherwise, |
| 964 // UpdateExtension() returns false, signaling install failures. | 971 // UpdateExtension() returns false, signaling install failures. |
| 965 void TestMultipleExtensionDownloading(bool updates_start_running) { | 972 void TestMultipleExtensionDownloading(bool updates_start_running) { |
| (...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1536 // -prodversionmin (shouldn't update if browser version too old) | 1543 // -prodversionmin (shouldn't update if browser version too old) |
| 1537 // -manifests & updates arriving out of order / interleaved | 1544 // -manifests & updates arriving out of order / interleaved |
| 1538 // -malformed update url (empty, file://, has query, has a # fragment, etc.) | 1545 // -malformed update url (empty, file://, has query, has a # fragment, etc.) |
| 1539 // -An extension gets uninstalled while updates are in progress (so it doesn't | 1546 // -An extension gets uninstalled while updates are in progress (so it doesn't |
| 1540 // "come back from the dead") | 1547 // "come back from the dead") |
| 1541 // -An extension gets manually updated to v3 while we're downloading v2 (ie | 1548 // -An extension gets manually updated to v3 while we're downloading v2 (ie |
| 1542 // you don't get downgraded accidentally) | 1549 // you don't get downgraded accidentally) |
| 1543 // -An update manifest mentions multiple updates | 1550 // -An update manifest mentions multiple updates |
| 1544 | 1551 |
| 1545 } // namespace extensions | 1552 } // namespace extensions |
| OLD | NEW |