| 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 |