OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 | 6 |
7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
8 #include "base/values.h" | 8 #include "base/values.h" |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "chrome/browser/extensions/settings/settings_backend.h" | 11 #include "chrome/browser/extensions/settings/settings_backend.h" |
12 #include "chrome/browser/extensions/settings/settings_storage_cache.h" | 12 #include "chrome/browser/extensions/settings/settings_storage_cache.h" |
13 #include "chrome/browser/extensions/settings/settings_storage_quota_enforcer.h" | 13 #include "chrome/browser/extensions/settings/settings_storage_quota_enforcer.h" |
14 #include "chrome/browser/extensions/settings/testing_settings_storage.h" | 14 #include "chrome/browser/extensions/settings/testing_settings_storage.h" |
15 | 15 |
16 namespace extensions { | 16 namespace extensions { |
17 | 17 |
18 // To save typing SettingsStorage::DEFAULTS/FORCE everywhere. | |
19 const SettingsStorage::WriteOptions DEFAULTS = SettingsStorage::DEFAULTS; | |
20 const SettingsStorage::WriteOptions FORCE = SettingsStorage::FORCE; | |
21 | |
18 class ExtensionSettingsQuotaTest : public testing::Test { | 22 class ExtensionSettingsQuotaTest : public testing::Test { |
19 public: | 23 public: |
20 ExtensionSettingsQuotaTest() | 24 ExtensionSettingsQuotaTest() |
21 : byte_value_1_(Value::CreateIntegerValue(1)), | 25 : byte_value_1_(Value::CreateIntegerValue(1)), |
22 byte_value_16_(Value::CreateStringValue("sixteen bytes.")), | 26 byte_value_16_(Value::CreateStringValue("sixteen bytes.")), |
23 byte_value_256_(new ListValue()), | 27 byte_value_256_(new ListValue()), |
24 delegate_(new SettingsStorageCache(new TestingSettingsStorage())) { | 28 delegate_(new SettingsStorageCache(new TestingSettingsStorage())) { |
25 for (int i = 1; i < 89; ++i) { | 29 for (int i = 1; i < 89; ++i) { |
26 byte_value_256_->Append(Value::CreateIntegerValue(i)); | 30 byte_value_256_->Append(Value::CreateIntegerValue(i)); |
27 } | 31 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
68 scoped_ptr<SettingsStorageQuotaEnforcer> storage_; | 72 scoped_ptr<SettingsStorageQuotaEnforcer> storage_; |
69 | 73 |
70 // In-memory storage area being delegated to. Always owned by |storage_|. | 74 // In-memory storage area being delegated to. Always owned by |storage_|. |
71 SettingsStorageCache* delegate_; | 75 SettingsStorageCache* delegate_; |
72 }; | 76 }; |
73 | 77 |
74 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytes) { | 78 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytes) { |
75 DictionaryValue empty; | 79 DictionaryValue empty; |
76 CreateStorage(0, UINT_MAX, UINT_MAX); | 80 CreateStorage(0, UINT_MAX, UINT_MAX); |
77 | 81 |
78 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 82 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
79 EXPECT_FALSE(storage_->Remove("a").HasError()); | 83 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
80 EXPECT_FALSE(storage_->Remove("b").HasError()); | 84 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
81 EXPECT_TRUE(SettingsEqual(empty)); | 85 EXPECT_TRUE(SettingsEqual(empty)); |
82 } | 86 } |
83 | 87 |
84 TEST_F(ExtensionSettingsQuotaTest, KeySizeTakenIntoAccount) { | 88 TEST_F(ExtensionSettingsQuotaTest, KeySizeTakenIntoAccount) { |
85 DictionaryValue empty; | 89 DictionaryValue empty; |
86 CreateStorage(8u, UINT_MAX, UINT_MAX); | 90 CreateStorage(8u, UINT_MAX, UINT_MAX); |
87 EXPECT_TRUE(storage_->Set("Really long key", *byte_value_1_).HasError()); | 91 EXPECT_TRUE( |
92 storage_->Set(DEFAULTS, "Really long key", *byte_value_1_).HasError()); | |
88 EXPECT_TRUE(SettingsEqual(empty)); | 93 EXPECT_TRUE(SettingsEqual(empty)); |
89 } | 94 } |
90 | 95 |
91 TEST_F(ExtensionSettingsQuotaTest, SmallByteQuota) { | 96 TEST_F(ExtensionSettingsQuotaTest, SmallByteQuota) { |
92 DictionaryValue settings; | 97 DictionaryValue settings; |
93 CreateStorage(8u, UINT_MAX, UINT_MAX); | 98 CreateStorage(8u, UINT_MAX, UINT_MAX); |
94 | 99 |
95 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 100 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
96 settings.Set("a", byte_value_1_->DeepCopy()); | 101 settings.Set("a", byte_value_1_->DeepCopy()); |
97 EXPECT_TRUE(SettingsEqual(settings)); | 102 EXPECT_TRUE(SettingsEqual(settings)); |
98 | 103 |
99 EXPECT_TRUE(storage_->Set("b", *byte_value_16_).HasError()); | 104 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
100 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 105 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
101 EXPECT_TRUE(SettingsEqual(settings)); | 106 EXPECT_TRUE(SettingsEqual(settings)); |
102 } | 107 } |
103 | 108 |
104 TEST_F(ExtensionSettingsQuotaTest, MediumByteQuota) { | 109 TEST_F(ExtensionSettingsQuotaTest, MediumByteQuota) { |
105 DictionaryValue settings; | 110 DictionaryValue settings; |
106 CreateStorage(40, UINT_MAX, UINT_MAX); | 111 CreateStorage(40, UINT_MAX, UINT_MAX); |
107 | 112 |
108 DictionaryValue to_set; | 113 DictionaryValue to_set; |
109 to_set.Set("a", byte_value_1_->DeepCopy()); | 114 to_set.Set("a", byte_value_1_->DeepCopy()); |
110 to_set.Set("b", byte_value_16_->DeepCopy()); | 115 to_set.Set("b", byte_value_16_->DeepCopy()); |
111 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 116 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
112 settings.Set("a", byte_value_1_->DeepCopy()); | 117 settings.Set("a", byte_value_1_->DeepCopy()); |
113 settings.Set("b", byte_value_16_->DeepCopy()); | 118 settings.Set("b", byte_value_16_->DeepCopy()); |
114 EXPECT_TRUE(SettingsEqual(settings)); | 119 EXPECT_TRUE(SettingsEqual(settings)); |
115 | 120 |
116 // Should be able to set value to other under-quota value. | 121 // Should be able to set value to other under-quota value. |
117 to_set.Set("a", byte_value_16_->DeepCopy()); | 122 to_set.Set("a", byte_value_16_->DeepCopy()); |
118 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 123 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
119 settings.Set("a", byte_value_16_->DeepCopy()); | 124 settings.Set("a", byte_value_16_->DeepCopy()); |
120 EXPECT_TRUE(SettingsEqual(settings)); | 125 EXPECT_TRUE(SettingsEqual(settings)); |
121 | 126 |
122 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 127 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
123 EXPECT_TRUE(SettingsEqual(settings)); | 128 EXPECT_TRUE(SettingsEqual(settings)); |
124 } | 129 } |
125 | 130 |
126 TEST_F(ExtensionSettingsQuotaTest, ZeroMaxKeys) { | 131 TEST_F(ExtensionSettingsQuotaTest, ZeroMaxKeys) { |
127 DictionaryValue empty; | 132 DictionaryValue empty; |
128 CreateStorage(UINT_MAX, UINT_MAX, 0); | 133 CreateStorage(UINT_MAX, UINT_MAX, 0); |
129 | 134 |
130 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 135 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
131 EXPECT_FALSE(storage_->Remove("a").HasError()); | 136 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
132 EXPECT_FALSE(storage_->Remove("b").HasError()); | 137 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
133 EXPECT_TRUE(SettingsEqual(empty)); | 138 EXPECT_TRUE(SettingsEqual(empty)); |
134 } | 139 } |
135 | 140 |
136 TEST_F(ExtensionSettingsQuotaTest, SmallMaxKeys) { | 141 TEST_F(ExtensionSettingsQuotaTest, SmallMaxKeys) { |
137 DictionaryValue settings; | 142 DictionaryValue settings; |
138 CreateStorage(UINT_MAX, UINT_MAX, 1); | 143 CreateStorage(UINT_MAX, UINT_MAX, 1); |
139 | 144 |
140 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 145 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
141 settings.Set("a", byte_value_1_->DeepCopy()); | 146 settings.Set("a", byte_value_1_->DeepCopy()); |
142 EXPECT_TRUE(SettingsEqual(settings)); | 147 EXPECT_TRUE(SettingsEqual(settings)); |
143 | 148 |
144 // Should be able to set existing key to other value without going over quota. | 149 // Should be able to set existing key to other value without going over quota. |
145 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 150 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
146 settings.Set("a", byte_value_16_->DeepCopy()); | 151 settings.Set("a", byte_value_16_->DeepCopy()); |
147 EXPECT_TRUE(SettingsEqual(settings)); | 152 EXPECT_TRUE(SettingsEqual(settings)); |
148 | 153 |
149 EXPECT_TRUE(storage_->Set("b", *byte_value_16_).HasError()); | 154 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
150 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 155 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
151 EXPECT_TRUE(SettingsEqual(settings)); | 156 EXPECT_TRUE(SettingsEqual(settings)); |
152 } | 157 } |
153 | 158 |
154 TEST_F(ExtensionSettingsQuotaTest, MediumMaxKeys) { | 159 TEST_F(ExtensionSettingsQuotaTest, MediumMaxKeys) { |
155 DictionaryValue settings; | 160 DictionaryValue settings; |
156 CreateStorage(UINT_MAX, UINT_MAX, 2); | 161 CreateStorage(UINT_MAX, UINT_MAX, 2); |
157 | 162 |
158 DictionaryValue to_set; | 163 DictionaryValue to_set; |
159 to_set.Set("a", byte_value_1_->DeepCopy()); | 164 to_set.Set("a", byte_value_1_->DeepCopy()); |
160 to_set.Set("b", byte_value_16_->DeepCopy()); | 165 to_set.Set("b", byte_value_16_->DeepCopy()); |
161 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 166 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
162 settings.Set("a", byte_value_1_->DeepCopy()); | 167 settings.Set("a", byte_value_1_->DeepCopy()); |
163 settings.Set("b", byte_value_16_->DeepCopy()); | 168 settings.Set("b", byte_value_16_->DeepCopy()); |
164 EXPECT_TRUE(SettingsEqual(settings)); | 169 EXPECT_TRUE(SettingsEqual(settings)); |
165 | 170 |
166 // Should be able to set existing keys to other values without going over | 171 // Should be able to set existing keys to other values without going over |
167 // quota. | 172 // quota. |
168 to_set.Set("a", byte_value_16_->DeepCopy()); | 173 to_set.Set("a", byte_value_16_->DeepCopy()); |
169 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 174 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
170 settings.Set("a", byte_value_16_->DeepCopy()); | 175 settings.Set("a", byte_value_16_->DeepCopy()); |
171 EXPECT_TRUE(SettingsEqual(settings)); | 176 EXPECT_TRUE(SettingsEqual(settings)); |
172 | 177 |
173 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 178 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
174 EXPECT_TRUE(SettingsEqual(settings)); | 179 EXPECT_TRUE(SettingsEqual(settings)); |
175 } | 180 } |
176 | 181 |
177 TEST_F(ExtensionSettingsQuotaTest, RemovingExistingSettings) { | 182 TEST_F(ExtensionSettingsQuotaTest, RemovingExistingSettings) { |
178 DictionaryValue settings; | 183 DictionaryValue settings; |
179 CreateStorage(266, UINT_MAX, 2); | 184 CreateStorage(266, UINT_MAX, 2); |
180 | 185 |
181 storage_->Set("b", *byte_value_16_); | 186 storage_->Set(DEFAULTS, "b", *byte_value_16_); |
182 settings.Set("b", byte_value_16_->DeepCopy()); | 187 settings.Set("b", byte_value_16_->DeepCopy()); |
183 // Not enough quota. | 188 // Not enough quota. |
184 storage_->Set("c", *byte_value_256_); | 189 storage_->Set(DEFAULTS, "c", *byte_value_256_); |
185 EXPECT_TRUE(SettingsEqual(settings)); | 190 EXPECT_TRUE(SettingsEqual(settings)); |
186 | 191 |
187 // Try again with "b" removed, enough quota. | 192 // Try again with "b" removed, enough quota. |
188 EXPECT_FALSE(storage_->Remove("b").HasError()); | 193 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
189 settings.Remove("b", NULL); | 194 settings.Remove("b", NULL); |
190 EXPECT_FALSE(storage_->Set("c", *byte_value_256_).HasError()); | 195 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
191 settings.Set("c", byte_value_256_->DeepCopy()); | 196 settings.Set("c", byte_value_256_->DeepCopy()); |
192 EXPECT_TRUE(SettingsEqual(settings)); | 197 EXPECT_TRUE(SettingsEqual(settings)); |
193 | 198 |
194 // Enough byte quota but max keys not high enough. | 199 // Enough byte quota but max keys not high enough. |
195 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 200 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
196 settings.Set("a", byte_value_1_->DeepCopy()); | 201 settings.Set("a", byte_value_1_->DeepCopy()); |
197 EXPECT_TRUE(SettingsEqual(settings)); | 202 EXPECT_TRUE(SettingsEqual(settings)); |
198 | 203 |
199 EXPECT_TRUE(storage_->Set("b", *byte_value_1_).HasError()); | 204 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
200 EXPECT_TRUE(SettingsEqual(settings)); | 205 EXPECT_TRUE(SettingsEqual(settings)); |
201 | 206 |
202 // Back under max keys. | 207 // Back under max keys. |
203 EXPECT_FALSE(storage_->Remove("a").HasError()); | 208 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
204 settings.Remove("a", NULL); | 209 settings.Remove("a", NULL); |
205 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 210 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
206 settings.Set("b", byte_value_1_->DeepCopy()); | 211 settings.Set("b", byte_value_1_->DeepCopy()); |
207 EXPECT_TRUE(SettingsEqual(settings)); | 212 EXPECT_TRUE(SettingsEqual(settings)); |
208 } | 213 } |
209 | 214 |
210 TEST_F(ExtensionSettingsQuotaTest, RemovingNonexistentSettings) { | 215 TEST_F(ExtensionSettingsQuotaTest, RemovingNonexistentSettings) { |
211 DictionaryValue settings; | 216 DictionaryValue settings; |
212 CreateStorage(36, UINT_MAX, 3); | 217 CreateStorage(36, UINT_MAX, 3); |
213 | 218 |
214 // Max out bytes. | 219 // Max out bytes. |
215 DictionaryValue to_set; | 220 DictionaryValue to_set; |
216 to_set.Set("b1", byte_value_16_->DeepCopy()); | 221 to_set.Set("b1", byte_value_16_->DeepCopy()); |
217 to_set.Set("b2", byte_value_16_->DeepCopy()); | 222 to_set.Set("b2", byte_value_16_->DeepCopy()); |
218 storage_->Set(to_set); | 223 storage_->Set(DEFAULTS, to_set); |
219 settings.Set("b1", byte_value_16_->DeepCopy()); | 224 settings.Set("b1", byte_value_16_->DeepCopy()); |
220 settings.Set("b2", byte_value_16_->DeepCopy()); | 225 settings.Set("b2", byte_value_16_->DeepCopy()); |
221 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 226 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
222 EXPECT_TRUE(SettingsEqual(settings)); | 227 EXPECT_TRUE(SettingsEqual(settings)); |
223 | 228 |
224 // Remove some settings that don't exist. | 229 // Remove some settings that don't exist. |
225 std::vector<std::string> to_remove; | 230 std::vector<std::string> to_remove; |
226 to_remove.push_back("a1"); | 231 to_remove.push_back("a1"); |
227 to_remove.push_back("a2"); | 232 to_remove.push_back("a2"); |
228 EXPECT_FALSE(storage_->Remove(to_remove).HasError()); | 233 EXPECT_FALSE(storage_->Remove(DEFAULTS, to_remove).HasError()); |
229 EXPECT_FALSE(storage_->Remove("b").HasError()); | 234 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
230 EXPECT_TRUE(SettingsEqual(settings)); | 235 EXPECT_TRUE(SettingsEqual(settings)); |
231 | 236 |
232 // Still no quota. | 237 // Still no quota. |
233 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 238 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
234 EXPECT_TRUE(SettingsEqual(settings)); | 239 EXPECT_TRUE(SettingsEqual(settings)); |
235 | 240 |
236 // Max out key count. | 241 // Max out key count. |
237 to_set.Clear(); | 242 to_set.Clear(); |
238 to_set.Set("b1", byte_value_1_->DeepCopy()); | 243 to_set.Set("b1", byte_value_1_->DeepCopy()); |
239 to_set.Set("b2", byte_value_1_->DeepCopy()); | 244 to_set.Set("b2", byte_value_1_->DeepCopy()); |
240 storage_->Set(to_set); | 245 storage_->Set(DEFAULTS, to_set); |
241 settings.Set("b1", byte_value_1_->DeepCopy()); | 246 settings.Set("b1", byte_value_1_->DeepCopy()); |
242 settings.Set("b2", byte_value_1_->DeepCopy()); | 247 settings.Set("b2", byte_value_1_->DeepCopy()); |
243 storage_->Set("b3", *byte_value_1_); | 248 storage_->Set(DEFAULTS, "b3", *byte_value_1_); |
244 settings.Set("b3", byte_value_1_->DeepCopy()); | 249 settings.Set("b3", byte_value_1_->DeepCopy()); |
245 EXPECT_TRUE(SettingsEqual(settings)); | 250 EXPECT_TRUE(SettingsEqual(settings)); |
246 | 251 |
247 // Remove some settings that don't exist. | 252 // Remove some settings that don't exist. |
248 to_remove.clear(); | 253 to_remove.clear(); |
249 to_remove.push_back("a1"); | 254 to_remove.push_back("a1"); |
250 to_remove.push_back("a2"); | 255 to_remove.push_back("a2"); |
251 EXPECT_FALSE(storage_->Remove(to_remove).HasError()); | 256 EXPECT_FALSE(storage_->Remove(DEFAULTS, to_remove).HasError()); |
252 EXPECT_FALSE(storage_->Remove("b").HasError()); | 257 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
253 EXPECT_TRUE(SettingsEqual(settings)); | 258 EXPECT_TRUE(SettingsEqual(settings)); |
254 | 259 |
255 // Still no quota. | 260 // Still no quota. |
256 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 261 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
257 EXPECT_TRUE(SettingsEqual(settings)); | 262 EXPECT_TRUE(SettingsEqual(settings)); |
258 } | 263 } |
259 | 264 |
260 TEST_F(ExtensionSettingsQuotaTest, Clear) { | 265 TEST_F(ExtensionSettingsQuotaTest, Clear) { |
261 DictionaryValue settings; | 266 DictionaryValue settings; |
262 CreateStorage(40, UINT_MAX, 5); | 267 CreateStorage(40, UINT_MAX, 5); |
263 | 268 |
264 // Test running out of byte quota. | 269 // Test running out of byte quota. |
265 { | 270 { |
266 DictionaryValue to_set; | 271 DictionaryValue to_set; |
267 to_set.Set("a", byte_value_16_->DeepCopy()); | 272 to_set.Set("a", byte_value_16_->DeepCopy()); |
268 to_set.Set("b", byte_value_16_->DeepCopy()); | 273 to_set.Set("b", byte_value_16_->DeepCopy()); |
269 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 274 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
270 EXPECT_TRUE(storage_->Set("c", *byte_value_16_).HasError()); | 275 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
271 | 276 |
272 EXPECT_FALSE(storage_->Clear().HasError()); | 277 EXPECT_FALSE(storage_->Clear(DEFAULTS).HasError()); |
273 | 278 |
274 // (repeat) | 279 // (repeat) |
275 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 280 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
276 EXPECT_TRUE(storage_->Set("c", *byte_value_16_).HasError()); | 281 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
277 } | 282 } |
278 | 283 |
279 // Test reaching max keys. | 284 // Test reaching max keys. |
280 storage_->Clear(); | 285 storage_->Clear(DEFAULTS); |
281 { | 286 { |
282 DictionaryValue to_set; | 287 DictionaryValue to_set; |
283 to_set.Set("a", byte_value_1_->DeepCopy()); | 288 to_set.Set("a", byte_value_1_->DeepCopy()); |
284 to_set.Set("b", byte_value_1_->DeepCopy()); | 289 to_set.Set("b", byte_value_1_->DeepCopy()); |
285 to_set.Set("c", byte_value_1_->DeepCopy()); | 290 to_set.Set("c", byte_value_1_->DeepCopy()); |
286 to_set.Set("d", byte_value_1_->DeepCopy()); | 291 to_set.Set("d", byte_value_1_->DeepCopy()); |
287 to_set.Set("e", byte_value_1_->DeepCopy()); | 292 to_set.Set("e", byte_value_1_->DeepCopy()); |
288 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 293 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
289 EXPECT_TRUE(storage_->Set("f", *byte_value_1_).HasError()); | 294 EXPECT_TRUE(storage_->Set(DEFAULTS, "f", *byte_value_1_).HasError()); |
290 | 295 |
291 storage_->Clear(); | 296 storage_->Clear(DEFAULTS); |
292 | 297 |
293 // (repeat) | 298 // (repeat) |
294 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 299 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
295 EXPECT_TRUE(storage_->Set("f", *byte_value_1_).HasError()); | 300 EXPECT_TRUE(storage_->Set(DEFAULTS, "f", *byte_value_1_).HasError()); |
296 } | 301 } |
297 } | 302 } |
298 | 303 |
299 TEST_F(ExtensionSettingsQuotaTest, ChangingUsedBytesWithSet) { | 304 TEST_F(ExtensionSettingsQuotaTest, ChangingUsedBytesWithSet) { |
300 DictionaryValue settings; | 305 DictionaryValue settings; |
301 CreateStorage(20, UINT_MAX, UINT_MAX); | 306 CreateStorage(20, UINT_MAX, UINT_MAX); |
302 | 307 |
303 // Change a setting to make it go over quota. | 308 // Change a setting to make it go over quota. |
304 storage_->Set("a", *byte_value_16_); | 309 storage_->Set(DEFAULTS, "a", *byte_value_16_); |
305 settings.Set("a", byte_value_16_->DeepCopy()); | 310 settings.Set("a", byte_value_16_->DeepCopy()); |
306 EXPECT_TRUE(SettingsEqual(settings)); | 311 EXPECT_TRUE(SettingsEqual(settings)); |
307 | 312 |
308 EXPECT_TRUE(storage_->Set("a", *byte_value_256_).HasError()); | 313 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_256_).HasError()); |
309 EXPECT_TRUE(SettingsEqual(settings)); | 314 EXPECT_TRUE(SettingsEqual(settings)); |
310 | 315 |
311 // Change a setting to reduce usage and room for another setting. | 316 // Change a setting to reduce usage and room for another setting. |
312 EXPECT_TRUE(storage_->Set("foobar", *byte_value_1_).HasError()); | 317 EXPECT_TRUE(storage_->Set(DEFAULTS, "foobar", *byte_value_1_).HasError()); |
313 storage_->Set("a", *byte_value_1_); | 318 storage_->Set(DEFAULTS, "a", *byte_value_1_); |
314 settings.Set("a", byte_value_1_->DeepCopy()); | 319 settings.Set("a", byte_value_1_->DeepCopy()); |
315 | 320 |
316 EXPECT_FALSE(storage_->Set("foobar", *byte_value_1_).HasError()); | 321 EXPECT_FALSE(storage_->Set(DEFAULTS, "foobar", *byte_value_1_).HasError()); |
317 settings.Set("foobar", byte_value_1_->DeepCopy()); | 322 settings.Set("foobar", byte_value_1_->DeepCopy()); |
318 EXPECT_TRUE(SettingsEqual(settings)); | 323 EXPECT_TRUE(SettingsEqual(settings)); |
319 } | 324 } |
320 | 325 |
321 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntirelyCompletedWithByteQuota) { | 326 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntirelyCompletedWithByteQuota) { |
322 DictionaryValue settings; | 327 DictionaryValue settings; |
323 CreateStorage(40, UINT_MAX, UINT_MAX); | 328 CreateStorage(40, UINT_MAX, UINT_MAX); |
324 | 329 |
325 storage_->Set("a", *byte_value_16_); | 330 storage_->Set(DEFAULTS, "a", *byte_value_16_); |
326 settings.Set("a", byte_value_16_->DeepCopy()); | 331 settings.Set("a", byte_value_16_->DeepCopy()); |
327 | 332 |
328 // The entire change is over quota. | 333 // The entire change is over quota. |
329 DictionaryValue to_set; | 334 DictionaryValue to_set; |
330 to_set.Set("b", byte_value_16_->DeepCopy()); | 335 to_set.Set("b", byte_value_16_->DeepCopy()); |
331 to_set.Set("c", byte_value_16_->DeepCopy()); | 336 to_set.Set("c", byte_value_16_->DeepCopy()); |
332 EXPECT_TRUE(storage_->Set(to_set).HasError()); | 337 EXPECT_TRUE(storage_->Set(DEFAULTS, to_set).HasError()); |
333 EXPECT_TRUE(SettingsEqual(settings)); | 338 EXPECT_TRUE(SettingsEqual(settings)); |
334 | 339 |
335 // The entire change is over quota, but quota reduced in existing key. | 340 // The entire change is over quota, but quota reduced in existing key. |
336 to_set.Set("a", byte_value_1_->DeepCopy()); | 341 to_set.Set("a", byte_value_1_->DeepCopy()); |
337 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 342 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
338 settings.Set("a", byte_value_1_->DeepCopy()); | 343 settings.Set("a", byte_value_1_->DeepCopy()); |
339 settings.Set("b", byte_value_16_->DeepCopy()); | 344 settings.Set("b", byte_value_16_->DeepCopy()); |
340 settings.Set("c", byte_value_16_->DeepCopy()); | 345 settings.Set("c", byte_value_16_->DeepCopy()); |
341 EXPECT_TRUE(SettingsEqual(settings)); | 346 EXPECT_TRUE(SettingsEqual(settings)); |
342 } | 347 } |
343 | 348 |
344 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntireCompletedWithMaxKeys) { | 349 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntireCompletedWithMaxKeys) { |
345 DictionaryValue settings; | 350 DictionaryValue settings; |
346 CreateStorage(UINT_MAX, UINT_MAX, 2); | 351 CreateStorage(UINT_MAX, UINT_MAX, 2); |
347 | 352 |
348 storage_->Set("a", *byte_value_1_); | 353 storage_->Set(DEFAULTS, "a", *byte_value_1_); |
349 settings.Set("a", byte_value_1_->DeepCopy()); | 354 settings.Set("a", byte_value_1_->DeepCopy()); |
350 | 355 |
351 DictionaryValue to_set; | 356 DictionaryValue to_set; |
352 to_set.Set("b", byte_value_16_->DeepCopy()); | 357 to_set.Set("b", byte_value_16_->DeepCopy()); |
353 to_set.Set("c", byte_value_16_->DeepCopy()); | 358 to_set.Set("c", byte_value_16_->DeepCopy()); |
354 EXPECT_TRUE(storage_->Set(to_set).HasError()); | 359 EXPECT_TRUE(storage_->Set(DEFAULTS, to_set).HasError()); |
355 EXPECT_TRUE(SettingsEqual(settings)); | 360 EXPECT_TRUE(SettingsEqual(settings)); |
356 } | 361 } |
357 | 362 |
358 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndByteQuota) { | 363 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndByteQuota) { |
359 DictionaryValue settings; | 364 DictionaryValue settings; |
360 delegate_->Set("a", *byte_value_256_); | 365 delegate_->Set(DEFAULTS, "a", *byte_value_256_); |
361 settings.Set("a", byte_value_256_->DeepCopy()); | 366 settings.Set("a", byte_value_256_->DeepCopy()); |
362 | 367 |
363 CreateStorage(280, UINT_MAX, UINT_MAX); | 368 CreateStorage(280, UINT_MAX, UINT_MAX); |
364 EXPECT_TRUE(SettingsEqual(settings)); | 369 EXPECT_TRUE(SettingsEqual(settings)); |
365 | 370 |
366 // Add some data. | 371 // Add some data. |
367 EXPECT_FALSE(storage_->Set("b", *byte_value_16_).HasError()); | 372 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
368 settings.Set("b", byte_value_16_->DeepCopy()); | 373 settings.Set("b", byte_value_16_->DeepCopy()); |
369 EXPECT_TRUE(SettingsEqual(settings)); | 374 EXPECT_TRUE(SettingsEqual(settings)); |
370 | 375 |
371 // Not enough quota. | 376 // Not enough quota. |
372 EXPECT_TRUE(storage_->Set("c", *byte_value_16_).HasError()); | 377 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
373 EXPECT_TRUE(SettingsEqual(settings)); | 378 EXPECT_TRUE(SettingsEqual(settings)); |
374 | 379 |
375 // Reduce usage of original setting so that "c" can fit. | 380 // Reduce usage of original setting so that "c" can fit. |
376 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 381 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
377 settings.Set("a", byte_value_16_->DeepCopy()); | 382 settings.Set("a", byte_value_16_->DeepCopy()); |
378 EXPECT_TRUE(SettingsEqual(settings)); | 383 EXPECT_TRUE(SettingsEqual(settings)); |
379 | 384 |
380 EXPECT_FALSE(storage_->Set("c", *byte_value_16_).HasError()); | 385 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
381 settings.Set("c", byte_value_16_->DeepCopy()); | 386 settings.Set("c", byte_value_16_->DeepCopy()); |
382 EXPECT_TRUE(SettingsEqual(settings)); | 387 EXPECT_TRUE(SettingsEqual(settings)); |
383 | 388 |
384 // Remove to free up some more data. | 389 // Remove to free up some more data. |
385 EXPECT_TRUE(storage_->Set("d", *byte_value_256_).HasError()); | 390 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_256_).HasError()); |
386 | 391 |
387 std::vector<std::string> to_remove; | 392 std::vector<std::string> to_remove; |
388 to_remove.push_back("a"); | 393 to_remove.push_back("a"); |
389 to_remove.push_back("b"); | 394 to_remove.push_back("b"); |
390 storage_->Remove(to_remove); | 395 storage_->Remove(DEFAULTS, to_remove); |
391 settings.Remove("a", NULL); | 396 settings.Remove("a", NULL); |
392 settings.Remove("b", NULL); | 397 settings.Remove("b", NULL); |
393 EXPECT_TRUE(SettingsEqual(settings)); | 398 EXPECT_TRUE(SettingsEqual(settings)); |
394 | 399 |
395 EXPECT_FALSE(storage_->Set("d", *byte_value_256_).HasError()); | 400 EXPECT_FALSE(storage_->Set(DEFAULTS, "d", *byte_value_256_).HasError()); |
396 settings.Set("d", byte_value_256_->DeepCopy()); | 401 settings.Set("d", byte_value_256_->DeepCopy()); |
397 EXPECT_TRUE(SettingsEqual(settings)); | 402 EXPECT_TRUE(SettingsEqual(settings)); |
398 } | 403 } |
399 | 404 |
400 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndMaxKeys) { | 405 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndMaxKeys) { |
401 DictionaryValue settings; | 406 DictionaryValue settings; |
402 delegate_->Set("a", *byte_value_1_); | 407 delegate_->Set(DEFAULTS, "a", *byte_value_1_); |
403 settings.Set("a", byte_value_1_->DeepCopy()); | 408 settings.Set("a", byte_value_1_->DeepCopy()); |
404 CreateStorage(UINT_MAX, UINT_MAX, 2); | 409 CreateStorage(UINT_MAX, UINT_MAX, 2); |
405 | 410 |
406 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 411 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
407 settings.Set("b", byte_value_1_->DeepCopy()); | 412 settings.Set("b", byte_value_1_->DeepCopy()); |
408 | 413 |
409 EXPECT_TRUE(storage_->Set("c", *byte_value_1_).HasError()); | 414 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_1_).HasError()); |
410 | 415 |
411 EXPECT_TRUE(SettingsEqual(settings)); | 416 EXPECT_TRUE(SettingsEqual(settings)); |
412 } | 417 } |
413 | 418 |
414 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverByteQuota) { | 419 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverByteQuota) { |
415 DictionaryValue settings; | 420 DictionaryValue settings; |
416 settings.Set("a", byte_value_16_->DeepCopy()); | 421 settings.Set("a", byte_value_16_->DeepCopy()); |
417 settings.Set("b", byte_value_16_->DeepCopy()); | 422 settings.Set("b", byte_value_16_->DeepCopy()); |
418 settings.Set("c", byte_value_16_->DeepCopy()); | 423 settings.Set("c", byte_value_16_->DeepCopy()); |
419 delegate_->Set(settings); | 424 delegate_->Set(DEFAULTS, settings); |
420 | 425 |
421 CreateStorage(40, UINT_MAX, UINT_MAX); | 426 CreateStorage(40, UINT_MAX, UINT_MAX); |
422 EXPECT_TRUE(SettingsEqual(settings)); | 427 EXPECT_TRUE(SettingsEqual(settings)); |
423 | 428 |
424 EXPECT_TRUE(storage_->Set("d", *byte_value_16_).HasError()); | 429 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_16_).HasError()); |
425 | 430 |
426 // Take under quota by reducing size of an existing setting | 431 // Take under quota by reducing size of an existing setting |
427 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 432 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
428 settings.Set("a", byte_value_1_->DeepCopy()); | 433 settings.Set("a", byte_value_1_->DeepCopy()); |
429 EXPECT_TRUE(SettingsEqual(settings)); | 434 EXPECT_TRUE(SettingsEqual(settings)); |
430 | 435 |
431 // Should be able set another small setting. | 436 // Should be able set another small setting. |
432 EXPECT_FALSE(storage_->Set("d", *byte_value_1_).HasError()); | 437 EXPECT_FALSE(storage_->Set(DEFAULTS, "d", *byte_value_1_).HasError()); |
433 settings.Set("d", byte_value_1_->DeepCopy()); | 438 settings.Set("d", byte_value_1_->DeepCopy()); |
434 EXPECT_TRUE(SettingsEqual(settings)); | 439 EXPECT_TRUE(SettingsEqual(settings)); |
435 } | 440 } |
436 | 441 |
437 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverMaxKeys) { | 442 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverMaxKeys) { |
438 DictionaryValue settings; | 443 DictionaryValue settings; |
439 settings.Set("a", byte_value_16_->DeepCopy()); | 444 settings.Set("a", byte_value_16_->DeepCopy()); |
440 settings.Set("b", byte_value_16_->DeepCopy()); | 445 settings.Set("b", byte_value_16_->DeepCopy()); |
441 settings.Set("c", byte_value_16_->DeepCopy()); | 446 settings.Set("c", byte_value_16_->DeepCopy()); |
442 delegate_->Set(settings); | 447 delegate_->Set(DEFAULTS, settings); |
443 | 448 |
444 CreateStorage(UINT_MAX, UINT_MAX, 2); | 449 CreateStorage(UINT_MAX, UINT_MAX, 2); |
445 EXPECT_TRUE(SettingsEqual(settings)); | 450 EXPECT_TRUE(SettingsEqual(settings)); |
446 | 451 |
447 // Can't set either an existing or new setting. | 452 // Can't set either an existing or new setting. |
448 EXPECT_TRUE(storage_->Set("d", *byte_value_16_).HasError()); | 453 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_16_).HasError()); |
449 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 454 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
450 EXPECT_TRUE(SettingsEqual(settings)); | 455 EXPECT_TRUE(SettingsEqual(settings)); |
451 | 456 |
452 // Should be able after removing 2. | 457 // Should be able after removing 2. |
453 storage_->Remove("a"); | 458 storage_->Remove(DEFAULTS, "a"); |
454 settings.Remove("a", NULL); | 459 settings.Remove("a", NULL); |
455 storage_->Remove("b"); | 460 storage_->Remove(DEFAULTS, "b"); |
456 settings.Remove("b", NULL); | 461 settings.Remove("b", NULL); |
457 EXPECT_TRUE(SettingsEqual(settings)); | 462 EXPECT_TRUE(SettingsEqual(settings)); |
458 | 463 |
459 EXPECT_FALSE(storage_->Set("e", *byte_value_1_).HasError()); | 464 EXPECT_FALSE(storage_->Set(DEFAULTS, "e", *byte_value_1_).HasError()); |
460 settings.Set("e", byte_value_1_->DeepCopy()); | 465 settings.Set("e", byte_value_1_->DeepCopy()); |
461 EXPECT_TRUE(SettingsEqual(settings)); | 466 EXPECT_TRUE(SettingsEqual(settings)); |
462 | 467 |
463 // Still can't set any. | 468 // Still can't set any. |
464 EXPECT_TRUE(storage_->Set("d", *byte_value_16_).HasError()); | 469 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_16_).HasError()); |
465 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 470 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
466 EXPECT_TRUE(SettingsEqual(settings)); | 471 EXPECT_TRUE(SettingsEqual(settings)); |
467 } | 472 } |
468 | 473 |
469 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytesPerSetting) { | 474 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytesPerSetting) { |
470 DictionaryValue empty; | 475 DictionaryValue empty; |
471 CreateStorage(UINT_MAX, 0, UINT_MAX); | 476 CreateStorage(UINT_MAX, 0, UINT_MAX); |
472 | 477 |
473 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 478 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
474 EXPECT_FALSE(storage_->Remove("a").HasError()); | 479 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
475 EXPECT_FALSE(storage_->Remove("b").HasError()); | 480 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
476 EXPECT_TRUE(SettingsEqual(empty)); | 481 EXPECT_TRUE(SettingsEqual(empty)); |
477 } | 482 } |
478 | 483 |
479 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSetting) { | 484 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSetting) { |
480 DictionaryValue settings; | 485 DictionaryValue settings; |
481 | 486 |
482 CreateStorage(UINT_MAX, 20, UINT_MAX); | 487 CreateStorage(UINT_MAX, 20, UINT_MAX); |
483 | 488 |
484 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 489 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
485 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 490 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
486 settings.Set("a", byte_value_16_->DeepCopy()); | 491 settings.Set("a", byte_value_16_->DeepCopy()); |
487 EXPECT_TRUE(storage_->Set("a", *byte_value_256_).HasError()); | 492 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_256_).HasError()); |
488 | 493 |
489 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 494 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
490 EXPECT_FALSE(storage_->Set("b", *byte_value_16_).HasError()); | 495 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
491 settings.Set("b", byte_value_16_->DeepCopy()); | 496 settings.Set("b", byte_value_16_->DeepCopy()); |
492 EXPECT_TRUE(storage_->Set("b", *byte_value_256_).HasError()); | 497 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_256_).HasError()); |
493 | 498 |
494 EXPECT_TRUE(SettingsEqual(settings)); | 499 EXPECT_TRUE(SettingsEqual(settings)); |
495 } | 500 } |
496 | 501 |
497 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSettingWithInitialSettings) { | 502 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSettingWithInitialSettings) { |
498 DictionaryValue settings; | 503 DictionaryValue settings; |
499 | 504 |
500 delegate_->Set("a", *byte_value_1_); | 505 delegate_->Set(DEFAULTS, "a", *byte_value_1_); |
501 delegate_->Set("b", *byte_value_16_); | 506 delegate_->Set(DEFAULTS, "b", *byte_value_16_); |
502 delegate_->Set("c", *byte_value_256_); | 507 delegate_->Set(DEFAULTS, "c", *byte_value_256_); |
503 CreateStorage(UINT_MAX, 20, UINT_MAX); | 508 CreateStorage(UINT_MAX, 20, UINT_MAX); |
504 | 509 |
505 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 510 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
506 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 511 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
507 settings.Set("a", byte_value_16_->DeepCopy()); | 512 settings.Set("a", byte_value_16_->DeepCopy()); |
508 EXPECT_TRUE(storage_->Set("a", *byte_value_256_).HasError()); | 513 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_256_).HasError()); |
509 | 514 |
510 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 515 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
511 EXPECT_FALSE(storage_->Set("b", *byte_value_16_).HasError()); | 516 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
512 settings.Set("b", byte_value_16_->DeepCopy()); | 517 settings.Set("b", byte_value_16_->DeepCopy()); |
513 EXPECT_TRUE(storage_->Set("b", *byte_value_256_).HasError()); | 518 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_256_).HasError()); |
514 | 519 |
515 EXPECT_FALSE(storage_->Set("c", *byte_value_1_).HasError()); | 520 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_1_).HasError()); |
516 EXPECT_FALSE(storage_->Set("c", *byte_value_16_).HasError()); | 521 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
517 settings.Set("c", byte_value_16_->DeepCopy()); | 522 settings.Set("c", byte_value_16_->DeepCopy()); |
518 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 523 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
519 | 524 |
520 EXPECT_TRUE(SettingsEqual(settings)); | 525 EXPECT_TRUE(SettingsEqual(settings)); |
521 } | 526 } |
527 | |
528 TEST_F(ExtensionSettingsQuotaTest, | |
529 QuotaBytesPerSettingWithInitialSettingsForced) { | |
not at google - send to devlin
2011/11/17 07:02:53
Change #1: a test.
| |
530 // This is a lazy test to make sure FORCE lets through changes: the test above | |
531 // copied, but using FORCE and asserting nothing is ever rejected... | |
532 DictionaryValue settings; | |
533 | |
534 delegate_->Set(DEFAULTS, "a", *byte_value_1_); | |
535 delegate_->Set(DEFAULTS, "b", *byte_value_16_); | |
536 delegate_->Set(DEFAULTS, "c", *byte_value_256_); | |
537 CreateStorage(UINT_MAX, 20, UINT_MAX); | |
538 | |
539 EXPECT_FALSE(storage_->Set(FORCE, "a", *byte_value_1_).HasError()); | |
540 EXPECT_FALSE(storage_->Set(FORCE, "a", *byte_value_16_).HasError()); | |
541 EXPECT_FALSE(storage_->Set(FORCE, "a", *byte_value_256_).HasError()); | |
542 settings.Set("a", byte_value_256_->DeepCopy()); | |
543 | |
544 EXPECT_FALSE(storage_->Set(FORCE, "b", *byte_value_1_).HasError()); | |
545 EXPECT_FALSE(storage_->Set(FORCE, "b", *byte_value_16_).HasError()); | |
546 EXPECT_FALSE(storage_->Set(FORCE, "b", *byte_value_256_).HasError()); | |
547 settings.Set("b", byte_value_256_->DeepCopy()); | |
548 | |
549 EXPECT_FALSE(storage_->Set(FORCE, "c", *byte_value_1_).HasError()); | |
550 EXPECT_FALSE(storage_->Set(FORCE, "c", *byte_value_16_).HasError()); | |
551 settings.Set("c", byte_value_16_->DeepCopy()); | |
552 | |
553 // ... except the last. Make sure it can still fail. | |
554 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); | |
555 | |
556 EXPECT_TRUE(SettingsEqual(settings)); | |
557 } | |
522 | 558 |
523 } // namespace extensions | 559 } // namespace extensions |
OLD | NEW |