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

Side by Side Diff: content/browser/indexed_db/idbbindingutilities_browsertest.cc

Issue 10204003: Use WebIDBKeyPath type in WebKit API, implement IndexedDBKeyPath type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Delete stray space. Created 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/test/base/in_process_browser_test.h" 7 #include "chrome/test/base/in_process_browser_test.h"
8 #include "chrome/test/base/ui_test_utils.h" 8 #include "chrome/test/base/ui_test_utils.h"
9 #include "content/browser/utility_process_host_impl.h" 9 #include "content/browser/utility_process_host_impl.h"
10 #include "content/public/browser/utility_process_host_client.h" 10 #include "content/public/browser/utility_process_host_client.h"
11 #include "content/common/indexed_db/indexed_db_key.h" 11 #include "content/common/indexed_db/indexed_db_key.h"
12 #include "content/common/indexed_db/indexed_db_key_path.h"
12 #include "content/common/utility_messages.h" 13 #include "content/common/utility_messages.h"
13 #include "content/common/webkitplatformsupport_impl.h" 14 #include "content/common/webkitplatformsupport_impl.h"
14 #include "content/public/common/serialized_script_value.h" 15 #include "content/public/common/serialized_script_value.h"
15 #include "googleurl/src/gurl.h" 16 #include "googleurl/src/gurl.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h" 18 #include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
18 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerialize dScriptValue.h" 19 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerialize dScriptValue.h"
19 #include "webkit/glue/idb_bindings.h" 20 #include "webkit/glue/idb_bindings.h"
20 #include "webkit/glue/web_io_operators.h" 21 #include "webkit/glue/web_io_operators.h"
21 22
22 using content::BrowserThread; 23 using content::BrowserThread;
23 using content::UtilityProcessHost; 24 using content::UtilityProcessHost;
24 using content::UtilityProcessHostClient; 25 using content::UtilityProcessHostClient;
25 using WebKit::WebSerializedScriptValue; 26 using WebKit::WebSerializedScriptValue;
27 using WebKit::WebIDBKeyPath;
26 28
27 // Enables calling WebKit::shutdown no matter where a "return" happens. 29 // Enables calling WebKit::shutdown no matter where a "return" happens.
28 class ScopedShutdownWebKit { 30 class ScopedShutdownWebKit {
29 public: 31 public:
30 ScopedShutdownWebKit() { 32 ScopedShutdownWebKit() {
31 } 33 }
32 34
33 ~ScopedShutdownWebKit() { 35 ~ScopedShutdownWebKit() {
34 WebKit::shutdown(); 36 WebKit::shutdown();
35 } 37 }
(...skipping 23 matching lines...) Expand all
59 // {} 61 // {}
60 char16 data_object[] = {0x017b}; 62 char16 data_object[] = {0x017b};
61 serialized_values.push_back(content::SerializedScriptValue( 63 serialized_values.push_back(content::SerializedScriptValue(
62 false, false, string16(data_object, arraysize(data_object)))); 64 false, false, string16(data_object, arraysize(data_object))));
63 65
64 // null 66 // null
65 serialized_values.push_back( 67 serialized_values.push_back(
66 WebSerializedScriptValue::fromString(string16())); 68 WebSerializedScriptValue::fromString(string16()));
67 69
68 std::vector<WebKit::WebIDBKey> values; 70 std::vector<WebKit::WebIDBKey> values;
69 string16 key_path; 71 IndexedDBKeyPath key_path;
70 bool error;
71 72
72 key_path = UTF8ToUTF16("foo"); 73 key_path.SetString(UTF8ToUTF16("foo"));
73 error = webkit_glue::IDBKeysFromValuesAndKeyPath( 74 webkit_glue::IDBKeysFromValuesAndKeyPath(
74 serialized_values, key_path, &values); 75 serialized_values, key_path, &values);
75 76
76 ASSERT_EQ(size_t(4), values.size()); 77 ASSERT_EQ(size_t(4), values.size());
77 ASSERT_EQ(WebKit::WebIDBKey::StringType, values[0].type()); 78 ASSERT_EQ(WebKit::WebIDBKey::StringType, values[0].type());
78 ASSERT_EQ(UTF8ToUTF16("zoo"), values[0].string()); 79 ASSERT_EQ(UTF8ToUTF16("zoo"), values[0].string());
79 ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type()); 80 ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type());
80 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type()); 81 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
81 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type()); 82 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
82 ASSERT_FALSE(error);
83 83
84 values.clear(); 84 values.clear();
85 key_path = UTF8ToUTF16("PropertyNotAvailable"); 85 key_path.SetString(UTF8ToUTF16("PropertyNotAvailable"));
86 error = webkit_glue::IDBKeysFromValuesAndKeyPath( 86 webkit_glue::IDBKeysFromValuesAndKeyPath(
87 serialized_values, key_path, &values); 87 serialized_values, key_path, &values);
88 88
89 ASSERT_EQ(size_t(4), values.size()); 89 ASSERT_EQ(size_t(4), values.size());
90 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type()); 90 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type());
91 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type()); 91 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type());
92 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type()); 92 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
93 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type()); 93 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
94 ASSERT_FALSE(error);
95 94
96 values.clear(); 95 values.clear();
97 key_path = UTF8ToUTF16("!+Invalid[KeyPath[[["); 96 key_path.SetString(UTF8ToUTF16("!+Invalid[KeyPath[[["));
98 error = webkit_glue::IDBKeysFromValuesAndKeyPath( 97 ASSERT_FALSE(key_path.IsValid());
99 serialized_values, key_path, &values);
100
101 ASSERT_TRUE(error);
102 ASSERT_EQ(size_t(4), values.size());
103 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type());
104 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type());
105 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
106 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
107 } 98 }
108 99
109 class IDBKeyPathHelper : public UtilityProcessHostClient { 100 class IDBKeyPathHelper : public UtilityProcessHostClient {
110 public: 101 public:
111 IDBKeyPathHelper() 102 IDBKeyPathHelper()
112 : expected_id_(0), 103 : expected_id_(0),
113 value_for_key_path_failed_(false) { 104 value_for_key_path_failed_(false) {
114 } 105 }
115 106
116 void CreateUtilityProcess() { 107 void CreateUtilityProcess() {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 value_for_key_path_failed_ = failed; 142 value_for_key_path_failed_ = failed;
152 } 143 }
153 144
154 void SetExpectedValue(const content::SerializedScriptValue& expected_value) { 145 void SetExpectedValue(const content::SerializedScriptValue& expected_value) {
155 expected_value_ = expected_value; 146 expected_value_ = expected_value;
156 } 147 }
157 148
158 void CheckValuesForKeyPath( 149 void CheckValuesForKeyPath(
159 int id, 150 int id,
160 const std::vector<content::SerializedScriptValue>& serialized_values, 151 const std::vector<content::SerializedScriptValue>& serialized_values,
161 const string16& key_path) { 152 const IndexedDBKeyPath& key_path) {
162 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { 153 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
163 BrowserThread::PostTask( 154 BrowserThread::PostTask(
164 BrowserThread::IO, FROM_HERE, 155 BrowserThread::IO, FROM_HERE,
165 base::Bind(&IDBKeyPathHelper::CheckValuesForKeyPath, this, id, 156 base::Bind(&IDBKeyPathHelper::CheckValuesForKeyPath, this, id,
166 serialized_values, key_path)); 157 serialized_values, key_path));
167 return; 158 return;
168 } 159 }
169 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 160 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
170 bool ret = utility_process_host_->Send( 161 bool ret = utility_process_host_->Send(
171 new UtilityMsg_IDBKeysFromValuesAndKeyPath( 162 new UtilityMsg_IDBKeysFromValuesAndKeyPath(
172 id, serialized_values, key_path)); 163 id, serialized_values, key_path));
173 ASSERT_TRUE(ret); 164 ASSERT_TRUE(ret);
174 } 165 }
175 166
176 void CheckInjectValue(const IndexedDBKey& key, 167 void CheckInjectValue(const IndexedDBKey& key,
177 const content::SerializedScriptValue& value, 168 const content::SerializedScriptValue& value,
178 const string16& key_path) { 169 const IndexedDBKeyPath& key_path) {
179 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { 170 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
180 BrowserThread::PostTask( 171 BrowserThread::PostTask(
181 BrowserThread::IO, FROM_HERE, 172 BrowserThread::IO, FROM_HERE,
182 base::Bind(&IDBKeyPathHelper::CheckInjectValue, this, key, value, 173 base::Bind(&IDBKeyPathHelper::CheckInjectValue, this, key, value,
183 key_path)); 174 key_path));
184 return; 175 return;
185 } 176 }
186 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 177 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
187 bool ret = utility_process_host_->Send(new UtilityMsg_InjectIDBKey( 178 bool ret = utility_process_host_->Send(new UtilityMsg_InjectIDBKey(
188 key, value, key_path)); 179 key, value, key_path));
189 ASSERT_TRUE(ret); 180 ASSERT_TRUE(ret);
190 } 181 }
191 182
192 // UtilityProcessHostClient 183 // UtilityProcessHostClient
193 bool OnMessageReceived(const IPC::Message& message) { 184 bool OnMessageReceived(const IPC::Message& message) {
194 bool msg_is_ok = true; 185 bool msg_is_ok = true;
195 bool handled = true; 186 bool handled = true;
196 IPC_BEGIN_MESSAGE_MAP_EX(IDBKeyPathHelper, message, msg_is_ok) 187 IPC_BEGIN_MESSAGE_MAP_EX(IDBKeyPathHelper, message, msg_is_ok)
197 IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Succeeded, 188 IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Succeeded,
198 OnIDBKeysFromValuesAndKeyPathSucceeded) 189 OnIDBKeysFromValuesAndKeyPathSucceeded)
199 IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Failed,
200 OnIDBKeysFromValuesAndKeyPathFailed)
201 IPC_MESSAGE_HANDLER(UtilityHostMsg_InjectIDBKey_Finished, 190 IPC_MESSAGE_HANDLER(UtilityHostMsg_InjectIDBKey_Finished,
202 OnInjectIDBKeyFinished) 191 OnInjectIDBKeyFinished)
203 IPC_MESSAGE_UNHANDLED(handled = false) 192 IPC_MESSAGE_UNHANDLED(handled = false)
204 IPC_END_MESSAGE_MAP_EX() 193 IPC_END_MESSAGE_MAP_EX()
205 return handled; 194 return handled;
206 } 195 }
207 196
208 void OnIDBKeysFromValuesAndKeyPathSucceeded( 197 void OnIDBKeysFromValuesAndKeyPathSucceeded(
209 int id, const std::vector<IndexedDBKey>& values) { 198 int id, const std::vector<IndexedDBKey>& values) {
210 EXPECT_EQ(expected_id_, id); 199 EXPECT_EQ(expected_id_, id);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 } 258 }
270 259
271 void SetExpectedValue(const content::SerializedScriptValue& expected_value) { 260 void SetExpectedValue(const content::SerializedScriptValue& expected_value) {
272 key_path_helper_->SetExpectedValue(expected_value); 261 key_path_helper_->SetExpectedValue(expected_value);
273 } 262 }
274 263
275 void CheckValuesForKeyPath( 264 void CheckValuesForKeyPath(
276 int id, 265 int id,
277 const std::vector<content::SerializedScriptValue>& 266 const std::vector<content::SerializedScriptValue>&
278 serialized_script_values, 267 serialized_script_values,
279 const string16& key_path) { 268 const IndexedDBKeyPath& key_path) {
280 key_path_helper_->CheckValuesForKeyPath(id, serialized_script_values, 269 key_path_helper_->CheckValuesForKeyPath(id, serialized_script_values,
281 key_path); 270 key_path);
282 ui_test_utils::RunMessageLoop(); 271 ui_test_utils::RunMessageLoop();
283 } 272 }
284 273
285 void CheckInjectValue(const IndexedDBKey& key, 274 void CheckInjectValue(const IndexedDBKey& key,
286 const content::SerializedScriptValue& value, 275 const content::SerializedScriptValue& value,
287 const string16& key_path) { 276 const IndexedDBKeyPath& key_path) {
288 key_path_helper_->CheckInjectValue(key, value, key_path); 277 key_path_helper_->CheckInjectValue(key, value, key_path);
289 ui_test_utils::RunMessageLoop(); 278 ui_test_utils::RunMessageLoop();
290 } 279 }
291 280
292 private: 281 private:
293 scoped_refptr<IDBKeyPathHelper> key_path_helper_; 282 scoped_refptr<IDBKeyPathHelper> key_path_helper_;
294 }; 283 };
295 284
296 // Cases: 285 // Cases:
297 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathExtract) { 286 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathExtract) {
(...skipping 26 matching lines...) Expand all
324 serialized_values.push_back(content::SerializedScriptValue( 313 serialized_values.push_back(content::SerializedScriptValue(
325 false, false, string16(data_object, arraysize(data_object)))); 314 false, false, string16(data_object, arraysize(data_object))));
326 expected_keys.push_back(null_key); 315 expected_keys.push_back(null_key);
327 316
328 // keypath: "foo", value: null, expected: null 317 // keypath: "foo", value: null, expected: null
329 serialized_values.push_back( 318 serialized_values.push_back(
330 content::SerializedScriptValue(true, false, string16())); 319 content::SerializedScriptValue(true, false, string16()));
331 expected_keys.push_back(null_key); 320 expected_keys.push_back(null_key);
332 321
333 scoped_helper.SetExpectedKeys(kId, expected_keys, false); 322 scoped_helper.SetExpectedKeys(kId, expected_keys, false);
323
324 IndexedDBKeyPath key_path;
325 key_path.SetString(UTF8ToUTF16("foo"));
334 scoped_helper.CheckValuesForKeyPath( 326 scoped_helper.CheckValuesForKeyPath(
335 kId, serialized_values, UTF8ToUTF16("foo")); 327 kId, serialized_values, key_path);
336 } 328 }
337 329
338 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathPropertyNotAvailable) { 330 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathPropertyNotAvailable) {
339 ScopedIDBKeyPathHelper scoped_helper; 331 ScopedIDBKeyPathHelper scoped_helper;
340 const int kId = 7; 332 const int kId = 7;
341 std::vector<IndexedDBKey> expected_keys; 333 std::vector<IndexedDBKey> expected_keys;
342 IndexedDBKey null_value; 334 IndexedDBKey null_value;
343 null_value.SetNull(); 335 null_value.SetNull();
344 expected_keys.push_back(null_value); 336 expected_keys.push_back(null_value);
345 expected_keys.push_back(null_value); 337 expected_keys.push_back(null_value);
346 338
347 scoped_helper.SetExpectedKeys(kId, expected_keys, false); 339 scoped_helper.SetExpectedKeys(kId, expected_keys, false);
348 340
349 std::vector<content::SerializedScriptValue> serialized_values; 341 std::vector<content::SerializedScriptValue> serialized_values;
350 // {foo: "zoo", bar: null} 342 // {foo: "zoo", bar: null}
351 char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162, 343 char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162,
352 0x3072, 0x027b}; 344 0x3072, 0x027b};
353 serialized_values.push_back(content::SerializedScriptValue( 345 serialized_values.push_back(content::SerializedScriptValue(
354 false, false, string16(data, arraysize(data)))); 346 false, false, string16(data, arraysize(data))));
355 347
356 // null 348 // null
357 serialized_values.push_back( 349 serialized_values.push_back(
358 content::SerializedScriptValue(true, false, string16())); 350 content::SerializedScriptValue(true, false, string16()));
359 351
360 scoped_helper.CheckValuesForKeyPath(kId, serialized_values, 352 IndexedDBKeyPath key_path;
361 UTF8ToUTF16("PropertyNotAvailable")); 353 key_path.SetString(UTF8ToUTF16("PropertyNotAvailable"));
354 scoped_helper.CheckValuesForKeyPath(kId, serialized_values, key_path);
362 } 355 }
363 356
364 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathMultipleCalls) { 357 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathMultipleCalls) {
365 ScopedIDBKeyPathHelper scoped_helper; 358 ScopedIDBKeyPathHelper scoped_helper;
366 const int kId = 7; 359 const int kId = 7;
367 std::vector<IndexedDBKey> expected_keys; 360 std::vector<IndexedDBKey> expected_keys;
368 361
369 IndexedDBKey null_value; 362 IndexedDBKey null_value;
370 null_value.SetNull(); 363 null_value.SetNull();
371 expected_keys.push_back(null_value); 364 expected_keys.push_back(null_value);
372 expected_keys.push_back(null_value); 365 expected_keys.push_back(null_value);
373 scoped_helper.SetExpectedKeys(kId, expected_keys, true); 366 scoped_helper.SetExpectedKeys(kId, expected_keys, false);
374 367
375 std::vector<content::SerializedScriptValue> serialized_values; 368 std::vector<content::SerializedScriptValue> serialized_values;
376 369
377 // {foo: "zoo", bar: null} 370 // {foo: "zoo", bar: null}
378 char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162, 371 char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162,
379 0x3072, 0x027b}; 372 0x3072, 0x027b};
380 serialized_values.push_back(content::SerializedScriptValue( 373 serialized_values.push_back(content::SerializedScriptValue(
381 false, false, string16(data, arraysize(data)))); 374 false, false, string16(data, arraysize(data))));
382 375
383 // null 376 // null
384 serialized_values.push_back( 377 serialized_values.push_back(
385 content::SerializedScriptValue(true, false, string16())); 378 content::SerializedScriptValue(true, false, string16()));
386 379
387 scoped_helper.CheckValuesForKeyPath(kId, serialized_values, 380 IndexedDBKeyPath key_path;
388 UTF8ToUTF16("!+Invalid[KeyPath[[[")); 381 key_path.SetString(UTF8ToUTF16("PropertyNotAvailable"));
382 scoped_helper.CheckValuesForKeyPath(kId, serialized_values, key_path);
389 383
390 // Call again with the Utility process in batch mode and with valid keys. 384 // Call again with the Utility process in batch mode and with valid keys.
391 expected_keys.clear(); 385 expected_keys.clear();
392 IndexedDBKey value; 386 IndexedDBKey value;
393 value.SetString(UTF8ToUTF16("zoo")); 387 value.SetString(UTF8ToUTF16("zoo"));
394 expected_keys.push_back(value); 388 expected_keys.push_back(value);
395 expected_keys.push_back(null_value); 389 expected_keys.push_back(null_value);
396 scoped_helper.SetExpectedKeys(kId + 1, expected_keys, false); 390 scoped_helper.SetExpectedKeys(kId + 1, expected_keys, false);
397 scoped_helper.CheckValuesForKeyPath(kId + 1, serialized_values, 391 key_path.SetString(UTF8ToUTF16("foo"));
398 UTF8ToUTF16("foo")); 392 scoped_helper.CheckValuesForKeyPath(kId + 1, serialized_values, key_path);
399 } 393 }
400 394
401 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, InjectIDBKey) { 395 IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, InjectIDBKey) {
402 // {foo: 'zoo'} 396 // {foo: 'zoo'}
403 const char16 initial_data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b}; 397 const char16 initial_data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
404 content::SerializedScriptValue value( 398 content::SerializedScriptValue value(
405 false, false, string16(initial_data, arraysize(initial_data))); 399 false, false, string16(initial_data, arraysize(initial_data)));
406 IndexedDBKey key; 400 IndexedDBKey key;
407 key.SetString(UTF8ToUTF16("myNewKey")); 401 key.SetString(UTF8ToUTF16("myNewKey"));
408 402
409 ScopedIDBKeyPathHelper scoped_helper; 403 ScopedIDBKeyPathHelper scoped_helper;
410 404
411 // {foo: 'zoo', bar: 'myNewKey'} 405 // {foo: 'zoo', bar: 'myNewKey'}
412 const char16 expected_data[] = {0x01ff, 0x003f, 0x3f6f, 0x5301, 0x6603, 406 const char16 expected_data[] = {0x01ff, 0x003f, 0x3f6f, 0x5301, 0x6603,
413 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f, 407 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f,
414 0x5301, 0x6203, 0x7261, 0x013f, 0x0853, 408 0x5301, 0x6203, 0x7261, 0x013f, 0x0853,
415 0x796d, 0x654e, 0x4b77, 0x7965, 0x027b}; 409 0x796d, 0x654e, 0x4b77, 0x7965, 0x027b};
416 content::SerializedScriptValue expected_value( 410 content::SerializedScriptValue expected_value(
417 false, false, string16(expected_data, arraysize(expected_data))); 411 false, false, string16(expected_data, arraysize(expected_data)));
418 scoped_helper.SetExpectedValue(expected_value); 412 scoped_helper.SetExpectedValue(expected_value);
419 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bar")); 413 IndexedDBKeyPath key_path;
414 key_path.SetString(UTF8ToUTF16("bar"));
415 scoped_helper.CheckInjectValue(key, value, key_path);
420 416
421 // Should fail - can't apply properties to string value of key foo 417 // Should fail - can't apply properties to string value of key foo
422 const content::SerializedScriptValue failure_value; 418 const content::SerializedScriptValue failure_value;
423 scoped_helper.SetExpectedValue(failure_value); 419 scoped_helper.SetExpectedValue(failure_value);
424 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("foo.bad.path")); 420 key_path.SetString(UTF8ToUTF16("foo.bad.path"));
421 scoped_helper.CheckInjectValue(key, value, key_path);
425 422
426 // {foo: 'zoo', bar: {baz: 'myNewKey'}} 423 // {foo: 'zoo', bar: {baz: 'myNewKey'}}
427 const char16 expected_data2[] = {0x01ff, 0x003f, 0x3f6f, 0x5301, 0x6603, 424 const char16 expected_data2[] = {0x01ff, 0x003f, 0x3f6f, 0x5301, 0x6603,
428 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f, 425 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f,
429 0x5301, 0x6203, 0x7261, 0x013f, 0x3f6f, 426 0x5301, 0x6203, 0x7261, 0x013f, 0x3f6f,
430 0x5302, 0x6203, 0x7a61, 0x023f, 0x0853, 427 0x5302, 0x6203, 0x7a61, 0x023f, 0x0853,
431 0x796d, 0x654e, 0x4b77, 0x7965, 0x017b, 428 0x796d, 0x654e, 0x4b77, 0x7965, 0x017b,
432 0x027b}; 429 0x027b};
433 content::SerializedScriptValue expected_value2( 430 content::SerializedScriptValue expected_value2(
434 false, false, string16(expected_data2, arraysize(expected_data2))); 431 false, false, string16(expected_data2, arraysize(expected_data2)));
435 scoped_helper.SetExpectedValue(expected_value2); 432 scoped_helper.SetExpectedValue(expected_value2);
436 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bar.baz")); 433 key_path.SetString(UTF8ToUTF16("bar.baz"));
434 scoped_helper.CheckInjectValue(key, value, key_path);
437 } 435 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698