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

Unified Diff: chrome/browser/extensions/extension_updater_unittest.cc

Issue 1695018: Adding ExtensionPrefs methods for storing update-when-idle data.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/extension_updater.cc ('k') | chrome/browser/extensions/extensions_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_updater_unittest.cc
===================================================================
--- chrome/browser/extensions/extension_updater_unittest.cc (revision 45592)
+++ chrome/browser/extensions/extension_updater_unittest.cc (working copy)
@@ -14,7 +14,7 @@
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/extensions/extension_updater.h"
#include "chrome/browser/extensions/extensions_service.h"
-#include "chrome/browser/json_pref_store.h"
+#include "chrome/browser/extensions/test_extension_prefs.h"
#include "chrome/browser/net/test_url_fetcher_factory.h"
#include "chrome/browser/pref_service.h"
#include "chrome/common/extensions/extension.h"
@@ -42,7 +42,7 @@
static int expected_load_flags =
net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
-// Do-nothing base class for further specialized test classes.
+// Base class for further specialized test classes.
class MockService : public ExtensionUpdateService {
public:
MockService() {}
@@ -79,85 +79,42 @@
return false;
}
- virtual void SetLastPingDay(const std::string& extension_id,
- const Time& time) {
- last_ping_days_[extension_id] = time;
- }
+ virtual ExtensionPrefs* extension_prefs() { return prefs_.prefs(); }
- virtual Time LastPingDay(const std::string& extension_id) const {
- std::map<std::string, Time>::const_iterator i =
- last_ping_days_.find(extension_id);
- if (i != last_ping_days_.end())
- return i->second;
+ PrefService* pref_service() { return prefs_.pref_service(); }
- return Time();
+ // Creates test extensions and inserts them into list. The name and
+ // version are all based on their index. If |update_url| is non-null, it
+ // will be used as the update_url for each extension.
+ void CreateTestExtensions(int count, ExtensionList *list,
+ const std::string* update_url) {
+ for (int i = 1; i <= count; i++) {
+ DictionaryValue manifest;
+ manifest.SetString(extension_manifest_keys::kVersion,
+ StringPrintf("%d.0.0.0", i));
+ manifest.SetString(extension_manifest_keys::kName,
+ StringPrintf("Extension %d", i));
+ if (update_url)
+ manifest.SetString(extension_manifest_keys::kUpdateURL, *update_url);
+ Extension* e = prefs_.AddExtensionWithManifest(manifest);
+ ASSERT_TRUE(e != NULL);
+ list->push_back(e);
+ }
}
- virtual void SetBlacklistLastPingDay(const Time& time) {
- blacklist_last_ping_day_ = time;
- }
-
- virtual Time BlacklistLastPingDay() const {
- return blacklist_last_ping_day_;
- }
-
protected:
PendingExtensionMap pending_extensions_;
+ TestExtensionPrefs prefs_;
private:
- std::map<std::string, Time> last_ping_days_;
- Time blacklist_last_ping_day_;
DISALLOW_COPY_AND_ASSIGN(MockService);
};
-// Class that contains a PrefService and handles cleanup of a temporary file
-// backing it.
-class ScopedTempPrefService {
- public:
- ScopedTempPrefService() {
- // Make sure different tests won't use the same prefs file. It will cause
- // problem when different tests are running in parallel.
- temp_dir_.CreateUniqueTempDir();
- FilePath pref_file = temp_dir_.path().AppendASCII("prefs");
- prefs_.reset(new PrefService(new JsonPrefStore(pref_file)));
- }
- ~ScopedTempPrefService() {}
-
- PrefService* get() {
- return prefs_.get();
- }
-
- private:
- // Ordering matters, we want |prefs_| to be destroyed before |temp_dir_|.
- ScopedTempDir temp_dir_;
- scoped_ptr<PrefService> prefs_;
-};
-
-// Creates test extensions and inserts them into list. The name and
-// version are all based on their index. If |update_url| is non-null, it
-// will be used as the update_url for each extension.
-void CreateTestExtensions(int count, ExtensionList *list,
- const std::string* update_url) {
- for (int i = 1; i <= count; i++) {
- DictionaryValue input;
-#if defined(OS_WIN)
- FilePath path(StringPrintf(L"c:\\extension%i", i));
-#else
- FilePath path(StringPrintf("/extension%i", i));
-#endif
- Extension* e = new Extension(path);
- e->set_location(Extension::INTERNAL);
- input.SetString(extension_manifest_keys::kVersion,
- StringPrintf("%d.0.0.0", i));
- input.SetString(extension_manifest_keys::kName,
- StringPrintf("Extension %d", i));
- if (update_url)
- input.SetString(extension_manifest_keys::kUpdateURL, *update_url);
- std::string error;
- EXPECT_TRUE(e->InitFromValue(input, false, &error));
- list->push_back(e);
- }
+std::string GenerateId(std::string input) {
+ std::string result;
+ EXPECT_TRUE(Extension::GenerateId(input, &result));
+ return result;
}
// Creates test pending extensions and inserts them into list. The
@@ -170,7 +127,8 @@
scoped_ptr<Version> version(
Version::GetVersionFromString(StringPrintf("%d.0.0.0", i)));
ASSERT_TRUE(version.get());
- (*pending_extensions)[StringPrintf("extension%i", i)] =
+ std::string id = GenerateId(StringPrintf("extension%i", i));
+ (*pending_extensions)[id] =
PendingExtensionInfo(update_url, *version,
is_theme, kInstallSilently);
}
@@ -336,7 +294,7 @@
CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions);
service.set_pending_extensions(pending_extensions);
} else {
- CreateTestExtensions(1, &extensions, &update_url);
+ service.CreateTestExtensions(1, &extensions, &update_url);
service.set_extensions(extensions);
}
@@ -347,9 +305,8 @@
TestURLFetcherFactory factory;
URLFetcher::set_factory(&factory);
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), 60*60*24);
+ new ExtensionUpdater(&service, service.pref_service(), 60*60*24);
updater->Start();
// Tell the update that it's time to do update checks.
@@ -400,9 +357,8 @@
TestURLFetcherFactory factory;
URLFetcher::set_factory(&factory);
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), 60*60*24);
+ new ExtensionUpdater(&service, service.pref_service(), 60*60*24);
updater->Start();
// Tell the updater that it's time to do update checks.
@@ -449,13 +405,13 @@
// Create a set of test extensions
ServiceForManifestTests service;
ExtensionList tmp;
- CreateTestExtensions(3, &tmp, NULL);
+ service.CreateTestExtensions(3, &tmp, NULL);
service.set_extensions(tmp);
MessageLoop message_loop;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
// Check passing an empty list of parse results to DetermineUpdates
ManifestFetchData fetch_data(GURL("http://localhost/foo"));
@@ -491,9 +447,9 @@
service.set_pending_extensions(pending_extensions);
MessageLoop message_loop;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
ManifestFetchData fetch_data(GURL("http://localhost/foo"));
UpdateManifest::Results updates;
@@ -526,9 +482,9 @@
TestURLFetcher* fetcher = NULL;
URLFetcher::set_factory(&factory);
ServiceForDownloadTests service;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
GURL url1("http://localhost/manifest1");
GURL url2("http://localhost/manifest2");
@@ -590,9 +546,9 @@
TestURLFetcher* fetcher = NULL;
URLFetcher::set_factory(&factory);
ServiceForDownloadTests service;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
GURL test_url("http://localhost/extension.crx");
@@ -648,10 +604,10 @@
TestURLFetcher* fetcher = NULL;
URLFetcher::set_factory(&factory);
ServiceForBlacklistTests service;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
- prefs.get()->
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
+ service.pref_service()->
RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, L"0");
GURL test_url("http://localhost/extension.crx");
@@ -661,7 +617,6 @@
"2CE109E9D0FAF820B2434E166297934E6177B65AB9951DBC3E204CAD4689B39C";
std::string version = "0.0.1";
-
updater->FetchUpdatedExtension(id, test_url, hash, version);
// Call back the ExtensionUpdater with a 200 response and some test data
@@ -679,7 +634,7 @@
// blacklist.
EXPECT_TRUE(service.processed_blacklist());
- EXPECT_EQ(version, WideToASCII(prefs.get()->
+ EXPECT_EQ(version, WideToASCII(service.pref_service()->
GetString(prefs::kExtensionBlacklistUpdateVersion)));
URLFetcher::set_factory(NULL);
@@ -696,9 +651,9 @@
TestURLFetcher* fetcher = NULL;
URLFetcher::set_factory(&factory);
ServiceForDownloadTests service;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
GURL url1("http://localhost/extension1.crx");
GURL url2("http://localhost/extension2.crx");
@@ -765,24 +720,25 @@
ExtensionList tmp;
GURL url1("http://clients2.google.com/service/update2/crx");
GURL url2("http://www.somewebsite.com");
- CreateTestExtensions(1, &tmp, &url1.possibly_invalid_spec());
- CreateTestExtensions(1, &tmp, &url2.possibly_invalid_spec());
+ service.CreateTestExtensions(1, &tmp, &url1.possibly_invalid_spec());
+ service.CreateTestExtensions(1, &tmp, &url2.possibly_invalid_spec());
EXPECT_EQ(2u, tmp.size());
service.set_extensions(tmp);
Time now = Time::Now();
if (ping_days == 0) {
- service.SetLastPingDay(tmp[0]->id(), now - TimeDelta::FromSeconds(15));
+ service.extension_prefs()->SetLastPingDay(
+ tmp[0]->id(), now - TimeDelta::FromSeconds(15));
} else if (ping_days > 0) {
Time last_ping_day =
now - TimeDelta::FromDays(ping_days) - TimeDelta::FromSeconds(15);
- service.SetLastPingDay(tmp[0]->id(), last_ping_day);
+ service.extension_prefs()->SetLastPingDay(tmp[0]->id(), last_ping_day);
}
MessageLoop message_loop;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
updater->set_blacklist_checks_enabled(false);
// Make the updater do manifest fetching, and note the urls it tries to
@@ -834,13 +790,13 @@
// >= 1 day for the extension.
static void TestHandleManifestResults() {
ServiceForManifestTests service;
- ScopedTempPrefService prefs;
scoped_refptr<ExtensionUpdater> updater =
- new ExtensionUpdater(&service, prefs.get(), kUpdateFrequencySecs);
+ new ExtensionUpdater(&service, service.pref_service(),
+ kUpdateFrequencySecs);
GURL update_url("http://www.google.com/manifest");
ExtensionList tmp;
- CreateTestExtensions(1, &tmp, &update_url.spec());
+ service.CreateTestExtensions(1, &tmp, &update_url.spec());
service.set_extensions(tmp);
ManifestFetchData fetch_data(update_url);
@@ -851,7 +807,8 @@
results.daystart_elapsed_seconds = 750;
updater->HandleManifestResults(fetch_data, results);
- Time last_ping_day = service.LastPingDay(extension->id());
+ Time last_ping_day =
+ service.extension_prefs()->LastPingDay(extension->id());
EXPECT_FALSE(last_ping_day.is_null());
int64 seconds_diff = (Time::Now() - last_ping_day).InSeconds();
EXPECT_LT(seconds_diff - results.daystart_elapsed_seconds, 5);
@@ -924,7 +881,7 @@
// Non-internal non-external extensions should be rejected.
{
ExtensionList extensions;
- CreateTestExtensions(1, &extensions, NULL);
+ service.CreateTestExtensions(1, &extensions, NULL);
ASSERT_FALSE(extensions.empty());
extensions[0]->set_location(Extension::INVALID);
builder.AddExtension(*extensions[0]);
@@ -937,8 +894,8 @@
// Extensions with invalid update URLs should be rejected.
builder.AddPendingExtension(
- "id", PendingExtensionInfo(GURL("http:google.com:foo"),
- *version, false, false));
+ GenerateId("foo"), PendingExtensionInfo(GURL("http:google.com:foo"),
+ *version, false, false));
EXPECT_TRUE(builder.GetFetches().empty());
// Extensions with empty IDs should be rejected.
@@ -952,7 +909,7 @@
// Extensions with empty update URLs should have a default one
// filled in.
builder.AddPendingExtension(
- "id", PendingExtensionInfo(GURL(), *version, false, false));
+ GenerateId("foo"), PendingExtensionInfo(GURL(), *version, false, false));
std::vector<ManifestFetchData*> fetches = builder.GetFetches();
ASSERT_EQ(1u, fetches.size());
scoped_ptr<ManifestFetchData> fetch(fetches[0]);
« 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