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

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

Issue 12079097: Introduce PrefRegistrySyncable, simplifying PrefServiceSyncable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head again; base::File changes conflicted. Created 7 years, 10 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) 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 "chrome/browser/extensions/test_extension_prefs.h" 5 #include "chrome/browser/extensions/test_extension_prefs.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/message_loop_proxy.h" 12 #include "base/message_loop_proxy.h"
13 #include "base/prefs/json_pref_store.h" 13 #include "base/prefs/json_pref_store.h"
14 #include "base/run_loop.h" 14 #include "base/run_loop.h"
15 #include "base/sequenced_task_runner.h" 15 #include "base/sequenced_task_runner.h"
16 #include "base/synchronization/waitable_event.h" 16 #include "base/synchronization/waitable_event.h"
17 #include "base/values.h" 17 #include "base/values.h"
18 #include "chrome/browser/extensions/extension_pref_store.h" 18 #include "chrome/browser/extensions/extension_pref_store.h"
19 #include "chrome/browser/extensions/extension_pref_value_map.h" 19 #include "chrome/browser/extensions/extension_pref_value_map.h"
20 #include "chrome/browser/extensions/extension_prefs.h" 20 #include "chrome/browser/extensions/extension_prefs.h"
21 #include "chrome/browser/prefs/pref_service.h" 21 #include "chrome/browser/prefs/pref_registry_syncable.h"
22 #include "chrome/browser/prefs/pref_service_mock_builder.h" 22 #include "chrome/browser/prefs/pref_service_mock_builder.h"
23 #include "chrome/browser/prefs/pref_service_syncable.h"
23 #include "chrome/browser/prefs/pref_value_store.h" 24 #include "chrome/browser/prefs/pref_value_store.h"
24 #include "chrome/common/extensions/extension.h" 25 #include "chrome/common/extensions/extension.h"
25 #include "chrome/common/extensions/extension_manifest_constants.h" 26 #include "chrome/common/extensions/extension_manifest_constants.h"
26 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
27 #include "sync/api/string_ordinal.h" 28 #include "sync/api/string_ordinal.h"
28 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
29 30
30 using content::BrowserThread; 31 using content::BrowserThread;
31 32
32 namespace extensions { 33 namespace extensions {
(...skipping 16 matching lines...) Expand all
49 } 50 }
50 51
51 private: 52 private:
52 DISALLOW_COPY_AND_ASSIGN(IncrementalTimeProvider); 53 DISALLOW_COPY_AND_ASSIGN(IncrementalTimeProvider);
53 54
54 mutable base::Time current_time_; 55 mutable base::Time current_time_;
55 }; 56 };
56 57
57 } // namespace 58 } // namespace
58 59
59 TestExtensionPrefs::TestExtensionPrefs( 60 TestExtensionPrefs::TestExtensionPrefs(base::SequencedTaskRunner* task_runner)
60 base::SequencedTaskRunner* task_runner) : pref_service_(NULL), 61 : pref_service_(NULL),
61 task_runner_(task_runner), 62 task_runner_(task_runner),
62 extensions_disabled_(false) { 63 extensions_disabled_(false) {
63 EXPECT_TRUE(temp_dir_.CreateUniqueTempDir()); 64 EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
64 preferences_file_ = temp_dir_.path().AppendASCII("Preferences"); 65 preferences_file_ = temp_dir_.path().AppendASCII("Preferences");
65 extensions_dir_ = temp_dir_.path().AppendASCII("Extensions"); 66 extensions_dir_ = temp_dir_.path().AppendASCII("Extensions");
66 EXPECT_TRUE(file_util::CreateDirectory(extensions_dir_)); 67 EXPECT_TRUE(file_util::CreateDirectory(extensions_dir_));
67 68
69 ResetPrefRegistry();
68 RecreateExtensionPrefs(); 70 RecreateExtensionPrefs();
69 } 71 }
70 72
71 TestExtensionPrefs::~TestExtensionPrefs() { 73 TestExtensionPrefs::~TestExtensionPrefs() {
72 } 74 }
73 75
76 PrefService* TestExtensionPrefs::pref_service() {
77 return pref_service_.get();
78 }
79
80 const scoped_refptr<PrefRegistrySyncable>& TestExtensionPrefs::pref_registry() {
81 return pref_registry_;
82 }
83
84 void TestExtensionPrefs::ResetPrefRegistry() {
85 pref_registry_ = new PrefRegistrySyncable;
86 ExtensionPrefs::RegisterUserPrefs(pref_registry_);
87 }
88
74 void TestExtensionPrefs::RecreateExtensionPrefs() { 89 void TestExtensionPrefs::RecreateExtensionPrefs() {
75 // We persist and reload the PrefService's PrefStores because this process 90 // We persist and reload the PrefService's PrefStores because this process
76 // deletes all empty dictionaries. The ExtensionPrefs implementation 91 // deletes all empty dictionaries. The ExtensionPrefs implementation
77 // needs to be able to handle this situation. 92 // needs to be able to handle this situation.
78 if (pref_service_.get()) { 93 if (pref_service_.get()) {
79 // Commit a pending write (which posts a task to task_runner_) and wait for 94 // Commit a pending write (which posts a task to task_runner_) and wait for
80 // it to finish. 95 // it to finish.
81 pref_service_->CommitPendingWrite(); 96 pref_service_->CommitPendingWrite();
82 base::RunLoop run_loop; 97 base::RunLoop run_loop;
83 ASSERT_TRUE( 98 ASSERT_TRUE(
84 task_runner_->PostTaskAndReply( 99 task_runner_->PostTaskAndReply(
85 FROM_HERE, 100 FROM_HERE,
86 base::Bind(&base::DoNothing), 101 base::Bind(&base::DoNothing),
87 run_loop.QuitClosure())); 102 run_loop.QuitClosure()));
88 run_loop.Run(); 103 run_loop.Run();
89 } 104 }
90 105
91 extension_pref_value_map_.reset(new ExtensionPrefValueMap); 106 extension_pref_value_map_.reset(new ExtensionPrefValueMap);
92 PrefServiceMockBuilder builder; 107 PrefServiceMockBuilder builder;
93 builder.WithUserFilePrefs(preferences_file_, task_runner_); 108 builder.WithUserFilePrefs(preferences_file_, task_runner_);
94 builder.WithExtensionPrefs( 109 builder.WithExtensionPrefs(
95 new ExtensionPrefStore(extension_pref_value_map_.get(), false)); 110 new ExtensionPrefStore(extension_pref_value_map_.get(), false));
96 pref_service_.reset(builder.CreateSyncable()); 111 pref_service_.reset(builder.CreateSyncable(pref_registry_));
97 ExtensionPrefs::RegisterUserPrefs(pref_service_.get());
98 112
99 prefs_ = ExtensionPrefs::Create( 113 prefs_ = ExtensionPrefs::Create(
100 pref_service_.get(), 114 pref_service_.get(),
101 temp_dir_.path(), 115 temp_dir_.path(),
102 extension_pref_value_map_.get(), 116 extension_pref_value_map_.get(),
103 extensions_disabled_, 117 extensions_disabled_,
104 // Guarantee that no two extensions get the same installation time 118 // Guarantee that no two extensions get the same installation time
105 // stamp and we can reliably assert the installation order in the tests. 119 // stamp and we can reliably assert the installation order in the tests.
106 scoped_ptr<ExtensionPrefs::TimeProvider>( 120 scoped_ptr<ExtensionPrefs::TimeProvider>(
107 new IncrementalTimeProvider())); 121 new IncrementalTimeProvider()));
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 prefs_->OnExtensionInstalled(extension, Extension::ENABLED, 163 prefs_->OnExtensionInstalled(extension, Extension::ENABLED,
150 syncer::StringOrdinal::CreateInitialOrdinal()); 164 syncer::StringOrdinal::CreateInitialOrdinal());
151 return extension; 165 return extension;
152 } 166 }
153 167
154 std::string TestExtensionPrefs::AddExtensionAndReturnId(std::string name) { 168 std::string TestExtensionPrefs::AddExtensionAndReturnId(std::string name) {
155 scoped_refptr<Extension> extension(AddExtension(name)); 169 scoped_refptr<Extension> extension(AddExtension(name));
156 return extension->id(); 170 return extension->id();
157 } 171 }
158 172
159 PrefServiceSyncable* TestExtensionPrefs::CreateIncognitoPrefService() const { 173 PrefService* TestExtensionPrefs::CreateIncognitoPrefService() const {
160 return pref_service_->CreateIncognitoPrefService( 174 return pref_service_->CreateIncognitoPrefService(
161 new ExtensionPrefStore(extension_pref_value_map_.get(), true)); 175 new ExtensionPrefStore(extension_pref_value_map_.get(), true));
162 } 176 }
163 177
164 void TestExtensionPrefs::set_extensions_disabled(bool extensions_disabled) { 178 void TestExtensionPrefs::set_extensions_disabled(bool extensions_disabled) {
165 extensions_disabled_ = extensions_disabled; 179 extensions_disabled_ = extensions_disabled;
166 } 180 }
167 181
168 } // namespace extensions 182 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/test_extension_prefs.h ('k') | chrome/browser/extensions/updater/extension_updater_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698