Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// META: title=Blob Content Type
// META: script=resources/support.js
// META: timeout=long
indexeddb_test(
function upgrade(t, db) {
db.createObjectStore('store');
},
function success(t, db) {
var type = 'x-files/trust-no-one';
var blob = new Blob(['mulder', 'scully'], {type: type});
assert_equals(blob.type, type, 'Blob type should match constructor option');
var tx = db.transaction('store', 'readwrite', {durability: 'relaxed'});
tx.objectStore('store').put(blob, 'key');
tx.oncomplete = t.step_func(function() {
var tx = db.transaction('store', 'readonly', {durability: 'relaxed'});
tx.objectStore('store').get('key').onsuccess = t.step_func(function(e) {
var result = e.target.result;
assert_equals(result.type, type, 'Blob type should survive round-trip');
var url = URL.createObjectURL(result);
var xhr = new XMLHttpRequest(), async = true;
xhr.open('GET', url, async);
xhr.send();
xhr.onreadystatechange = t.step_func(function() {
if (xhr.readyState !== XMLHttpRequest.DONE)
return;
assert_equals(xhr.getResponseHeader('Content-Type'), type,
'Blob type should be preserved when fetched');
t.done();
});
});
});
},
'Ensure that content type round trips when reading blob data'
);