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

Side by Side Diff: extensions/browser/api/storage/settings_quota_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698