OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/path_service.h" |
6 #include "base/scoped_temp_dir.h" | 7 #include "base/scoped_temp_dir.h" |
| 8 #include "base/stl_util-inl.h" |
7 #include "base/string_util.h" | 9 #include "base/string_util.h" |
8 #include "chrome/browser/chrome_thread.h" | 10 #include "chrome/browser/chrome_thread.h" |
9 #include "chrome/browser/extensions/extension_prefs.h" | 11 #include "chrome/browser/extensions/extension_prefs.h" |
10 #include "chrome/browser/json_pref_store.h" | 12 #include "chrome/browser/extensions/test_extension_prefs.h" |
11 #include "chrome/browser/pref_service.h" | 13 #include "chrome/browser/pref_service.h" |
| 14 #include "chrome/common/chrome_paths.h" |
12 #include "chrome/common/extensions/extension_constants.h" | 15 #include "chrome/common/extensions/extension_constants.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
14 | 17 |
15 using base::Time; | 18 using base::Time; |
16 using base::TimeDelta; | 19 using base::TimeDelta; |
17 | 20 |
18 // Base class for tests. | 21 // Base class for tests. |
19 class ExtensionPrefsTest : public testing::Test { | 22 class ExtensionPrefsTest : public testing::Test { |
20 public: | 23 public: |
21 ExtensionPrefsTest() { | 24 ExtensionPrefsTest() {} |
22 EXPECT_TRUE(temp_dir_.CreateUniqueTempDir()); | |
23 FilePath preferences_file_ = temp_dir_.path().AppendASCII("Preferences"); | |
24 pref_service_.reset(new PrefService( | |
25 new JsonPrefStore(preferences_file_))); | |
26 ExtensionPrefs::RegisterUserPrefs(pref_service_.get()); | |
27 CreateExtensionPrefs(); | |
28 } | |
29 | 25 |
30 // This function will get called once, and is the right place to do operations | 26 // This function will get called once, and is the right place to do operations |
31 // on ExtensionPrefs that write data. | 27 // on ExtensionPrefs that write data. |
32 virtual void Initialize() = 0; | 28 virtual void Initialize() = 0; |
33 | 29 |
34 // This function will be called twice - once while the original ExtensionPrefs | 30 // This function will be called twice - once while the original ExtensionPrefs |
35 // object is still alive, and once after recreation. Thus, it tests that | 31 // object is still alive, and once after recreation. Thus, it tests that |
36 // things don't break after any ExtensionPrefs startup work. | 32 // things don't break after any ExtensionPrefs startup work. |
37 virtual void Verify() = 0; | 33 virtual void Verify() = 0; |
38 | 34 |
39 virtual void SetUp() { | 35 virtual void SetUp() { |
40 Initialize(); | 36 Initialize(); |
41 } | 37 } |
42 | 38 |
43 virtual void TearDown() { | 39 virtual void TearDown() { |
44 Verify(); | 40 Verify(); |
45 | 41 |
46 // Reset ExtensionPrefs, and re-verify. | 42 // Reset ExtensionPrefs, and re-verify. |
47 CreateExtensionPrefs(); | 43 prefs_.RecreateExtensionPrefs(); |
48 Verify(); | 44 Verify(); |
49 } | 45 } |
50 | 46 |
51 protected: | 47 protected: |
52 // Creates an ExtensionPrefs object. | 48 ExtensionPrefs* prefs() { return prefs_.prefs(); } |
53 void CreateExtensionPrefs() { | |
54 prefs_.reset(new ExtensionPrefs(pref_service_.get(), temp_dir_.path())); | |
55 } | |
56 | 49 |
57 // Creates a new Extension with the given name in our temp dir, adds it to | 50 TestExtensionPrefs prefs_; |
58 // our ExtensionPrefs, and returns it. | |
59 Extension* AddExtension(std::string name) { | |
60 FilePath path = temp_dir_.path().AppendASCII(name); | |
61 Extension* extension = new Extension(path); | |
62 std::string errors; | |
63 DictionaryValue dictionary; | |
64 dictionary.SetString(extension_manifest_keys::kName, name); | |
65 dictionary.SetString(extension_manifest_keys::kVersion, "0.1"); | |
66 EXPECT_TRUE(extension->InitFromValue(dictionary, false, &errors)); | |
67 extension->set_location(Extension::INTERNAL); | |
68 EXPECT_TRUE(Extension::IdIsValid(extension->id())); | |
69 prefs_->OnExtensionInstalled(extension); | |
70 return extension; | |
71 } | |
72 | |
73 // Creates an Extension and adds it to our ExtensionPrefs. Returns the | |
74 // extension id it was assigned. | |
75 std::string AddExtensionAndReturnId(std::string name) { | |
76 scoped_ptr<Extension> extension(AddExtension(name)); | |
77 return extension->id(); | |
78 } | |
79 | |
80 ScopedTempDir temp_dir_; | |
81 FilePath preferences_file_; | |
82 scoped_ptr<PrefService> pref_service_; | |
83 scoped_ptr<ExtensionPrefs> prefs_; | |
84 | 51 |
85 private: | 52 private: |
86 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefsTest); | 53 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefsTest); |
87 }; | 54 }; |
88 | 55 |
89 // Tests the LastPingDay/SetLastPingDay functions. | 56 // Tests the LastPingDay/SetLastPingDay functions. |
90 class ExtensionPrefsLastPingDay : public ExtensionPrefsTest { | 57 class ExtensionPrefsLastPingDay : public ExtensionPrefsTest { |
91 public: | 58 public: |
92 ExtensionPrefsLastPingDay() | 59 ExtensionPrefsLastPingDay() |
93 : extension_time_(Time::Now() - TimeDelta::FromHours(4)), | 60 : extension_time_(Time::Now() - TimeDelta::FromHours(4)), |
94 blacklist_time_(Time::Now() - TimeDelta::FromHours(2)) {} | 61 blacklist_time_(Time::Now() - TimeDelta::FromHours(2)) {} |
95 | 62 |
96 virtual void Initialize() { | 63 virtual void Initialize() { |
97 extension_id_ = AddExtensionAndReturnId("last_ping_day"); | 64 extension_id_ = prefs_.AddExtensionAndReturnId("last_ping_day"); |
98 EXPECT_TRUE(prefs_->LastPingDay(extension_id_).is_null()); | 65 EXPECT_TRUE(prefs()->LastPingDay(extension_id_).is_null()); |
99 prefs_->SetLastPingDay(extension_id_, extension_time_); | 66 prefs()->SetLastPingDay(extension_id_, extension_time_); |
100 prefs_->SetBlacklistLastPingDay(blacklist_time_); | 67 prefs()->SetBlacklistLastPingDay(blacklist_time_); |
101 } | 68 } |
102 | 69 |
103 virtual void Verify() { | 70 virtual void Verify() { |
104 Time result = prefs_->LastPingDay(extension_id_); | 71 Time result = prefs()->LastPingDay(extension_id_); |
105 EXPECT_FALSE(result.is_null()); | 72 EXPECT_FALSE(result.is_null()); |
106 EXPECT_TRUE(result == extension_time_); | 73 EXPECT_TRUE(result == extension_time_); |
107 result = prefs_->BlacklistLastPingDay(); | 74 result = prefs()->BlacklistLastPingDay(); |
108 EXPECT_FALSE(result.is_null()); | 75 EXPECT_FALSE(result.is_null()); |
109 EXPECT_TRUE(result == blacklist_time_); | 76 EXPECT_TRUE(result == blacklist_time_); |
110 } | 77 } |
111 | 78 |
112 private: | 79 private: |
113 Time extension_time_; | 80 Time extension_time_; |
114 Time blacklist_time_; | 81 Time blacklist_time_; |
115 std::string extension_id_; | 82 std::string extension_id_; |
116 }; | 83 }; |
117 TEST_F(ExtensionPrefsLastPingDay, LastPingDay) {} | 84 TEST_F(ExtensionPrefsLastPingDay, LastPingDay) {} |
118 | 85 |
119 | 86 |
120 // Tests the GetToolbarOrder/SetToolbarOrder functions. | 87 // Tests the GetToolbarOrder/SetToolbarOrder functions. |
121 class ExtensionPrefsToolbarOrder : public ExtensionPrefsTest { | 88 class ExtensionPrefsToolbarOrder : public ExtensionPrefsTest { |
122 public: | 89 public: |
123 virtual void Initialize() { | 90 virtual void Initialize() { |
124 list_.push_back(AddExtensionAndReturnId("1")); | 91 list_.push_back(prefs_.AddExtensionAndReturnId("1")); |
125 list_.push_back(AddExtensionAndReturnId("2")); | 92 list_.push_back(prefs_.AddExtensionAndReturnId("2")); |
126 list_.push_back(AddExtensionAndReturnId("3")); | 93 list_.push_back(prefs_.AddExtensionAndReturnId("3")); |
127 std::vector<std::string> before_list = prefs_->GetToolbarOrder(); | 94 std::vector<std::string> before_list = prefs()->GetToolbarOrder(); |
128 EXPECT_TRUE(before_list.empty()); | 95 EXPECT_TRUE(before_list.empty()); |
129 prefs_->SetToolbarOrder(list_); | 96 prefs()->SetToolbarOrder(list_); |
130 } | 97 } |
131 | 98 |
132 virtual void Verify() { | 99 virtual void Verify() { |
133 std::vector<std::string> result = prefs_->GetToolbarOrder(); | 100 std::vector<std::string> result = prefs()->GetToolbarOrder(); |
134 ASSERT_EQ(list_.size(), result.size()); | 101 ASSERT_EQ(list_.size(), result.size()); |
135 for (size_t i = 0; i < list_.size(); i++) { | 102 for (size_t i = 0; i < list_.size(); i++) { |
136 EXPECT_EQ(list_[i], result[i]); | 103 EXPECT_EQ(list_[i], result[i]); |
137 } | 104 } |
138 } | 105 } |
139 | 106 |
140 private: | 107 private: |
141 std::vector<std::string> list_; | 108 std::vector<std::string> list_; |
142 }; | 109 }; |
143 TEST_F(ExtensionPrefsToolbarOrder, ToolbarOrder) {} | 110 TEST_F(ExtensionPrefsToolbarOrder, ToolbarOrder) {} |
144 | 111 |
145 | 112 |
146 // Tests the GetExtensionState/SetExtensionState functions. | 113 // Tests the GetExtensionState/SetExtensionState functions. |
147 class ExtensionPrefsExtensionState : public ExtensionPrefsTest { | 114 class ExtensionPrefsExtensionState : public ExtensionPrefsTest { |
148 public: | 115 public: |
149 virtual void Initialize() { | 116 virtual void Initialize() { |
150 extension.reset(AddExtension("test")); | 117 extension.reset(prefs_.AddExtension("test")); |
151 prefs_->SetExtensionState(extension.get(), Extension::DISABLED); | 118 prefs()->SetExtensionState(extension.get(), Extension::DISABLED); |
152 } | 119 } |
153 | 120 |
154 virtual void Verify() { | 121 virtual void Verify() { |
155 EXPECT_EQ(Extension::DISABLED, prefs_->GetExtensionState(extension->id())); | 122 EXPECT_EQ(Extension::DISABLED, prefs()->GetExtensionState(extension->id())); |
156 } | 123 } |
157 | 124 |
158 private: | 125 private: |
159 scoped_ptr<Extension> extension; | 126 scoped_ptr<Extension> extension; |
160 }; | 127 }; |
161 TEST_F(ExtensionPrefsExtensionState, ExtensionState) {} | 128 TEST_F(ExtensionPrefsExtensionState, ExtensionState) {} |
162 | 129 |
163 | 130 |
164 class ExtensionPrefsEscalatePermissions : public ExtensionPrefsTest { | 131 class ExtensionPrefsEscalatePermissions : public ExtensionPrefsTest { |
165 public: | 132 public: |
166 virtual void Initialize() { | 133 virtual void Initialize() { |
167 extension.reset(AddExtension("test")); | 134 extension.reset(prefs_.AddExtension("test")); |
168 prefs_->SetDidExtensionEscalatePermissions(extension.get(), true); | 135 prefs()->SetDidExtensionEscalatePermissions(extension.get(), true); |
169 } | 136 } |
170 | 137 |
171 virtual void Verify() { | 138 virtual void Verify() { |
172 EXPECT_EQ(true, prefs_->DidExtensionEscalatePermissions(extension->id())); | 139 EXPECT_EQ(true, prefs()->DidExtensionEscalatePermissions(extension->id())); |
173 } | 140 } |
174 | 141 |
175 private: | 142 private: |
176 scoped_ptr<Extension> extension; | 143 scoped_ptr<Extension> extension; |
177 }; | 144 }; |
178 TEST_F(ExtensionPrefsEscalatePermissions, EscalatePermissions) {} | 145 TEST_F(ExtensionPrefsEscalatePermissions, EscalatePermissions) {} |
179 | 146 |
180 | 147 |
181 // Tests the GetVersionString function. | 148 // Tests the GetVersionString function. |
182 class ExtensionPrefsVersionString : public ExtensionPrefsTest { | 149 class ExtensionPrefsVersionString : public ExtensionPrefsTest { |
183 public: | 150 public: |
184 virtual void Initialize() { | 151 virtual void Initialize() { |
185 extension.reset(AddExtension("test")); | 152 extension.reset(prefs_.AddExtension("test")); |
186 EXPECT_EQ("0.1", prefs_->GetVersionString(extension->id())); | 153 EXPECT_EQ("0.1", prefs()->GetVersionString(extension->id())); |
187 prefs_->OnExtensionUninstalled(extension->id(), Extension::INTERNAL, false); | 154 prefs()->OnExtensionUninstalled(extension->id(), |
| 155 Extension::INTERNAL, false); |
188 } | 156 } |
189 | 157 |
190 virtual void Verify() { | 158 virtual void Verify() { |
191 EXPECT_EQ("", prefs_->GetVersionString(extension->id())); | 159 EXPECT_EQ("", prefs()->GetVersionString(extension->id())); |
192 } | 160 } |
193 | 161 |
194 private: | 162 private: |
195 scoped_ptr<Extension> extension; | 163 scoped_ptr<Extension> extension; |
196 }; | 164 }; |
197 TEST_F(ExtensionPrefsVersionString, VersionString) {} | 165 TEST_F(ExtensionPrefsVersionString, VersionString) {} |
198 | 166 |
199 // Tests various areas of blacklist functionality. | 167 // Tests various areas of blacklist functionality. |
200 class ExtensionPrefsBlacklist : public ExtensionPrefsTest { | 168 class ExtensionPrefsBlacklist : public ExtensionPrefsTest { |
201 public: | 169 public: |
202 virtual void Initialize() { | 170 virtual void Initialize() { |
203 not_installed_id_ = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 171 not_installed_id_ = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
204 | 172 |
205 // Install 5 extensions. | 173 // Install 5 extensions. |
206 for (int i = 0; i < 5; i++) { | 174 for (int i = 0; i < 5; i++) { |
207 std::string name = "test" + IntToString(i); | 175 std::string name = "test" + IntToString(i); |
208 extensions_.push_back(linked_ptr<Extension>(AddExtension(name))); | 176 extensions_.push_back(linked_ptr<Extension>(prefs_.AddExtension(name))); |
209 } | 177 } |
210 EXPECT_EQ(NULL, prefs_->GetInstalledExtensionInfo(not_installed_id_)); | 178 EXPECT_EQ(NULL, prefs()->GetInstalledExtensionInfo(not_installed_id_)); |
211 | 179 |
212 std::vector<linked_ptr<Extension> >::const_iterator iter; | 180 std::vector<linked_ptr<Extension> >::const_iterator iter; |
213 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { | 181 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { |
214 EXPECT_FALSE(prefs_->IsExtensionBlacklisted((*iter)->id())); | 182 EXPECT_FALSE(prefs()->IsExtensionBlacklisted((*iter)->id())); |
215 } | 183 } |
216 // Blacklist one installed and one not-installed extension id. | 184 // Blacklist one installed and one not-installed extension id. |
217 std::set<std::string> blacklisted_ids; | 185 std::set<std::string> blacklisted_ids; |
218 blacklisted_ids.insert(extensions_[0]->id()); | 186 blacklisted_ids.insert(extensions_[0]->id()); |
219 blacklisted_ids.insert(not_installed_id_); | 187 blacklisted_ids.insert(not_installed_id_); |
220 prefs_->UpdateBlacklist(blacklisted_ids); | 188 prefs()->UpdateBlacklist(blacklisted_ids); |
221 } | 189 } |
222 | 190 |
223 virtual void Verify() { | 191 virtual void Verify() { |
224 // Make sure the two id's we expect to be blacklisted are. | 192 // Make sure the two id's we expect to be blacklisted are. |
225 EXPECT_TRUE(prefs_->IsExtensionBlacklisted(extensions_[0]->id())); | 193 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(extensions_[0]->id())); |
226 EXPECT_TRUE(prefs_->IsExtensionBlacklisted(not_installed_id_)); | 194 EXPECT_TRUE(prefs()->IsExtensionBlacklisted(not_installed_id_)); |
227 | 195 |
228 // Make sure the other id's are not blacklisted. | 196 // Make sure the other id's are not blacklisted. |
229 std::vector<linked_ptr<Extension> >::const_iterator iter; | 197 std::vector<linked_ptr<Extension> >::const_iterator iter; |
230 for (iter = extensions_.begin() + 1; iter != extensions_.end(); ++iter) { | 198 for (iter = extensions_.begin() + 1; iter != extensions_.end(); ++iter) { |
231 EXPECT_FALSE(prefs_->IsExtensionBlacklisted((*iter)->id())); | 199 EXPECT_FALSE(prefs()->IsExtensionBlacklisted((*iter)->id())); |
232 } | 200 } |
233 | 201 |
234 // Make sure GetInstalledExtensionsInfo returns only the non-blacklisted | 202 // Make sure GetInstalledExtensionsInfo returns only the non-blacklisted |
235 // extensions data. | 203 // extensions data. |
236 scoped_ptr<ExtensionPrefs::ExtensionsInfo> info( | 204 scoped_ptr<ExtensionPrefs::ExtensionsInfo> info( |
237 prefs_->GetInstalledExtensionsInfo()); | 205 prefs()->GetInstalledExtensionsInfo()); |
238 EXPECT_EQ(4u, info->size()); | 206 EXPECT_EQ(4u, info->size()); |
239 ExtensionPrefs::ExtensionsInfo::iterator info_iter; | 207 ExtensionPrefs::ExtensionsInfo::iterator info_iter; |
240 for (info_iter = info->begin(); info_iter != info->end(); ++info_iter) { | 208 for (info_iter = info->begin(); info_iter != info->end(); ++info_iter) { |
241 ExtensionInfo* extension_info = info_iter->get(); | 209 ExtensionInfo* extension_info = info_iter->get(); |
242 EXPECT_NE(extensions_[0]->id(), extension_info->extension_id); | 210 EXPECT_NE(extensions_[0]->id(), extension_info->extension_id); |
243 } | 211 } |
244 } | 212 } |
245 | 213 |
246 private: | 214 private: |
247 std::vector<linked_ptr<Extension> > extensions_; | 215 std::vector<linked_ptr<Extension> > extensions_; |
248 | 216 |
249 // An id we'll make up that doesn't match any installed extension id. | 217 // An id we'll make up that doesn't match any installed extension id. |
250 std::string not_installed_id_; | 218 std::string not_installed_id_; |
251 }; | 219 }; |
252 TEST_F(ExtensionPrefsBlacklist, Blacklist) {} | 220 TEST_F(ExtensionPrefsBlacklist, Blacklist) {} |
| 221 |
| 222 |
| 223 // Tests the idle install information functions. |
| 224 class ExtensionPrefsIdleInstallInfo : public ExtensionPrefsTest { |
| 225 public: |
| 226 // Sets idle install information for one test extension. |
| 227 void SetIdleInfo(std::string id, int num) { |
| 228 prefs()->SetIdleInstallInfo(id, basedir_.AppendASCII(IntToString(num)), |
| 229 "1." + IntToString(num), |
| 230 now_ + TimeDelta::FromSeconds(num)); |
| 231 } |
| 232 |
| 233 // Verifies that we get back expected idle install information previously |
| 234 // set by SetIdleInfo. |
| 235 void VerifyIdleInfo(std::string id, int num) { |
| 236 FilePath crx_path; |
| 237 std::string version; |
| 238 base::Time fetch_time; |
| 239 ASSERT_TRUE(prefs()->GetIdleInstallInfo(id, &crx_path, &version, |
| 240 &fetch_time)); |
| 241 ASSERT_EQ(crx_path.value(), |
| 242 basedir_.AppendASCII(IntToString(num)).value()); |
| 243 ASSERT_EQ("1." + IntToString(num), version); |
| 244 ASSERT_TRUE(fetch_time == now_ + TimeDelta::FromSeconds(num)); |
| 245 } |
| 246 |
| 247 virtual void Initialize() { |
| 248 PathService::Get(chrome::DIR_TEST_DATA, &basedir_); |
| 249 now_ = Time::Now(); |
| 250 id1_ = prefs_.AddExtensionAndReturnId("1"); |
| 251 id2_ = prefs_.AddExtensionAndReturnId("2"); |
| 252 id3_ = prefs_.AddExtensionAndReturnId("3"); |
| 253 id4_ = prefs_.AddExtensionAndReturnId("4"); |
| 254 |
| 255 // Set info for two extensions, then remove it. |
| 256 SetIdleInfo(id1_, 1); |
| 257 SetIdleInfo(id2_, 2); |
| 258 VerifyIdleInfo(id1_, 1); |
| 259 VerifyIdleInfo(id2_, 2); |
| 260 std::set<std::string> ids = prefs()->GetIdleInstallInfoIds(); |
| 261 EXPECT_EQ(2u, ids.size()); |
| 262 EXPECT_TRUE(ContainsKey(ids, id1_)); |
| 263 EXPECT_TRUE(ContainsKey(ids, id2_)); |
| 264 prefs()->RemoveIdleInstallInfo(id1_); |
| 265 prefs()->RemoveIdleInstallInfo(id2_); |
| 266 ids = prefs()->GetIdleInstallInfoIds(); |
| 267 EXPECT_TRUE(ids.empty()); |
| 268 |
| 269 // Try getting/removing info for an id that used to have info set. |
| 270 EXPECT_FALSE(prefs()->GetIdleInstallInfo(id1_, NULL, NULL, NULL)); |
| 271 EXPECT_FALSE(prefs()->RemoveIdleInstallInfo(id1_)); |
| 272 |
| 273 // Try getting/removing info for an id that has not yet had any info set. |
| 274 EXPECT_FALSE(prefs()->GetIdleInstallInfo(id3_, NULL, NULL, NULL)); |
| 275 EXPECT_FALSE(prefs()->RemoveIdleInstallInfo(id3_)); |
| 276 |
| 277 // Set info for 4 extensions, then remove for one of them. |
| 278 SetIdleInfo(id1_, 1); |
| 279 SetIdleInfo(id2_, 2); |
| 280 SetIdleInfo(id3_, 3); |
| 281 SetIdleInfo(id4_, 4); |
| 282 VerifyIdleInfo(id1_, 1); |
| 283 VerifyIdleInfo(id2_, 2); |
| 284 VerifyIdleInfo(id3_, 3); |
| 285 VerifyIdleInfo(id4_, 4); |
| 286 prefs()->RemoveIdleInstallInfo(id3_); |
| 287 } |
| 288 |
| 289 virtual void Verify() { |
| 290 // Make sure the info for the 3 extensions we expect is present. |
| 291 std::set<std::string> ids = prefs()->GetIdleInstallInfoIds(); |
| 292 EXPECT_EQ(3u, ids.size()); |
| 293 EXPECT_TRUE(ContainsKey(ids, id1_)); |
| 294 EXPECT_TRUE(ContainsKey(ids, id2_)); |
| 295 EXPECT_TRUE(ContainsKey(ids, id4_)); |
| 296 VerifyIdleInfo(id1_, 1); |
| 297 VerifyIdleInfo(id2_, 2); |
| 298 VerifyIdleInfo(id4_, 4); |
| 299 |
| 300 // Make sure there isn't info the for the one extension id we removed. |
| 301 EXPECT_FALSE(prefs()->GetIdleInstallInfo(id3_, NULL, NULL, NULL)); |
| 302 } |
| 303 |
| 304 protected: |
| 305 Time now_; |
| 306 FilePath basedir_; |
| 307 std::string id1_; |
| 308 std::string id2_; |
| 309 std::string id3_; |
| 310 std::string id4_; |
| 311 }; |
| 312 TEST_F(ExtensionPrefsIdleInstallInfo, IdleInstallInfo) {} |
OLD | NEW |