Changeset 105137 in webkit
- Timestamp:
- Jan 17, 2012 2:51:55 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r105136 r105137 1 2012-01-17 Joshua Bell <jsbell@chromium.org> 2 3 IndexedDB: IDBIndex.get/getKey should yield undefined, not an error 4 https://bugs.webkit.org/show_bug.cgi?id=76116 5 6 Reviewed by Adam Barth. 7 8 * storage/indexeddb/cursor-index-delete-expected.txt: 9 * storage/indexeddb/cursor-index-delete.html: 10 * storage/indexeddb/duplicates-expected.txt: 11 * storage/indexeddb/duplicates.html: 12 * storage/indexeddb/index-basics-expected.txt: 13 * storage/indexeddb/index-basics.html: 14 1 15 2012-01-17 Philippe Normand <pnormand@igalia.com> 2 16 -
trunk/LayoutTests/storage/indexeddb/cursor-index-delete-expected.txt
r80171 r105137 44 44 event.target.result.delete() 45 45 index.get(1) 46 event.preventDefault() 46 PASS event.target.result is undefined 47 47 PASS successfullyParsed is true 48 48 -
trunk/LayoutTests/storage/indexeddb/cursor-index-delete.html
r99258 r105137 105 105 evalAndLog("event.target.result.delete()"); 106 106 request = evalAndLog("index.get(1)"); 107 request.onsuccess = unexpectedSuccessCallback;108 request.onerror = verifyObjectDeleted;107 request.onsuccess = verifyObjectDeleted; 108 request.onerror = unexpectedErrorCallback; 109 109 } 110 110 111 111 function verifyObjectDeleted() 112 112 { 113 evalAndLog("event.preventDefault()");113 shouldBe("event.target.result", "undefined"); 114 114 done(); 115 115 } -
trunk/LayoutTests/storage/indexeddb/duplicates-expected.txt
r80171 r105137 21 21 PASS event.target.result.y is "zzz" 22 22 indexObject.getKey('does not exist') 23 PASS event.target.errorCode is webkitIDBDatabaseException.NOT_FOUND_ERR 24 event.preventDefault() 23 PASS event.target.result is undefined 25 24 indexObject.get('does not exist') 26 PASS event.target.errorCode is webkitIDBDatabaseException.NOT_FOUND_ERR 27 event.preventDefault() 25 PASS event.target.result is undefined 28 26 indexObject.openKeyCursor() 29 27 PASS event.target.result === null is false … … 65 63 PASS event.target.result.y is "zzz" 66 64 indexObject.getKey('does not exist') 67 PASS event.target.errorCode is webkitIDBDatabaseException.NOT_FOUND_ERR 68 event.preventDefault() 65 PASS event.target.result is undefined 69 66 indexObject.get('does not exist') 70 PASS event.target.errorCode is webkitIDBDatabaseException.NOT_FOUND_ERR 71 event.preventDefault() 67 PASS event.target.result is undefined 72 68 indexObject.openKeyCursor() 73 69 PASS event.target.result === null is false -
trunk/LayoutTests/storage/indexeddb/duplicates.html
r99258 r105137 83 83 84 84 request = evalAndLog("indexObject.getKey('does not exist')"); 85 request.onsuccess = unexpectedSuccessCallback;86 request.onerror = getObjectDataFail;85 request.onsuccess = getObjectDataFail; 86 request.onerror = unexpectedErrorCallback; 87 87 } 88 88 89 89 function getObjectDataFail() 90 90 { 91 shouldBe("event.target.errorCode", "webkitIDBDatabaseException.NOT_FOUND_ERR"); 92 93 evalAndLog("event.preventDefault()"); 91 shouldBe("event.target.result", "undefined"); 94 92 95 93 request = evalAndLog("indexObject.get('does not exist')"); 96 request.onsuccess = unexpectedSuccessCallback;97 request.onerror = openKeyCursor;94 request.onsuccess = openKeyCursor; 95 request.onerror = unexpectedErrorCallback; 98 96 } 99 97 100 98 function openKeyCursor() 101 99 { 102 shouldBe("event.target.errorCode", "webkitIDBDatabaseException.NOT_FOUND_ERR"); 103 104 evalAndLog("event.preventDefault()"); 100 shouldBe("event.target.result", "undefined"); 105 101 106 102 window.request = evalAndLog("indexObject.openKeyCursor()"); -
trunk/LayoutTests/storage/indexeddb/index-basics-expected.txt
r103100 r105137 50 50 PASS event.target.result.y is "zzz" 51 51 indexObject.getKey('does not exist') 52 PASS event.target.errorCode is webkitIDBDatabaseException.NOT_FOUND_ERR 53 event.preventDefault() 52 PASS event.target.result is undefined 54 53 indexObject.get('does not exist') 55 PASS event.target.errorCode is webkitIDBDatabaseException.NOT_FOUND_ERR 56 event.preventDefault() 54 PASS event.target.result is undefined 57 55 indexObject4.getKey('value2') 58 56 PASS event.target.result is "key2" -
trunk/LayoutTests/storage/indexeddb/index-basics.html
r103100 r105137 10 10 11 11 description("Test the basics of IndexedDB's webkitIDBIndex."); 12 if (window.layoutTestController) 12 if (window.layoutTestController) 13 13 layoutTestController.waitUntilDone(); 14 14 … … 130 130 131 131 request = evalAndLog("indexObject.getKey('does not exist')"); 132 request.onsuccess = unexpectedSuccessCallback;133 request.onerror = getObjectDataFail;132 request.onsuccess = getObjectDataFail; 133 request.onerror = unexpectedSuccessCallback; 134 134 } 135 135 136 136 function getObjectDataFail() 137 137 { 138 shouldBe("event.target.errorCode", "webkitIDBDatabaseException.NOT_FOUND_ERR"); 139 140 evalAndLog("event.preventDefault()"); 138 shouldBe("event.target.result", "undefined"); 141 139 142 140 request = evalAndLog("indexObject.get('does not exist')"); 143 request.onsuccess = unexpectedSuccessCallback;144 request.onerror = getObjectData4;141 request.onsuccess = getObjectData4; 142 request.onerror = unexpectedSuccessCallback; 145 143 } 146 144 147 145 function getObjectData4() 148 146 { 149 shouldBe("event.target.errorCode", "webkitIDBDatabaseException.NOT_FOUND_ERR"); 150 evalAndLog("event.preventDefault()"); 147 shouldBe("event.target.result", "undefined"); 151 148 152 149 request = evalAndLog("indexObject4.getKey('value2')"); -
trunk/Source/WebCore/ChangeLog
r105135 r105137 1 2012-01-17 Joshua Bell <jsbell@chromium.org> 2 3 IndexedDB: IDBIndex.get/getKey should yield undefined, not an error 4 https://bugs.webkit.org/show_bug.cgi?id=76116 5 6 Pass an undefined value (for IDBIndex.get()) or a null key 7 (for IDBIndex.getKey()) back as the result, rather than raising 8 an exception. 9 10 Reviewed by Adam Barth. 11 12 Tests: storage/indexeddb/index-basics.html 13 storage/indexeddb/cursor-index-delete.html 14 storage/indexeddb/duplicates.html 15 16 * storage/IDBIndexBackendImpl.cpp: 17 (WebCore::IDBIndexBackendImpl::getInternal): 18 * storage/IDBRequest.cpp: 19 (WebCore::IDBRequest::onSuccess): 20 1 21 2012-01-17 Luke Macpherson <macpherson@chromium.org> 2 22 -
trunk/Source/WebCore/storage/IDBIndexBackendImpl.cpp
r104771 r105137 152 152 String value = index->m_backingStore->getObjectViaIndex(index->m_databaseId, index->m_objectStoreBackend->id(), index->id(), *key); 153 153 if (value.isNull()) { 154 callbacks->on Error(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Key does not exist in the index."));154 callbacks->onSuccess(SerializedScriptValue::undefinedValue()); 155 155 return; 156 156 } … … 159 159 RefPtr<IDBKey> keyResult = index->m_backingStore->getPrimaryKeyViaIndex(index->m_databaseId, index->m_objectStoreBackend->id(), index->id(), *key); 160 160 if (!keyResult) { 161 callbacks->on Error(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Key does not exist in the index."));161 callbacks->onSuccess(static_cast<IDBKey*>(0)); 162 162 return; 163 163 } -
trunk/Source/WebCore/storage/IDBRequest.cpp
r101645 r105137 232 232 { 233 233 ASSERT(!m_errorCode && m_errorMessage.isNull() && !m_result); 234 m_result = IDBAny::create(idbKey); 234 if (idbKey && idbKey->valid()) 235 m_result = IDBAny::create(idbKey); 236 else 237 m_result = IDBAny::create(SerializedScriptValue::undefinedValue()); 235 238 enqueueEvent(createSuccessEvent()); 236 239 }
Note: See TracChangeset
for help on using the changeset viewer.