Index: content/test/data/indexeddb/empty_blob.html |
diff --git a/content/test/data/indexeddb/empty_blob.html b/content/test/data/indexeddb/empty_blob.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..49bb8b4b3f5dd053ed82c389b714af873911ebc3 |
--- /dev/null |
+++ b/content/test/data/indexeddb/empty_blob.html |
@@ -0,0 +1,109 @@ |
+<!DOCTYPE html> |
+<html> |
+<!-- |
+ Copyright 2015 The Chromium Authors. All rights reserved. |
+ Use of this source code is governed by a BSD-style license that can be |
+ found in the LICENSE file. |
+--> |
+<head> |
+<title>IDB Test that we can store and retrieve an empty blob</title> |
+<script src="common.js"></script> |
+<script> |
+ |
+// Constants. |
+var store_name = 'empty_blob'; |
+var blob_key = 'blob_key'; |
+var file_key = 'file_key'; |
+ |
+// Shared variables. |
+var db; |
+var emptyFileInput; |
+ |
+function test() { |
+ indexedDBTest(prepareDatabase, writeBlob); |
+} |
+ |
+function prepareDatabase() { |
+ db = event.target.result; |
+ db.createObjectStore(store_name); |
+} |
+ |
+function writeBlob() { |
+ debug("Writing blob."); |
+ |
+ put_blob = new Blob(); |
+ |
+ var put_tx = db.transaction(store_name, 'readwrite'); |
+ put_tx.onabort = unexpectedAbortCallback; |
+ var put_request = put_tx.objectStore(store_name).put(put_blob, blob_key); |
+ put_request.onerror = unexpectedErrorCallback; |
+ put_tx.oncomplete = function () { |
+ var get_tx = db.transaction(store_name); |
+ |
+ var get_request1 = get_tx.objectStore(store_name).get(blob_key); |
+ get_request1.onerror = unexpectedErrorCallback; |
+ get_request1.onsuccess = function(evt) { |
+ get_blob1 = evt.target.result; |
+ resultType = typeof get_blob1; |
+ shouldBe('resultType', '"object"'); |
+ shouldBe('get_blob1.size', 'put_blob.size'); |
+ }; |
+ |
+ var get_request2 = get_tx.objectStore(store_name).get(blob_key); |
+ get_request2.onerror = unexpectedErrorCallback; |
+ get_request2.onsuccess = function(evt) { |
+ get_blob2 = evt.target.result; |
+ resultType = typeof get_blob2; |
+ shouldBe('resultType', '"object"'); |
+ shouldBe('get_blob2.size', 'put_blob.size'); |
+ }; |
+ |
+ get_tx.onabort = unexpectedAbortCallback; |
+ get_tx.oncomplete = writeFile; |
+ }; |
+} |
+ |
+function writeFile() { |
+ put_file = new File([''], 'somefile', { |
+ type: 'application/x-special-snowflake', |
+ lastModified: new Date('1999-12-31T23:59:59Z') |
+ }); |
+ var put_tx = db.transaction(store_name, 'readwrite'); |
+ put_tx.objectStore(store_name).put(put_file, file_key); |
+ put_tx.onabort = unexpectedAbortCallback; |
+ put_tx.oncomplete = function() { |
+ var get_tx = db.transaction(store_name); |
+ get_tx.objectStore(store_name).get(file_key).onsuccess = function(e) { |
+ get_file = e.target.result; |
+ |
+ shouldBe('get_file.name', 'put_file.name'); |
+ shouldBe('get_file.size', 'put_file.size'); |
+ shouldBe('get_file.type', 'put_file.type'); |
+ shouldBe('get_file.lastModified', 'put_file.lastModified'); |
+ shouldBe('String(get_file.lastModifiedDate)', 'String(put_file.lastModifiedDate)'); |
+ }; |
+ get_tx.onabort = unexpectedAbortCallback; |
+ get_tx.oncomplete = deleteFile; |
+ }; |
+} |
+ |
+function deleteFile() { |
+ var tx = db.transaction(store_name, 'readwrite'); |
+ tx.objectStore(store_name).delete(file_key); |
+ tx.onabort = unexpectedAbortCallback; |
+ tx.oncomplete = deleteBlob; |
+} |
+ |
+function deleteBlob() { |
+ var tx = db.transaction(store_name, 'readwrite'); |
+ tx.objectStore(store_name).delete(blob_key); |
+ tx.onabort = unexpectedAbortCallback; |
+ tx.oncomplete = done; |
+} |
+ |
+</script> |
+</head> |
+<body onLoad="test()"> |
+ <div id="status">Starting...</div> |
+</body> |
+</html> |