Changeset 99229 in webkit
- Timestamp:
- Nov 3, 2011 12:41:31 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r99228 r99229 1 2011-11-03 Joshua Bell <jsbell@chromium.org> 2 3 IndexedDB result of deleting a record should be true or false 4 https://bugs.webkit.org/show_bug.cgi?id=60197 5 6 Reviewed by David Levin. 7 8 Add tests for IDBObjectStore.delete() - should succeed if 9 record exists or not, and return true/false as success value. 10 11 * storage/indexeddb/mozilla/delete-result-expected.txt: Added. 12 * storage/indexeddb/mozilla/delete-result.html: Added. 13 * storage/indexeddb/objectstore-basics-expected.txt: 14 * storage/indexeddb/objectstore-basics.html: 15 1 16 2011-11-03 Adam Barth <abarth@webkit.org> 2 17 -
trunk/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt
r98563 r99229 91 91 store.delete('key') 92 92 removeSuccess(): 93 PASS event.target.result is null 93 PASS event.target.result is true 94 store.delete('key') 95 removeSuccessButFalse(): 96 PASS event.target.result is false 94 97 store = event.target.source 95 98 Passing an invalid key into store.get(). -
trunk/LayoutTests/storage/indexeddb/objectstore-basics.html
r99220 r99229 237 237 { 238 238 debug("removeSuccess():"); 239 shouldBeNull("event.target.result"); 239 shouldBe("event.target.result", "true"); 240 241 request = evalAndLog("store.delete('key')"); 242 request.onsuccess = removeSuccessButFalse; 243 request.onerror = unexpectedErrorCallback; 244 } 245 246 function removeSuccessButFalse() 247 { 248 debug("removeSuccessButFalse():"); 249 shouldBe("event.target.result", "false"); 240 250 var store = evalAndLog("store = event.target.source"); 241 251 -
trunk/Source/WebCore/ChangeLog
r99228 r99229 1 2011-11-03 Joshua Bell <jsbell@chromium.org> 2 3 IndexedDB result of deleting a record should be true or false 4 https://bugs.webkit.org/show_bug.cgi?id=60197 5 6 Reviewed by David Levin. 7 8 IDBObjectStore.delete() was incorrectly firing an error if there 9 was no record to remove. Match the spec, and return true/false 10 as success values instead. Bring JSC binding implementation of 11 SerializedScriptValue more in line with V8 version for methods 12 called from IDB code. 13 14 Test: storage/indexeddb/mozilla/delete-result.html 15 16 * bindings/js/SerializedScriptValue.cpp: 17 (WebCore::SerializedScriptValue::createFromWire): 18 (WebCore::SerializedScriptValue::undefinedValue): 19 (WebCore::SerializedScriptValue::booleanValue): 20 * bindings/js/SerializedScriptValue.h: 21 * bindings/v8/SerializedScriptValue.cpp: 22 (WebCore::SerializedScriptValue::nullValue): 23 (WebCore::SerializedScriptValue::undefinedValue): 24 (WebCore::SerializedScriptValue::booleanValue): 25 * bindings/v8/SerializedScriptValue.h: 26 * storage/IDBObjectStoreBackendImpl.cpp: 27 (WebCore::IDBObjectStoreBackendImpl::deleteInternal): 28 1 29 2011-11-03 Adam Barth <abarth@webkit.org> 2 30 -
trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp
r99126 r99229 127 127 * | ZeroTag 128 128 * | OneTag 129 * | FalseTag 130 * | TrueTag 129 131 * | DoubleTag <value:double> 130 132 * | DateTag <value:double> … … 271 273 writeLittleEndian(out, s.length()); 272 274 return writeLittleEndian(out, s.impl()->characters(), s.length()); 275 } 276 277 static void serializeUndefined(Vector<uint8_t>& out) 278 { 279 writeLittleEndian(out, CurrentVersion); 280 writeLittleEndian<uint8_t>(out, UndefinedTag); 281 } 282 283 static void serializeBoolean(bool value, Vector<uint8_t>& out) 284 { 285 writeLittleEndian(out, CurrentVersion); 286 writeLittleEndian<uint8_t>(out, value ? TrueTag : FalseTag); 273 287 } 274 288 … … 1467 1481 } 1468 1482 1483 PassRefPtr<SerializedScriptValue> SerializedScriptValue::undefinedValue() 1484 { 1485 Vector<uint8_t> buffer; 1486 CloneSerializer::serializeUndefined(buffer); 1487 return adoptRef(new SerializedScriptValue(buffer)); 1488 } 1489 1490 PassRefPtr<SerializedScriptValue> SerializedScriptValue::booleanValue(bool value) 1491 { 1492 Vector<uint8_t> buffer; 1493 CloneSerializer::serializeBoolean(value, buffer); 1494 return adoptRef(new SerializedScriptValue(buffer)); 1495 } 1496 1469 1497 void SerializedScriptValue::maybeThrowExceptionIfSerializationFailed(ExecState* exec, SerializationReturnCode code) 1470 1498 { -
trunk/Source/WebCore/bindings/js/SerializedScriptValue.h
r97576 r99229 69 69 static PassRefPtr<SerializedScriptValue> create(); 70 70 static SerializedScriptValue* nullValue(); 71 static PassRefPtr<SerializedScriptValue> undefinedValue(); 72 static PassRefPtr<SerializedScriptValue> booleanValue(bool value); 71 73 72 74 String toString(); -
trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp
r98316 r99229 1932 1932 SerializedScriptValue* SerializedScriptValue::nullValue() 1933 1933 { 1934 // FIXME: This is not thread-safe. Move caching to callers. 1935 // https://bugs.webkit.org/show_bug.cgi?id=70833 1934 1936 DEFINE_STATIC_LOCAL(RefPtr<SerializedScriptValue>, nullValue, (0)); 1935 1937 if (!nullValue) { … … 1942 1944 } 1943 1945 1944 SerializedScriptValue*SerializedScriptValue::undefinedValue()1946 PassRefPtr<SerializedScriptValue> SerializedScriptValue::undefinedValue() 1945 1947 { 1946 DEFINE_STATIC_LOCAL(RefPtr<SerializedScriptValue>, undefinedValue, (0)); 1947 if (!undefinedValue) { 1948 Writer writer; 1949 writer.writeUndefined(); 1950 String wireData = StringImpl::adopt(writer.data()); 1951 undefinedValue = adoptRef(new SerializedScriptValue(wireData)); 1952 } 1953 return undefinedValue.get(); 1948 Writer writer; 1949 writer.writeUndefined(); 1950 String wireData = StringImpl::adopt(writer.data()); 1951 return adoptRef(new SerializedScriptValue(wireData)); 1952 } 1953 1954 PassRefPtr<SerializedScriptValue> SerializedScriptValue::booleanValue(bool value) 1955 { 1956 Writer writer; 1957 if (value) 1958 writer.writeTrue(); 1959 else 1960 writer.writeFalse(); 1961 String wireData = StringImpl::adopt(writer.data()); 1962 return adoptRef(new SerializedScriptValue(wireData)); 1954 1963 } 1955 1964 -
trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h
r97516 r99229 61 61 62 62 static SerializedScriptValue* nullValue(); 63 static SerializedScriptValue* undefinedValue(); 63 static PassRefPtr<SerializedScriptValue> undefinedValue(); 64 static PassRefPtr<SerializedScriptValue> booleanValue(bool value); 64 65 65 66 PassRefPtr<SerializedScriptValue> release(); -
trunk/Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp
r98278 r99229 315 315 RefPtr<IDBBackingStore::ObjectStoreRecordIdentifier> recordIdentifier = objectStore->m_backingStore->createInvalidRecordIdentifier(); 316 316 if (!objectStore->m_backingStore->keyExistsInObjectStore(objectStore->m_databaseId, objectStore->id(), *key, recordIdentifier.get())) { 317 callbacks->on Error(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Key does not exist in the object store."));317 callbacks->onSuccess(SerializedScriptValue::booleanValue(false)); 318 318 return; 319 319 } … … 328 328 329 329 objectStore->m_backingStore->deleteObjectStoreRecord(objectStore->m_databaseId, objectStore->id(), recordIdentifier.get()); 330 callbacks->onSuccess(SerializedScriptValue:: nullValue());330 callbacks->onSuccess(SerializedScriptValue::booleanValue(true)); 331 331 } 332 332
Note: See TracChangeset
for help on using the changeset viewer.