OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |