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

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

Issue 5213002: Fix for Bug 50726 "Save extension list and "winning" prefs from extensions" (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Addressed comments, moved ExtensionPrefStore reference to Profile Created 10 years, 1 month 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
Index: chrome/browser/extensions/test_extension_prefs.cc
diff --git a/chrome/browser/extensions/test_extension_prefs.cc b/chrome/browser/extensions/test_extension_prefs.cc
index 2cbb2d16857e1db7e58a60001988a81f1d76913d..69e96ee1d86cef0c38f6148fb1d89945318dba21 100644
--- a/chrome/browser/extensions/test_extension_prefs.cc
+++ b/chrome/browser/extensions/test_extension_prefs.cc
@@ -10,14 +10,76 @@
#include "base/values.h"
#include "chrome/browser/browser_thread.h"
#include "chrome/browser/extensions/extension_prefs.h"
+#include "chrome/browser/extensions/extension_pref_store.h"
+#include "chrome/browser/prefs/browser_prefs.h"
+#include "chrome/browser/prefs/dummy_pref_store.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prefs/pref_value_store.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/json_pref_store.h"
+#include "chrome/test/testing_pref_service.h"
+#include "chrome/test/testing_profile.h"
#include "testing/gtest/include/gtest/gtest.h"
-TestExtensionPrefs::TestExtensionPrefs() {
+// Mock ExtensionPrefs class with artificial clock to guarantee that no two
+// extensions get the same installation time stamp and we can reliably
+// assert the installation order in the tests below.
+class MockExtensionPrefs : public ExtensionPrefs {
+ public:
+ MockExtensionPrefs(Profile* profile,
+ PrefService* prefs,
+ const FilePath& root_dir_)
+ : ExtensionPrefs(profile, prefs, root_dir_),
+ currentTime(base::Time::Now())
+ {}
+ ~MockExtensionPrefs() {}
+
+ protected:
+ mutable base::Time currentTime;
+
+ virtual base::Time GetCurrentTime() const {
+ currentTime += base::TimeDelta::FromSeconds(10);
+ return currentTime;
+ }
+};
+
+class TestingProfileWithFixedPath : public TestingProfile {
+ public:
+ explicit TestingProfileWithFixedPath(const FilePath& path) : path_(path) {}
+ virtual ~TestingProfileWithFixedPath() {}
+
+ virtual void CreateTestingPrefService() {
+ DCHECK(!prefs_.get());
+ PrefStore* managed_platform_prefs = new DummyPrefStore();
+ PrefStore* device_management_prefs = new DummyPrefStore();
+ PrefStore* extension_prefs = new ExtensionPrefStore(this);
+ PrefStore* command_line_prefs = NULL;
+ PrefStore* user_prefs = new JsonPrefStore(
+ path_.AppendASCII("Preferences"),
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE));
+ PrefStore* recommended_prefs = NULL;
+ PrefStore* default_pref = new DummyPrefStore();
+ testing_prefs_ = new TestingPrefService(managed_platform_prefs,
+ device_management_prefs,
+ extension_prefs,
+ command_line_prefs,
+ user_prefs,
+ recommended_prefs,
+ default_pref);
+ prefs_.reset(testing_prefs_);
+ Profile::RegisterUserPrefs(prefs_.get());
+ browser::RegisterAllPrefs(prefs_.get(), prefs_.get());
+ }
+
+ virtual FilePath GetPath() {
+ return path_;
+ }
+ private:
+ FilePath path_;
+};
+
+TestExtensionPrefs::TestExtensionPrefs() : pref_service_(NULL) {
EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
preferences_file_ = temp_dir_.path().AppendASCII("Preferences");
extensions_dir_ = temp_dir_.path().AppendASCII("Extensions");
@@ -29,7 +91,7 @@ TestExtensionPrefs::TestExtensionPrefs() {
TestExtensionPrefs::~TestExtensionPrefs() {}
void TestExtensionPrefs::RecreateExtensionPrefs() {
- if (pref_service_.get()) {
+ if (pref_service_) {
// The PrefService writes its persistent file on the file thread, so we
// need to wait for any pending I/O to complete before creating a new
// PrefService.
@@ -39,10 +101,11 @@ void TestExtensionPrefs::RecreateExtensionPrefs() {
file_loop.RunAllPending();
}
- // Create a |PrefService| instance that contains only user defined values.
- pref_service_.reset(PrefService::CreateUserPrefService(preferences_file_));
Mattias Nissler (ping if slow) 2010/12/01 10:36:36 Why doesn't this work any longer? Anyway, these te
battre (please use the other) 2010/12/01 17:44:38 @Why doesn't this work any longer? The PrefService
- ExtensionPrefs::RegisterUserPrefs(pref_service_.get());
- prefs_.reset(new ExtensionPrefs(pref_service_.get(), temp_dir_.path()));
+ profile_.reset(new TestingProfileWithFixedPath(temp_dir_.path()));
+ pref_service_ = profile_->GetPrefs();
+ prefs_.reset(new MockExtensionPrefs(profile_.get(),
+ pref_service_,
+ temp_dir_.path()));
}
scoped_refptr<Extension> TestExtensionPrefs::AddExtension(std::string name) {

Powered by Google App Engine
This is Rietveld 408576698