[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
jorlow at chromium.org
jorlow at chromium.org
Wed Dec 22 16:35:14 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 1ffedf350ed0525df2dcb4acbdb04dcce8a470aa
Author: jorlow at chromium.org <jorlow at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Nov 26 16:37:09 2010 +0000
2010-11-26 Jeremy Orlow <jorlow at chromium.org>
Reviewed by Steve Block.
Make IDBKeyRange match the spec
https://bugs.webkit.org/show_bug.cgi?id=50105
Remove flags and instead add two booleans for being open.
Change left to lower and right to upper everywhere.
* storage/indexeddb/constants-expected.txt:
* storage/indexeddb/constants.html:
* storage/indexeddb/index-cursor.html:
* storage/indexeddb/keyrange-expected.txt:
* storage/indexeddb/keyrange.html:
* storage/indexeddb/objectstore-cursor.html:
* storage/indexeddb/open-cursor.html:
* storage/indexeddb/tutorial.html:
2010-11-26 Jeremy Orlow <jorlow at chromium.org>
Reviewed by Steve Block.
Make IDBKeyRange match the spec
https://bugs.webkit.org/show_bug.cgi?id=50105
Remove flags and instead add two booleans for being open.
Change left to lower and right to upper everywhere.
* storage/IDBIndexBackendImpl.cpp:
(WebCore::IDBIndexBackendImpl::openCursorInternal):
* storage/IDBKey.cpp:
(WebCore::IDBKey::lowerCursorWhereFragment):
(WebCore::IDBKey::upperCursorWhereFragment):
* storage/IDBKey.h:
* storage/IDBKeyRange.cpp:
(WebCore::IDBKeyRange::IDBKeyRange):
(WebCore::IDBKeyRange::only):
(WebCore::IDBKeyRange::lowerBound):
(WebCore::IDBKeyRange::upperBound):
(WebCore::IDBKeyRange::bound):
(WebCore::IDBKeyRange::lowerWhereClauseComparisonOperator):
(WebCore::IDBKeyRange::upperWhereClauseComparisonOperator):
* storage/IDBKeyRange.h:
(WebCore::IDBKeyRange::create):
(WebCore::IDBKeyRange::lower):
(WebCore::IDBKeyRange::upper):
(WebCore::IDBKeyRange::lowerOpen):
(WebCore::IDBKeyRange::upperOpen):
* storage/IDBKeyRange.idl:
* storage/IDBObjectStoreBackendImpl.cpp:
(WebCore::IDBObjectStoreBackendImpl::openCursorInternal):
2010-11-26 Jeremy Orlow <jorlow at chromium.org>
Reviewed by Steve Block.
Make IDBKeyRange match the spec
https://bugs.webkit.org/show_bug.cgi?id=50105
Remove flags and instead add two booleans for being open.
Change left to lower and right to upper everywhere.
* public/WebIDBKeyRange.h:
(WebKit::WebIDBKeyRange::WebIDBKeyRange):
* src/WebIDBKeyRange.cpp:
(WebKit::WebIDBKeyRange::assign):
(WebKit::WebIDBKeyRange::left):
(WebKit::WebIDBKeyRange::right):
(WebKit::WebIDBKeyRange::lower):
(WebKit::WebIDBKeyRange::upper):
(WebKit::WebIDBKeyRange::lowerOpen):
(WebKit::WebIDBKeyRange::upperOpen):
(WebKit::WebIDBKeyRange::flags):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72767 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 5790491..64fb53e 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,22 @@
+2010-11-26 Jeremy Orlow <jorlow at chromium.org>
+
+ Reviewed by Steve Block.
+
+ Make IDBKeyRange match the spec
+ https://bugs.webkit.org/show_bug.cgi?id=50105
+
+ Remove flags and instead add two booleans for being open.
+ Change left to lower and right to upper everywhere.
+
+ * storage/indexeddb/constants-expected.txt:
+ * storage/indexeddb/constants.html:
+ * storage/indexeddb/index-cursor.html:
+ * storage/indexeddb/keyrange-expected.txt:
+ * storage/indexeddb/keyrange.html:
+ * storage/indexeddb/objectstore-cursor.html:
+ * storage/indexeddb/open-cursor.html:
+ * storage/indexeddb/tutorial.html:
+
2010-11-25 Jeremy Orlow <jorlow at chromium.org>
Reviewed by Steve Block.
diff --git a/LayoutTests/storage/indexeddb/constants-expected.txt b/LayoutTests/storage/indexeddb/constants-expected.txt
index 01b8fa1..ead0937 100644
--- a/LayoutTests/storage/indexeddb/constants-expected.txt
+++ b/LayoutTests/storage/indexeddb/constants-expected.txt
@@ -3,11 +3,6 @@ Test IndexedDB's constants.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-PASS webkitIDBKeyRange.SINGLE is 0
-PASS webkitIDBKeyRange.LEFT_OPEN is 1
-PASS webkitIDBKeyRange.RIGHT_OPEN is 2
-PASS webkitIDBKeyRange.LEFT_BOUND is 4
-PASS webkitIDBKeyRange.RIGHT_BOUND is 8
PASS webkitIDBDatabaseException.UNKNOWN_ERR is 1
PASS webkitIDBDatabaseException.NON_TRANSIENT_ERR is 1
PASS webkitIDBDatabaseException.NOT_FOUND_ERR is 2
diff --git a/LayoutTests/storage/indexeddb/constants.html b/LayoutTests/storage/indexeddb/constants.html
index 542ed32..7909e24 100644
--- a/LayoutTests/storage/indexeddb/constants.html
+++ b/LayoutTests/storage/indexeddb/constants.html
@@ -16,12 +16,6 @@ if (window.layoutTestController)
function test()
{
- shouldBe("webkitIDBKeyRange.SINGLE", "0");
- shouldBe("webkitIDBKeyRange.LEFT_OPEN", "1");
- shouldBe("webkitIDBKeyRange.RIGHT_OPEN", "2");
- shouldBe("webkitIDBKeyRange.LEFT_BOUND", "4");
- shouldBe("webkitIDBKeyRange.RIGHT_BOUND", "8");
-
shouldBe("webkitIDBDatabaseException.UNKNOWN_ERR", "1");
shouldBe("webkitIDBDatabaseException.NON_TRANSIENT_ERR", "1");
shouldBe("webkitIDBDatabaseException.NOT_FOUND_ERR", "2");
diff --git a/LayoutTests/storage/indexeddb/index-cursor.html b/LayoutTests/storage/indexeddb/index-cursor.html
index 6a81514..fb3147d 100644
--- a/LayoutTests/storage/indexeddb/index-cursor.html
+++ b/LayoutTests/storage/indexeddb/index-cursor.html
@@ -181,11 +181,11 @@ function runNextTest()
var keyRange;
if (lower !== null && upper !== null)
- keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], lowerIsOpen, upperIsOpen);
+ keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], {lowerOpen: lowerIsOpen, upperOpen: upperIsOpen});
else if (lower !== null)
- keyRange = webkitIDBKeyRange.leftBound(testData[lower], lowerIsOpen);
+ keyRange = webkitIDBKeyRange.lowerBound(testData[lower], lowerIsOpen);
else
- keyRange = webkitIDBKeyRange.rightBound(testData[upper], upperIsOpen);
+ keyRange = webkitIDBKeyRange.upperBound(testData[upper], upperIsOpen);
var request = indexObject.openKeyCursor({range: keyRange, direction: ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV});
request.onsuccess = cursorIteration;
diff --git a/LayoutTests/storage/indexeddb/keyrange-expected.txt b/LayoutTests/storage/indexeddb/keyrange-expected.txt
index 1a7dfff..faac937 100644
--- a/LayoutTests/storage/indexeddb/keyrange-expected.txt
+++ b/LayoutTests/storage/indexeddb/keyrange-expected.txt
@@ -3,149 +3,155 @@ Test IndexedDB's KeyRange.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-PASS 'SINGLE' in webkitIDBKeyRange is true
-PASS 'LEFT_OPEN' in webkitIDBKeyRange is true
-PASS 'RIGHT_OPEN' in webkitIDBKeyRange is true
-PASS 'LEFT_BOUND' in webkitIDBKeyRange is true
-PASS 'RIGHT_BOUND' in webkitIDBKeyRange is true
-PASS 'left' in webkitIDBKeyRange is false
-PASS 'right' in webkitIDBKeyRange is false
-PASS 'flags' in webkitIDBKeyRange is false
+PASS 'lower' in webkitIDBKeyRange is false
+PASS 'upper' in webkitIDBKeyRange is false
+PASS 'lowerOpen' in webkitIDBKeyRange is false
+PASS 'upperOpen' in webkitIDBKeyRange is false
PASS 'only' in webkitIDBKeyRange is true
-PASS 'leftBound' in webkitIDBKeyRange is true
-PASS 'rightBound' in webkitIDBKeyRange is true
+PASS 'lowerBound' in webkitIDBKeyRange is true
+PASS 'upperBound' in webkitIDBKeyRange is true
PASS 'bound' in webkitIDBKeyRange is true
instance = webkitIDBKeyRange.only(1)
-PASS 'SINGLE' in instance is true
-PASS 'LEFT_OPEN' in instance is true
-PASS 'RIGHT_OPEN' in instance is true
-PASS 'LEFT_BOUND' in instance is true
-PASS 'RIGHT_BOUND' in instance is true
-PASS 'left' in instance is true
-PASS 'right' in instance is true
-PASS 'flags' in instance is true
+PASS 'lower' in instance is true
+PASS 'upper' in instance is true
+PASS 'lowerOpen' in instance is true
+PASS 'upperOpen' in instance is true
PASS 'only' in instance is false
-PASS 'leftBound' in instance is false
-PASS 'rightBound' in instance is false
+PASS 'lowerBound' in instance is false
+PASS 'upperBound' in instance is false
PASS 'bound' in instance is false
webkitIDBKeyRange.only(1)
-PASS keyRange.left is 1
-PASS keyRange.right is 1
-PASS keyRange.flags is keyRange.SINGLE
+PASS keyRange.lower is 1
+PASS keyRange.upper is 1
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is false
webkitIDBKeyRange.only('a')
-PASS keyRange.left is 'a'
-PASS keyRange.right is 'a'
-PASS keyRange.flags is keyRange.SINGLE
-webkitIDBKeyRange.leftBound(10,true)
-PASS keyRange.left is 10
-PASS keyRange.right is null
-PASS keyRange.flags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND
-webkitIDBKeyRange.leftBound(11,false)
-PASS keyRange.left is 11
-PASS keyRange.right is null
-PASS keyRange.flags is keyRange.LEFT_BOUND
-webkitIDBKeyRange.leftBound(12,undefined)
-PASS keyRange.left is 12
-PASS keyRange.right is null
-PASS keyRange.flags is keyRange.LEFT_BOUND
-webkitIDBKeyRange.leftBound('aa',true)
-PASS keyRange.left is 'aa'
-PASS keyRange.right is null
-PASS keyRange.flags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND
-webkitIDBKeyRange.leftBound('ab',false)
-PASS keyRange.left is 'ab'
-PASS keyRange.right is null
-PASS keyRange.flags is keyRange.LEFT_BOUND
-webkitIDBKeyRange.leftBound('ac',undefined)
-PASS keyRange.left is 'ac'
-PASS keyRange.right is null
-PASS keyRange.flags is keyRange.LEFT_BOUND
-webkitIDBKeyRange.rightBound(20,true)
-PASS keyRange.right is 20
-PASS keyRange.left is null
-PASS keyRange.flags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND
-webkitIDBKeyRange.rightBound(21,false)
-PASS keyRange.right is 21
-PASS keyRange.left is null
-PASS keyRange.flags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.rightBound(22,undefined)
-PASS keyRange.right is 22
-PASS keyRange.left is null
-PASS keyRange.flags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.rightBound('ba',true)
-PASS keyRange.right is 'ba'
-PASS keyRange.left is null
-PASS keyRange.flags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND
-webkitIDBKeyRange.rightBound('bb',false)
-PASS keyRange.right is 'bb'
-PASS keyRange.left is null
-PASS keyRange.flags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.rightBound('bc',undefined)
-PASS keyRange.right is 'bc'
-PASS keyRange.left is null
-PASS keyRange.flags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound(30,40,undefined,undefined)
-PASS keyRange.left is 30
-PASS keyRange.right is 40
-PASS leftFlags is keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound(31,41,false,false)
-PASS keyRange.left is 31
-PASS keyRange.right is 41
-PASS leftFlags is keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound(32,42,false,true)
-PASS keyRange.left is 32
-PASS keyRange.right is 42
-PASS leftFlags is keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound(33,43,true,false)
-PASS keyRange.left is 33
-PASS keyRange.right is 43
-PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound(34,44,true,true)
-PASS keyRange.left is 34
-PASS keyRange.right is 44
-PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound('aaa','aba',false,false)
-PASS keyRange.left is 'aaa'
-PASS keyRange.right is 'aba'
-PASS leftFlags is keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound('aab','abb',undefined,undefined)
-PASS keyRange.left is 'aab'
-PASS keyRange.right is 'abb'
-PASS leftFlags is keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound('aac','abc',false,false)
-PASS keyRange.left is 'aac'
-PASS keyRange.right is 'abc'
-PASS leftFlags is keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound('aad','abd',false,true)
-PASS keyRange.left is 'aad'
-PASS keyRange.right is 'abd'
-PASS leftFlags is keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound('aae','abe',true,false)
-PASS keyRange.left is 'aae'
-PASS keyRange.right is 'abe'
-PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_BOUND
-webkitIDBKeyRange.bound('aaf','abf',true,true)
-PASS keyRange.left is 'aaf'
-PASS keyRange.right is 'abf'
-PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND
-PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND
+PASS keyRange.lower is 'a'
+PASS keyRange.upper is 'a'
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.lowerBound(10,true)
+PASS keyRange.lower is 10
+PASS keyRange.lowerOpen is true
+PASS keyRange.upper is null
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.lowerBound(11,false)
+PASS keyRange.lower is 11
+PASS keyRange.lowerOpen is false
+PASS keyRange.upper is null
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.lowerBound(12,undefined)
+PASS keyRange.lower is 12
+PASS keyRange.lowerOpen is false
+PASS keyRange.upper is null
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.lowerBound('aa',true)
+PASS keyRange.lower is 'aa'
+PASS keyRange.lowerOpen is true
+PASS keyRange.upper is null
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.lowerBound('ab',false)
+PASS keyRange.lower is 'ab'
+PASS keyRange.lowerOpen is false
+PASS keyRange.upper is null
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.lowerBound('ac',undefined)
+PASS keyRange.lower is 'ac'
+PASS keyRange.lowerOpen is false
+PASS keyRange.upper is null
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.upperBound(20,true)
+PASS keyRange.upper is 20
+PASS keyRange.upperOpen is true
+PASS keyRange.lower is null
+PASS keyRange.lowerOpen is false
+webkitIDBKeyRange.upperBound(21,false)
+PASS keyRange.upper is 21
+PASS keyRange.upperOpen is false
+PASS keyRange.lower is null
+PASS keyRange.lowerOpen is false
+webkitIDBKeyRange.upperBound(22,undefined)
+PASS keyRange.upper is 22
+PASS keyRange.upperOpen is false
+PASS keyRange.lower is null
+PASS keyRange.lowerOpen is false
+webkitIDBKeyRange.upperBound('ba',true)
+PASS keyRange.upper is 'ba'
+PASS keyRange.upperOpen is true
+PASS keyRange.lower is null
+PASS keyRange.lowerOpen is false
+webkitIDBKeyRange.upperBound('bb',false)
+PASS keyRange.upper is 'bb'
+PASS keyRange.upperOpen is false
+PASS keyRange.lower is null
+PASS keyRange.lowerOpen is false
+webkitIDBKeyRange.upperBound('bc',undefined)
+PASS keyRange.upper is 'bc'
+PASS keyRange.upperOpen is false
+PASS keyRange.lower is null
+PASS keyRange.lowerOpen is false
+webkitIDBKeyRange.bound(30,40, {lowerOpen: undefined, upperOpen:undefined})
+PASS keyRange.lower is 30
+PASS keyRange.upper is 40
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.bound(31,41, {lowerOpen: false, upperOpen:false})
+PASS keyRange.lower is 31
+PASS keyRange.upper is 41
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.bound(32,42, {lowerOpen: false, upperOpen:true})
+PASS keyRange.lower is 32
+PASS keyRange.upper is 42
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is true
+webkitIDBKeyRange.bound(33,43, {lowerOpen: true, upperOpen:false})
+PASS keyRange.lower is 33
+PASS keyRange.upper is 43
+PASS keyRange.lowerOpen is true
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.bound(34,44, {lowerOpen: true, upperOpen:true})
+PASS keyRange.lower is 34
+PASS keyRange.upper is 44
+PASS keyRange.lowerOpen is true
+PASS keyRange.upperOpen is true
+webkitIDBKeyRange.bound('aaa','aba', {lowerOpen: false, upperOpen:false})
+PASS keyRange.lower is 'aaa'
+PASS keyRange.upper is 'aba'
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.bound('aab','abb', {lowerOpen: undefined, upperOpen:undefined})
+PASS keyRange.lower is 'aab'
+PASS keyRange.upper is 'abb'
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.bound('aac','abc', {lowerOpen: false, upperOpen:false})
+PASS keyRange.lower is 'aac'
+PASS keyRange.upper is 'abc'
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.bound('aad','abd', {lowerOpen: false, upperOpen:true})
+PASS keyRange.lower is 'aad'
+PASS keyRange.upper is 'abd'
+PASS keyRange.lowerOpen is false
+PASS keyRange.upperOpen is true
+webkitIDBKeyRange.bound('aae','abe', {lowerOpen: true, upperOpen:false})
+PASS keyRange.lower is 'aae'
+PASS keyRange.upper is 'abe'
+PASS keyRange.lowerOpen is true
+PASS keyRange.upperOpen is false
+webkitIDBKeyRange.bound('aaf','abf', {lowerOpen: true, upperOpen:true})
+PASS keyRange.lower is 'aaf'
+PASS keyRange.upper is 'abf'
+PASS keyRange.lowerOpen is true
+PASS keyRange.upperOpen is true
Passing an invalid key into only([])
PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17
-Passing an invalid key into rightBound([])
+Passing an invalid key into upperBound([])
PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17
-Passing an invalid key into leftBound([])
+Passing an invalid key into lowerBound([])
PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17
Passing an invalid key into bound(null, [])
PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17
diff --git a/LayoutTests/storage/indexeddb/keyrange.html b/LayoutTests/storage/indexeddb/keyrange.html
index 48708d9..4b926da 100644
--- a/LayoutTests/storage/indexeddb/keyrange.html
+++ b/LayoutTests/storage/indexeddb/keyrange.html
@@ -17,67 +17,68 @@ if (window.layoutTestController)
function checkSingleKeyRange(value)
{
keyRange = evalAndLog("webkitIDBKeyRange.only(" + value + ")");
- shouldBe("keyRange.left", "" + value);
- shouldBe("keyRange.right", "" + value);
- shouldBe("keyRange.flags", "keyRange.SINGLE");
+ shouldBe("keyRange.lower", "" + value);
+ shouldBe("keyRange.upper", "" + value);
+ shouldBeFalse("keyRange.lowerOpen");
+ shouldBeFalse("keyRange.upperOpen");
}
-function checkLeftBoundKeyRange(value, open)
+function checkLowerBoundKeyRange(value, open)
{
- keyRange = evalAndLog("webkitIDBKeyRange.leftBound(" + value + "," + open + ")");
- shouldBe("keyRange.left", "" + value);
- shouldBeNull("keyRange.right");
- shouldBe("keyRange.flags", open ? "keyRange.LEFT_OPEN | keyRange.LEFT_BOUND" : "keyRange.LEFT_BOUND");
+ keyRange = evalAndLog("webkitIDBKeyRange.lowerBound(" + value + "," + open + ")");
+ shouldBe("keyRange.lower", "" + value);
+ if (open === undefined)
+ open = false;
+ shouldBe("keyRange.lowerOpen", "" + open);
+ shouldBeNull("keyRange.upper");
+ shouldBeFalse("keyRange.upperOpen");
}
-function checkRightBoundKeyRange(value, open)
+function checkUpperBoundKeyRange(value, open)
{
- keyRange = evalAndLog("webkitIDBKeyRange.rightBound(" + value + "," + open + ")");
- shouldBe("keyRange.right", "" + value);
- shouldBeNull("keyRange.left");
- shouldBe("keyRange.flags", open ? "keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND" : "keyRange.RIGHT_BOUND");
+ keyRange = evalAndLog("webkitIDBKeyRange.upperBound(" + value + "," + open + ")");
+ shouldBe("keyRange.upper", "" + value);
+ if (open === undefined)
+ open = false;
+ shouldBe("keyRange.upperOpen", "" + open);
+ shouldBeNull("keyRange.lower");
+ shouldBeFalse("keyRange.lowerOpen");
}
-function checkBoundKeyRange(left, right, openLeft, openRight)
+function checkBoundKeyRange(lower, upper, lowerOpen, upperOpen)
{
- keyRange = evalAndLog("webkitIDBKeyRange.bound(" + left + "," + right + "," + openLeft + "," + openRight + ")");
- shouldBe("keyRange.left", "" + left);
- shouldBe("keyRange.right", "" + right);
- leftFlags = keyRange.flags & (keyRange.LEFT_OPEN | keyRange.LEFT_BOUND);
- shouldBe("leftFlags", openLeft ? "keyRange.LEFT_OPEN | keyRange.LEFT_BOUND" : "keyRange.LEFT_BOUND");
- rightFlags = keyRange.flags & (keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND);
- shouldBe("rightFlags", openRight ? "keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND" : "keyRange.RIGHT_BOUND");
+ keyRange = evalAndLog("webkitIDBKeyRange.bound(" + lower + "," + upper + ", {lowerOpen: " + lowerOpen + ", upperOpen:" + upperOpen + "})");
+ shouldBe("keyRange.lower", "" + lower);
+ shouldBe("keyRange.upper", "" + upper);
+ if (lowerOpen === undefined)
+ lowerOpen = false;
+ if (upperOpen === undefined)
+ upperOpen = false;
+ shouldBe("keyRange.lowerOpen", "" + lowerOpen);
+ shouldBe("keyRange.upperOpen", "" + upperOpen);
}
function test()
{
- shouldBeTrue("'SINGLE' in webkitIDBKeyRange");
- shouldBeTrue("'LEFT_OPEN' in webkitIDBKeyRange");
- shouldBeTrue("'RIGHT_OPEN' in webkitIDBKeyRange");
- shouldBeTrue("'LEFT_BOUND' in webkitIDBKeyRange");
- shouldBeTrue("'RIGHT_BOUND' in webkitIDBKeyRange");
- shouldBeFalse("'left' in webkitIDBKeyRange");
- shouldBeFalse("'right' in webkitIDBKeyRange");
- shouldBeFalse("'flags' in webkitIDBKeyRange");
+ shouldBeFalse("'lower' in webkitIDBKeyRange");
+ shouldBeFalse("'upper' in webkitIDBKeyRange");
+ shouldBeFalse("'lowerOpen' in webkitIDBKeyRange");
+ shouldBeFalse("'upperOpen' in webkitIDBKeyRange");
shouldBeTrue("'only' in webkitIDBKeyRange");
- shouldBeTrue("'leftBound' in webkitIDBKeyRange");
- shouldBeTrue("'rightBound' in webkitIDBKeyRange");
+ shouldBeTrue("'lowerBound' in webkitIDBKeyRange");
+ shouldBeTrue("'upperBound' in webkitIDBKeyRange");
shouldBeTrue("'bound' in webkitIDBKeyRange");
debug("");
var instance = evalAndLog("instance = webkitIDBKeyRange.only(1)");
- shouldBeTrue("'SINGLE' in instance");
- shouldBeTrue("'LEFT_OPEN' in instance");
- shouldBeTrue("'RIGHT_OPEN' in instance");
- shouldBeTrue("'LEFT_BOUND' in instance");
- shouldBeTrue("'RIGHT_BOUND' in instance");
- shouldBeTrue("'left' in instance");
- shouldBeTrue("'right' in instance");
- shouldBeTrue("'flags' in instance");
+ shouldBeTrue("'lower' in instance");
+ shouldBeTrue("'upper' in instance");
+ shouldBeTrue("'lowerOpen' in instance");
+ shouldBeTrue("'upperOpen' in instance");
shouldBeFalse("'only' in instance");
- shouldBeFalse("'leftBound' in instance");
- shouldBeFalse("'rightBound' in instance");
+ shouldBeFalse("'lowerBound' in instance");
+ shouldBeFalse("'upperBound' in instance");
shouldBeFalse("'bound' in instance");
debug("");
@@ -85,19 +86,19 @@ function test()
checkSingleKeyRange(1);
checkSingleKeyRange("'a'");
- checkLeftBoundKeyRange(10, true);
- checkLeftBoundKeyRange(11, false);
- checkLeftBoundKeyRange(12);
- checkLeftBoundKeyRange("'aa'", true);
- checkLeftBoundKeyRange("'ab'", false);
- checkLeftBoundKeyRange("'ac'");
+ checkLowerBoundKeyRange(10, true);
+ checkLowerBoundKeyRange(11, false);
+ checkLowerBoundKeyRange(12);
+ checkLowerBoundKeyRange("'aa'", true);
+ checkLowerBoundKeyRange("'ab'", false);
+ checkLowerBoundKeyRange("'ac'");
- checkRightBoundKeyRange(20, true);
- checkRightBoundKeyRange(21, false);
- checkRightBoundKeyRange(22);
- checkRightBoundKeyRange("'ba'", true);
- checkRightBoundKeyRange("'bb'", false);
- checkRightBoundKeyRange("'bc'");
+ checkUpperBoundKeyRange(20, true);
+ checkUpperBoundKeyRange(21, false);
+ checkUpperBoundKeyRange(22);
+ checkUpperBoundKeyRange("'ba'", true);
+ checkUpperBoundKeyRange("'bb'", false);
+ checkUpperBoundKeyRange("'bc'");
checkBoundKeyRange(30, 40);
checkBoundKeyRange(31, 41, false, false);
@@ -121,16 +122,16 @@ function test()
}
try {
- debug("Passing an invalid key into rightBound([])");
- webkitIDBKeyRange.rightBound([]);
+ debug("Passing an invalid key into upperBound([])");
+ webkitIDBKeyRange.upperBound([]);
testFailed("No exception thrown");
} catch (e) {
testPassed("Caught exception: " + e.toString());
}
try {
- debug("Passing an invalid key into leftBound([])");
- webkitIDBKeyRange.leftBound([]);
+ debug("Passing an invalid key into lowerBound([])");
+ webkitIDBKeyRange.lowerBound([]);
testFailed("No exception thrown");
} catch (e) {
testPassed("Caught exception: " + e.toString());
diff --git a/LayoutTests/storage/indexeddb/objectstore-cursor.html b/LayoutTests/storage/indexeddb/objectstore-cursor.html
index 215ec91..3358917 100644
--- a/LayoutTests/storage/indexeddb/objectstore-cursor.html
+++ b/LayoutTests/storage/indexeddb/objectstore-cursor.html
@@ -159,11 +159,11 @@ function runNextTest()
var keyRange;
if (lower !== null && upper !== null)
- keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], lowerIsOpen, upperIsOpen);
+ keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], {lowerOpen: lowerIsOpen, upperOpen: upperIsOpen});
else if (lower !== null)
- keyRange = webkitIDBKeyRange.leftBound(testData[lower], lowerIsOpen);
+ keyRange = webkitIDBKeyRange.lowerBound(testData[lower], lowerIsOpen);
else
- keyRange = webkitIDBKeyRange.rightBound(testData[upper], upperIsOpen);
+ keyRange = webkitIDBKeyRange.upperBound(testData[upper], upperIsOpen);
var request = objectStore.openCursor({range: keyRange, direction: ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV});
request.onsuccess = cursorIteration;
diff --git a/LayoutTests/storage/indexeddb/open-cursor.html b/LayoutTests/storage/indexeddb/open-cursor.html
index c5dd7d8..e4dc8f0 100644
--- a/LayoutTests/storage/indexeddb/open-cursor.html
+++ b/LayoutTests/storage/indexeddb/open-cursor.html
@@ -25,7 +25,7 @@ function emptyCursorSuccess()
function openEmptyCursor()
{
debug("Opening an empty cursor.");
- keyRange = webkitIDBKeyRange.leftBound("InexistentKey");
+ keyRange = webkitIDBKeyRange.lowerBound("InexistentKey");
result = evalAndLog("objectStore.openCursor({range: keyRange})");
verifyResult(result);
result.onsuccess = emptyCursorSuccess;
@@ -55,7 +55,7 @@ function cursorSuccess()
function openCursor()
{
debug("Opening cursor");
- keyRange = webkitIDBKeyRange.leftBound("myKey");
+ keyRange = webkitIDBKeyRange.lowerBound("myKey");
result = evalAndLog("event.source.openCursor({range: keyRange})");
verifyResult(result);
result.onsuccess = cursorSuccess;
diff --git a/LayoutTests/storage/indexeddb/tutorial.html b/LayoutTests/storage/indexeddb/tutorial.html
index c90a2bc..d40dd8e 100644
--- a/LayoutTests/storage/indexeddb/tutorial.html
+++ b/LayoutTests/storage/indexeddb/tutorial.html
@@ -395,9 +395,9 @@ function onIndexGetSuccess()
// different IDBKeyRanges just to demonstrate how to use them, but we won't bother to handle
// the onsuccess conditions.
var lname = event.source;
- lname.openCursor({range: IDBKeyRange.leftBound("Doe", false), direction: IDBCursor.NEXT_NO_DUPLICATE});
+ lname.openCursor({range: IDBKeyRange.lowerBound("Doe", false), direction: IDBCursor.NEXT_NO_DUPLICATE});
lname.openCursor({direction: IDBCursor.PREV_NO_DUPLICATE});
- lname.openCursor({range: IDBKeyRange.rightBound("ZZZZ")});
+ lname.openCursor({range: IDBKeyRange.upperBound("ZZZZ")});
lname.openCursor({range: IDBKeyRange.only("Doe"), direction: IDBCursor.PREV});
lname.openCursor();
lname.openKeyCursor();
@@ -411,7 +411,8 @@ function onIndexGetSuccess()
function onAllDone()
{
log("Everything worked!");
- layoutTestController.notifyDone();
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
}
// The way setVersion is supposed to work:
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c6b690a..eab7991 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,37 @@
+2010-11-26 Jeremy Orlow <jorlow at chromium.org>
+
+ Reviewed by Steve Block.
+
+ Make IDBKeyRange match the spec
+ https://bugs.webkit.org/show_bug.cgi?id=50105
+
+ Remove flags and instead add two booleans for being open.
+ Change left to lower and right to upper everywhere.
+
+ * storage/IDBIndexBackendImpl.cpp:
+ (WebCore::IDBIndexBackendImpl::openCursorInternal):
+ * storage/IDBKey.cpp:
+ (WebCore::IDBKey::lowerCursorWhereFragment):
+ (WebCore::IDBKey::upperCursorWhereFragment):
+ * storage/IDBKey.h:
+ * storage/IDBKeyRange.cpp:
+ (WebCore::IDBKeyRange::IDBKeyRange):
+ (WebCore::IDBKeyRange::only):
+ (WebCore::IDBKeyRange::lowerBound):
+ (WebCore::IDBKeyRange::upperBound):
+ (WebCore::IDBKeyRange::bound):
+ (WebCore::IDBKeyRange::lowerWhereClauseComparisonOperator):
+ (WebCore::IDBKeyRange::upperWhereClauseComparisonOperator):
+ * storage/IDBKeyRange.h:
+ (WebCore::IDBKeyRange::create):
+ (WebCore::IDBKeyRange::lower):
+ (WebCore::IDBKeyRange::upper):
+ (WebCore::IDBKeyRange::lowerOpen):
+ (WebCore::IDBKeyRange::upperOpen):
+ * storage/IDBKeyRange.idl:
+ * storage/IDBObjectStoreBackendImpl.cpp:
+ (WebCore::IDBObjectStoreBackendImpl::openCursorInternal):
+
2010-11-25 Jeremy Orlow <jorlow at chromium.org>
Reviewed by Steve Block.
diff --git a/WebCore/storage/IDBIndexBackendImpl.cpp b/WebCore/storage/IDBIndexBackendImpl.cpp
index 84af234..597a8c2 100644
--- a/WebCore/storage/IDBIndexBackendImpl.cpp
+++ b/WebCore/storage/IDBIndexBackendImpl.cpp
@@ -73,13 +73,13 @@ void IDBIndexBackendImpl::openCursorInternal(ScriptExecutionContext*, PassRefPtr
+ (objectCursor ? "ObjectStoreData.value " : "ObjectStoreData.keyString, ObjectStoreData.keyDate, ObjectStoreData.keyNumber ")
+ "FROM IndexData INNER JOIN ObjectStoreData ON IndexData.objectStoreDataId = ObjectStoreData.id WHERE ";
- bool leftBound = range && (range->flags() & IDBKeyRange::LEFT_BOUND || range->flags() == IDBKeyRange::SINGLE);
- bool rightBound = range && (range->flags() & IDBKeyRange::RIGHT_BOUND || range->flags() == IDBKeyRange::SINGLE);
+ bool lowerBound = range && range->lower();
+ bool upperBound = range && range->upper();
- if (leftBound)
- sql += range->left()->leftCursorWhereFragment(range->leftWhereClauseComparisonOperator(), "IndexData.");
- if (rightBound)
- sql += range->right()->rightCursorWhereFragment(range->rightWhereClauseComparisonOperator(), "IndexData.");
+ if (lowerBound)
+ sql += range->lower()->lowerCursorWhereFragment(range->lowerWhereClauseComparisonOperator(), "IndexData.");
+ if (upperBound)
+ sql += range->upper()->upperCursorWhereFragment(range->upperWhereClauseComparisonOperator(), "IndexData.");
sql += "IndexData.indexId = ? ORDER BY ";
IDBCursor::Direction direction = static_cast<IDBCursor::Direction>(untypedDirection);
@@ -93,10 +93,10 @@ void IDBIndexBackendImpl::openCursorInternal(ScriptExecutionContext*, PassRefPtr
ASSERT_UNUSED(ok, ok); // FIXME: Better error handling?
int indexColumn = 1;
- if (leftBound)
- indexColumn += range->left()->bind(*query, indexColumn);
- if (rightBound)
- indexColumn += range->right()->bind(*query, indexColumn);
+ if (lowerBound)
+ indexColumn += range->lower()->bind(*query, indexColumn);
+ if (upperBound)
+ indexColumn += range->upper()->bind(*query, indexColumn);
query->bindInt64(indexColumn, index->id());
if (query->step() != SQLResultRow) {
diff --git a/WebCore/storage/IDBKey.cpp b/WebCore/storage/IDBKey.cpp
index 8e411b7..4f8287a 100644
--- a/WebCore/storage/IDBKey.cpp
+++ b/WebCore/storage/IDBKey.cpp
@@ -105,7 +105,7 @@ String IDBKey::whereSyntax(String qualifiedTableName) const
return "";
}
-String IDBKey::leftCursorWhereFragment(String comparisonOperator, String qualifiedTableName)
+String IDBKey::lowerCursorWhereFragment(String comparisonOperator, String qualifiedTableName)
{
switch (m_type) {
case StringType:
@@ -122,7 +122,7 @@ String IDBKey::leftCursorWhereFragment(String comparisonOperator, String qualifi
return "";
}
-String IDBKey::rightCursorWhereFragment(String comparisonOperator, String qualifiedTableName)
+String IDBKey::upperCursorWhereFragment(String comparisonOperator, String qualifiedTableName)
{
switch (m_type) {
case StringType:
diff --git a/WebCore/storage/IDBKey.h b/WebCore/storage/IDBKey.h
index b302fd7..9a27742 100644
--- a/WebCore/storage/IDBKey.h
+++ b/WebCore/storage/IDBKey.h
@@ -78,8 +78,8 @@ public:
bool isEqual(IDBKey* other);
String whereSyntax(String qualifiedTableName = "") const;
- String leftCursorWhereFragment(String comparisonOperator, String qualifiedTableName = "");
- String rightCursorWhereFragment(String comparisonOperator, String qualifiedTableName = "");
+ String lowerCursorWhereFragment(String comparisonOperator, String qualifiedTableName = "");
+ String upperCursorWhereFragment(String comparisonOperator, String qualifiedTableName = "");
int bind(SQLiteStatement& query, int column) const;
void bindWithNulls(SQLiteStatement& query, int baseColumn) const;
diff --git a/WebCore/storage/IDBKeyRange.cpp b/WebCore/storage/IDBKeyRange.cpp
index 6c612cc..142b3bd 100644
--- a/WebCore/storage/IDBKeyRange.cpp
+++ b/WebCore/storage/IDBKeyRange.cpp
@@ -32,73 +32,53 @@
namespace WebCore {
-IDBKeyRange::IDBKeyRange(PassRefPtr<IDBKey> left, PassRefPtr<IDBKey> right, unsigned short flags)
- : m_left(left)
- , m_right(right)
- , m_flags(flags)
+IDBKeyRange::IDBKeyRange(PassRefPtr<IDBKey> lower, PassRefPtr<IDBKey> upper, bool lowerOpen, bool upperOpen)
+ : m_lower(lower)
+ , m_upper(upper)
+ , m_lowerOpen(lowerOpen)
+ , m_upperOpen(upperOpen)
{
}
PassRefPtr<IDBKeyRange> IDBKeyRange::only(PassRefPtr<IDBKey> prpValue)
{
RefPtr<IDBKey> value = prpValue;
- return IDBKeyRange::create(value, value, IDBKeyRange::SINGLE);
+ return IDBKeyRange::create(value, value, false, false);
}
-PassRefPtr<IDBKeyRange> IDBKeyRange::leftBound(PassRefPtr<IDBKey> bound, bool open)
+PassRefPtr<IDBKeyRange> IDBKeyRange::lowerBound(PassRefPtr<IDBKey> bound, bool open)
{
- unsigned short flags = IDBKeyRange::LEFT_BOUND;
- if (open)
- flags |= IDBKeyRange::LEFT_OPEN;
- return IDBKeyRange::create(bound, IDBKey::create(), flags);
+ return IDBKeyRange::create(bound, 0, open, false);
}
-PassRefPtr<IDBKeyRange> IDBKeyRange::rightBound(PassRefPtr<IDBKey> bound, bool open)
+PassRefPtr<IDBKeyRange> IDBKeyRange::upperBound(PassRefPtr<IDBKey> bound, bool open)
{
- unsigned short flags = IDBKeyRange::RIGHT_BOUND;
- if (open)
- flags |= IDBKeyRange::RIGHT_OPEN;
- return IDBKeyRange::create(IDBKey::create(), bound, flags);
+ return IDBKeyRange::create(0, bound, false, open);
}
-PassRefPtr<IDBKeyRange> IDBKeyRange::bound(PassRefPtr<IDBKey> left, PassRefPtr<IDBKey> right, bool openLeft, bool openRight)
+PassRefPtr<IDBKeyRange> IDBKeyRange::bound(PassRefPtr<IDBKey> lower, PassRefPtr<IDBKey> upper, const OptionsObject& options)
{
- unsigned short flags = IDBKeyRange::LEFT_BOUND | IDBKeyRange::RIGHT_BOUND;
- if (openLeft)
- flags |= IDBKeyRange::LEFT_OPEN;
- if (openRight)
- flags |= IDBKeyRange::RIGHT_OPEN;
- return IDBKeyRange::create(left, right, flags);
+ bool lowerOpen = false;
+ bool upperOpen = false;
+ options.getKeyBool("lowerOpen", lowerOpen);
+ options.getKeyBool("upperOpen", upperOpen);
+ return IDBKeyRange::create(lower, upper, lowerOpen, upperOpen);
}
-String IDBKeyRange::leftWhereClauseComparisonOperator() const
+String IDBKeyRange::lowerWhereClauseComparisonOperator() const
{
- if (m_flags & LEFT_OPEN)
+ ASSERT(m_lower);
+ if (m_lowerOpen)
return "<";
-
- if (m_flags & LEFT_BOUND)
- return "<=";
-
- if (m_flags == SINGLE)
- return "=";
-
- ASSERT_NOT_REACHED();
- return "";
+ return "<=";
}
-String IDBKeyRange::rightWhereClauseComparisonOperator() const
+String IDBKeyRange::upperWhereClauseComparisonOperator() const
{
- if (m_flags & RIGHT_OPEN)
+ ASSERT(m_upper);
+ if (m_upperOpen)
return "<";
-
- if (m_flags & RIGHT_BOUND)
- return "<=";
-
- if (m_flags == SINGLE)
- return "=";
-
- ASSERT_NOT_REACHED();
- return "";
+ return "<=";
}
} // namespace WebCore
diff --git a/WebCore/storage/IDBKeyRange.h b/WebCore/storage/IDBKeyRange.h
index d246ebc..8af48fe 100644
--- a/WebCore/storage/IDBKeyRange.h
+++ b/WebCore/storage/IDBKeyRange.h
@@ -29,6 +29,7 @@
#if ENABLE(INDEXED_DATABASE)
#include "IDBKey.h"
+#include "OptionsObject.h"
#include <wtf/PassRefPtr.h>
#include <wtf/Threading.h>
@@ -36,41 +37,33 @@ namespace WebCore {
class IDBKeyRange : public ThreadSafeShared<IDBKeyRange> {
public:
- // Keep in sync with what's in the .idl file.
- enum Flags {
- SINGLE = 0,
- LEFT_OPEN = 1,
- RIGHT_OPEN = 2,
- LEFT_BOUND = 4,
- RIGHT_BOUND = 8,
- };
-
- static PassRefPtr<IDBKeyRange> create(PassRefPtr<IDBKey> left, PassRefPtr<IDBKey> right, unsigned short flags)
+ static PassRefPtr<IDBKeyRange> create(PassRefPtr<IDBKey> lower, PassRefPtr<IDBKey> upper, bool lowerOpen, bool upperOpen)
{
- return adoptRef(new IDBKeyRange(left, right, flags));
+ return adoptRef(new IDBKeyRange(lower, upper, lowerOpen, upperOpen));
}
-
~IDBKeyRange() { }
- PassRefPtr<IDBKey> left() const { return m_left; }
- PassRefPtr<IDBKey> right() const { return m_right; }
- unsigned short flags() const { return m_flags; }
+ PassRefPtr<IDBKey> lower() const { return m_lower; }
+ PassRefPtr<IDBKey> upper() const { return m_upper; }
+ bool lowerOpen() const { return m_lowerOpen; }
+ bool upperOpen() const { return m_upperOpen; }
- String leftWhereClauseComparisonOperator() const;
- String rightWhereClauseComparisonOperator() const;
+ String lowerWhereClauseComparisonOperator() const;
+ String upperWhereClauseComparisonOperator() const;
static PassRefPtr<IDBKeyRange> only(PassRefPtr<IDBKey> value);
- static PassRefPtr<IDBKeyRange> leftBound(PassRefPtr<IDBKey> bound, bool open = false);
- static PassRefPtr<IDBKeyRange> rightBound(PassRefPtr<IDBKey> bound, bool open = false);
- static PassRefPtr<IDBKeyRange> bound(PassRefPtr<IDBKey> left, PassRefPtr<IDBKey> right, bool openLeft = false, bool openRight = false);
+ static PassRefPtr<IDBKeyRange> lowerBound(PassRefPtr<IDBKey> bound, bool open = false);
+ static PassRefPtr<IDBKeyRange> upperBound(PassRefPtr<IDBKey> bound, bool open = false);
+ static PassRefPtr<IDBKeyRange> bound(PassRefPtr<IDBKey> lower, PassRefPtr<IDBKey> upper, const OptionsObject& = OptionsObject());
private:
- IDBKeyRange(PassRefPtr<IDBKey> left, PassRefPtr<IDBKey> right, unsigned short flags);
+ IDBKeyRange(PassRefPtr<IDBKey> lower, PassRefPtr<IDBKey> upper, bool lowerOpen, bool upperOpen);
- RefPtr<IDBKey> m_left;
- RefPtr<IDBKey> m_right;
- unsigned short m_flags;
+ RefPtr<IDBKey> m_lower;
+ RefPtr<IDBKey> m_upper;
+ bool m_lowerOpen;
+ bool m_upperOpen;
};
} // namespace WebCore
diff --git a/WebCore/storage/IDBKeyRange.idl b/WebCore/storage/IDBKeyRange.idl
index 8e4d61f..d7fa075 100644
--- a/WebCore/storage/IDBKeyRange.idl
+++ b/WebCore/storage/IDBKeyRange.idl
@@ -28,22 +28,16 @@ module storage {
interface [
Conditional=INDEXED_DATABASE
] IDBKeyRange {
- // Keep in sync with what's in the .h file.
- const unsigned short SINGLE = 0;
- const unsigned short LEFT_OPEN = 1;
- const unsigned short RIGHT_OPEN = 2;
- const unsigned short LEFT_BOUND = 4;
- const unsigned short RIGHT_BOUND = 8;
-
- readonly attribute IDBKey left;
- readonly attribute IDBKey right;
- readonly attribute unsigned short flags;
+ readonly attribute IDBKey lower;
+ readonly attribute IDBKey upper;
+ readonly attribute boolean lowerOpen;
+ readonly attribute boolean upperOpen;
// FIXME: Make ClassMethod work for JSC as well.
[ClassMethod] IDBKeyRange only(in IDBKey value);
- [ClassMethod] IDBKeyRange leftBound(in IDBKey bound, in [Optional] boolean open);
- [ClassMethod] IDBKeyRange rightBound(in IDBKey bound, in [Optional] boolean open);
- [ClassMethod] IDBKeyRange bound(in IDBKey left, in IDBKey right, in [Optional] boolean openLeft, in [Optional] boolean openRight);
+ [ClassMethod] IDBKeyRange lowerBound(in IDBKey bound, in [Optional] boolean open);
+ [ClassMethod] IDBKeyRange upperBound(in IDBKey bound, in [Optional] boolean open);
+ [ClassMethod] IDBKeyRange bound(in IDBKey lower, in IDBKey upper, in [Optional] OptionsObject options);
};
}
diff --git a/WebCore/storage/IDBObjectStoreBackendImpl.cpp b/WebCore/storage/IDBObjectStoreBackendImpl.cpp
index 7fc4f98..56aa167 100644
--- a/WebCore/storage/IDBObjectStoreBackendImpl.cpp
+++ b/WebCore/storage/IDBObjectStoreBackendImpl.cpp
@@ -403,15 +403,15 @@ void IDBObjectStoreBackendImpl::openCursor(PassRefPtr<IDBKeyRange> prpRange, uns
void IDBObjectStoreBackendImpl::openCursorInternal(ScriptExecutionContext*, PassRefPtr<IDBObjectStoreBackendImpl> objectStore, PassRefPtr<IDBKeyRange> range, unsigned short tmpDirection, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBTransactionBackendInterface> transaction)
{
- bool leftBound = range && (range->flags() & IDBKeyRange::LEFT_BOUND || range->flags() == IDBKeyRange::SINGLE);
- bool rightBound = range && (range->flags() & IDBKeyRange::RIGHT_BOUND || range->flags() == IDBKeyRange::SINGLE);
+ bool lowerBound = range && range->lower();
+ bool upperBound = range && range->upper();
// Several files depend on this order of selects.
String sql = "SELECT id, keyString, keyDate, keyNumber, value FROM ObjectStoreData WHERE ";
- if (leftBound)
- sql += range->left()->leftCursorWhereFragment(range->leftWhereClauseComparisonOperator());
- if (rightBound)
- sql += range->right()->rightCursorWhereFragment(range->rightWhereClauseComparisonOperator());
+ if (lowerBound)
+ sql += range->lower()->lowerCursorWhereFragment(range->lowerWhereClauseComparisonOperator());
+ if (upperBound)
+ sql += range->upper()->upperCursorWhereFragment(range->upperWhereClauseComparisonOperator());
sql += "objectStoreId = ? ORDER BY ";
IDBCursor::Direction direction = static_cast<IDBCursor::Direction>(tmpDirection);
@@ -425,10 +425,10 @@ void IDBObjectStoreBackendImpl::openCursorInternal(ScriptExecutionContext*, Pass
ASSERT_UNUSED(ok, ok); // FIXME: Better error handling?
int currentColumn = 1;
- if (leftBound)
- currentColumn += range->left()->bind(*query, currentColumn);
- if (rightBound)
- currentColumn += range->right()->bind(*query, currentColumn);
+ if (lowerBound)
+ currentColumn += range->lower()->bind(*query, currentColumn);
+ if (upperBound)
+ currentColumn += range->upper()->bind(*query, currentColumn);
query->bindInt64(currentColumn, objectStore->id());
if (query->step() != SQLResultRow) {
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 53c65a2..1d0c371 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,25 @@
+2010-11-26 Jeremy Orlow <jorlow at chromium.org>
+
+ Reviewed by Steve Block.
+
+ Make IDBKeyRange match the spec
+ https://bugs.webkit.org/show_bug.cgi?id=50105
+
+ Remove flags and instead add two booleans for being open.
+ Change left to lower and right to upper everywhere.
+
+ * public/WebIDBKeyRange.h:
+ (WebKit::WebIDBKeyRange::WebIDBKeyRange):
+ * src/WebIDBKeyRange.cpp:
+ (WebKit::WebIDBKeyRange::assign):
+ (WebKit::WebIDBKeyRange::left):
+ (WebKit::WebIDBKeyRange::right):
+ (WebKit::WebIDBKeyRange::lower):
+ (WebKit::WebIDBKeyRange::upper):
+ (WebKit::WebIDBKeyRange::lowerOpen):
+ (WebKit::WebIDBKeyRange::upperOpen):
+ (WebKit::WebIDBKeyRange::flags):
+
2010-11-25 Jeremy Orlow <jorlow at chromium.org>
Reviewed by Steve Block.
diff --git a/WebKit/chromium/public/WebIDBKeyRange.h b/WebKit/chromium/public/WebIDBKeyRange.h
index 82953ce..6a9c6da 100644
--- a/WebKit/chromium/public/WebIDBKeyRange.h
+++ b/WebKit/chromium/public/WebIDBKeyRange.h
@@ -41,14 +41,22 @@ public:
~WebIDBKeyRange() { reset(); }
WebIDBKeyRange(const WebIDBKeyRange& keyRange) { assign(keyRange); }
- WebIDBKeyRange(const WebIDBKey& left, const WebIDBKey& right, unsigned short flags) { assign(left, right, flags); }
+ WebIDBKeyRange(const WebIDBKey& lower, const WebIDBKey& upper, bool lowerOpen, bool upperOpen) { assign(lower, upper, lowerOpen, upperOpen); }
+ // FIXME: Remove next 3 methods after next roll.
+ WebIDBKeyRange(const WebIDBKey& lower, const WebIDBKey& upper, unsigned short flags) { assign(lower, upper, flags); }
+ WEBKIT_API void assign(const WebIDBKey& lower, const WebIDBKey& upper, unsigned short flags);
+ WEBKIT_API unsigned short flags() const;
WEBKIT_API WebIDBKey left() const;
WEBKIT_API WebIDBKey right() const;
- WEBKIT_API unsigned short flags() const;
+
+ WEBKIT_API WebIDBKey lower() const;
+ WEBKIT_API WebIDBKey upper() const;
+ WEBKIT_API bool lowerOpen() const;
+ WEBKIT_API bool upperOpen() const;
WEBKIT_API void assign(const WebIDBKeyRange&);
- WEBKIT_API void assign(const WebIDBKey& left, const WebIDBKey& right, unsigned short flags);
+ WEBKIT_API void assign(const WebIDBKey& lower, const WebIDBKey& upper, bool lowerOpen, bool upperOpen);
WEBKIT_API void reset();
#if WEBKIT_IMPLEMENTATION
diff --git a/WebKit/chromium/src/WebIDBKeyRange.cpp b/WebKit/chromium/src/WebIDBKeyRange.cpp
index 720af5f..ec5b7c2 100644
--- a/WebKit/chromium/src/WebIDBKeyRange.cpp
+++ b/WebKit/chromium/src/WebIDBKeyRange.cpp
@@ -39,12 +39,24 @@ void WebIDBKeyRange::assign(const WebIDBKeyRange& other)
m_private = other.m_private;
}
-void WebIDBKeyRange::assign(const WebIDBKey& left, const WebIDBKey& right, unsigned short flags)
+void WebIDBKeyRange::assign(const WebIDBKey& lower, const WebIDBKey& upper, bool lowerOpen, bool upperOpen)
{
- if (left.type() == WebIDBKey::InvalidType && right.type() == WebIDBKey::InvalidType)
+ if (lower.type() == WebIDBKey::InvalidType && upper.type() == WebIDBKey::InvalidType)
m_private = 0;
else
- m_private = IDBKeyRange::create(left, right, flags);
+ m_private = IDBKeyRange::create(lower, upper, lowerOpen, upperOpen);
+}
+
+// FIXME: Remove this after next roll.
+void WebIDBKeyRange::assign(const WebIDBKey& lower, const WebIDBKey& upper, unsigned short flags)
+{
+ bool lowerOpen = !!(flags & 1);
+ bool upperOpen = !!(flags & 2);
+
+ if (lower.type() == WebIDBKey::InvalidType && upper.type() == WebIDBKey::InvalidType)
+ m_private = 0;
+ else
+ m_private = IDBKeyRange::create(lower, upper, lowerOpen, upperOpen);
}
void WebIDBKeyRange::reset()
@@ -54,23 +66,50 @@ void WebIDBKeyRange::reset()
WebIDBKey WebIDBKeyRange::left() const
{
+ return lower();
+}
+
+WebIDBKey WebIDBKeyRange::right() const
+{
+ return upper();
+}
+
+WebIDBKey WebIDBKeyRange::lower() const
+{
if (!m_private.get())
return WebIDBKey::createInvalid();
- return m_private->left();
+ return m_private->lower();
}
-WebIDBKey WebIDBKeyRange::right() const
+WebIDBKey WebIDBKeyRange::upper() const
{
if (!m_private.get())
return WebIDBKey::createInvalid();
- return m_private->right();
+ return m_private->upper();
+}
+
+bool WebIDBKeyRange::lowerOpen() const
+{
+ return m_private.get() && m_private->lowerOpen();
}
+bool WebIDBKeyRange::upperOpen() const
+{
+ return m_private.get() && m_private->upperOpen();
+}
+
+// FIXME: Remove this after next roll.
unsigned short WebIDBKeyRange::flags() const
{
if (!m_private.get())
return 0;
- return m_private->flags();
+
+ unsigned short flags = 0;
+ if (m_private->lowerOpen())
+ flags |= 1;
+ if (m_private->upperOpen())
+ flags |= 2;
+ return flags;
}
WebIDBKeyRange::WebIDBKeyRange(const PassRefPtr<IDBKeyRange>& value)
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list