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

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

Issue 1232003: Added support for pending extensions to ExtensionsService and (Closed)
Patch Set: synced to head Created 10 years, 9 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
OLDNEW
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 <map> 5 #include <map>
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/rand_util.h" 8 #include "base/rand_util.h"
9 #include "base/scoped_ptr.h"
9 #include "base/stl_util-inl.h" 10 #include "base/stl_util-inl.h"
10 #include "base/string_util.h" 11 #include "base/string_util.h"
11 #include "base/thread.h" 12 #include "base/thread.h"
13 #include "base/version.h"
12 #include "chrome/browser/chrome_thread.h" 14 #include "chrome/browser/chrome_thread.h"
13 #include "chrome/browser/extensions/extension_updater.h" 15 #include "chrome/browser/extensions/extension_updater.h"
14 #include "chrome/browser/extensions/extensions_service.h" 16 #include "chrome/browser/extensions/extensions_service.h"
15 #include "chrome/browser/net/test_url_fetcher_factory.h" 17 #include "chrome/browser/net/test_url_fetcher_factory.h"
16 #include "chrome/browser/pref_service.h" 18 #include "chrome/browser/pref_service.h"
17 #include "chrome/common/extensions/extension.h" 19 #include "chrome/common/extensions/extension.h"
18 #include "chrome/common/extensions/extension_constants.h" 20 #include "chrome/common/extensions/extension_constants.h"
19 #include "chrome/common/extensions/extension_error_reporter.h" 21 #include "chrome/common/extensions/extension_error_reporter.h"
20 #include "chrome/common/pref_names.h" 22 #include "chrome/common/pref_names.h"
21 #include "net/base/escape.h" 23 #include "net/base/escape.h"
(...skipping 21 matching lines...) Expand all
43 class MockService : public ExtensionUpdateService { 45 class MockService : public ExtensionUpdateService {
44 public: 46 public:
45 MockService() {} 47 MockService() {}
46 virtual ~MockService() {} 48 virtual ~MockService() {}
47 49
48 virtual const ExtensionList* extensions() const { 50 virtual const ExtensionList* extensions() const {
49 EXPECT_TRUE(false); 51 EXPECT_TRUE(false);
50 return NULL; 52 return NULL;
51 } 53 }
52 54
55 virtual const PendingExtensionMap& pending_extensions() const {
56 EXPECT_TRUE(false);
57 return pending_extensions_;
58 }
59
53 virtual void UpdateExtension(const std::string& id, 60 virtual void UpdateExtension(const std::string& id,
54 const FilePath& extension_path, 61 const FilePath& extension_path,
55 const GURL& download_url) { 62 const GURL& download_url) {
56 EXPECT_TRUE(false); 63 EXPECT_TRUE(false);
57 } 64 }
58 65
59 virtual Extension* GetExtensionById(const std::string& id, bool) { 66 virtual Extension* GetExtensionById(const std::string& id, bool) {
60 EXPECT_TRUE(false); 67 EXPECT_TRUE(false);
61 return NULL; 68 return NULL;
62 } 69 }
(...skipping 15 matching lines...) Expand all
78 85
79 virtual Time LastPingDay(const std::string& extension_id) { 86 virtual Time LastPingDay(const std::string& extension_id) {
80 std::map<std::string, Time>::iterator i = 87 std::map<std::string, Time>::iterator i =
81 last_ping_days_.find(extension_id); 88 last_ping_days_.find(extension_id);
82 if (i != last_ping_days_.end()) 89 if (i != last_ping_days_.end())
83 return i->second; 90 return i->second;
84 91
85 return Time(); 92 return Time();
86 } 93 }
87 94
95 protected:
96 PendingExtensionMap pending_extensions_;
97
88 private: 98 private:
89 std::map<std::string, Time> last_ping_days_; 99 std::map<std::string, Time> last_ping_days_;
90 DISALLOW_COPY_AND_ASSIGN(MockService); 100 DISALLOW_COPY_AND_ASSIGN(MockService);
91 }; 101 };
92 102
93 // Class that contains a PrefService and handles cleanup of a temporary file 103 // Class that contains a PrefService and handles cleanup of a temporary file
94 // backing it. 104 // backing it.
95 class ScopedTempPrefService { 105 class ScopedTempPrefService {
96 public: 106 public:
97 ScopedTempPrefService() { 107 ScopedTempPrefService() {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 input.SetString(extension_manifest_keys::kName, 143 input.SetString(extension_manifest_keys::kName,
134 StringPrintf("Extension %d", i)); 144 StringPrintf("Extension %d", i));
135 if (update_url) 145 if (update_url)
136 input.SetString(extension_manifest_keys::kUpdateURL, *update_url); 146 input.SetString(extension_manifest_keys::kUpdateURL, *update_url);
137 std::string error; 147 std::string error;
138 EXPECT_TRUE(e->InitFromValue(input, false, &error)); 148 EXPECT_TRUE(e->InitFromValue(input, false, &error));
139 list->push_back(e); 149 list->push_back(e);
140 } 150 }
141 } 151 }
142 152
153 // Creates test pending extensions and inserts them into list. The
154 // name and version are all based on their index.
155 void CreateTestPendingExtensions(int count, const GURL& update_url,
156 PendingExtensionMap* pending_extensions) {
157 for (int i = 1; i <= count; i++) {
158 bool is_theme = (i % 2) == 0;
159 const bool kInstallSilently = true;
160 scoped_ptr<Version> version(
161 Version::GetVersionFromString(StringPrintf("%d.0.0.0", i)));
162 ASSERT_TRUE(version.get());
163 (*pending_extensions)[StringPrintf("extension%i", i)] =
164 PendingExtensionInfo(update_url, *version,
165 is_theme, kInstallSilently);
166 }
167 }
168
143 class ServiceForManifestTests : public MockService { 169 class ServiceForManifestTests : public MockService {
144 public: 170 public:
145 ServiceForManifestTests() : has_installed_extensions_(false) {} 171 ServiceForManifestTests() : has_installed_extensions_(false) {}
146 172
147 virtual ~ServiceForManifestTests() {} 173 virtual ~ServiceForManifestTests() {}
148 174
149 virtual Extension* GetExtensionById(const std::string& id, bool) { 175 virtual Extension* GetExtensionById(const std::string& id, bool) {
150 for (ExtensionList::iterator iter = extensions_.begin(); 176 for (ExtensionList::iterator iter = extensions_.begin();
151 iter != extensions_.end(); ++iter) { 177 iter != extensions_.end(); ++iter) {
152 if ((*iter)->id() == id) { 178 if ((*iter)->id() == id) {
153 return *iter; 179 return *iter;
154 } 180 }
155 } 181 }
156 return NULL; 182 return NULL;
157 } 183 }
158 184
159 virtual const ExtensionList* extensions() const { return &extensions_; } 185 virtual const ExtensionList* extensions() const { return &extensions_; }
160 186
187 virtual const PendingExtensionMap& pending_extensions() const {
188 return pending_extensions_;
189 }
190
161 void set_extensions(ExtensionList extensions) { 191 void set_extensions(ExtensionList extensions) {
162 extensions_ = extensions; 192 extensions_ = extensions;
163 } 193 }
164 194
195 void set_pending_extensions(
196 const PendingExtensionMap& pending_extensions) {
197 pending_extensions_ = pending_extensions;
198 }
199
165 virtual bool HasInstalledExtensions() { 200 virtual bool HasInstalledExtensions() {
166 return has_installed_extensions_; 201 return has_installed_extensions_;
167 } 202 }
168 203
169 void set_has_installed_extensions(bool value) { 204 void set_has_installed_extensions(bool value) {
170 has_installed_extensions_ = value; 205 has_installed_extensions_ = value;
171 } 206 }
172 207
173 private: 208 private:
174 ExtensionList extensions_; 209 ExtensionList extensions_;
175 bool has_installed_extensions_; 210 bool has_installed_extensions_;
176 }; 211 };
177 212
178 class ServiceForDownloadTests : public MockService { 213 class ServiceForDownloadTests : public MockService {
179 public: 214 public:
180 virtual void UpdateExtension(const std::string& id, 215 virtual void UpdateExtension(const std::string& id,
181 const FilePath& extension_path, 216 const FilePath& extension_path,
182 const GURL& download_url) { 217 const GURL& download_url) {
183 extension_id_ = id; 218 extension_id_ = id;
184 install_path_ = extension_path; 219 install_path_ = extension_path;
185 download_url_ = download_url; 220 download_url_ = download_url;
186 } 221 }
187 222
223 virtual const PendingExtensionMap& pending_extensions() const {
224 return pending_extensions_;
225 }
226
188 virtual Extension* GetExtensionById(const std::string& id, bool) { 227 virtual Extension* GetExtensionById(const std::string& id, bool) {
189 last_inquired_extension_id_ = id; 228 last_inquired_extension_id_ = id;
190 return NULL; 229 return NULL;
191 } 230 }
192 231
232 void set_pending_extensions(
233 const PendingExtensionMap& pending_extensions) {
234 pending_extensions_ = pending_extensions;
235 }
236
193 const std::string& extension_id() { return extension_id_; } 237 const std::string& extension_id() { return extension_id_; }
194 const FilePath& install_path() { return install_path_; } 238 const FilePath& install_path() { return install_path_; }
195 const GURL& download_url() { return download_url_; } 239 const GURL& download_url() { return download_url_; }
196 const std::string& last_inquired_extension_id() { 240 const std::string& last_inquired_extension_id() {
197 return last_inquired_extension_id_; 241 return last_inquired_extension_id_;
198 } 242 }
199 243
200 private: 244 private:
201 std::string extension_id_; 245 std::string extension_id_;
202 FilePath install_path_; 246 FilePath install_path_;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 const std::string& version, 309 const std::string& version,
266 const std::string& url, 310 const std::string& url,
267 UpdateManifest::Results* results) { 311 UpdateManifest::Results* results) {
268 UpdateManifest::Result result; 312 UpdateManifest::Result result;
269 result.extension_id = id; 313 result.extension_id = id;
270 result.version = version; 314 result.version = version;
271 result.crx_url = GURL(url); 315 result.crx_url = GURL(url);
272 results->list.push_back(result); 316 results->list.push_back(result);
273 } 317 }
274 318
275 static void TestExtensionUpdateCheckRequests() { 319 static void TestExtensionUpdateCheckRequests(bool pending) {
276 // Create an extension with an update_url. 320 // Create an extension with an update_url.
277 ServiceForManifestTests service; 321 ServiceForManifestTests service;
278 ExtensionList tmp;
279 std::string update_url("http://foo.com/bar"); 322 std::string update_url("http://foo.com/bar");
280 CreateTestExtensions(1, &tmp, &update_url); 323 ExtensionList extensions;
281 service.set_extensions(tmp); 324 PendingExtensionMap pending_extensions;
325 if (pending) {
326 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions);
327 service.set_pending_extensions(pending_extensions);
328 } else {
329 CreateTestExtensions(1, &extensions, &update_url);
330 service.set_extensions(extensions);
331 }
282 332
283 // Setup and start the updater. 333 // Setup and start the updater.
284 MessageLoop message_loop; 334 MessageLoop message_loop;
285 ChromeThread io_thread(ChromeThread::IO); 335 ChromeThread io_thread(ChromeThread::IO);
286 io_thread.Start(); 336 io_thread.Start();
287 337
288 TestURLFetcherFactory factory; 338 TestURLFetcherFactory factory;
289 URLFetcher::set_factory(&factory); 339 URLFetcher::set_factory(&factory);
290 ScopedTempPrefService prefs; 340 ScopedTempPrefService prefs;
291 scoped_refptr<ExtensionUpdater> updater = 341 scoped_refptr<ExtensionUpdater> updater =
(...skipping 17 matching lines...) Expand all
309 // look something like "?x=id%3D<id>%26v%3D<version>%26uc". 359 // look something like "?x=id%3D<id>%26v%3D<version>%26uc".
310 EXPECT_TRUE(url.has_query()); 360 EXPECT_TRUE(url.has_query());
311 std::vector<std::string> parts; 361 std::vector<std::string> parts;
312 SplitString(url.query(), '=', &parts); 362 SplitString(url.query(), '=', &parts);
313 EXPECT_EQ(2u, parts.size()); 363 EXPECT_EQ(2u, parts.size());
314 EXPECT_EQ("x", parts[0]); 364 EXPECT_EQ("x", parts[0]);
315 std::string decoded = UnescapeURLComponent(parts[1], 365 std::string decoded = UnescapeURLComponent(parts[1],
316 UnescapeRule::URL_SPECIAL_CHARS); 366 UnescapeRule::URL_SPECIAL_CHARS);
317 std::map<std::string, std::string> params; 367 std::map<std::string, std::string> params;
318 ExtractParameters(decoded, &params); 368 ExtractParameters(decoded, &params);
319 EXPECT_EQ(tmp[0]->id(), params["id"]); 369 if (pending) {
320 EXPECT_EQ(tmp[0]->VersionString(), params["v"]); 370 EXPECT_EQ(pending_extensions.begin()->first, params["id"]);
371 EXPECT_EQ("1.0.0.0", params["v"]);
372 } else {
373 EXPECT_EQ(extensions[0]->id(), params["id"]);
374 EXPECT_EQ(extensions[0]->VersionString(), params["v"]);
375 }
321 EXPECT_EQ("", params["uc"]); 376 EXPECT_EQ("", params["uc"]);
322 377
323 STLDeleteElements(&tmp); 378 if (!pending) {
379 STLDeleteElements(&extensions);
380 }
324 } 381 }
325 382
326 static void TestBlacklistUpdateCheckRequests() { 383 static void TestBlacklistUpdateCheckRequests() {
327 ServiceForManifestTests service; 384 ServiceForManifestTests service;
328 385
329 // Setup and start the updater. 386 // Setup and start the updater.
330 MessageLoop message_loop; 387 MessageLoop message_loop;
331 ChromeThread io_thread(ChromeThread::IO); 388 ChromeThread io_thread(ChromeThread::IO);
332 io_thread.Start(); 389 io_thread.Start();
333 390
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 fetch_data.AddExtension(tmp[1]->id(), tmp[1]->VersionString(), 465 fetch_data.AddExtension(tmp[1]->id(), tmp[1]->VersionString(),
409 ManifestFetchData::kNeverPinged); 466 ManifestFetchData::kNeverPinged);
410 AddParseResult(tmp[1]->id(), 467 AddParseResult(tmp[1]->id(),
411 tmp[1]->VersionString(), "http://localhost/e2_2.0.crx", &updates); 468 tmp[1]->VersionString(), "http://localhost/e2_2.0.crx", &updates);
412 updateable = updater->DetermineUpdates(fetch_data, updates); 469 updateable = updater->DetermineUpdates(fetch_data, updates);
413 EXPECT_EQ(1u, updateable.size()); 470 EXPECT_EQ(1u, updateable.size());
414 EXPECT_EQ(0, updateable[0]); 471 EXPECT_EQ(0, updateable[0]);
415 STLDeleteElements(&tmp); 472 STLDeleteElements(&tmp);
416 } 473 }
417 474
475 static void TestDetermineUpdatesPending() {
476 // Create a set of test extensions
477 ServiceForManifestTests service;
478 PendingExtensionMap pending_extensions;
479 CreateTestPendingExtensions(3, GURL(), &pending_extensions);
480 service.set_pending_extensions(pending_extensions);
481
482 MessageLoop message_loop;
483 ScopedTempPrefService prefs;
484 scoped_refptr<ExtensionUpdater> updater =
485 new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
486
487 ManifestFetchData fetch_data(GURL("http://localhost/foo"));
488 UpdateManifest::Results updates;
489 for (PendingExtensionMap::const_iterator it = pending_extensions.begin();
490 it != pending_extensions.end(); ++it) {
491 fetch_data.AddExtension(it->first,
492 it->second.version.GetString(),
493 ManifestFetchData::kNeverPinged);
494 AddParseResult(it->first,
495 "1.1", "http://localhost/e1_1.1.crx", &updates);
496 }
497 std::vector<int> updateable =
498 updater->DetermineUpdates(fetch_data, updates);
499 // Only the first one is updateable.
500 EXPECT_EQ(1u, updateable.size());
501 for (std::vector<int>::size_type i = 0; i < updateable.size(); ++i) {
502 EXPECT_EQ(static_cast<int>(i), updateable[i]);
503 }
504 }
505
418 static void TestMultipleManifestDownloading() { 506 static void TestMultipleManifestDownloading() {
419 MessageLoop ui_loop; 507 MessageLoop ui_loop;
420 ChromeThread ui_thread(ChromeThread::UI, &ui_loop); 508 ChromeThread ui_thread(ChromeThread::UI, &ui_loop);
421 ChromeThread file_thread(ChromeThread::FILE); 509 ChromeThread file_thread(ChromeThread::FILE);
422 file_thread.Start(); 510 file_thread.Start();
423 ChromeThread io_thread(ChromeThread::IO); 511 ChromeThread io_thread(ChromeThread::IO);
424 io_thread.Start(); 512 io_thread.Start();
425 513
426 TestURLFetcherFactory factory; 514 TestURLFetcherFactory factory;
427 TestURLFetcher* fetcher = NULL; 515 TestURLFetcher* fetcher = NULL;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 // This should run the manifest parsing, then we want to make sure that our 560 // This should run the manifest parsing, then we want to make sure that our
473 // service was called with GetExtensionById with the matching id from 561 // service was called with GetExtensionById with the matching id from
474 // kValidXml. 562 // kValidXml.
475 file_thread.Stop(); 563 file_thread.Stop();
476 io_thread.Stop(); 564 io_thread.Stop();
477 ui_loop.RunAllPending(); 565 ui_loop.RunAllPending();
478 EXPECT_EQ("12345", service.last_inquired_extension_id()); 566 EXPECT_EQ("12345", service.last_inquired_extension_id());
479 xmlCleanupGlobals(); 567 xmlCleanupGlobals();
480 } 568 }
481 569
482 static void TestSingleExtensionDownloading() { 570 static void TestSingleExtensionDownloading(bool pending) {
483 MessageLoop ui_loop; 571 MessageLoop ui_loop;
484 ChromeThread ui_thread(ChromeThread::UI, &ui_loop); 572 ChromeThread ui_thread(ChromeThread::UI, &ui_loop);
485 ChromeThread file_thread(ChromeThread::FILE); 573 ChromeThread file_thread(ChromeThread::FILE);
486 file_thread.Start(); 574 file_thread.Start();
487 ChromeThread io_thread(ChromeThread::IO); 575 ChromeThread io_thread(ChromeThread::IO);
488 io_thread.Start(); 576 io_thread.Start();
489 577
490 TestURLFetcherFactory factory; 578 TestURLFetcherFactory factory;
491 TestURLFetcher* fetcher = NULL; 579 TestURLFetcher* fetcher = NULL;
492 URLFetcher::set_factory(&factory); 580 URLFetcher::set_factory(&factory);
493 ServiceForDownloadTests service; 581 ServiceForDownloadTests service;
494 ScopedTempPrefService prefs; 582 ScopedTempPrefService prefs;
495 scoped_refptr<ExtensionUpdater> updater = 583 scoped_refptr<ExtensionUpdater> updater =
496 new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs); 584 new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
497 585
498 GURL test_url("http://localhost/extension.crx"); 586 GURL test_url("http://localhost/extension.crx");
499 587
500 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 588 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
501 std::string hash = ""; 589 std::string hash = "";
502 std::string version = "0.0.1"; 590 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.1"));
591 ASSERT_TRUE(version.get());
592 updater->FetchUpdatedExtension(id, test_url, hash, version->GetString());
503 593
504 updater->FetchUpdatedExtension(id, test_url, hash, version); 594 if (pending) {
595 const bool kIsTheme = false;
596 const bool kInstallSilently = true;
597 PendingExtensionMap pending_extensions;
598 pending_extensions[id] =
599 PendingExtensionInfo(test_url, *version,
600 kIsTheme, kInstallSilently);
601 service.set_pending_extensions(pending_extensions);
602 }
505 603
506 // Call back the ExtensionUpdater with a 200 response and some test data 604 // Call back the ExtensionUpdater with a 200 response and some test data
507 std::string extension_data("whatever"); 605 std::string extension_data("whatever");
508 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId); 606 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId);
509 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); 607 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL);
510 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags); 608 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags);
511 fetcher->delegate()->OnURLFetchComplete( 609 fetcher->delegate()->OnURLFetchComplete(
512 fetcher, test_url, URLRequestStatus(), 200, ResponseCookies(), 610 fetcher, test_url, URLRequestStatus(), 200, ResponseCookies(),
513 extension_data); 611 extension_data);
514 612
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 847
750 STLDeleteElements(&tmp); 848 STLDeleteElements(&tmp);
751 } 849 }
752 }; 850 };
753 851
754 // Because we test some private methods of ExtensionUpdater, it's easer for the 852 // Because we test some private methods of ExtensionUpdater, it's easer for the
755 // actual test code to live in ExtenionUpdaterTest methods instead of TEST_F 853 // actual test code to live in ExtenionUpdaterTest methods instead of TEST_F
756 // subclasses where friendship with ExtenionUpdater is not inherited. 854 // subclasses where friendship with ExtenionUpdater is not inherited.
757 855
758 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequests) { 856 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequests) {
759 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(); 857 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(false);
858 }
859
860 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequestsPending) {
861 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(true);
760 } 862 }
761 863
762 // This test is disabled on Mac, see http://crbug.com/26035. 864 // This test is disabled on Mac, see http://crbug.com/26035.
763 TEST(ExtensionUpdaterTest, MAYBE_TestBlacklistUpdateCheckRequests) { 865 TEST(ExtensionUpdaterTest, MAYBE_TestBlacklistUpdateCheckRequests) {
764 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests(); 866 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests();
765 } 867 }
766 868
767 TEST(ExtensionUpdaterTest, TestDetermineUpdates) { 869 TEST(ExtensionUpdaterTest, TestDetermineUpdates) {
768 ExtensionUpdaterTest::TestDetermineUpdates(); 870 ExtensionUpdaterTest::TestDetermineUpdates();
769 } 871 }
770 872
873 TEST(ExtensionUpdaterTest, TestDetermineUpdatesPending) {
874 ExtensionUpdaterTest::TestDetermineUpdatesPending();
875 }
876
771 TEST(ExtensionUpdaterTest, TestMultipleManifestDownloading) { 877 TEST(ExtensionUpdaterTest, TestMultipleManifestDownloading) {
772 ExtensionUpdaterTest::TestMultipleManifestDownloading(); 878 ExtensionUpdaterTest::TestMultipleManifestDownloading();
773 } 879 }
774 880
775 TEST(ExtensionUpdaterTest, TestSingleExtensionDownloading) { 881 TEST(ExtensionUpdaterTest, TestSingleExtensionDownloading) {
776 ExtensionUpdaterTest::TestSingleExtensionDownloading(); 882 ExtensionUpdaterTest::TestSingleExtensionDownloading(false);
883 }
884
885 TEST(ExtensionUpdaterTest, TestSingleExtensionDownloadingPending) {
886 ExtensionUpdaterTest::TestSingleExtensionDownloading(true);
777 } 887 }
778 888
779 // This test is disabled on Mac, see http://crbug.com/26035. 889 // This test is disabled on Mac, see http://crbug.com/26035.
780 TEST(ExtensionUpdaterTest, MAYBE_TestBlacklistDownloading) { 890 TEST(ExtensionUpdaterTest, MAYBE_TestBlacklistDownloading) {
781 ExtensionUpdaterTest::TestBlacklistDownloading(); 891 ExtensionUpdaterTest::TestBlacklistDownloading();
782 } 892 }
783 893
784 TEST(ExtensionUpdaterTest, TestMultipleExtensionDownloading) { 894 TEST(ExtensionUpdaterTest, TestMultipleExtensionDownloading) {
785 ExtensionUpdaterTest::TestMultipleExtensionDownloading(); 895 ExtensionUpdaterTest::TestMultipleExtensionDownloading();
786 } 896 }
(...skipping 13 matching lines...) Expand all
800 // -prodversionmin (shouldn't update if browser version too old) 910 // -prodversionmin (shouldn't update if browser version too old)
801 // -manifests & updates arriving out of order / interleaved 911 // -manifests & updates arriving out of order / interleaved
802 // -Profile::GetDefaultRequestContext() returning null 912 // -Profile::GetDefaultRequestContext() returning null
803 // (should not crash, but just do check later) 913 // (should not crash, but just do check later)
804 // -malformed update url (empty, file://, has query, has a # fragment, etc.) 914 // -malformed update url (empty, file://, has query, has a # fragment, etc.)
805 // -An extension gets uninstalled while updates are in progress (so it doesn't 915 // -An extension gets uninstalled while updates are in progress (so it doesn't
806 // "come back from the dead") 916 // "come back from the dead")
807 // -An extension gets manually updated to v3 while we're downloading v2 (ie 917 // -An extension gets manually updated to v3 while we're downloading v2 (ie
808 // you don't get downgraded accidentally) 918 // you don't get downgraded accidentally)
809 // -An update manifest mentions multiple updates 919 // -An update manifest mentions multiple updates
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_updater.cc ('k') | chrome/browser/extensions/extensions_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698