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

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

Issue 5915004: Introduce incognito preference settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed whitespaces in mac files Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/stl_util-inl.h" 9 #include "base/stl_util-inl.h"
10 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 return false; 84 return false;
85 } 85 }
86 86
87 virtual ExtensionPrefs* extension_prefs() { return prefs_.prefs(); } 87 virtual ExtensionPrefs* extension_prefs() { return prefs_.prefs(); }
88 88
89 PrefService* pref_service() { return prefs_.pref_service(); } 89 PrefService* pref_service() { return prefs_.pref_service(); }
90 90
91 // Creates test extensions and inserts them into list. The name and 91 // Creates test extensions and inserts them into list. The name and
92 // version are all based on their index. If |update_url| is non-null, it 92 // version are all based on their index. If |update_url| is non-null, it
93 // will be used as the update_url for each extension. 93 // will be used as the update_url for each extension.
94 void CreateTestExtensions(int count, ExtensionList *list, 94 // The |id| is used to distinguish extension names and make sure that
95 // no two extensions share the same name.
96 void CreateTestExtensions(int id, int count, ExtensionList *list,
95 const std::string* update_url, 97 const std::string* update_url,
96 Extension::Location location) { 98 Extension::Location location) {
97 for (int i = 1; i <= count; i++) { 99 for (int i = 1; i <= count; i++) {
98 DictionaryValue manifest; 100 DictionaryValue manifest;
99 manifest.SetString(extension_manifest_keys::kVersion, 101 manifest.SetString(extension_manifest_keys::kVersion,
100 base::StringPrintf("%d.0.0.0", i)); 102 base::StringPrintf("%d.0.0.0", i));
101 manifest.SetString(extension_manifest_keys::kName, 103 manifest.SetString(extension_manifest_keys::kName,
102 base::StringPrintf("Extension %d", i)); 104 base::StringPrintf("Extension %d.%d", id, i));
103 if (update_url) 105 if (update_url)
104 manifest.SetString(extension_manifest_keys::kUpdateURL, *update_url); 106 manifest.SetString(extension_manifest_keys::kUpdateURL, *update_url);
105 scoped_refptr<Extension> e = 107 scoped_refptr<Extension> e =
106 prefs_.AddExtensionWithManifest(manifest, location); 108 prefs_.AddExtensionWithManifest(manifest, location);
107 ASSERT_TRUE(e != NULL); 109 ASSERT_TRUE(e != NULL);
108 list->push_back(e); 110 list->push_back(e);
109 } 111 }
110 } 112 }
111 113
112 protected: 114 protected:
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 static void TestExtensionUpdateCheckRequests(bool pending) { 311 static void TestExtensionUpdateCheckRequests(bool pending) {
310 // Create an extension with an update_url. 312 // Create an extension with an update_url.
311 ServiceForManifestTests service; 313 ServiceForManifestTests service;
312 std::string update_url("http://foo.com/bar"); 314 std::string update_url("http://foo.com/bar");
313 ExtensionList extensions; 315 ExtensionList extensions;
314 PendingExtensionMap pending_extensions; 316 PendingExtensionMap pending_extensions;
315 if (pending) { 317 if (pending) {
316 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions); 318 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions);
317 service.set_pending_extensions(pending_extensions); 319 service.set_pending_extensions(pending_extensions);
318 } else { 320 } else {
319 service.CreateTestExtensions(1, &extensions, &update_url, 321 service.CreateTestExtensions(1, 1, &extensions, &update_url,
320 Extension::INTERNAL); 322 Extension::INTERNAL);
321 service.set_extensions(extensions); 323 service.set_extensions(extensions);
322 } 324 }
323 325
324 // Setup and start the updater. 326 // Setup and start the updater.
325 MessageLoop message_loop; 327 MessageLoop message_loop;
326 BrowserThread io_thread(BrowserThread::IO); 328 BrowserThread io_thread(BrowserThread::IO);
327 io_thread.Start(); 329 io_thread.Start();
328 330
329 TestURLFetcherFactory factory; 331 TestURLFetcherFactory factory;
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 "%26v%3D1.0%26uc%26ap%3Da%253D1%2526b%253D2%2526c", 463 "%26v%3D1.0%26uc%26ap%3Da%253D1%2526b%253D2%2526c",
462 fetch_data.full_url().spec()); 464 fetch_data.full_url().spec());
463 } 465 }
464 466
465 static void TestUpdateUrlDataFromGallery(const std::string& gallery_url) { 467 static void TestUpdateUrlDataFromGallery(const std::string& gallery_url) {
466 MockService service; 468 MockService service;
467 ManifestFetchesBuilder builder(&service); 469 ManifestFetchesBuilder builder(&service);
468 ExtensionList extensions; 470 ExtensionList extensions;
469 std::string url(gallery_url); 471 std::string url(gallery_url);
470 472
471 service.CreateTestExtensions(1, &extensions, &url, Extension::INTERNAL); 473 service.CreateTestExtensions(1, 1, &extensions, &url, Extension::INTERNAL);
472 builder.AddExtension(*extensions[0]); 474 builder.AddExtension(*extensions[0]);
473 std::vector<ManifestFetchData*> fetches = builder.GetFetches(); 475 std::vector<ManifestFetchData*> fetches = builder.GetFetches();
474 EXPECT_EQ(1u, fetches.size()); 476 EXPECT_EQ(1u, fetches.size());
475 scoped_ptr<ManifestFetchData> fetch(fetches[0]); 477 scoped_ptr<ManifestFetchData> fetch(fetches[0]);
476 fetches.clear(); 478 fetches.clear();
477 479
478 // Make sure that extensions that update from the gallery ignore any 480 // Make sure that extensions that update from the gallery ignore any
479 // update URL data. 481 // update URL data.
480 const std::string& update_url = fetch->full_url().spec(); 482 const std::string& update_url = fetch->full_url().spec();
481 std::string::size_type x = update_url.find("x="); 483 std::string::size_type x = update_url.find("x=");
482 EXPECT_NE(std::string::npos, x); 484 EXPECT_NE(std::string::npos, x);
483 std::string::size_type ap = update_url.find("ap%3D", x); 485 std::string::size_type ap = update_url.find("ap%3D", x);
484 EXPECT_EQ(std::string::npos, ap); 486 EXPECT_EQ(std::string::npos, ap);
485 } 487 }
486 488
487 static void TestDetermineUpdates() { 489 static void TestDetermineUpdates() {
488 // Create a set of test extensions 490 // Create a set of test extensions
489 ServiceForManifestTests service; 491 ServiceForManifestTests service;
490 ExtensionList tmp; 492 ExtensionList tmp;
491 service.CreateTestExtensions(3, &tmp, NULL, Extension::INTERNAL); 493 service.CreateTestExtensions(1, 3, &tmp, NULL, Extension::INTERNAL);
492 service.set_extensions(tmp); 494 service.set_extensions(tmp);
493 495
494 MessageLoop message_loop; 496 MessageLoop message_loop;
495 scoped_refptr<ExtensionUpdater> updater( 497 scoped_refptr<ExtensionUpdater> updater(
496 new ExtensionUpdater(&service, service.pref_service(), 498 new ExtensionUpdater(&service, service.pref_service(),
497 kUpdateFrequencySecs)); 499 kUpdateFrequencySecs));
498 updater->Start(); 500 updater->Start();
499 501
500 // Check passing an empty list of parse results to DetermineUpdates 502 // Check passing an empty list of parse results to DetermineUpdates
501 ManifestFetchData fetch_data(GURL("http://localhost/foo")); 503 ManifestFetchData fetch_data(GURL("http://localhost/foo"));
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 static void TestGalleryRequests(int ping_days) { 807 static void TestGalleryRequests(int ping_days) {
806 TestURLFetcherFactory factory; 808 TestURLFetcherFactory factory;
807 URLFetcher::set_factory(&factory); 809 URLFetcher::set_factory(&factory);
808 810
809 // Set up 2 mock extensions, one with a google.com update url and one 811 // Set up 2 mock extensions, one with a google.com update url and one
810 // without. 812 // without.
811 ServiceForManifestTests service; 813 ServiceForManifestTests service;
812 ExtensionList tmp; 814 ExtensionList tmp;
813 GURL url1("http://clients2.google.com/service/update2/crx"); 815 GURL url1("http://clients2.google.com/service/update2/crx");
814 GURL url2("http://www.somewebsite.com"); 816 GURL url2("http://www.somewebsite.com");
815 service.CreateTestExtensions(1, &tmp, &url1.possibly_invalid_spec(), 817 service.CreateTestExtensions(1, 1, &tmp, &url1.possibly_invalid_spec(),
816 Extension::INTERNAL); 818 Extension::INTERNAL);
817 service.CreateTestExtensions(1, &tmp, &url2.possibly_invalid_spec(), 819 service.CreateTestExtensions(2, 1, &tmp, &url2.possibly_invalid_spec(),
818 Extension::INTERNAL); 820 Extension::INTERNAL);
819 EXPECT_EQ(2u, tmp.size()); 821 EXPECT_EQ(2u, tmp.size());
820 service.set_extensions(tmp); 822 service.set_extensions(tmp);
821 823
822 Time now = Time::Now(); 824 Time now = Time::Now();
823 if (ping_days == 0) { 825 if (ping_days == 0) {
824 service.extension_prefs()->SetLastPingDay( 826 service.extension_prefs()->SetLastPingDay(
825 tmp[0]->id(), now - TimeDelta::FromSeconds(15)); 827 tmp[0]->id(), now - TimeDelta::FromSeconds(15));
826 } else if (ping_days > 0) { 828 } else if (ping_days > 0) {
827 Time last_ping_day = 829 Time last_ping_day =
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 static void TestHandleManifestResults() { 887 static void TestHandleManifestResults() {
886 ServiceForManifestTests service; 888 ServiceForManifestTests service;
887 MessageLoop message_loop; 889 MessageLoop message_loop;
888 scoped_refptr<ExtensionUpdater> updater( 890 scoped_refptr<ExtensionUpdater> updater(
889 new ExtensionUpdater(&service, service.pref_service(), 891 new ExtensionUpdater(&service, service.pref_service(),
890 kUpdateFrequencySecs)); 892 kUpdateFrequencySecs));
891 updater->Start(); 893 updater->Start();
892 894
893 GURL update_url("http://www.google.com/manifest"); 895 GURL update_url("http://www.google.com/manifest");
894 ExtensionList tmp; 896 ExtensionList tmp;
895 service.CreateTestExtensions(1, &tmp, &update_url.spec(), 897 service.CreateTestExtensions(1, 1, &tmp, &update_url.spec(),
896 Extension::INTERNAL); 898 Extension::INTERNAL);
897 service.set_extensions(tmp); 899 service.set_extensions(tmp);
898 900
899 ManifestFetchData fetch_data(update_url); 901 ManifestFetchData fetch_data(update_url);
900 const Extension* extension = tmp[0]; 902 const Extension* extension = tmp[0];
901 fetch_data.AddExtension(extension->id(), extension->VersionString(), 903 fetch_data.AddExtension(extension->id(), extension->VersionString(),
902 ManifestFetchData::kNeverPinged, 904 ManifestFetchData::kNeverPinged,
903 kEmptyUpdateUrlData); 905 kEmptyUpdateUrlData);
904 UpdateManifest::Results results; 906 UpdateManifest::Results results;
905 results.daystart_elapsed_seconds = 750; 907 results.daystart_elapsed_seconds = 750;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 ExtensionUpdaterTest::TestHandleManifestResults(); 982 ExtensionUpdaterTest::TestHandleManifestResults();
981 } 983 }
982 984
983 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) { 985 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) {
984 MockService service; 986 MockService service;
985 ManifestFetchesBuilder builder(&service); 987 ManifestFetchesBuilder builder(&service);
986 988
987 // Non-internal non-external extensions should be rejected. 989 // Non-internal non-external extensions should be rejected.
988 { 990 {
989 ExtensionList extensions; 991 ExtensionList extensions;
990 service.CreateTestExtensions(1, &extensions, NULL, Extension::INVALID); 992 service.CreateTestExtensions(1, 1, &extensions, NULL, Extension::INVALID);
991 ASSERT_FALSE(extensions.empty()); 993 ASSERT_FALSE(extensions.empty());
992 builder.AddExtension(*extensions[0]); 994 builder.AddExtension(*extensions[0]);
993 EXPECT_TRUE(builder.GetFetches().empty()); 995 EXPECT_TRUE(builder.GetFetches().empty());
994 } 996 }
995 997
996 // Extensions with invalid update URLs should be rejected. 998 // Extensions with invalid update URLs should be rejected.
997 builder.AddPendingExtension( 999 builder.AddPendingExtension(
998 GenerateId("foo"), PendingExtensionInfo(GURL("http:google.com:foo"), 1000 GenerateId("foo"), PendingExtensionInfo(GURL("http:google.com:foo"),
999 &ShouldInstallExtensionsOnly, 1001 &ShouldInstallExtensionsOnly,
1000 false, false, true, false, 1002 false, false, true, false,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 // -prodversionmin (shouldn't update if browser version too old) 1067 // -prodversionmin (shouldn't update if browser version too old)
1066 // -manifests & updates arriving out of order / interleaved 1068 // -manifests & updates arriving out of order / interleaved
1067 // -Profile::GetDefaultRequestContext() returning null 1069 // -Profile::GetDefaultRequestContext() returning null
1068 // (should not crash, but just do check later) 1070 // (should not crash, but just do check later)
1069 // -malformed update url (empty, file://, has query, has a # fragment, etc.) 1071 // -malformed update url (empty, file://, has query, has a # fragment, etc.)
1070 // -An extension gets uninstalled while updates are in progress (so it doesn't 1072 // -An extension gets uninstalled while updates are in progress (so it doesn't
1071 // "come back from the dead") 1073 // "come back from the dead")
1072 // -An extension gets manually updated to v3 while we're downloading v2 (ie 1074 // -An extension gets manually updated to v3 while we're downloading v2 (ie
1073 // you don't get downgraded accidentally) 1075 // you don't get downgraded accidentally)
1074 // -An update manifest mentions multiple updates 1076 // -An update manifest mentions multiple updates
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698