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

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

Issue 8177022: Add onChanged events to the extension settings API, both from sync and between (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 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 "chrome/browser/extensions/extension_settings_storage_unittest.h" 5 #include "chrome/browser/extensions/extension_settings_storage_unittest.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 10
(...skipping 15 matching lines...) Expand all
26 string.append(", "); 26 string.append(", ");
27 } 27 }
28 string.append(*it); 28 string.append(*it);
29 } 29 }
30 string.append("}"); 30 string.append("}");
31 return string; 31 return string;
32 } 32 }
33 33
34 } // namespace 34 } // namespace
35 35
36 // Compares two possibly NULL values for equality, filling |error| with an
37 // appropriate error message if they're different.
38 bool ValuesEqual(
39 const Value* expected, const Value* actual, std::string* error) {
40 if (expected == actual) {
41 return true;
42 }
43 if (expected && !actual) {
44 *error = "Expected: " + GetJSON(*expected) + ", actual: NULL";
45 return false;
46 }
47 if (actual && !expected) {
48 *error = "Expected: NULL, actual: " + GetJSON(*actual);
49 return false;
50 }
51 if (!expected->Equals(actual)) {
52 *error =
53 "Expected: " + GetJSON(*expected) + ", actual: " + GetJSON(*actual);
54 return false;
55 }
56 return true;
57 }
58
36 // Returns whether the result of a storage operation has the expected settings 59 // Returns whether the result of a storage operation has the expected settings
37 // and changed keys. 60 // and changed keys.
38 testing::AssertionResult SettingsEq( 61 testing::AssertionResult SettingsEq(
39 const char* _1, const char* _2, const char* _3, 62 const char* _1, const char* _2, const char* _3, const char* _4,
40 DictionaryValue* expected_settings, 63 DictionaryValue* expected_settings,
64 DictionaryValue* expected_old_settings,
41 std::set<std::string>* expected_changed_keys, 65 std::set<std::string>* expected_changed_keys,
42 ExtensionSettingsStorage::Result actual) { 66 ExtensionSettingsStorage::Result actual) {
67 std::string error;
68
43 if (actual.HasError()) { 69 if (actual.HasError()) {
44 return testing::AssertionFailure() << 70 return testing::AssertionFailure() <<
45 "Expected: " << GetJSON(*expected_settings) << 71 "Expected: " << GetJSON(*expected_settings) <<
46 ", " << ToString(*expected_changed_keys) << "\n" << 72 ", " << ToString(*expected_changed_keys) << "\n" <<
47 ", actual has error: " << actual.GetError(); 73 ", actual has error: " << actual.GetError();
48 } 74 }
49 if (expected_settings == NULL && actual.GetSettings() != NULL) { 75
50 return testing::AssertionFailure() << 76 if (!ValuesEqual(expected_settings, actual.GetSettings(), &error)) {
51 "Expected NULL settings, actual: " << GetJSON(*actual.GetSettings()); 77 return testing::AssertionFailure() << "For settings, " << error;
52 } 78 }
53 if (expected_changed_keys == NULL && actual.GetChangedKeys() != NULL) { 79
80 if (!expected_changed_keys && actual.GetChangedKeys()) {
54 return testing::AssertionFailure() << 81 return testing::AssertionFailure() <<
55 "Expected NULL changed keys, actual: " << 82 "Expected NULL changed keys, actual: " <<
56 ToString(*actual.GetChangedKeys()); 83 ToString(*actual.GetChangedKeys());
57 } 84 }
58 if (expected_settings != NULL && actual.GetSettings() == NULL) { 85 if (expected_changed_keys && !actual.GetChangedKeys()) {
59 return testing::AssertionFailure() <<
60 "Expected: " << GetJSON(*expected_settings) << ", actual NULL";
61 }
62 if (expected_changed_keys != NULL && actual.GetChangedKeys() == NULL) {
63 return testing::AssertionFailure() << 86 return testing::AssertionFailure() <<
64 "Expected: " << ToString(*expected_changed_keys) << ", actual NULL"; 87 "Expected: " << ToString(*expected_changed_keys) << ", actual NULL";
65 } 88 }
66 if (expected_settings != actual.GetSettings() &&
67 !expected_settings->Equals(actual.GetSettings())) {
68 return testing::AssertionFailure() <<
69 "Expected: " << GetJSON(*expected_settings) <<
70 ", actual: " << GetJSON(*actual.GetSettings());
71 }
72 if (expected_changed_keys != actual.GetChangedKeys() && 89 if (expected_changed_keys != actual.GetChangedKeys() &&
73 *expected_changed_keys != *actual.GetChangedKeys()) { 90 *expected_changed_keys != *actual.GetChangedKeys()) {
74 return testing::AssertionFailure() << 91 return testing::AssertionFailure() <<
75 "Expected: " << ToString(*expected_changed_keys) << 92 "Expected: " << ToString(*expected_changed_keys) <<
76 ", actual: " << ToString(*actual.GetChangedKeys()); 93 ", actual: " << ToString(*actual.GetChangedKeys());
77 } 94 }
95
96 const std::set<std::string>* changed_keys = actual.GetChangedKeys();
97 if (changed_keys) {
98 for (std::set<std::string>::const_iterator it = changed_keys->begin();
99 it != changed_keys->end(); ++it) {
100 Value *expected_old_value = NULL;
101 expected_old_settings->GetWithoutPathExpansion(*it, &expected_old_value);
102 if (!ValuesEqual(expected_old_value, actual.GetOldValue(*it), &error)) {
103 return testing::AssertionFailure() << "Old values not equal: " << error;
104 }
105
106 Value *expected_new_value = NULL;
107 if (expected_settings) {
108 expected_settings->GetWithoutPathExpansion(*it, &expected_new_value);
109 }
110 if (!ValuesEqual(expected_new_value, actual.GetNewValue(*it), &error)) {
111 return testing::AssertionFailure() << "New values not equal: " << error;
112 }
113 }
114 }
115
78 return testing::AssertionSuccess(); 116 return testing::AssertionSuccess();
79 } 117 }
80 118
81 ExtensionSettingsStorageTest::ExtensionSettingsStorageTest() 119 ExtensionSettingsStorageTest::ExtensionSettingsStorageTest()
82 : key1_("foo"), 120 : key1_("foo"),
83 key2_("bar"), 121 key2_("bar"),
84 key3_("baz"), 122 key3_("baz"),
85 empty_dict_(new DictionaryValue), 123 empty_dict_(new DictionaryValue()),
86 dict1_(new DictionaryValue), 124 dict1_(new DictionaryValue()),
87 dict12_(new DictionaryValue), 125 dict3_(new DictionaryValue()),
88 dict123_(new DictionaryValue), 126 dict12_(new DictionaryValue()),
127 dict123_(new DictionaryValue()),
89 ui_thread_(BrowserThread::UI, MessageLoop::current()), 128 ui_thread_(BrowserThread::UI, MessageLoop::current()),
90 file_thread_(BrowserThread::FILE, MessageLoop::current()) { 129 file_thread_(BrowserThread::FILE, MessageLoop::current()) {
91 val1_.reset(Value::CreateStringValue(key1_ + "Value")); 130 val1_.reset(Value::CreateStringValue(key1_ + "Value"));
92 val2_.reset(Value::CreateStringValue(key2_ + "Value")); 131 val2_.reset(Value::CreateStringValue(key2_ + "Value"));
93 val3_.reset(Value::CreateStringValue(key3_ + "Value")); 132 val3_.reset(Value::CreateStringValue(key3_ + "Value"));
94 133
95 list1_.push_back(key1_); 134 list1_.push_back(key1_);
96 list2_.push_back(key2_); 135 list2_.push_back(key2_);
97 list3_.push_back(key3_); 136 list3_.push_back(key3_);
98 list12_.push_back(key1_); 137 list12_.push_back(key1_);
99 list12_.push_back(key2_); 138 list12_.push_back(key2_);
100 list13_.push_back(key1_); 139 list13_.push_back(key1_);
101 list13_.push_back(key3_); 140 list13_.push_back(key3_);
102 list123_.push_back(key1_); 141 list123_.push_back(key1_);
103 list123_.push_back(key2_); 142 list123_.push_back(key2_);
104 list123_.push_back(key3_); 143 list123_.push_back(key3_);
105 144
106 set1_.insert(list1_.begin(), list1_.end()); 145 set1_.insert(list1_.begin(), list1_.end());
107 set2_.insert(list2_.begin(), list2_.end()); 146 set2_.insert(list2_.begin(), list2_.end());
108 set3_.insert(list3_.begin(), list3_.end()); 147 set3_.insert(list3_.begin(), list3_.end());
109 set12_.insert(list12_.begin(), list12_.end()); 148 set12_.insert(list12_.begin(), list12_.end());
110 set13_.insert(list13_.begin(), list13_.end()); 149 set13_.insert(list13_.begin(), list13_.end());
111 set123_.insert(list123_.begin(), list123_.end()); 150 set123_.insert(list123_.begin(), list123_.end());
112 151
113 dict1_->Set(key1_, val1_->DeepCopy()); 152 dict1_->Set(key1_, val1_->DeepCopy());
153 dict3_->Set(key3_, val3_->DeepCopy());
114 dict12_->Set(key1_, val1_->DeepCopy()); 154 dict12_->Set(key1_, val1_->DeepCopy());
115 dict12_->Set(key2_, val2_->DeepCopy()); 155 dict12_->Set(key2_, val2_->DeepCopy());
116 dict123_->Set(key1_, val1_->DeepCopy()); 156 dict123_->Set(key1_, val1_->DeepCopy());
117 dict123_->Set(key2_, val2_->DeepCopy()); 157 dict123_->Set(key2_, val2_->DeepCopy());
118 dict123_->Set(key3_, val3_->DeepCopy()); 158 dict123_->Set(key3_, val3_->DeepCopy());
119 } 159 }
120 160
121 ExtensionSettingsStorageTest::~ExtensionSettingsStorageTest() {} 161 ExtensionSettingsStorageTest::~ExtensionSettingsStorageTest() {}
122 162
123 void ExtensionSettingsStorageTest::SetUp() { 163 void ExtensionSettingsStorageTest::SetUp() {
124 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 164 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
125 storage_.reset((GetParam())(temp_dir_.path(), "fakeExtension")); 165 storage_.reset((GetParam())(temp_dir_.path(), "fakeExtension"));
126 ASSERT_TRUE(storage_.get()); 166 ASSERT_TRUE(storage_.get());
127 } 167 }
128 168
129 void ExtensionSettingsStorageTest::TearDown() { 169 void ExtensionSettingsStorageTest::TearDown() {
130 storage_.reset(); 170 storage_.reset();
131 } 171 }
132 172
133 TEST_P(ExtensionSettingsStorageTest, GetWhenEmpty) { 173 TEST_P(ExtensionSettingsStorageTest, GetWhenEmpty) {
134 EXPECT_PRED_FORMAT3(SettingsEq, 174 EXPECT_PRED_FORMAT4(SettingsEq,
135 empty_dict_.get(), NULL, storage_->Get(key1_)); 175 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
136 EXPECT_PRED_FORMAT3(SettingsEq, 176 EXPECT_PRED_FORMAT4(SettingsEq,
137 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 177 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
138 EXPECT_PRED_FORMAT3(SettingsEq, 178 EXPECT_PRED_FORMAT4(SettingsEq,
139 empty_dict_.get(), NULL, storage_->Get(list123_)); 179 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
140 EXPECT_PRED_FORMAT3(SettingsEq, 180 EXPECT_PRED_FORMAT4(SettingsEq,
141 empty_dict_.get(), NULL, storage_->Get()); 181 empty_dict_.get(), NULL, NULL, storage_->Get());
142 } 182 }
143 183
144 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) { 184 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) {
145 EXPECT_PRED_FORMAT3(SettingsEq, 185 EXPECT_PRED_FORMAT4(SettingsEq,
146 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); 186 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_));
147 187
148 EXPECT_PRED_FORMAT3(SettingsEq, 188 EXPECT_PRED_FORMAT4(SettingsEq,
149 dict1_.get(), NULL, storage_->Get(key1_)); 189 dict1_.get(), NULL, NULL, storage_->Get(key1_));
150 EXPECT_PRED_FORMAT3(SettingsEq, 190 EXPECT_PRED_FORMAT4(SettingsEq,
151 empty_dict_.get(), NULL, storage_->Get(key2_)); 191 empty_dict_.get(), NULL, NULL, storage_->Get(key2_));
152 EXPECT_PRED_FORMAT3(SettingsEq, 192 EXPECT_PRED_FORMAT4(SettingsEq,
153 empty_dict_.get(), NULL, storage_->Get(key3_)); 193 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
154 EXPECT_PRED_FORMAT3(SettingsEq, 194 EXPECT_PRED_FORMAT4(SettingsEq,
155 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 195 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
156 EXPECT_PRED_FORMAT3(SettingsEq, 196 EXPECT_PRED_FORMAT4(SettingsEq,
157 dict1_.get(), NULL, storage_->Get(list123_)); 197 dict1_.get(), NULL, NULL, storage_->Get(list123_));
158 EXPECT_PRED_FORMAT3(SettingsEq, 198 EXPECT_PRED_FORMAT4(SettingsEq,
159 dict1_.get(), NULL, storage_->Get()); 199 dict1_.get(), NULL, NULL, storage_->Get());
160 } 200 }
161 201
162 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) { 202 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) {
163 EXPECT_PRED_FORMAT3(SettingsEq, 203 EXPECT_PRED_FORMAT4(SettingsEq,
164 dict12_.get(), &set12_, storage_->Set(*dict12_)); 204 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_));
165 205
166 EXPECT_PRED_FORMAT3(SettingsEq, 206 EXPECT_PRED_FORMAT4(SettingsEq,
167 dict1_.get(), NULL, storage_->Get(key1_)); 207 dict1_.get(), NULL, NULL, storage_->Get(key1_));
168 EXPECT_PRED_FORMAT3(SettingsEq, 208 EXPECT_PRED_FORMAT4(SettingsEq,
169 empty_dict_.get(), NULL, storage_->Get(key3_)); 209 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
170 EXPECT_PRED_FORMAT3(SettingsEq, 210 EXPECT_PRED_FORMAT4(SettingsEq,
171 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 211 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
172 EXPECT_PRED_FORMAT3(SettingsEq, 212 EXPECT_PRED_FORMAT4(SettingsEq,
173 dict12_.get(), NULL, storage_->Get(list123_)); 213 dict12_.get(), NULL, NULL, storage_->Get(list123_));
174 EXPECT_PRED_FORMAT3(SettingsEq, 214 EXPECT_PRED_FORMAT4(SettingsEq,
175 dict12_.get(), NULL, storage_->Get()); 215 dict12_.get(), NULL, NULL, storage_->Get());
176 } 216 }
177 217
178 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) { 218 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) {
179 EXPECT_PRED_FORMAT3(SettingsEq, 219 EXPECT_PRED_FORMAT4(SettingsEq,
180 NULL, &empty_set_, storage_->Remove(key1_)); 220 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(key1_));
181 221
182 EXPECT_PRED_FORMAT3(SettingsEq, 222 EXPECT_PRED_FORMAT4(SettingsEq,
183 empty_dict_.get(), NULL, storage_->Get(key1_)); 223 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
184 EXPECT_PRED_FORMAT3(SettingsEq, 224 EXPECT_PRED_FORMAT4(SettingsEq,
185 empty_dict_.get(), NULL, storage_->Get(list1_)); 225 empty_dict_.get(), NULL, NULL, storage_->Get(list1_));
186 EXPECT_PRED_FORMAT3(SettingsEq, 226 EXPECT_PRED_FORMAT4(SettingsEq,
187 empty_dict_.get(), NULL, storage_->Get()); 227 empty_dict_.get(), NULL, NULL, storage_->Get());
188 } 228 }
189 229
190 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) { 230 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) {
191 EXPECT_PRED_FORMAT3(SettingsEq, 231 EXPECT_PRED_FORMAT4(SettingsEq,
192 dict1_.get(), &set1_, storage_->Set(*dict1_)); 232 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(*dict1_));
193 EXPECT_PRED_FORMAT3(SettingsEq, 233 EXPECT_PRED_FORMAT4(SettingsEq,
194 NULL, &set1_, storage_->Remove(key1_)); 234 NULL, dict1_.get(), &set1_, storage_->Remove(key1_));
195 235
196 EXPECT_PRED_FORMAT3(SettingsEq, 236 EXPECT_PRED_FORMAT4(SettingsEq,
197 empty_dict_.get(), NULL, storage_->Get(key1_)); 237 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
198 EXPECT_PRED_FORMAT3(SettingsEq, 238 EXPECT_PRED_FORMAT4(SettingsEq,
199 empty_dict_.get(), NULL, storage_->Get(key2_)); 239 empty_dict_.get(), NULL, NULL, storage_->Get(key2_));
200 EXPECT_PRED_FORMAT3(SettingsEq, 240 EXPECT_PRED_FORMAT4(SettingsEq,
201 empty_dict_.get(), NULL, storage_->Get(list1_)); 241 empty_dict_.get(), NULL, NULL, storage_->Get(list1_));
202 EXPECT_PRED_FORMAT3(SettingsEq, 242 EXPECT_PRED_FORMAT4(SettingsEq,
203 empty_dict_.get(), NULL, storage_->Get(list12_)); 243 empty_dict_.get(), NULL, NULL, storage_->Get(list12_));
204 EXPECT_PRED_FORMAT3(SettingsEq, 244 EXPECT_PRED_FORMAT4(SettingsEq,
205 empty_dict_.get(), NULL, storage_->Get()); 245 empty_dict_.get(), NULL, NULL, storage_->Get());
206 } 246 }
207 247
208 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) { 248 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) {
209 EXPECT_PRED_FORMAT3(SettingsEq, 249 EXPECT_PRED_FORMAT4(SettingsEq,
210 dict123_.get(), &set123_, storage_->Set(*dict123_)); 250 dict123_.get(), empty_dict_.get(), &set123_, storage_->Set(*dict123_));
211 EXPECT_PRED_FORMAT3(SettingsEq, 251 EXPECT_PRED_FORMAT4(SettingsEq,
212 NULL, &set3_, storage_->Remove(key3_)); 252 NULL, dict3_.get(), &set3_, storage_->Remove(key3_));
213 253
214 EXPECT_PRED_FORMAT3(SettingsEq, 254 EXPECT_PRED_FORMAT4(SettingsEq,
215 dict1_.get(), NULL, storage_->Get(key1_)); 255 dict1_.get(), NULL, NULL, storage_->Get(key1_));
216 EXPECT_PRED_FORMAT3(SettingsEq, 256 EXPECT_PRED_FORMAT4(SettingsEq,
217 empty_dict_.get(), NULL, storage_->Get(key3_)); 257 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
218 EXPECT_PRED_FORMAT3(SettingsEq, 258 EXPECT_PRED_FORMAT4(SettingsEq,
219 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 259 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
220 EXPECT_PRED_FORMAT3(SettingsEq, 260 EXPECT_PRED_FORMAT4(SettingsEq,
221 dict1_.get(), NULL, storage_->Get(list1_)); 261 dict1_.get(), NULL, NULL, storage_->Get(list1_));
222 EXPECT_PRED_FORMAT3(SettingsEq, 262 EXPECT_PRED_FORMAT4(SettingsEq,
223 dict12_.get(), NULL, storage_->Get(list12_)); 263 dict12_.get(), NULL, NULL, storage_->Get(list12_));
224 EXPECT_PRED_FORMAT3(SettingsEq, 264 EXPECT_PRED_FORMAT4(SettingsEq,
225 dict1_.get(), NULL, storage_->Get(list13_)); 265 dict1_.get(), NULL, NULL, storage_->Get(list13_));
226 EXPECT_PRED_FORMAT3(SettingsEq, 266 EXPECT_PRED_FORMAT4(SettingsEq,
227 dict12_.get(), NULL, storage_->Get(list123_)); 267 dict12_.get(), NULL, NULL, storage_->Get(list123_));
228 EXPECT_PRED_FORMAT3(SettingsEq, 268 EXPECT_PRED_FORMAT4(SettingsEq,
229 dict12_.get(), NULL, storage_->Get()); 269 dict12_.get(), NULL, NULL, storage_->Get());
230 270
231 EXPECT_PRED_FORMAT3(SettingsEq, 271 EXPECT_PRED_FORMAT4(SettingsEq,
232 NULL, &set12_, storage_->Remove(list12_)); 272 NULL, dict12_.get(), &set12_, storage_->Remove(list12_));
233 273
234 EXPECT_PRED_FORMAT3(SettingsEq, 274 EXPECT_PRED_FORMAT4(SettingsEq,
235 empty_dict_.get(), NULL, storage_->Get(key1_)); 275 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
236 EXPECT_PRED_FORMAT3(SettingsEq, 276 EXPECT_PRED_FORMAT4(SettingsEq,
237 empty_dict_.get(), NULL, storage_->Get(key3_)); 277 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
238 EXPECT_PRED_FORMAT3(SettingsEq, 278 EXPECT_PRED_FORMAT4(SettingsEq,
239 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 279 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
240 EXPECT_PRED_FORMAT3(SettingsEq, 280 EXPECT_PRED_FORMAT4(SettingsEq,
241 empty_dict_.get(), NULL, storage_->Get(list1_)); 281 empty_dict_.get(), NULL, NULL, storage_->Get(list1_));
242 EXPECT_PRED_FORMAT3(SettingsEq, 282 EXPECT_PRED_FORMAT4(SettingsEq,
243 empty_dict_.get(), NULL, storage_->Get(list12_)); 283 empty_dict_.get(), NULL, NULL, storage_->Get(list12_));
244 EXPECT_PRED_FORMAT3(SettingsEq, 284 EXPECT_PRED_FORMAT4(SettingsEq,
245 empty_dict_.get(), NULL, storage_->Get(list13_)); 285 empty_dict_.get(), NULL, NULL, storage_->Get(list13_));
246 EXPECT_PRED_FORMAT3(SettingsEq, 286 EXPECT_PRED_FORMAT4(SettingsEq,
247 empty_dict_.get(), NULL, storage_->Get(list123_)); 287 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
248 EXPECT_PRED_FORMAT3(SettingsEq, 288 EXPECT_PRED_FORMAT4(SettingsEq,
249 empty_dict_.get(), NULL, storage_->Get()); 289 empty_dict_.get(), NULL, NULL, storage_->Get());
250 } 290 }
251 291
252 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) { 292 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) {
253 DictionaryValue key1_val2; 293 DictionaryValue key1_val2;
254 key1_val2.Set(key1_, val2_->DeepCopy()); 294 key1_val2.Set(key1_, val2_->DeepCopy());
255 295
256 EXPECT_PRED_FORMAT3(SettingsEq, 296 EXPECT_PRED_FORMAT4(SettingsEq,
257 &key1_val2, &set1_, storage_->Set(key1_, *val2_)); 297 &key1_val2, empty_dict_.get(), &set1_, storage_->Set(key1_, *val2_));
258 EXPECT_PRED_FORMAT3(SettingsEq, 298 EXPECT_PRED_FORMAT4(SettingsEq,
259 dict12_.get(), &set12_, storage_->Set(*dict12_)); 299 dict12_.get(), &key1_val2, &set12_, storage_->Set(*dict12_));
260 300
261 EXPECT_PRED_FORMAT3(SettingsEq, 301 EXPECT_PRED_FORMAT4(SettingsEq,
262 dict1_.get(), NULL, storage_->Get(key1_)); 302 dict1_.get(), NULL, NULL, storage_->Get(key1_));
263 EXPECT_PRED_FORMAT3(SettingsEq, 303 EXPECT_PRED_FORMAT4(SettingsEq,
264 empty_dict_.get(), NULL, storage_->Get(key3_)); 304 empty_dict_.get(), NULL, NULL, storage_->Get(key3_));
265 EXPECT_PRED_FORMAT3(SettingsEq, 305 EXPECT_PRED_FORMAT4(SettingsEq,
266 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 306 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
267 EXPECT_PRED_FORMAT3(SettingsEq, 307 EXPECT_PRED_FORMAT4(SettingsEq,
268 dict1_.get(), NULL, storage_->Get(list1_)); 308 dict1_.get(), NULL, NULL, storage_->Get(list1_));
269 EXPECT_PRED_FORMAT3(SettingsEq, 309 EXPECT_PRED_FORMAT4(SettingsEq,
270 dict12_.get(), NULL, storage_->Get(list12_)); 310 dict12_.get(), NULL, NULL, storage_->Get(list12_));
271 EXPECT_PRED_FORMAT3(SettingsEq, 311 EXPECT_PRED_FORMAT4(SettingsEq,
272 dict1_.get(), NULL, storage_->Get(list13_)); 312 dict1_.get(), NULL, NULL, storage_->Get(list13_));
273 EXPECT_PRED_FORMAT3(SettingsEq, 313 EXPECT_PRED_FORMAT4(SettingsEq,
274 dict12_.get(), NULL, storage_->Get(list123_)); 314 dict12_.get(), NULL, NULL, storage_->Get(list123_));
275 EXPECT_PRED_FORMAT3(SettingsEq, 315 EXPECT_PRED_FORMAT4(SettingsEq,
276 dict12_.get(), NULL, storage_->Get()); 316 dict12_.get(), NULL, NULL, storage_->Get());
277 } 317 }
278 318
279 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) { 319 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) {
280 EXPECT_PRED_FORMAT3(SettingsEq, 320 EXPECT_PRED_FORMAT4(SettingsEq,
281 NULL, &empty_set_, storage_->Clear()); 321 NULL, empty_dict_.get(), &empty_set_, storage_->Clear());
282 322
283 EXPECT_PRED_FORMAT3(SettingsEq, 323 EXPECT_PRED_FORMAT4(SettingsEq,
284 empty_dict_.get(), NULL, storage_->Get(key1_)); 324 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
285 EXPECT_PRED_FORMAT3(SettingsEq, 325 EXPECT_PRED_FORMAT4(SettingsEq,
286 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 326 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
287 EXPECT_PRED_FORMAT3(SettingsEq, 327 EXPECT_PRED_FORMAT4(SettingsEq,
288 empty_dict_.get(), NULL, storage_->Get(list123_)); 328 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
289 EXPECT_PRED_FORMAT3(SettingsEq, 329 EXPECT_PRED_FORMAT4(SettingsEq,
290 empty_dict_.get(), NULL, storage_->Get()); 330 empty_dict_.get(), NULL, NULL, storage_->Get());
291 } 331 }
292 332
293 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) { 333 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) {
294 EXPECT_PRED_FORMAT3(SettingsEq, 334 EXPECT_PRED_FORMAT4(SettingsEq,
295 dict12_.get(), &set12_, storage_->Set(*dict12_)); 335 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_));
296 EXPECT_PRED_FORMAT3(SettingsEq, 336 EXPECT_PRED_FORMAT4(SettingsEq,
297 NULL, &set12_, storage_->Clear()); 337 NULL, dict12_.get(), &set12_, storage_->Clear());
298 338
299 EXPECT_PRED_FORMAT3(SettingsEq, 339 EXPECT_PRED_FORMAT4(SettingsEq,
300 empty_dict_.get(), NULL, storage_->Get(key1_)); 340 empty_dict_.get(), NULL, NULL, storage_->Get(key1_));
301 EXPECT_PRED_FORMAT3(SettingsEq, 341 EXPECT_PRED_FORMAT4(SettingsEq,
302 empty_dict_.get(), NULL, storage_->Get(empty_list_)); 342 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_));
303 EXPECT_PRED_FORMAT3(SettingsEq, 343 EXPECT_PRED_FORMAT4(SettingsEq,
304 empty_dict_.get(), NULL, storage_->Get(list123_)); 344 empty_dict_.get(), NULL, NULL, storage_->Get(list123_));
305 EXPECT_PRED_FORMAT3(SettingsEq, 345 EXPECT_PRED_FORMAT4(SettingsEq,
306 empty_dict_.get(), NULL, storage_->Get()); 346 empty_dict_.get(), NULL, NULL, storage_->Get());
307 } 347 }
308 348
309 // Dots should be allowed in key names; they shouldn't be interpreted as 349 // Dots should be allowed in key names; they shouldn't be interpreted as
310 // indexing into a dictionary. 350 // indexing into a dictionary.
311 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) { 351 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) {
312 std::string dot_key("foo.bar"); 352 std::string dot_key("foo.bar");
313 StringValue dot_value("baz.qux"); 353 StringValue dot_value("baz.qux");
314 std::vector<std::string> dot_list; 354 std::vector<std::string> dot_list;
315 dot_list.push_back(dot_key); 355 dot_list.push_back(dot_key);
316 std::set<std::string> dot_set; 356 std::set<std::string> dot_set;
317 dot_set.insert(dot_key); 357 dot_set.insert(dot_key);
318 DictionaryValue dot_dict; 358 DictionaryValue dot_dict;
319 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy()); 359 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy());
320 360
321 EXPECT_PRED_FORMAT3(SettingsEq, 361 EXPECT_PRED_FORMAT4(SettingsEq,
322 empty_dict_.get(), NULL, storage_->Get(dot_key)); 362 empty_dict_.get(), NULL, NULL, storage_->Get(dot_key));
323 363
324 EXPECT_PRED_FORMAT3(SettingsEq, 364 EXPECT_PRED_FORMAT4(SettingsEq,
325 &dot_dict, &dot_set, storage_->Set(dot_key, dot_value)); 365 &dot_dict, empty_dict_.get(), &dot_set,
326 EXPECT_PRED_FORMAT3(SettingsEq, 366 storage_->Set(dot_key, dot_value));
327 &dot_dict, &empty_set_, storage_->Set(dot_key, dot_value)); 367 EXPECT_PRED_FORMAT4(SettingsEq,
328 EXPECT_PRED_FORMAT3(SettingsEq, 368 &dot_dict, &dot_dict, &empty_set_,
329 &dot_dict, NULL, storage_->Get(dot_key)); 369 storage_->Set(dot_key, dot_value));
370 EXPECT_PRED_FORMAT4(SettingsEq,
371 &dot_dict, NULL, NULL, storage_->Get(dot_key));
330 372
331 EXPECT_PRED_FORMAT3(SettingsEq, 373 EXPECT_PRED_FORMAT4(SettingsEq,
332 NULL, &dot_set, storage_->Remove(dot_key)); 374 NULL, &dot_dict, &dot_set, storage_->Remove(dot_key));
333 EXPECT_PRED_FORMAT3(SettingsEq, 375 EXPECT_PRED_FORMAT4(SettingsEq,
334 NULL, &empty_set_, storage_->Remove(dot_key)); 376 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(dot_key));
335 EXPECT_PRED_FORMAT3(SettingsEq, 377 EXPECT_PRED_FORMAT4(SettingsEq,
336 &dot_dict, &dot_set, storage_->Set(dot_dict)); 378 &dot_dict, empty_dict_.get(), &dot_set, storage_->Set(dot_dict));
337 EXPECT_PRED_FORMAT3(SettingsEq, 379 EXPECT_PRED_FORMAT4(SettingsEq,
338 &dot_dict, NULL, storage_->Get(dot_list)); 380 &dot_dict, NULL, NULL, storage_->Get(dot_list));
339 EXPECT_PRED_FORMAT3(SettingsEq, 381 EXPECT_PRED_FORMAT4(SettingsEq,
340 &dot_dict, NULL, storage_->Get()); 382 &dot_dict, NULL, NULL, storage_->Get());
341 383
342 EXPECT_PRED_FORMAT3(SettingsEq, 384 EXPECT_PRED_FORMAT4(SettingsEq,
343 NULL, &dot_set, storage_->Remove(dot_list)); 385 NULL, &dot_dict, &dot_set, storage_->Remove(dot_list));
344 EXPECT_PRED_FORMAT3(SettingsEq, 386 EXPECT_PRED_FORMAT4(SettingsEq,
345 empty_dict_.get(), NULL, storage_->Get(dot_key)); 387 empty_dict_.get(), NULL, NULL, storage_->Get(dot_key));
346 EXPECT_PRED_FORMAT3(SettingsEq, 388 EXPECT_PRED_FORMAT4(SettingsEq,
347 empty_dict_.get(), NULL, storage_->Get()); 389 empty_dict_.get(), NULL, NULL, storage_->Get());
348 } 390 }
349 391
350 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) { 392 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) {
351 DictionaryValue outer_dict; 393 DictionaryValue outer_dict;
352 DictionaryValue* inner_dict = new DictionaryValue(); 394 DictionaryValue* inner_dict = new DictionaryValue();
353 outer_dict.Set("foo", inner_dict); 395 outer_dict.Set("foo", inner_dict);
354 inner_dict->Set("bar", Value::CreateStringValue("baz")); 396 inner_dict->Set("bar", Value::CreateStringValue("baz"));
355 std::set<std::string> changed_keys; 397 std::set<std::string> changed_keys;
356 changed_keys.insert("foo"); 398 changed_keys.insert("foo");
357 399
358 EXPECT_PRED_FORMAT3(SettingsEq, 400 EXPECT_PRED_FORMAT4(SettingsEq,
359 &outer_dict, &changed_keys, storage_->Set(outer_dict)); 401 &outer_dict, empty_dict_.get(), &changed_keys, storage_->Set(outer_dict));
360 EXPECT_PRED_FORMAT3(SettingsEq, 402 EXPECT_PRED_FORMAT4(SettingsEq,
361 &outer_dict, NULL, storage_->Get("foo")); 403 &outer_dict, NULL, NULL, storage_->Get("foo"));
362 EXPECT_PRED_FORMAT3(SettingsEq, 404 EXPECT_PRED_FORMAT4(SettingsEq,
363 empty_dict_.get(), NULL, storage_->Get("foo.bar")); 405 empty_dict_.get(), NULL, NULL, storage_->Get("foo.bar"));
364 } 406 }
365 407
366 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) { 408 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) {
367 // Test: 409 // Test:
368 // - Setting over missing/changed/same keys, combinations. 410 // - Setting over missing/changed/same keys, combinations.
369 // - Removing over missing and present keys, combinations. 411 // - Removing over missing and present keys, combinations.
370 // - Clearing. 412 // - Clearing.
371 std::vector<std::string> complex_list; 413 std::vector<std::string> complex_list;
372 std::set<std::string> complex_set; 414 std::set<std::string> complex_set;
373 DictionaryValue complex_dict; 415 DictionaryValue complex_dict;
416 DictionaryValue complex_changed_dict;
374 417
375 EXPECT_PRED_FORMAT3(SettingsEq, 418 EXPECT_PRED_FORMAT4(SettingsEq,
376 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); 419 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_));
377 EXPECT_PRED_FORMAT3(SettingsEq, 420 EXPECT_PRED_FORMAT4(SettingsEq,
378 dict1_.get(), &empty_set_, storage_->Set(key1_, *val1_)); 421 dict1_.get(), dict1_.get(), &empty_set_, storage_->Set(key1_, *val1_));
379 422
380 complex_dict.Clear(); 423 complex_dict.Clear();
381 complex_dict.Set(key1_, val2_->DeepCopy()); 424 complex_dict.Set(key1_, val2_->DeepCopy());
382 EXPECT_PRED_FORMAT3(SettingsEq, 425 EXPECT_PRED_FORMAT4(SettingsEq,
383 &complex_dict, &set1_, storage_->Set(key1_, *val2_)); 426 &complex_dict, dict1_.get(), &set1_, storage_->Set(key1_, *val2_));
384 427
385 EXPECT_PRED_FORMAT3(SettingsEq, 428 EXPECT_PRED_FORMAT4(SettingsEq,
386 NULL, &set1_, storage_->Remove(key1_)); 429 NULL, &complex_dict, &set1_, storage_->Remove(key1_));
387 EXPECT_PRED_FORMAT3(SettingsEq, 430 EXPECT_PRED_FORMAT4(SettingsEq,
388 NULL, &empty_set_, storage_->Remove(key1_)); 431 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(key1_));
389 432
390 EXPECT_PRED_FORMAT3(SettingsEq, 433 EXPECT_PRED_FORMAT4(SettingsEq,
391 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); 434 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_));
392 EXPECT_PRED_FORMAT3(SettingsEq, 435 EXPECT_PRED_FORMAT4(SettingsEq,
393 NULL, &set1_, storage_->Clear()); 436 NULL, dict1_.get(), &set1_, storage_->Clear());
394 EXPECT_PRED_FORMAT3(SettingsEq, 437 EXPECT_PRED_FORMAT4(SettingsEq,
395 NULL, &empty_set_, storage_->Clear()); 438 NULL, empty_dict_.get(), &empty_set_, storage_->Clear());
396 439
397 EXPECT_PRED_FORMAT3(SettingsEq, 440 EXPECT_PRED_FORMAT4(SettingsEq,
398 dict12_.get(), &set12_, storage_->Set(*dict12_)); 441 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_));
399 EXPECT_PRED_FORMAT3(SettingsEq, 442 EXPECT_PRED_FORMAT4(SettingsEq,
400 dict12_.get(), &empty_set_, storage_->Set(*dict12_)); 443 dict12_.get(), dict12_.get(), &empty_set_, storage_->Set(*dict12_));
401 EXPECT_PRED_FORMAT3(SettingsEq, 444 EXPECT_PRED_FORMAT4(SettingsEq,
402 dict123_.get(), &set3_, storage_->Set(*dict123_)); 445 dict123_.get(), dict12_.get(), &set3_, storage_->Set(*dict123_));
403 446
404 complex_dict.Clear(); 447 complex_dict.Clear();
405 complex_dict.Set(key1_, val2_->DeepCopy()); 448 complex_dict.Set(key1_, val2_->DeepCopy());
406 complex_dict.Set(key2_, val2_->DeepCopy()); 449 complex_dict.Set(key2_, val2_->DeepCopy());
407 complex_dict.Set("asdf", val1_->DeepCopy()); 450 complex_dict.Set("asdf", val1_->DeepCopy());
408 complex_dict.Set("qwerty", val3_->DeepCopy()); 451 complex_dict.Set("qwerty", val3_->DeepCopy());
452 complex_changed_dict.Clear();
453 complex_changed_dict.Set(key1_, val1_->DeepCopy());
454 complex_changed_dict.Set(key2_, val2_->DeepCopy());
409 complex_set.clear(); 455 complex_set.clear();
410 complex_set.insert(key1_); 456 complex_set.insert(key1_);
411 complex_set.insert("asdf"); 457 complex_set.insert("asdf");
412 complex_set.insert("qwerty"); 458 complex_set.insert("qwerty");
413 EXPECT_PRED_FORMAT3(SettingsEq, 459 EXPECT_PRED_FORMAT4(SettingsEq,
414 &complex_dict, &complex_set, storage_->Set(complex_dict)); 460 &complex_dict, &complex_changed_dict, &complex_set,
461 storage_->Set(complex_dict));
415 462
416 EXPECT_PRED_FORMAT3(SettingsEq, 463 complex_changed_dict.Clear();
417 NULL, &set12_, storage_->Remove(list12_)); 464 complex_changed_dict.Set(key1_, val2_->DeepCopy());
418 EXPECT_PRED_FORMAT3(SettingsEq, 465 complex_changed_dict.Set(key2_, val2_->DeepCopy());
419 NULL, &empty_set_, storage_->Remove(list12_)); 466 EXPECT_PRED_FORMAT4(SettingsEq,
467 NULL, &complex_changed_dict, &set12_, storage_->Remove(list12_));
468 EXPECT_PRED_FORMAT4(SettingsEq,
469 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(list12_));
420 470
421 complex_list.clear(); 471 complex_list.clear();
422 complex_list.push_back(key1_); 472 complex_list.push_back(key1_);
423 complex_list.push_back("asdf"); 473 complex_list.push_back("asdf");
474 complex_changed_dict.Clear();
475 complex_changed_dict.Set("asdf", val1_->DeepCopy());
424 complex_set.clear(); 476 complex_set.clear();
425 complex_set.insert("asdf"); 477 complex_set.insert("asdf");
426 EXPECT_PRED_FORMAT3(SettingsEq, 478 EXPECT_PRED_FORMAT4(SettingsEq,
427 NULL, &complex_set, storage_->Remove(complex_list)); 479 NULL,
480 &complex_changed_dict,
481 &complex_set,
482 storage_->Remove(complex_list));
428 483
484 complex_changed_dict.Clear();
485 complex_changed_dict.Set(key3_, val3_->DeepCopy());
486 complex_changed_dict.Set("qwerty", val3_->DeepCopy());
429 complex_set.clear(); 487 complex_set.clear();
430 complex_set.insert(key3_); 488 complex_set.insert(key3_);
431 complex_set.insert("qwerty"); 489 complex_set.insert("qwerty");
432 EXPECT_PRED_FORMAT3(SettingsEq, 490 EXPECT_PRED_FORMAT4(SettingsEq,
433 NULL, &complex_set, storage_->Clear()); 491 NULL, &complex_changed_dict, &complex_set, storage_->Clear());
434 EXPECT_PRED_FORMAT3(SettingsEq, 492 EXPECT_PRED_FORMAT4(SettingsEq,
435 NULL, &empty_set_, storage_->Clear()); 493 NULL, empty_dict_.get(), &empty_set_, storage_->Clear());
436 } 494 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698