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

Unified Diff: content/browser/indexed_db/idbbindingutilities_browsertest.cc

Issue 9212038: Distinguish null IDBKey (no value) and invalid IDBKey (value is not valid key) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Re-enable IndexedDBUILayoutTest.LayoutTests Created 8 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/in_process_webkit/indexed_db_uitest.cc ('k') | content/common/indexed_db/indexed_db_key.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/indexed_db/idbbindingutilities_browsertest.cc
diff --git a/content/browser/indexed_db/idbbindingutilities_browsertest.cc b/content/browser/indexed_db/idbbindingutilities_browsertest.cc
index 0793e0bd94a184864441d9534a09b8f235674d7b..b47645faca5742fe650dfeb00dd5b2704ac16ccc 100644
--- a/content/browser/indexed_db/idbbindingutilities_browsertest.cc
+++ b/content/browser/indexed_db/idbbindingutilities_browsertest.cc
@@ -37,28 +37,46 @@ class ScopedShutdownWebKit {
};
// Sanity test, check the function call directly outside the sandbox.
-// TODO(jsbell): Disabled to land WK76487; http://crbug.com/110956 has fix.
-TEST(IDBKeyPathWithoutSandbox, DISABLED_Value) {
+TEST(IDBKeyPathWithoutSandbox, Value) {
content::WebKitPlatformSupportImpl webkit_platform_support;
WebKit::initialize(&webkit_platform_support);
ScopedShutdownWebKit shutdown_webkit;
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
+ // {foo: "zoo"}
+ char16 data_foo_zoo[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
std::vector<WebSerializedScriptValue> serialized_values;
serialized_values.push_back(
- WebSerializedScriptValue::fromString(string16(data, arraysize(data))));
+ WebSerializedScriptValue::fromString(string16(data_foo_zoo,
+ arraysize(data_foo_zoo))));
+
+ // {foo: null}
+ char16 data_foo_null[] = {0x0353, 0x6f66, 0x306f, 0x017b};
+ serialized_values.push_back(content::SerializedScriptValue(
+ false, false, string16(data_foo_null, arraysize(data_foo_null))));
+
+ // {}
+ char16 data_object[] = {0x017b};
+ serialized_values.push_back(content::SerializedScriptValue(
+ false, false, string16(data_object, arraysize(data_object))));
+
+ // null
serialized_values.push_back(
WebSerializedScriptValue::fromString(string16()));
std::vector<WebKit::WebIDBKey> values;
- string16 key_path(UTF8ToUTF16("foo"));
- bool error = webkit_glue::IDBKeysFromValuesAndKeyPath(
+ string16 key_path;
+ bool error;
+
+ key_path = UTF8ToUTF16("foo");
+ error = webkit_glue::IDBKeysFromValuesAndKeyPath(
serialized_values, key_path, &values);
- ASSERT_EQ(size_t(2), values.size());
+ ASSERT_EQ(size_t(4), values.size());
ASSERT_EQ(WebKit::WebIDBKey::StringType, values[0].type());
ASSERT_EQ(UTF8ToUTF16("zoo"), values[0].string());
ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
ASSERT_FALSE(error);
values.clear();
@@ -66,9 +84,11 @@ TEST(IDBKeyPathWithoutSandbox, DISABLED_Value) {
error = webkit_glue::IDBKeysFromValuesAndKeyPath(
serialized_values, key_path, &values);
- ASSERT_EQ(size_t(2), values.size());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[0].type());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type());
+ ASSERT_EQ(size_t(4), values.size());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
ASSERT_FALSE(error);
values.clear();
@@ -77,9 +97,11 @@ TEST(IDBKeyPathWithoutSandbox, DISABLED_Value) {
serialized_values, key_path, &values);
ASSERT_TRUE(error);
- ASSERT_EQ(size_t(2), values.size());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[0].type());
- ASSERT_EQ(WebKit::WebIDBKey::InvalidType, values[1].type());
+ ASSERT_EQ(size_t(4), values.size());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
+ ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
}
class IDBKeyPathHelper : public UtilityProcessHost::Client {
@@ -270,26 +292,44 @@ class ScopedIDBKeyPathHelper {
scoped_refptr<IDBKeyPathHelper> key_path_helper_;
};
+// Cases:
IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathExtract) {
ScopedIDBKeyPathHelper scoped_helper;
const int kId = 7;
std::vector<IndexedDBKey> expected_keys;
- IndexedDBKey value;
- value.SetString(UTF8ToUTF16("zoo"));
- expected_keys.push_back(value);
+ std::vector<content::SerializedScriptValue> serialized_values;
- IndexedDBKey invalid_value;
- invalid_value.SetInvalid();
- expected_keys.push_back(invalid_value);
+ IndexedDBKey string_zoo_key;
+ string_zoo_key.SetString(UTF8ToUTF16("zoo"));
+ IndexedDBKey null_key;
+ null_key.SetNull();
+ IndexedDBKey invalid_key;
+ invalid_key.SetInvalid();
- scoped_helper.SetExpectedKeys(kId, expected_keys, false);
+ // keypath: "foo", value: {foo: "zoo"}, expected: "zoo"
+ char16 data_foo_zoo[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
+ serialized_values.push_back(content::SerializedScriptValue(
+ false, false, string16(data_foo_zoo, arraysize(data_foo_zoo))));
+ expected_keys.push_back(string_zoo_key);
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
- std::vector<content::SerializedScriptValue> serialized_values;
+ // keypath: "foo", value: {foo: null}, expected: invalid
+ char16 data_foo_null[] = {0x0353, 0x6f66, 0x306f, 0x017b};
serialized_values.push_back(content::SerializedScriptValue(
- false, false, string16(data, arraysize(data))));
+ false, false, string16(data_foo_null, arraysize(data_foo_null))));
+ expected_keys.push_back(invalid_key);
+
+ // keypath: "foo", value: {}, expected: null
+ char16 data_object[] = {0x017b};
+ serialized_values.push_back(content::SerializedScriptValue(
+ false, false, string16(data_object, arraysize(data_object))));
+ expected_keys.push_back(null_key);
+
+ // keypath: "foo", value: null, expected: null
serialized_values.push_back(
content::SerializedScriptValue(true, false, string16()));
+ expected_keys.push_back(null_key);
+
+ scoped_helper.SetExpectedKeys(kId, expected_keys, false);
scoped_helper.CheckValuesForKeyPath(
kId, serialized_values, UTF8ToUTF16("foo"));
}
@@ -298,19 +338,24 @@ IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathPropertyNotAvailable) {
ScopedIDBKeyPathHelper scoped_helper;
const int kId = 7;
std::vector<IndexedDBKey> expected_keys;
- IndexedDBKey invalid_value;
- invalid_value.SetInvalid();
- expected_keys.push_back(invalid_value);
- expected_keys.push_back(invalid_value);
+ IndexedDBKey null_value;
+ null_value.SetNull();
+ expected_keys.push_back(null_value);
+ expected_keys.push_back(null_value);
scoped_helper.SetExpectedKeys(kId, expected_keys, false);
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
std::vector<content::SerializedScriptValue> serialized_values;
+ // {foo: "zoo", bar: null}
+ char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162,
+ 0x3072, 0x027b};
serialized_values.push_back(content::SerializedScriptValue(
false, false, string16(data, arraysize(data))));
+
+ // null
serialized_values.push_back(
content::SerializedScriptValue(true, false, string16()));
+
scoped_helper.CheckValuesForKeyPath(kId, serialized_values,
UTF8ToUTF16("PropertyNotAvailable"));
}
@@ -319,19 +364,25 @@ IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathMultipleCalls) {
ScopedIDBKeyPathHelper scoped_helper;
const int kId = 7;
std::vector<IndexedDBKey> expected_keys;
- IndexedDBKey invalid_value;
- invalid_value.SetInvalid();
- expected_keys.push_back(invalid_value);
- expected_keys.push_back(invalid_value);
+ IndexedDBKey null_value;
+ null_value.SetNull();
+ expected_keys.push_back(null_value);
+ expected_keys.push_back(null_value);
scoped_helper.SetExpectedKeys(kId, expected_keys, true);
- char16 data[] = {0x0353,0x6f66,0x536f,0x7a03,0x6f6f,0x017b};
std::vector<content::SerializedScriptValue> serialized_values;
+
+ // {foo: "zoo", bar: null}
+ char16 data[] = {0x0353, 0x6f66, 0x536f, 0x7a03, 0x6f6f, 0x0353, 0x6162,
+ 0x3072, 0x027b};
serialized_values.push_back(content::SerializedScriptValue(
false, false, string16(data, arraysize(data))));
+
+ // null
serialized_values.push_back(
content::SerializedScriptValue(true, false, string16()));
+
scoped_helper.CheckValuesForKeyPath(kId, serialized_values,
UTF8ToUTF16("!+Invalid[KeyPath[[["));
@@ -340,7 +391,7 @@ IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, IDBKeyPathMultipleCalls) {
IndexedDBKey value;
value.SetString(UTF8ToUTF16("zoo"));
expected_keys.push_back(value);
- expected_keys.push_back(invalid_value);
+ expected_keys.push_back(null_value);
scoped_helper.SetExpectedKeys(kId + 1, expected_keys, false);
scoped_helper.CheckValuesForKeyPath(kId + 1, serialized_values,
UTF8ToUTF16("foo"));
« no previous file with comments | « content/browser/in_process_webkit/indexed_db_uitest.cc ('k') | content/common/indexed_db/indexed_db_key.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698