Skip to content

Commit

Permalink
fixup! IndexedDB review fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
odinho committed Mar 31, 2014
1 parent 765c68f commit 1a9d933
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 211 deletions.
80 changes: 38 additions & 42 deletions IndexedDB/idbdatabase_close.htm
@@ -1,46 +1,42 @@
<!DOCTYPE html>
<html>
<head>
<title>IDBDatabase.close() - unblock the version change transaction created by an open database request</title>
<script type="text/javascript" src="support.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="text/javascript">
var db = null;
var bBlockEventFired = false;
var bUpgradeNeededEventFired = false;
var t = async_test();
<title>IDBDatabase.close() - unblock the version change transaction created by an open database request</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>

function RunTest() {
var rqOpen = window.indexedDB.open(databaseName, databaseVersion);
rqOpen.onsuccess = t.step_func( function(event) {
db = event.target.result;
var rqOpen2 = window.indexedDB.open(databaseName, databaseVersion + 1);
rqOpen2.onblocked = t.step_func( function (event) {
bBlockEventFired = true;
db.close();
});
rqOpen2.onerror = t.step_func( assert_database_error );;
rqOpen2.onsuccess = t.step_func( function (event) {
assert_true(bBlockEventFired && bUpgradeNeededEventFired, "version change transaction is not unblocked when existing database connection is closed")
t.done();
return;
});
rqOpen2.onupgradeneeded = t.step_func( function (event) {
bUpgradeNeededEventFired = true;
});
});
}
<script>
var db;
var versionchange_fired;
var blocked_fired;
var upgradeneeded_fired;
var t = async_test();
var open_rq = createdb(t);
var counter = 0;

add_completion_callback(function() { if(db) db.close(); });
open_rq.onupgradeneeded = function() {}
open_rq.onsuccess = function(e) {
db = e.target.result;
db.onversionchange = t.step_func(function(e) {
versionchange_fired = counter++;
});
var rq = window.indexedDB.open(db.name, db.version + 1);
rq.onblocked = t.step_func(function (e) {
blocked_fired = counter++;
db.close();
});
rq.onupgradeneeded = t.step_func(function (e) {
upgradeneeded_fired = counter++;
});
rq.onsuccess = t.step_func(function (e) {
assert_equals(versionchange_fired, 0, 'block event fired #')
assert_equals(blocked_fired, 1, 'block event fired #')
assert_equals(upgradeneeded_fired, 2, 'second upgradeneeded event fired #')

setup(function() {
var rqDelete = window.indexedDB.deleteDatabase(databaseName);
rqDelete.onsuccess = t.step_func( RunTest );
});
</script>
</head>
<body>
<div id="log"></div>
</body>
</html>
t.done();
});
rq.onerror = fail(t, 'Unexpected database deletion error');
};

</script>

<div id="log"></div>
67 changes: 28 additions & 39 deletions IndexedDB/idbdatabase_close2.htm
@@ -1,43 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<title>IDBDatabase.close() - unblock the delete database request</title>
<script type="text/javascript" src="support.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="text/javascript">
var db = null;
var bBlockEventFired = false;
var t = async_test();
<title>IDBDatabase.close() - unblock the delete database request</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>

function RunTest() {
var rqOpen = window.indexedDB.open(databaseName, databaseVersion);
rqOpen.onsuccess = t.step_func( function(event)
{
db = event.target.result;
var rqDeleteDB = window.indexedDB.deleteDatabase(databaseName);
rqDeleteDB.onblocked = t.step_func( function (event) {
bBlockEventFired = true;
db.close();
});
rqDeleteDB.onerror = t.step_func( assert_deleteDatabase_request_error );
rqDeleteDB.onsuccess = t.step_func( function (event) {
assert_true(bBlockEventFired, "delete database request not unblocked when existing database connection is closed")
t.done();
return;
});
});
}
<script>

add_completion_callback(function() { if(db) db.close(); });
var db;
var blocked_fired = false;
var t = async_test();
var open_rq = createdb(t);

setup( function() {
var rqDelete = window.indexedDB.deleteDatabase(databaseName);
rqDelete.onsuccess = t.step_func( RunTest );
});
</script>
</head>
<body>
<div id="log"></div>
</body>
</html>
open_rq.onupgradeneeded = function() {}
open_rq.onsuccess = function(e) {
db = e.target.result;

var rq = window.indexedDB.deleteDatabase(databaseName);
rq.onblocked = t.step_func(function (e) {
blocked_fired = true;
db.close();
});
rq.onsuccess = t.step_func(function (e) {
assert_true(blocked_fired, "block event fired")
t.done();
});
rq.onerror = fail(t, 'Unexpected database deletion error');
};

</script>

<div id="log"></div>
69 changes: 47 additions & 22 deletions IndexedDB/idbfactory_open9.htm
Expand Up @@ -5,31 +5,56 @@
<script src=support.js></script>

<script>
test(function() {
[-1, -0.5, 0, 0.5, 0.8, 0x20000000000000, NaN, Infinity, -Infinity, "foo", undefined, null, false,
{ toString: function() { assert_unreached("toString should not be called for ToPrimitive [Number]"); },
valueOf: function() { return 0; } },
{ toString: function() { return 0; },
valueOf: function() { return {}; } },
{ toString: function() { return {}; },
valueOf: function() { return {}; } }
].forEach(function(val) {
function should_throw(val, name) {
if (!name) {
name = ((typeof val == "object" && val) ? "object" : format_value(val))
}
test(function() {
assert_throws(new TypeError(), function() {
window.indexedDB.open(databaseName, val);
window.indexedDB.open('test', val);
});
}, "Calling open() with version argument " +
((typeof val == "object" && val) ? "object" : format_value(val)) +
" should throw TypeError.");
});
[1.5].forEach(function(val) {
test(function() {
window.indexedDB.open(databaseName, val);
}, "Calling open() with version argument " +
((typeof val == "object" && val) ? "object" : format_value(val)) +
" should not throw.");
});
});
}, "Calling open() with version argument " + name + " should throw TypeError.")
}

should_throw(-1)
should_throw(-0.5)
should_throw(0)
should_throw(0.5)
should_throw(0.8)
should_throw(0x20000000000000)
should_throw(NaN)
should_throw(Infinity)
should_throw(-Infinity)
should_throw("foo")
should_throw(undefined)
should_throw(null)
should_throw(false)

should_throw({
toString: function() { assert_unreached("toString should not be called for ToPrimitive [Number]"); },
valueOf: function() { return 0; }
})
should_throw({
toString: function() { return 0; },
valueOf: function() { return {}; }
}, 'object (second)')
should_throw({
toString: function() { return {}; },
valueOf: function() { return {}; },
}, 'object (third)')

/* Valid */

function should_work(val) {
var t = async_test("Calling open() with version argument 1.5 should not throw.")
var rq = createdb(t)
rq.onupgradeneeded = function() {
t.done()
}
}

should_work(1.5)

</script>

<div id=log></div>
108 changes: 0 additions & 108 deletions IndexedDB/manifest.txt

This file was deleted.

0 comments on commit 1a9d933

Please sign in to comment.