<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[195423] trunk/LayoutTests</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/195423">195423</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2016-01-21 15:15:46 -0800 (Thu, 21 Jan 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Modern IDB: Make -private copies of each w3c IDB test.
https://bugs.webkit.org/show_bug.cgi?id=153319

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* indexeddb/support.js: If the test filename ends with -private.htm(l), enable private browsing.

* indexeddb/abort-in-initial-upgradeneeded-private-expected.txt: Added.
* indexeddb/abort-in-initial-upgradeneeded-private.html: Added.
* indexeddb/close-in-upgradeneeded-private-expected.txt: Added.
* indexeddb/close-in-upgradeneeded-private.html: Added.
* indexeddb/cursor-overloads-private-expected.txt: Added.
* indexeddb/cursor-overloads-private.html: Added.
* indexeddb/idb_webworkers-private-expected.txt: Added.
* indexeddb/idb_webworkers-private.html: Added.
* indexeddb/idbcursor-advance-continue-async-private-expected.txt: Added.
* indexeddb/idbcursor-advance-continue-async-private.html: Added.
* indexeddb/idbcursor-advance-invalid-private-expected.txt: Added.
* indexeddb/idbcursor-advance-invalid-private.html: Added.
* indexeddb/idbcursor-advance-private-expected.txt: Added.
* indexeddb/idbcursor-advance-private.html: Added.
* indexeddb/idbcursor-continue-private-expected.txt: Added.
* indexeddb/idbcursor-continue-private.html: Added.
* indexeddb/idbcursor-direction-index-keyrange-private-expected.txt: Added.
* indexeddb/idbcursor-direction-index-keyrange-private.html: Added.
* indexeddb/idbcursor-direction-index-private-expected.txt: Added.
* indexeddb/idbcursor-direction-index-private.html: Added.
* indexeddb/idbcursor-direction-objectstore-keyrange-private-expected.txt: Added.
* indexeddb/idbcursor-direction-objectstore-keyrange-private.html: Added.
* indexeddb/idbcursor-direction-objectstore-private-expected.txt: Added.
* indexeddb/idbcursor-direction-objectstore-private.html: Added.
* indexeddb/idbcursor-direction-private-expected.txt: Added.
* indexeddb/idbcursor-direction-private.html: Added.
* indexeddb/idbcursor-key-private-expected.txt: Added.
* indexeddb/idbcursor-key-private.html: Added.
* indexeddb/idbcursor-primarykey-private-expected.txt: Added.
* indexeddb/idbcursor-primarykey-private.html: Added.
* indexeddb/idbcursor-reused-private-expected.txt: Added.
* indexeddb/idbcursor-reused-private.html: Added.
* indexeddb/idbcursor-source-private-expected.txt: Added.
* indexeddb/idbcursor-source-private.html: Added.
* indexeddb/idbcursor_advance_index-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index-private.html: Added.
* indexeddb/idbcursor_advance_index2-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index2-private.html: Added.
* indexeddb/idbcursor_advance_index3-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index3-private.html: Added.
* indexeddb/idbcursor_advance_index5-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index5-private.html: Added.
* indexeddb/idbcursor_advance_index6-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index6-private.html: Added.
* indexeddb/idbcursor_advance_index7-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index7-private.html: Added.
* indexeddb/idbcursor_advance_index8-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index8-private.html: Added.
* indexeddb/idbcursor_advance_index9-private-expected.txt: Added.
* indexeddb/idbcursor_advance_index9-private.html: Added.
* indexeddb/idbcursor_advance_objectstore-private-expected.txt: Added.
* indexeddb/idbcursor_advance_objectstore-private.html: Added.
* indexeddb/idbcursor_advance_objectstore2-private-expected.txt: Added.
* indexeddb/idbcursor_advance_objectstore2-private.html: Added.
* indexeddb/idbcursor_advance_objectstore3-private-expected.txt: Added.
* indexeddb/idbcursor_advance_objectstore3-private.html: Added.
* indexeddb/idbcursor_advance_objectstore4-private-expected.txt: Added.
* indexeddb/idbcursor_advance_objectstore4-private.html: Added.
* indexeddb/idbcursor_advance_objectstore5-private-expected.txt: Added.
* indexeddb/idbcursor_advance_objectstore5-private.html: Added.
* indexeddb/idbcursor_continue_index-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index-private.html: Added.
* indexeddb/idbcursor_continue_index2-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index2-private.html: Added.
* indexeddb/idbcursor_continue_index3-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index3-private.html: Added.
* indexeddb/idbcursor_continue_index4-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index4-private.html: Added.
* indexeddb/idbcursor_continue_index5-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index5-private.html: Added.
* indexeddb/idbcursor_continue_index6-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index6-private.html: Added.
* indexeddb/idbcursor_continue_index7-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index7-private.html: Added.
* indexeddb/idbcursor_continue_index8-private-expected.txt: Added.
* indexeddb/idbcursor_continue_index8-private.html: Added.
* indexeddb/idbcursor_continue_invalid-private-expected.txt: Added.
* indexeddb/idbcursor_continue_invalid-private.html: Added.
* indexeddb/idbcursor_continue_objectstore-private-expected.txt: Added.
* indexeddb/idbcursor_continue_objectstore-private.html: Added.
* indexeddb/idbcursor_continue_objectstore2-private-expected.txt: Added.
* indexeddb/idbcursor_continue_objectstore2-private.html: Added.
* indexeddb/idbcursor_continue_objectstore3-private-expected.txt: Added.
* indexeddb/idbcursor_continue_objectstore3-private.html: Added.
* indexeddb/idbcursor_continue_objectstore4-private-expected.txt: Added.
* indexeddb/idbcursor_continue_objectstore4-private.html: Added.
* indexeddb/idbcursor_continue_objectstore5-private-expected.txt: Added.
* indexeddb/idbcursor_continue_objectstore5-private.html: Added.
* indexeddb/idbcursor_continue_objectstore6-private-expected.txt: Added.
* indexeddb/idbcursor_continue_objectstore6-private.html: Added.
* indexeddb/idbcursor_delete_index-private-expected.txt: Added.
* indexeddb/idbcursor_delete_index-private.html: Added.
* indexeddb/idbcursor_delete_index2-private-expected.txt: Added.
* indexeddb/idbcursor_delete_index2-private.html: Added.
* indexeddb/idbcursor_delete_index3-private-expected.txt: Added.
* indexeddb/idbcursor_delete_index3-private.html: Added.
* indexeddb/idbcursor_delete_index4-private-expected.txt: Added.
* indexeddb/idbcursor_delete_index4-private.html: Added.
* indexeddb/idbcursor_delete_index5-private-expected.txt: Added.
* indexeddb/idbcursor_delete_index5-private.html: Added.
* indexeddb/idbcursor_delete_objectstore-private-expected.txt: Added.
* indexeddb/idbcursor_delete_objectstore-private.html: Added.
* indexeddb/idbcursor_delete_objectstore2-private-expected.txt: Added.
* indexeddb/idbcursor_delete_objectstore2-private.html: Added.
* indexeddb/idbcursor_delete_objectstore3-private-expected.txt: Added.
* indexeddb/idbcursor_delete_objectstore3-private.html: Added.
* indexeddb/idbcursor_delete_objectstore4-private-expected.txt: Added.
* indexeddb/idbcursor_delete_objectstore4-private.html: Added.
* indexeddb/idbcursor_delete_objectstore5-private-expected.txt: Added.
* indexeddb/idbcursor_delete_objectstore5-private.html: Added.
* indexeddb/idbcursor_iterating-private-expected.txt: Added.
* indexeddb/idbcursor_iterating-private.html: Added.
* indexeddb/idbcursor_iterating_index-private-expected.txt: Added.
* indexeddb/idbcursor_iterating_index-private.html: Added.
* indexeddb/idbcursor_iterating_index2-private-expected.txt: Added.
* indexeddb/idbcursor_iterating_index2-private.html: Added.
* indexeddb/idbcursor_iterating_objectstore-private-expected.txt: Added.
* indexeddb/idbcursor_iterating_objectstore-private.html: Added.
* indexeddb/idbcursor_iterating_objectstore2-private-expected.txt: Added.
* indexeddb/idbcursor_iterating_objectstore2-private.html: Added.
* indexeddb/idbcursor_update_index-private-expected.txt: Added.
* indexeddb/idbcursor_update_index-private.html: Added.
* indexeddb/idbcursor_update_index2-private-expected.txt: Added.
* indexeddb/idbcursor_update_index2-private.html: Added.
* indexeddb/idbcursor_update_index3-private-expected.txt: Added.
* indexeddb/idbcursor_update_index3-private.html: Added.
* indexeddb/idbcursor_update_index4-private-expected.txt: Added.
* indexeddb/idbcursor_update_index4-private.html: Added.
* indexeddb/idbcursor_update_index5-private-expected.txt: Added.
* indexeddb/idbcursor_update_index5-private.html: Added.
* indexeddb/idbcursor_update_index6-private-expected.txt: Added.
* indexeddb/idbcursor_update_index6-private.html: Added.
* indexeddb/idbcursor_update_index7-private-expected.txt: Added.
* indexeddb/idbcursor_update_index7-private.html: Added.
* indexeddb/idbcursor_update_objectstore-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore-private.html: Added.
* indexeddb/idbcursor_update_objectstore2-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore2-private.html: Added.
* indexeddb/idbcursor_update_objectstore3-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore3-private.html: Added.
* indexeddb/idbcursor_update_objectstore4-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore4-private.html: Added.
* indexeddb/idbcursor_update_objectstore5-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore5-private.html: Added.
* indexeddb/idbcursor_update_objectstore6-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore6-private.html: Added.
* indexeddb/idbcursor_update_objectstore7-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore7-private.html: Added.
* indexeddb/idbcursor_update_objectstore8-private-expected.txt: Added.
* indexeddb/idbcursor_update_objectstore8-private.html: Added.
* indexeddb/idbdatabase_close-private-expected.txt: Added.
* indexeddb/idbdatabase_close-private.html: Added.
* indexeddb/idbdatabase_close2-private-expected.txt: Added.
* indexeddb/idbdatabase_close2-private.html: Added.
* indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html: Added.
* indexeddb/idbdatabase_createObjectStore-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore-private.html: Added.
* indexeddb/idbdatabase_createObjectStore10-1000ends-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore10-1000ends-private.html: Added.
* indexeddb/idbdatabase_createObjectStore10-emptyname-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore10-emptyname-private.html: Added.
* indexeddb/idbdatabase_createObjectStore11-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore11-private.html: Added.
* indexeddb/idbdatabase_createObjectStore2-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore2-private.html: Added.
* indexeddb/idbdatabase_createObjectStore3-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore3-private.html: Added.
* indexeddb/idbdatabase_createObjectStore4-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore4-private.html: Added.
* indexeddb/idbdatabase_createObjectStore5-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore5-private.html: Added.
* indexeddb/idbdatabase_createObjectStore6-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore6-private.html: Added.
* indexeddb/idbdatabase_createObjectStore7-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore7-private.html: Added.
* indexeddb/idbdatabase_createObjectStore8-parameters-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore8-parameters-private.html: Added.
* indexeddb/idbdatabase_createObjectStore9-invalidparameters-private-expected.txt: Added.
* indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html: Added.
* indexeddb/idbdatabase_deleteObjectStore-private-expected.txt: Added.
* indexeddb/idbdatabase_deleteObjectStore-private.html: Added.
* indexeddb/idbdatabase_deleteObjectStore2-private-expected.txt: Added.
* indexeddb/idbdatabase_deleteObjectStore2-private.html: Added.
* indexeddb/idbdatabase_deleteObjectStore3-private-expected.txt: Added.
* indexeddb/idbdatabase_deleteObjectStore3-private.html: Added.
* indexeddb/idbdatabase_deleteObjectStore4-not_reused-private-expected.txt: Added.
* indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html: Added.
* indexeddb/idbdatabase_transaction-private-expected.txt: Added.
* indexeddb/idbdatabase_transaction-private.html: Added.
* indexeddb/idbdatabase_transaction2-private-expected.txt: Added.
* indexeddb/idbdatabase_transaction2-private.html: Added.
* indexeddb/idbdatabase_transaction3-private-expected.txt: Added.
* indexeddb/idbdatabase_transaction3-private.html: Added.
* indexeddb/idbdatabase_transaction4-private-expected.txt: Added.
* indexeddb/idbdatabase_transaction4-private.html: Added.
* indexeddb/idbdatabase_transaction5-private-expected.txt: Added.
* indexeddb/idbdatabase_transaction5-private.html: Added.
* indexeddb/idbfactory_cmp-private-expected.txt: Added.
* indexeddb/idbfactory_cmp-private.html: Added.
* indexeddb/idbfactory_cmp2-private-expected.txt: Added.
* indexeddb/idbfactory_cmp2-private.html: Added.
* indexeddb/idbfactory_deleteDatabase-private-expected.txt: Added.
* indexeddb/idbfactory_deleteDatabase-private.html: Added.
* indexeddb/idbfactory_deleteDatabase2-private-expected.txt: Added.
* indexeddb/idbfactory_deleteDatabase2-private.html: Added.
* indexeddb/idbfactory_deleteDatabase3-private-expected.txt: Added.
* indexeddb/idbfactory_deleteDatabase3-private.html: Added.
* indexeddb/idbfactory_deleteDatabase4-private-expected.txt: Added.
* indexeddb/idbfactory_deleteDatabase4-private.html: Added.
* indexeddb/idbfactory_open-private-expected.txt: Added.
* indexeddb/idbfactory_open-private.html: Added.
* indexeddb/idbfactory_open10-private-expected.txt: Added.
* indexeddb/idbfactory_open10-private.html: Added.
* indexeddb/idbfactory_open11-private-expected.txt: Added.
* indexeddb/idbfactory_open11-private.html: Added.
* indexeddb/idbfactory_open12-private-expected.txt: Added.
* indexeddb/idbfactory_open12-private.html: Added.
* indexeddb/idbfactory_open2-private-expected.txt: Added.
* indexeddb/idbfactory_open2-private.html: Added.
* indexeddb/idbfactory_open3-private-expected.txt: Added.
* indexeddb/idbfactory_open3-private.html: Added.
* indexeddb/idbfactory_open4-private-expected.txt: Added.
* indexeddb/idbfactory_open4-private.html: Added.
* indexeddb/idbfactory_open5-private-expected.txt: Added.
* indexeddb/idbfactory_open5-private.html: Added.
* indexeddb/idbfactory_open6-private-expected.txt: Added.
* indexeddb/idbfactory_open6-private.html: Added.
* indexeddb/idbfactory_open7-private-expected.txt: Added.
* indexeddb/idbfactory_open7-private.html: Added.
* indexeddb/idbfactory_open8-private-expected.txt: Added.
* indexeddb/idbfactory_open8-private.html: Added.
* indexeddb/idbfactory_open9-private-expected.txt: Added.
* indexeddb/idbfactory_open9-private.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm.
* indexeddb/idbfactory_open9.htm:
* indexeddb/idbindex-multientry-arraykeypath-private-expected.txt: Added.
* indexeddb/idbindex-multientry-arraykeypath-private.html: Added.
* indexeddb/idbindex-multientry-big-private-expected.txt: Added.
* indexeddb/idbindex-multientry-big-private.html: Added.
* indexeddb/idbindex-multientry-private-expected.txt: Added.
* indexeddb/idbindex-multientry-private.html: Added.
* indexeddb/idbindex_count-private-expected.txt: Added.
* indexeddb/idbindex_count-private.html: Added.
* indexeddb/idbindex_count2-private-expected.txt: Added.
* indexeddb/idbindex_count2-private.html: Added.
* indexeddb/idbindex_count3-private-expected.txt: Added.
* indexeddb/idbindex_count3-private.html: Added.
* indexeddb/idbindex_count4-private-expected.txt: Added.
* indexeddb/idbindex_count4-private.html: Added.
* indexeddb/idbindex_get-private-expected.txt: Added.
* indexeddb/idbindex_get-private.html: Added.
* indexeddb/idbindex_get2-private-expected.txt: Added.
* indexeddb/idbindex_get2-private.html: Added.
* indexeddb/idbindex_get3-private-expected.txt: Added.
* indexeddb/idbindex_get3-private.html: Added.
* indexeddb/idbindex_get4-private-expected.txt: Added.
* indexeddb/idbindex_get4-private.html: Added.
* indexeddb/idbindex_get5-private-expected.txt: Added.
* indexeddb/idbindex_get5-private.html: Added.
* indexeddb/idbindex_get6-private-expected.txt: Added.
* indexeddb/idbindex_get6-private.html: Added.
* indexeddb/idbindex_get7-private-expected.txt: Added.
* indexeddb/idbindex_get7-private.html: Added.
* indexeddb/idbindex_getKey-private-expected.txt: Added.
* indexeddb/idbindex_getKey-private.html: Added.
* indexeddb/idbindex_getKey2-private-expected.txt: Added.
* indexeddb/idbindex_getKey2-private.html: Added.
* indexeddb/idbindex_getKey3-private-expected.txt: Added.
* indexeddb/idbindex_getKey3-private.html: Added.
* indexeddb/idbindex_getKey4-private-expected.txt: Added.
* indexeddb/idbindex_getKey4-private.html: Added.
* indexeddb/idbindex_getKey5-private-expected.txt: Added.
* indexeddb/idbindex_getKey5-private.html: Added.
* indexeddb/idbindex_getKey6-private-expected.txt: Added.
* indexeddb/idbindex_getKey6-private.html: Added.
* indexeddb/idbindex_getKey7-private-expected.txt: Added.
* indexeddb/idbindex_getKey7-private.html: Added.
* indexeddb/idbindex_indexNames-private-expected.txt: Added.
* indexeddb/idbindex_indexNames-private.html: Added.
* indexeddb/idbindex_openCursor-private-expected.txt: Added.
* indexeddb/idbindex_openCursor-private.html: Added.
* indexeddb/idbindex_openCursor2-private-expected.txt: Added.
* indexeddb/idbindex_openCursor2-private.html: Added.
* indexeddb/idbindex_openKeyCursor-private-expected.txt: Added.
* indexeddb/idbindex_openKeyCursor-private.html: Added.
* indexeddb/idbindex_openKeyCursor2-private-expected.txt: Added.
* indexeddb/idbindex_openKeyCursor2-private.html: Added.
* indexeddb/idbindex_openKeyCursor3-private-expected.txt: Added.
* indexeddb/idbindex_openKeyCursor3-private.html: Added.
* indexeddb/idbkeyrange-private-expected.txt: Added.
* indexeddb/idbkeyrange-private.html: Added.
* indexeddb/idbkeyrange_incorrect-private-expected.txt: Added.
* indexeddb/idbkeyrange_incorrect-private.html: Added.
* indexeddb/idbobjectstore_add-private-expected.txt: Added.
* indexeddb/idbobjectstore_add-private.html: Added.
* indexeddb/idbobjectstore_add10-private-expected.txt: Added.
* indexeddb/idbobjectstore_add10-private.html: Added.
* indexeddb/idbobjectstore_add11-private-expected.txt: Added.
* indexeddb/idbobjectstore_add11-private.html: Added.
* indexeddb/idbobjectstore_add12-private-expected.txt: Added.
* indexeddb/idbobjectstore_add12-private.html: Added.
* indexeddb/idbobjectstore_add13-private-expected.txt: Added.
* indexeddb/idbobjectstore_add13-private.html: Added.
* indexeddb/idbobjectstore_add14-private-expected.txt: Added.
* indexeddb/idbobjectstore_add14-private.html: Added.
* indexeddb/idbobjectstore_add15-private-expected.txt: Added.
* indexeddb/idbobjectstore_add15-private.html: Added.
* indexeddb/idbobjectstore_add16-private-expected.txt: Added.
* indexeddb/idbobjectstore_add16-private.html: Added.
* indexeddb/idbobjectstore_add2-private-expected.txt: Added.
* indexeddb/idbobjectstore_add2-private.html: Added.
* indexeddb/idbobjectstore_add3-private-expected.txt: Added.
* indexeddb/idbobjectstore_add3-private.html: Added.
* indexeddb/idbobjectstore_add4-private-expected.txt: Added.
* indexeddb/idbobjectstore_add4-private.html: Added.
* indexeddb/idbobjectstore_add5-private-expected.txt: Added.
* indexeddb/idbobjectstore_add5-private.html: Added.
* indexeddb/idbobjectstore_add6-private-expected.txt: Added.
* indexeddb/idbobjectstore_add6-private.html: Added.
* indexeddb/idbobjectstore_add7-private-expected.txt: Added.
* indexeddb/idbobjectstore_add7-private.html: Added.
* indexeddb/idbobjectstore_add8-private-expected.txt: Added.
* indexeddb/idbobjectstore_add8-private.html: Added.
* indexeddb/idbobjectstore_add9-private-expected.txt: Added.
* indexeddb/idbobjectstore_add9-private.html: Added.
* indexeddb/idbobjectstore_clear-private-expected.txt: Added.
* indexeddb/idbobjectstore_clear-private.html: Added.
* indexeddb/idbobjectstore_clear2-private-expected.txt: Added.
* indexeddb/idbobjectstore_clear2-private.html: Added.
* indexeddb/idbobjectstore_clear3-private-expected.txt: Added.
* indexeddb/idbobjectstore_clear3-private.html: Added.
* indexeddb/idbobjectstore_clear4-private-expected.txt: Added.
* indexeddb/idbobjectstore_clear4-private.html: Added.
* indexeddb/idbobjectstore_count-private-expected.txt: Added.
* indexeddb/idbobjectstore_count-private.html: Added.
* indexeddb/idbobjectstore_count2-private-expected.txt: Added.
* indexeddb/idbobjectstore_count2-private.html: Added.
* indexeddb/idbobjectstore_count3-private-expected.txt: Added.
* indexeddb/idbobjectstore_count3-private.html: Added.
* indexeddb/idbobjectstore_count4-private-expected.txt: Added.
* indexeddb/idbobjectstore_count4-private.html: Added.
* indexeddb/idbobjectstore_createIndex-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex-private.html: Added.
* indexeddb/idbobjectstore_createIndex10-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex10-private.html: Added.
* indexeddb/idbobjectstore_createIndex11-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex11-private.html: Added.
* indexeddb/idbobjectstore_createIndex12-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex12-private.html: Added.
* indexeddb/idbobjectstore_createIndex13-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex13-private.html: Added.
* indexeddb/idbobjectstore_createIndex2-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex2-private.html: Added.
* indexeddb/idbobjectstore_createIndex3-usable-right-away-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html: Added.
* indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html: Added.
* indexeddb/idbobjectstore_createIndex5-emptykeypath-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html: Added.
* indexeddb/idbobjectstore_createIndex6-event_order-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex6-event_order-private.html: Added.
* indexeddb/idbobjectstore_createIndex7-event_order-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex7-event_order-private.html: Added.
* indexeddb/idbobjectstore_createIndex8-valid_keys-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex8-valid_keys-private.html: Added.
* indexeddb/idbobjectstore_createIndex9-emptyname-private-expected.txt: Added.
* indexeddb/idbobjectstore_createIndex9-emptyname-private.html: Added.
* indexeddb/idbobjectstore_delete-private-expected.txt: Added.
* indexeddb/idbobjectstore_delete-private.html: Added.
* indexeddb/idbobjectstore_delete2-private-expected.txt: Added.
* indexeddb/idbobjectstore_delete2-private.html: Added.
* indexeddb/idbobjectstore_delete3-private-expected.txt: Added.
* indexeddb/idbobjectstore_delete3-private.html: Added.
* indexeddb/idbobjectstore_delete4-private-expected.txt: Added.
* indexeddb/idbobjectstore_delete4-private.html: Added.
* indexeddb/idbobjectstore_delete5-private-expected.txt: Added.
* indexeddb/idbobjectstore_delete5-private.html: Added.
* indexeddb/idbobjectstore_delete6-private-expected.txt: Added.
* indexeddb/idbobjectstore_delete6-private.html: Added.
* indexeddb/idbobjectstore_delete7-private-expected.txt: Added.
* indexeddb/idbobjectstore_delete7-private.html: Added.
* indexeddb/idbobjectstore_deleteIndex-private-expected.txt: Added.
* indexeddb/idbobjectstore_deleteIndex-private.html: Added.
* indexeddb/idbobjectstore_deleted-private-expected.txt: Added.
* indexeddb/idbobjectstore_deleted-private.html: Added.
* indexeddb/idbobjectstore_get-private-expected.txt: Added.
* indexeddb/idbobjectstore_get-private.html: Added.
* indexeddb/idbobjectstore_get2-private-expected.txt: Added.
* indexeddb/idbobjectstore_get2-private.html: Added.
* indexeddb/idbobjectstore_get3-private-expected.txt: Added.
* indexeddb/idbobjectstore_get3-private.html: Added.
* indexeddb/idbobjectstore_get4-private-expected.txt: Added.
* indexeddb/idbobjectstore_get4-private.html: Added.
* indexeddb/idbobjectstore_get5-private-expected.txt: Added.
* indexeddb/idbobjectstore_get5-private.html: Added.
* indexeddb/idbobjectstore_get6-private-expected.txt: Added.
* indexeddb/idbobjectstore_get6-private.html: Added.
* indexeddb/idbobjectstore_get7-private-expected.txt: Added.
* indexeddb/idbobjectstore_get7-private.html: Added.
* indexeddb/idbobjectstore_index-private-expected.txt: Added.
* indexeddb/idbobjectstore_index-private.html: Added.
* indexeddb/idbobjectstore_openCursor-private-expected.txt: Added.
* indexeddb/idbobjectstore_openCursor-private.html: Added.
* indexeddb/idbobjectstore_openCursor_invalid-private-expected.txt: Added.
* indexeddb/idbobjectstore_openCursor_invalid-private.html: Added.
* indexeddb/idbobjectstore_put-private-expected.txt: Added.
* indexeddb/idbobjectstore_put-private.html: Added.
* indexeddb/idbobjectstore_put10-private-expected.txt: Added.
* indexeddb/idbobjectstore_put10-private.html: Added.
* indexeddb/idbobjectstore_put11-private-expected.txt: Added.
* indexeddb/idbobjectstore_put11-private.html: Added.
* indexeddb/idbobjectstore_put12-private-expected.txt: Added.
* indexeddb/idbobjectstore_put12-private.html: Added.
* indexeddb/idbobjectstore_put13-private-expected.txt: Added.
* indexeddb/idbobjectstore_put13-private.html: Added.
* indexeddb/idbobjectstore_put14-private-expected.txt: Added.
* indexeddb/idbobjectstore_put14-private.html: Added.
* indexeddb/idbobjectstore_put15-private-expected.txt: Added.
* indexeddb/idbobjectstore_put15-private.html: Added.
* indexeddb/idbobjectstore_put16-private-expected.txt: Added.
* indexeddb/idbobjectstore_put16-private.html: Added.
* indexeddb/idbobjectstore_put2-private-expected.txt: Added.
* indexeddb/idbobjectstore_put2-private.html: Added.
* indexeddb/idbobjectstore_put3-private-expected.txt: Added.
* indexeddb/idbobjectstore_put3-private.html: Added.
* indexeddb/idbobjectstore_put4-private-expected.txt: Added.
* indexeddb/idbobjectstore_put4-private.html: Added.
* indexeddb/idbobjectstore_put5-private-expected.txt: Added.
* indexeddb/idbobjectstore_put5-private.html: Added.
* indexeddb/idbobjectstore_put6-private-expected.txt: Added.
* indexeddb/idbobjectstore_put6-private.html: Added.
* indexeddb/idbobjectstore_put7-private-expected.txt: Added.
* indexeddb/idbobjectstore_put7-private.html: Added.
* indexeddb/idbobjectstore_put8-private-expected.txt: Added.
* indexeddb/idbobjectstore_put8-private.html: Added.
* indexeddb/idbobjectstore_put9-private-expected.txt: Added.
* indexeddb/idbobjectstore_put9-private.html: Added.
* indexeddb/idbtransaction-oncomplete-private-expected.txt: Added.
* indexeddb/idbtransaction-oncomplete-private.html: Added.
* indexeddb/idbtransaction-private-expected.txt: Added.
* indexeddb/idbtransaction-private.html: Added.
* indexeddb/idbtransaction_abort-private-expected.txt: Added.
* indexeddb/idbtransaction_abort-private.html: Added.
* indexeddb/idbversionchangeevent-private-expected.txt: Added.
* indexeddb/idbversionchangeevent-private.html: Added.
* indexeddb/index_sort_order-private-expected.txt: Added.
* indexeddb/index_sort_order-private.html: Added.
* indexeddb/key_invalid-private-expected.txt: Added.
* indexeddb/key_invalid-private.html: Added.
* indexeddb/key_valid-private-expected.txt: Added.
* indexeddb/key_valid-private.html: Added.
* indexeddb/keygenerator-constrainterror-private-expected.txt: Added.
* indexeddb/keygenerator-constrainterror-private.html: Added.
* indexeddb/keygenerator-overflow-private-expected.txt: Added.
* indexeddb/keygenerator-overflow-private.html: Added.
* indexeddb/keygenerator-private-expected.txt: Added.
* indexeddb/keygenerator-private.html: Added.
* indexeddb/keyorder-private-expected.txt: Added.
* indexeddb/keyorder-private.html: Added.
* indexeddb/keypath-private-expected.txt: Added.
* indexeddb/keypath-private.html: Added.
* indexeddb/keypath_invalid-private-expected.txt: Added.
* indexeddb/keypath_invalid-private.html: Added.
* indexeddb/keypath_maxsize-private-expected.txt: Added.
* indexeddb/keypath_maxsize-private.html: Added.
* indexeddb/list_ordering-private-expected.txt: Added.
* indexeddb/list_ordering-private.html: Added.
* indexeddb/objectstore_keyorder-private-expected.txt: Added.
* indexeddb/objectstore_keyorder-private.html: Added.
* indexeddb/request_bubble-and-capture-private-expected.txt: Added.
* indexeddb/request_bubble-and-capture-private.html: Added.
* indexeddb/string-list-ordering-private-expected.txt: Added.
* indexeddb/string-list-ordering-private.html: Added.
* indexeddb/transaction-create_in_versionchange-private-expected.txt: Added.
* indexeddb/transaction-create_in_versionchange-private.html: Added.
* indexeddb/transaction-lifetime-blocked-private-expected.txt: Added.
* indexeddb/transaction-lifetime-blocked-private.html: Added.
* indexeddb/transaction-lifetime-private-expected.txt: Added.
* indexeddb/transaction-lifetime-private.html: Added.
* indexeddb/transaction-requestqueue-private-expected.txt: Added.
* indexeddb/transaction-requestqueue-private.html: Added.
* indexeddb/transaction_bubble-and-capture-private-expected.txt: Added.
* indexeddb/transaction_bubble-and-capture-private.html: Added.
* indexeddb/value-private-expected.txt: Added.
* indexeddb/value-private.html: Added.
* indexeddb/value_recursive-private-expected.txt: Added.
* indexeddb/value_recursive-private.html: Added.
* indexeddb/writer-starvation-private-expected.txt: Added.
* indexeddb/writer-starvation-private.html: Added.

LayoutTests:

* platform/wk2/TestExpectations:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open9htm">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbsupportjs">trunk/LayoutTests/imported/w3c/indexeddb/support.js</a></li>
<li><a href="#trunkLayoutTestsplatformwk2TestExpectations">trunk/LayoutTests/platform/wk2/TestExpectations</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbabortininitialupgradeneededprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbabortininitialupgradeneededprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbcloseinupgradeneededprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbcloseinupgradeneededprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbcursoroverloadsprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbcursoroverloadsprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidb_webworkersprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidb_webworkersprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursoradvancecontinueasyncprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursoradvancecontinueasyncprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceinvalidprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceinvalidprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorcontinueprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorcontinueprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexkeyrangeprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexkeyrangeprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstorekeyrangeprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstorekeyrangeprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursordirectionprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorkeyprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorkeyprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorprimarykeyprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorprimarykeyprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorreusedprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorreusedprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorsourceprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursorsourceprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_indexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_indexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index8privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index8privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index9privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index9privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_indexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_indexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index8privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index8privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_invalidprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_invalidprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_indexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_indexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iteratingprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iteratingprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_indexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_indexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_index2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_index2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstore2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstore2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_indexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_indexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore8privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore8privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_closeprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_closeprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_close2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_close2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStorecreateIndexemptynameprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStorecreateIndexemptynameprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore101000endsprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore101000endsprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore10emptynameprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore10emptynameprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore11privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore11privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore8parametersprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore8parametersprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore9invalidparametersprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore9invalidparametersprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStoreprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStoreprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore4not_reusedprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore4not_reusedprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transactionprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transactionprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_cmpprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_cmpprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_cmp2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_cmp2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabaseprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabaseprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_openprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_openprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open10privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open10privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open11privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open11privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open12privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open12privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open8privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open8privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open9privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbfactory_open9privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindexmultientryarraykeypathprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindexmultientryarraykeypathprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindexmultientrybigprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindexmultientrybigprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindexmultientryprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindexmultientryprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_countprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_countprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_count2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_count2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_count3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_count3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_count4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_count4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_get7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKeyprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKeyprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_getKey7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_indexNamesprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_indexNamesprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openCursorprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openCursorprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openCursor2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openCursor2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursorprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursorprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbkeyrangeprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbkeyrangeprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbkeyrange_incorrectprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbkeyrange_incorrectprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_addprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_addprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add10privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add10privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add11privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add11privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add12privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add12privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add13privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add13privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add14privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add14privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add15privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add15privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add16privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add16privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add8privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add8privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add9privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add9privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clearprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clearprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_countprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_countprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex10privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex10privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex11privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex11privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex12privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex12privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex13privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex13privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex3usablerightawayprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex3usablerightawayprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex4deleteIndexevent_orderprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex4deleteIndexevent_orderprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex5emptykeypathprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex5emptykeypathprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex6event_orderprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex6event_orderprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex7event_orderprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex7event_orderprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex8valid_keysprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex8valid_keysprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex9emptynameprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex9emptynameprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteIndexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteIndexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deletedprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deletedprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_getprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_getprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_indexprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_indexprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursorprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursorprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursor_invalidprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursor_invalidprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_putprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_putprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put10privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put10privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put11privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put11privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put12privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put12privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put13privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put13privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put14privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put14privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put15privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put15privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put16privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put16privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put2privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put2privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put3privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put3privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put4privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put4privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put5privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put5privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put6privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put6privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put7privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put7privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put8privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put8privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put9privateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put9privatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbtransactiononcompleteprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbtransactiononcompleteprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbtransactionprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbtransactionprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbtransaction_abortprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbtransaction_abortprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbversionchangeeventprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbidbversionchangeeventprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbindex_sort_orderprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbindex_sort_orderprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkey_invalidprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkey_invalidprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkey_validprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkey_validprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeygeneratorconstrainterrorprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeygeneratorconstrainterrorprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeygeneratoroverflowprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeygeneratoroverflowprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeygeneratorprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeygeneratorprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeyorderprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeyorderprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeypathprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/keypath-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeypathprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/keypath-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeypath_invalidprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeypath_invalidprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeypath_maxsizeprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbkeypath_maxsizeprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddblist_orderingprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddblist_orderingprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbobjectstore_keyorderprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbobjectstore_keyorderprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbrequest_bubbleandcaptureprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbrequest_bubbleandcaptureprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbstringlistorderingprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbstringlistorderingprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactioncreate_in_versionchangeprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactioncreate_in_versionchangeprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeblockedprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeblockedprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactionrequestqueueprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransactionrequestqueueprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransaction_bubbleandcaptureprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbtransaction_bubbleandcaptureprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbvalueprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/value-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbvalueprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/value-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbvalue_recursiveprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbvalue_recursiveprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbwriterstarvationprivateexpectedtxt">trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cindexeddbwriterstarvationprivatehtml">trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (195422 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-01-21 22:56:21 UTC (rev 195422)
+++ trunk/LayoutTests/ChangeLog        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2016-01-21  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Modern IDB: Make -private copies of each w3c IDB test.
+        https://bugs.webkit.org/show_bug.cgi?id=153319
+
+        Reviewed by Alex Christensen.
+
+        * platform/wk2/TestExpectations:
+
</ins><span class="cx"> 2016-01-21  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove a ios-simulator-wk2 specific expectation file since the results are identical on wk1 and wk2
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (195422 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-01-21 22:56:21 UTC (rev 195422)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -1,3 +1,502 @@
</span><ins>+2016-01-21  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Modern IDB: Make -private copies of each w3c IDB test.
+        https://bugs.webkit.org/show_bug.cgi?id=153319
+
+        Reviewed by Alex Christensen.
+
+        * indexeddb/support.js: If the test filename ends with -private.htm(l), enable private browsing.
+
+        * indexeddb/abort-in-initial-upgradeneeded-private-expected.txt: Added.
+        * indexeddb/abort-in-initial-upgradeneeded-private.html: Added.
+        * indexeddb/close-in-upgradeneeded-private-expected.txt: Added.
+        * indexeddb/close-in-upgradeneeded-private.html: Added.
+        * indexeddb/cursor-overloads-private-expected.txt: Added.
+        * indexeddb/cursor-overloads-private.html: Added.
+        * indexeddb/idb_webworkers-private-expected.txt: Added.
+        * indexeddb/idb_webworkers-private.html: Added.
+        * indexeddb/idbcursor-advance-continue-async-private-expected.txt: Added.
+        * indexeddb/idbcursor-advance-continue-async-private.html: Added.
+        * indexeddb/idbcursor-advance-invalid-private-expected.txt: Added.
+        * indexeddb/idbcursor-advance-invalid-private.html: Added.
+        * indexeddb/idbcursor-advance-private-expected.txt: Added.
+        * indexeddb/idbcursor-advance-private.html: Added.
+        * indexeddb/idbcursor-continue-private-expected.txt: Added.
+        * indexeddb/idbcursor-continue-private.html: Added.
+        * indexeddb/idbcursor-direction-index-keyrange-private-expected.txt: Added.
+        * indexeddb/idbcursor-direction-index-keyrange-private.html: Added.
+        * indexeddb/idbcursor-direction-index-private-expected.txt: Added.
+        * indexeddb/idbcursor-direction-index-private.html: Added.
+        * indexeddb/idbcursor-direction-objectstore-keyrange-private-expected.txt: Added.
+        * indexeddb/idbcursor-direction-objectstore-keyrange-private.html: Added.
+        * indexeddb/idbcursor-direction-objectstore-private-expected.txt: Added.
+        * indexeddb/idbcursor-direction-objectstore-private.html: Added.
+        * indexeddb/idbcursor-direction-private-expected.txt: Added.
+        * indexeddb/idbcursor-direction-private.html: Added.
+        * indexeddb/idbcursor-key-private-expected.txt: Added.
+        * indexeddb/idbcursor-key-private.html: Added.
+        * indexeddb/idbcursor-primarykey-private-expected.txt: Added.
+        * indexeddb/idbcursor-primarykey-private.html: Added.
+        * indexeddb/idbcursor-reused-private-expected.txt: Added.
+        * indexeddb/idbcursor-reused-private.html: Added.
+        * indexeddb/idbcursor-source-private-expected.txt: Added.
+        * indexeddb/idbcursor-source-private.html: Added.
+        * indexeddb/idbcursor_advance_index-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index-private.html: Added.
+        * indexeddb/idbcursor_advance_index2-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index2-private.html: Added.
+        * indexeddb/idbcursor_advance_index3-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index3-private.html: Added.
+        * indexeddb/idbcursor_advance_index5-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index5-private.html: Added.
+        * indexeddb/idbcursor_advance_index6-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index6-private.html: Added.
+        * indexeddb/idbcursor_advance_index7-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index7-private.html: Added.
+        * indexeddb/idbcursor_advance_index8-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index8-private.html: Added.
+        * indexeddb/idbcursor_advance_index9-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_index9-private.html: Added.
+        * indexeddb/idbcursor_advance_objectstore-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_objectstore-private.html: Added.
+        * indexeddb/idbcursor_advance_objectstore2-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_objectstore2-private.html: Added.
+        * indexeddb/idbcursor_advance_objectstore3-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_objectstore3-private.html: Added.
+        * indexeddb/idbcursor_advance_objectstore4-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_objectstore4-private.html: Added.
+        * indexeddb/idbcursor_advance_objectstore5-private-expected.txt: Added.
+        * indexeddb/idbcursor_advance_objectstore5-private.html: Added.
+        * indexeddb/idbcursor_continue_index-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index-private.html: Added.
+        * indexeddb/idbcursor_continue_index2-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index2-private.html: Added.
+        * indexeddb/idbcursor_continue_index3-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index3-private.html: Added.
+        * indexeddb/idbcursor_continue_index4-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index4-private.html: Added.
+        * indexeddb/idbcursor_continue_index5-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index5-private.html: Added.
+        * indexeddb/idbcursor_continue_index6-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index6-private.html: Added.
+        * indexeddb/idbcursor_continue_index7-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index7-private.html: Added.
+        * indexeddb/idbcursor_continue_index8-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_index8-private.html: Added.
+        * indexeddb/idbcursor_continue_invalid-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_invalid-private.html: Added.
+        * indexeddb/idbcursor_continue_objectstore-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_objectstore-private.html: Added.
+        * indexeddb/idbcursor_continue_objectstore2-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_objectstore2-private.html: Added.
+        * indexeddb/idbcursor_continue_objectstore3-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_objectstore3-private.html: Added.
+        * indexeddb/idbcursor_continue_objectstore4-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_objectstore4-private.html: Added.
+        * indexeddb/idbcursor_continue_objectstore5-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_objectstore5-private.html: Added.
+        * indexeddb/idbcursor_continue_objectstore6-private-expected.txt: Added.
+        * indexeddb/idbcursor_continue_objectstore6-private.html: Added.
+        * indexeddb/idbcursor_delete_index-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_index-private.html: Added.
+        * indexeddb/idbcursor_delete_index2-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_index2-private.html: Added.
+        * indexeddb/idbcursor_delete_index3-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_index3-private.html: Added.
+        * indexeddb/idbcursor_delete_index4-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_index4-private.html: Added.
+        * indexeddb/idbcursor_delete_index5-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_index5-private.html: Added.
+        * indexeddb/idbcursor_delete_objectstore-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_objectstore-private.html: Added.
+        * indexeddb/idbcursor_delete_objectstore2-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_objectstore2-private.html: Added.
+        * indexeddb/idbcursor_delete_objectstore3-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_objectstore3-private.html: Added.
+        * indexeddb/idbcursor_delete_objectstore4-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_objectstore4-private.html: Added.
+        * indexeddb/idbcursor_delete_objectstore5-private-expected.txt: Added.
+        * indexeddb/idbcursor_delete_objectstore5-private.html: Added.
+        * indexeddb/idbcursor_iterating-private-expected.txt: Added.
+        * indexeddb/idbcursor_iterating-private.html: Added.
+        * indexeddb/idbcursor_iterating_index-private-expected.txt: Added.
+        * indexeddb/idbcursor_iterating_index-private.html: Added.
+        * indexeddb/idbcursor_iterating_index2-private-expected.txt: Added.
+        * indexeddb/idbcursor_iterating_index2-private.html: Added.
+        * indexeddb/idbcursor_iterating_objectstore-private-expected.txt: Added.
+        * indexeddb/idbcursor_iterating_objectstore-private.html: Added.
+        * indexeddb/idbcursor_iterating_objectstore2-private-expected.txt: Added.
+        * indexeddb/idbcursor_iterating_objectstore2-private.html: Added.
+        * indexeddb/idbcursor_update_index-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_index-private.html: Added.
+        * indexeddb/idbcursor_update_index2-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_index2-private.html: Added.
+        * indexeddb/idbcursor_update_index3-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_index3-private.html: Added.
+        * indexeddb/idbcursor_update_index4-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_index4-private.html: Added.
+        * indexeddb/idbcursor_update_index5-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_index5-private.html: Added.
+        * indexeddb/idbcursor_update_index6-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_index6-private.html: Added.
+        * indexeddb/idbcursor_update_index7-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_index7-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore2-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore2-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore3-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore3-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore4-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore4-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore5-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore5-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore6-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore6-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore7-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore7-private.html: Added.
+        * indexeddb/idbcursor_update_objectstore8-private-expected.txt: Added.
+        * indexeddb/idbcursor_update_objectstore8-private.html: Added.
+        * indexeddb/idbdatabase_close-private-expected.txt: Added.
+        * indexeddb/idbdatabase_close-private.html: Added.
+        * indexeddb/idbdatabase_close2-private-expected.txt: Added.
+        * indexeddb/idbdatabase_close2-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore10-1000ends-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore10-1000ends-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore10-emptyname-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore10-emptyname-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore11-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore11-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore2-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore2-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore3-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore3-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore4-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore4-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore5-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore5-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore6-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore6-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore7-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore7-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore8-parameters-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore8-parameters-private.html: Added.
+        * indexeddb/idbdatabase_createObjectStore9-invalidparameters-private-expected.txt: Added.
+        * indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html: Added.
+        * indexeddb/idbdatabase_deleteObjectStore-private-expected.txt: Added.
+        * indexeddb/idbdatabase_deleteObjectStore-private.html: Added.
+        * indexeddb/idbdatabase_deleteObjectStore2-private-expected.txt: Added.
+        * indexeddb/idbdatabase_deleteObjectStore2-private.html: Added.
+        * indexeddb/idbdatabase_deleteObjectStore3-private-expected.txt: Added.
+        * indexeddb/idbdatabase_deleteObjectStore3-private.html: Added.
+        * indexeddb/idbdatabase_deleteObjectStore4-not_reused-private-expected.txt: Added.
+        * indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html: Added.
+        * indexeddb/idbdatabase_transaction-private-expected.txt: Added.
+        * indexeddb/idbdatabase_transaction-private.html: Added.
+        * indexeddb/idbdatabase_transaction2-private-expected.txt: Added.
+        * indexeddb/idbdatabase_transaction2-private.html: Added.
+        * indexeddb/idbdatabase_transaction3-private-expected.txt: Added.
+        * indexeddb/idbdatabase_transaction3-private.html: Added.
+        * indexeddb/idbdatabase_transaction4-private-expected.txt: Added.
+        * indexeddb/idbdatabase_transaction4-private.html: Added.
+        * indexeddb/idbdatabase_transaction5-private-expected.txt: Added.
+        * indexeddb/idbdatabase_transaction5-private.html: Added.
+        * indexeddb/idbfactory_cmp-private-expected.txt: Added.
+        * indexeddb/idbfactory_cmp-private.html: Added.
+        * indexeddb/idbfactory_cmp2-private-expected.txt: Added.
+        * indexeddb/idbfactory_cmp2-private.html: Added.
+        * indexeddb/idbfactory_deleteDatabase-private-expected.txt: Added.
+        * indexeddb/idbfactory_deleteDatabase-private.html: Added.
+        * indexeddb/idbfactory_deleteDatabase2-private-expected.txt: Added.
+        * indexeddb/idbfactory_deleteDatabase2-private.html: Added.
+        * indexeddb/idbfactory_deleteDatabase3-private-expected.txt: Added.
+        * indexeddb/idbfactory_deleteDatabase3-private.html: Added.
+        * indexeddb/idbfactory_deleteDatabase4-private-expected.txt: Added.
+        * indexeddb/idbfactory_deleteDatabase4-private.html: Added.
+        * indexeddb/idbfactory_open-private-expected.txt: Added.
+        * indexeddb/idbfactory_open-private.html: Added.
+        * indexeddb/idbfactory_open10-private-expected.txt: Added.
+        * indexeddb/idbfactory_open10-private.html: Added.
+        * indexeddb/idbfactory_open11-private-expected.txt: Added.
+        * indexeddb/idbfactory_open11-private.html: Added.
+        * indexeddb/idbfactory_open12-private-expected.txt: Added.
+        * indexeddb/idbfactory_open12-private.html: Added.
+        * indexeddb/idbfactory_open2-private-expected.txt: Added.
+        * indexeddb/idbfactory_open2-private.html: Added.
+        * indexeddb/idbfactory_open3-private-expected.txt: Added.
+        * indexeddb/idbfactory_open3-private.html: Added.
+        * indexeddb/idbfactory_open4-private-expected.txt: Added.
+        * indexeddb/idbfactory_open4-private.html: Added.
+        * indexeddb/idbfactory_open5-private-expected.txt: Added.
+        * indexeddb/idbfactory_open5-private.html: Added.
+        * indexeddb/idbfactory_open6-private-expected.txt: Added.
+        * indexeddb/idbfactory_open6-private.html: Added.
+        * indexeddb/idbfactory_open7-private-expected.txt: Added.
+        * indexeddb/idbfactory_open7-private.html: Added.
+        * indexeddb/idbfactory_open8-private-expected.txt: Added.
+        * indexeddb/idbfactory_open8-private.html: Added.
+        * indexeddb/idbfactory_open9-private-expected.txt: Added.
+        * indexeddb/idbfactory_open9-private.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm.
+        * indexeddb/idbfactory_open9.htm:
+        * indexeddb/idbindex-multientry-arraykeypath-private-expected.txt: Added.
+        * indexeddb/idbindex-multientry-arraykeypath-private.html: Added.
+        * indexeddb/idbindex-multientry-big-private-expected.txt: Added.
+        * indexeddb/idbindex-multientry-big-private.html: Added.
+        * indexeddb/idbindex-multientry-private-expected.txt: Added.
+        * indexeddb/idbindex-multientry-private.html: Added.
+        * indexeddb/idbindex_count-private-expected.txt: Added.
+        * indexeddb/idbindex_count-private.html: Added.
+        * indexeddb/idbindex_count2-private-expected.txt: Added.
+        * indexeddb/idbindex_count2-private.html: Added.
+        * indexeddb/idbindex_count3-private-expected.txt: Added.
+        * indexeddb/idbindex_count3-private.html: Added.
+        * indexeddb/idbindex_count4-private-expected.txt: Added.
+        * indexeddb/idbindex_count4-private.html: Added.
+        * indexeddb/idbindex_get-private-expected.txt: Added.
+        * indexeddb/idbindex_get-private.html: Added.
+        * indexeddb/idbindex_get2-private-expected.txt: Added.
+        * indexeddb/idbindex_get2-private.html: Added.
+        * indexeddb/idbindex_get3-private-expected.txt: Added.
+        * indexeddb/idbindex_get3-private.html: Added.
+        * indexeddb/idbindex_get4-private-expected.txt: Added.
+        * indexeddb/idbindex_get4-private.html: Added.
+        * indexeddb/idbindex_get5-private-expected.txt: Added.
+        * indexeddb/idbindex_get5-private.html: Added.
+        * indexeddb/idbindex_get6-private-expected.txt: Added.
+        * indexeddb/idbindex_get6-private.html: Added.
+        * indexeddb/idbindex_get7-private-expected.txt: Added.
+        * indexeddb/idbindex_get7-private.html: Added.
+        * indexeddb/idbindex_getKey-private-expected.txt: Added.
+        * indexeddb/idbindex_getKey-private.html: Added.
+        * indexeddb/idbindex_getKey2-private-expected.txt: Added.
+        * indexeddb/idbindex_getKey2-private.html: Added.
+        * indexeddb/idbindex_getKey3-private-expected.txt: Added.
+        * indexeddb/idbindex_getKey3-private.html: Added.
+        * indexeddb/idbindex_getKey4-private-expected.txt: Added.
+        * indexeddb/idbindex_getKey4-private.html: Added.
+        * indexeddb/idbindex_getKey5-private-expected.txt: Added.
+        * indexeddb/idbindex_getKey5-private.html: Added.
+        * indexeddb/idbindex_getKey6-private-expected.txt: Added.
+        * indexeddb/idbindex_getKey6-private.html: Added.
+        * indexeddb/idbindex_getKey7-private-expected.txt: Added.
+        * indexeddb/idbindex_getKey7-private.html: Added.
+        * indexeddb/idbindex_indexNames-private-expected.txt: Added.
+        * indexeddb/idbindex_indexNames-private.html: Added.
+        * indexeddb/idbindex_openCursor-private-expected.txt: Added.
+        * indexeddb/idbindex_openCursor-private.html: Added.
+        * indexeddb/idbindex_openCursor2-private-expected.txt: Added.
+        * indexeddb/idbindex_openCursor2-private.html: Added.
+        * indexeddb/idbindex_openKeyCursor-private-expected.txt: Added.
+        * indexeddb/idbindex_openKeyCursor-private.html: Added.
+        * indexeddb/idbindex_openKeyCursor2-private-expected.txt: Added.
+        * indexeddb/idbindex_openKeyCursor2-private.html: Added.
+        * indexeddb/idbindex_openKeyCursor3-private-expected.txt: Added.
+        * indexeddb/idbindex_openKeyCursor3-private.html: Added.
+        * indexeddb/idbkeyrange-private-expected.txt: Added.
+        * indexeddb/idbkeyrange-private.html: Added.
+        * indexeddb/idbkeyrange_incorrect-private-expected.txt: Added.
+        * indexeddb/idbkeyrange_incorrect-private.html: Added.
+        * indexeddb/idbobjectstore_add-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add-private.html: Added.
+        * indexeddb/idbobjectstore_add10-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add10-private.html: Added.
+        * indexeddb/idbobjectstore_add11-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add11-private.html: Added.
+        * indexeddb/idbobjectstore_add12-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add12-private.html: Added.
+        * indexeddb/idbobjectstore_add13-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add13-private.html: Added.
+        * indexeddb/idbobjectstore_add14-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add14-private.html: Added.
+        * indexeddb/idbobjectstore_add15-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add15-private.html: Added.
+        * indexeddb/idbobjectstore_add16-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add16-private.html: Added.
+        * indexeddb/idbobjectstore_add2-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add2-private.html: Added.
+        * indexeddb/idbobjectstore_add3-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add3-private.html: Added.
+        * indexeddb/idbobjectstore_add4-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add4-private.html: Added.
+        * indexeddb/idbobjectstore_add5-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add5-private.html: Added.
+        * indexeddb/idbobjectstore_add6-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add6-private.html: Added.
+        * indexeddb/idbobjectstore_add7-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add7-private.html: Added.
+        * indexeddb/idbobjectstore_add8-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add8-private.html: Added.
+        * indexeddb/idbobjectstore_add9-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_add9-private.html: Added.
+        * indexeddb/idbobjectstore_clear-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_clear-private.html: Added.
+        * indexeddb/idbobjectstore_clear2-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_clear2-private.html: Added.
+        * indexeddb/idbobjectstore_clear3-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_clear3-private.html: Added.
+        * indexeddb/idbobjectstore_clear4-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_clear4-private.html: Added.
+        * indexeddb/idbobjectstore_count-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_count-private.html: Added.
+        * indexeddb/idbobjectstore_count2-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_count2-private.html: Added.
+        * indexeddb/idbobjectstore_count3-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_count3-private.html: Added.
+        * indexeddb/idbobjectstore_count4-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_count4-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex10-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex10-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex11-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex11-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex12-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex12-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex13-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex13-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex2-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex2-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex3-usable-right-away-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex5-emptykeypath-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex6-event_order-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex6-event_order-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex7-event_order-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex7-event_order-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex8-valid_keys-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex8-valid_keys-private.html: Added.
+        * indexeddb/idbobjectstore_createIndex9-emptyname-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_createIndex9-emptyname-private.html: Added.
+        * indexeddb/idbobjectstore_delete-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_delete-private.html: Added.
+        * indexeddb/idbobjectstore_delete2-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_delete2-private.html: Added.
+        * indexeddb/idbobjectstore_delete3-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_delete3-private.html: Added.
+        * indexeddb/idbobjectstore_delete4-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_delete4-private.html: Added.
+        * indexeddb/idbobjectstore_delete5-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_delete5-private.html: Added.
+        * indexeddb/idbobjectstore_delete6-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_delete6-private.html: Added.
+        * indexeddb/idbobjectstore_delete7-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_delete7-private.html: Added.
+        * indexeddb/idbobjectstore_deleteIndex-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_deleteIndex-private.html: Added.
+        * indexeddb/idbobjectstore_deleted-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_deleted-private.html: Added.
+        * indexeddb/idbobjectstore_get-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_get-private.html: Added.
+        * indexeddb/idbobjectstore_get2-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_get2-private.html: Added.
+        * indexeddb/idbobjectstore_get3-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_get3-private.html: Added.
+        * indexeddb/idbobjectstore_get4-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_get4-private.html: Added.
+        * indexeddb/idbobjectstore_get5-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_get5-private.html: Added.
+        * indexeddb/idbobjectstore_get6-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_get6-private.html: Added.
+        * indexeddb/idbobjectstore_get7-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_get7-private.html: Added.
+        * indexeddb/idbobjectstore_index-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_index-private.html: Added.
+        * indexeddb/idbobjectstore_openCursor-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_openCursor-private.html: Added.
+        * indexeddb/idbobjectstore_openCursor_invalid-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_openCursor_invalid-private.html: Added.
+        * indexeddb/idbobjectstore_put-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put-private.html: Added.
+        * indexeddb/idbobjectstore_put10-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put10-private.html: Added.
+        * indexeddb/idbobjectstore_put11-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put11-private.html: Added.
+        * indexeddb/idbobjectstore_put12-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put12-private.html: Added.
+        * indexeddb/idbobjectstore_put13-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put13-private.html: Added.
+        * indexeddb/idbobjectstore_put14-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put14-private.html: Added.
+        * indexeddb/idbobjectstore_put15-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put15-private.html: Added.
+        * indexeddb/idbobjectstore_put16-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put16-private.html: Added.
+        * indexeddb/idbobjectstore_put2-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put2-private.html: Added.
+        * indexeddb/idbobjectstore_put3-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put3-private.html: Added.
+        * indexeddb/idbobjectstore_put4-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put4-private.html: Added.
+        * indexeddb/idbobjectstore_put5-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put5-private.html: Added.
+        * indexeddb/idbobjectstore_put6-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put6-private.html: Added.
+        * indexeddb/idbobjectstore_put7-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put7-private.html: Added.
+        * indexeddb/idbobjectstore_put8-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put8-private.html: Added.
+        * indexeddb/idbobjectstore_put9-private-expected.txt: Added.
+        * indexeddb/idbobjectstore_put9-private.html: Added.
+        * indexeddb/idbtransaction-oncomplete-private-expected.txt: Added.
+        * indexeddb/idbtransaction-oncomplete-private.html: Added.
+        * indexeddb/idbtransaction-private-expected.txt: Added.
+        * indexeddb/idbtransaction-private.html: Added.
+        * indexeddb/idbtransaction_abort-private-expected.txt: Added.
+        * indexeddb/idbtransaction_abort-private.html: Added.
+        * indexeddb/idbversionchangeevent-private-expected.txt: Added.
+        * indexeddb/idbversionchangeevent-private.html: Added.
+        * indexeddb/index_sort_order-private-expected.txt: Added.
+        * indexeddb/index_sort_order-private.html: Added.
+        * indexeddb/key_invalid-private-expected.txt: Added.
+        * indexeddb/key_invalid-private.html: Added.
+        * indexeddb/key_valid-private-expected.txt: Added.
+        * indexeddb/key_valid-private.html: Added.
+        * indexeddb/keygenerator-constrainterror-private-expected.txt: Added.
+        * indexeddb/keygenerator-constrainterror-private.html: Added.
+        * indexeddb/keygenerator-overflow-private-expected.txt: Added.
+        * indexeddb/keygenerator-overflow-private.html: Added.
+        * indexeddb/keygenerator-private-expected.txt: Added.
+        * indexeddb/keygenerator-private.html: Added.
+        * indexeddb/keyorder-private-expected.txt: Added.
+        * indexeddb/keyorder-private.html: Added.
+        * indexeddb/keypath-private-expected.txt: Added.
+        * indexeddb/keypath-private.html: Added.
+        * indexeddb/keypath_invalid-private-expected.txt: Added.
+        * indexeddb/keypath_invalid-private.html: Added.
+        * indexeddb/keypath_maxsize-private-expected.txt: Added.
+        * indexeddb/keypath_maxsize-private.html: Added.
+        * indexeddb/list_ordering-private-expected.txt: Added.
+        * indexeddb/list_ordering-private.html: Added.
+        * indexeddb/objectstore_keyorder-private-expected.txt: Added.
+        * indexeddb/objectstore_keyorder-private.html: Added.
+        * indexeddb/request_bubble-and-capture-private-expected.txt: Added.
+        * indexeddb/request_bubble-and-capture-private.html: Added.
+        * indexeddb/string-list-ordering-private-expected.txt: Added.
+        * indexeddb/string-list-ordering-private.html: Added.
+        * indexeddb/transaction-create_in_versionchange-private-expected.txt: Added.
+        * indexeddb/transaction-create_in_versionchange-private.html: Added.
+        * indexeddb/transaction-lifetime-blocked-private-expected.txt: Added.
+        * indexeddb/transaction-lifetime-blocked-private.html: Added.
+        * indexeddb/transaction-lifetime-private-expected.txt: Added.
+        * indexeddb/transaction-lifetime-private.html: Added.
+        * indexeddb/transaction-requestqueue-private-expected.txt: Added.
+        * indexeddb/transaction-requestqueue-private.html: Added.
+        * indexeddb/transaction_bubble-and-capture-private-expected.txt: Added.
+        * indexeddb/transaction_bubble-and-capture-private.html: Added.
+        * indexeddb/value-private-expected.txt: Added.
+        * indexeddb/value-private.html: Added.
+        * indexeddb/value_recursive-private-expected.txt: Added.
+        * indexeddb/value_recursive-private.html: Added.
+        * indexeddb/writer-starvation-private-expected.txt: Added.
+        * indexeddb/writer-starvation-private.html: Added.
+
</ins><span class="cx"> 2016-01-20  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Drop support for obsolete Node.isSupported()
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbabortininitialupgradeneededprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Test that an abort in the initial upgradeneeded sets version back to 0 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbabortininitialupgradeneededprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;title&gt;Test that an abort in the initial upgradeneeded sets version back to 0&lt;/title&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var db, open_rq = createdb(async_test(), undefined, 2);
+
+open_rq.onupgradeneeded = function(e) {
+    db = e.target.result;
+    assert_equals(db.version, 2);
+    transaction = e.target.transaction;
+    transaction.oncomplete = fail(this, &quot;unexpected transaction.complete&quot;);
+    transaction.onabort = function(e) {
+        assert_equals(e.target.db.version, 0);
+    }
+    db.onabort = function() {}
+
+    transaction.abort();
+}
+
+open_rq.onerror = function(e) {
+    assert_equals(open_rq, e.target);
+    assert_equals(e.target.result, undefined);
+    assert_equals(e.target.error.name, &quot;AbortError&quot;);
+    assert_equals(db.version, 0);
+    assert_equals(open_rq.transaction, null);
+    this.done();
+}
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbcloseinupgradeneededprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS When db.close is called in upgradeneeded, the db is cleaned up on refresh 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbcloseinupgradeneededprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;title&gt;When db.close is called in upgradeneeded, the db is cleaned up on refresh&lt;/title&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var open_rq = createdb(async_test())
+var sawTransactionComplete = false
+
+open_rq.onupgradeneeded = function(e) {
+    db = e.target.result
+    assert_equals(db.version, 1)
+
+    db.createObjectStore('os')
+    db.close()
+
+    e.target.transaction.oncomplete = function() { sawTransactionComplete = true }
+}
+
+open_rq.onerror = function(e) {
+    assert_true(sawTransactionComplete, &quot;saw transaction.complete&quot;)
+
+    assert_equals(e.target.error.name, 'AbortError')
+    assert_equals(e.result, undefined)
+
+    assert_true(!!db)
+    assert_equals(db.version, 1)
+    assert_equals(db.objectStoreNames.length, 1)
+    assert_throws(&quot;InvalidStateError&quot;, function() { db.transaction('os') })
+
+    this.done()
+}
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbcursoroverloadsprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor() 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbcursoroverloadsprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/cursor-overloads-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+&lt;!--
+Test converted from WebKit:
+http://trac.webkit.org/browser/trunk/LayoutTests/storage/indexeddb/cursor-overloads.html
+--&gt;
+
+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor()&lt;/title&gt;
+&lt;link rel=author href=&quot;mailto:romain.huet@gmail.com&quot; title=&quot;Romain Huet&quot;&gt;
+
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db, trans, store, index;
+    var t = async_test();
+
+    var request = createdb(t);
+    request.onupgradeneeded = function(e) {
+        db = request.result;
+        store = db.createObjectStore('store');
+        index = store.createIndex('index', 'value');
+        store.put({value: 0}, 0);
+        trans = request.transaction;
+        trans.oncomplete = verifyOverloads;
+    };
+
+    function verifyOverloads() {
+        trans = db.transaction('store');
+        store = trans.objectStore('store');
+        index = store.index('index');
+
+        checkCursorDirection(&quot;store.openCursor()&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;store.openCursor(0)&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;store.openCursor(0, 'next')&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;store.openCursor(0, 'nextunique')&quot;, &quot;nextunique&quot;);
+        checkCursorDirection(&quot;store.openCursor(0, 'prev')&quot;, &quot;prev&quot;);
+        checkCursorDirection(&quot;store.openCursor(0, 'prevunique')&quot;, &quot;prevunique&quot;);
+
+        checkCursorDirection(&quot;store.openCursor(IDBKeyRange.only(0))&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;store.openCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;store.openCursor(IDBKeyRange.only(0), 'nextunique')&quot;, &quot;nextunique&quot;);
+        checkCursorDirection(&quot;store.openCursor(IDBKeyRange.only(0), 'prev')&quot;, &quot;prev&quot;);
+        checkCursorDirection(&quot;store.openCursor(IDBKeyRange.only(0), 'prevunique')&quot;, &quot;prevunique&quot;);
+
+        checkCursorDirection(&quot;index.openCursor()&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openCursor(0)&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openCursor(0, 'next')&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openCursor(0, 'nextunique')&quot;, &quot;nextunique&quot;);
+        checkCursorDirection(&quot;index.openCursor(0, 'prev')&quot;, &quot;prev&quot;);
+        checkCursorDirection(&quot;index.openCursor(0, 'prevunique')&quot;, &quot;prevunique&quot;);
+
+        checkCursorDirection(&quot;index.openCursor(IDBKeyRange.only(0))&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openCursor(IDBKeyRange.only(0), 'nextunique')&quot;, &quot;nextunique&quot;);
+        checkCursorDirection(&quot;index.openCursor(IDBKeyRange.only(0), 'prev')&quot;, &quot;prev&quot;);
+        checkCursorDirection(&quot;index.openCursor(IDBKeyRange.only(0), 'prevunique')&quot;, &quot;prevunique&quot;);
+
+        checkCursorDirection(&quot;index.openKeyCursor()&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(0)&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(0, 'next')&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(0, 'nextunique')&quot;, &quot;nextunique&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(0, 'prev')&quot;, &quot;prev&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(0, 'prevunique')&quot;, &quot;prevunique&quot;);
+
+        checkCursorDirection(&quot;index.openKeyCursor(IDBKeyRange.only(0))&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;next&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(IDBKeyRange.only(0), 'nextunique')&quot;, &quot;nextunique&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(IDBKeyRange.only(0), 'prev')&quot;, &quot;prev&quot;);
+        checkCursorDirection(&quot;index.openKeyCursor(IDBKeyRange.only(0), 'prevunique')&quot;, &quot;prevunique&quot;);
+
+        t.done();
+    }
+
+    function checkCursorDirection(statement, direction) {
+        request = eval(statement);
+        request.onsuccess = function(event) {
+            assert_not_equals(event.target.result, null, &quot;Check the result is not null&quot;)
+            assert_equals(event.target.result.direction, direction, &quot;Check the result direction&quot;);
+        };
+    }
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidb_webworkersprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL IndexedDB inside of a WebWorker  assert_equals: worker has idb object expected true but got false
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidb_webworkersprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idb_webworkers-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IndexedDB inside of a WebWorker &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, count = 0,
+      t = async_test();
+
+    t.step(function() {
+        var worker = new Worker(&quot;idbworker.js&quot;);
+        worker.onmessage = t.step_func(function (e) {
+            switch(count) {
+                case 0:
+                    assert_equals(e.data, true, 'worker has idb object')
+                    break
+
+                case 1:
+                    assert_equals(e.data, &quot;test&quot;, &quot;get(1) in worker&quot;)
+                    t.done()
+            }
+
+            count++
+        });
+
+        worker.postMessage(1);
+    })
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursoradvancecontinueasyncprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS IDBCursor asyncness - advance 
+PASS IDBCursor asyncness - continue 
+PASS IDBCursor asyncness - fresh advance still async 
+PASS IDBCursor asyncness - fresh continue still async 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursoradvancecontinueasyncprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,186 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor asyncness&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db, open;
+
+    setup(function() {
+        open = indexedDB.open('testdb-' + new Date().getTime());
+        open.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;test&quot;);
+            objStore.createIndex(&quot;index&quot;, &quot;&quot;);
+
+            objStore.add(&quot;data&quot;,  1);
+            objStore.add(&quot;data2&quot;, 2);
+        };
+    },
+    { explicit_done: true });
+
+
+    open.onsuccess = function() {
+
+
+        async_test(document.title + &quot; - advance&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;data&quot;)
+                        assert_equals(cursor.key, 1)
+                        cursor.advance(1)
+                        assert_equals(cursor.value, &quot;data&quot;)
+                        assert_equals(cursor.key, 1)
+                        break
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;data2&quot;)
+                        assert_equals(cursor.key, 2)
+                        cursor.advance(1)
+                        assert_equals(cursor.value, &quot;data2&quot;)
+                        assert_equals(cursor.key, 2)
+                        break
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count)
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - continue&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;data&quot;)
+                        assert_equals(cursor.key,   &quot;data&quot;)
+                        assert_equals(cursor.primaryKey, 1)
+                        cursor.continue(&quot;data2&quot;)
+                        assert_equals(cursor.value, &quot;data&quot;)
+                        assert_equals(cursor.key,   &quot;data&quot;)
+                        assert_equals(cursor.primaryKey, 1)
+                        break
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;data2&quot;)
+                        assert_equals(cursor.key,   &quot;data2&quot;)
+                        assert_equals(cursor.primaryKey, 2)
+                        cursor.continue()
+                        assert_equals(cursor.value, &quot;data2&quot;)
+                        assert_equals(cursor.key,   &quot;data2&quot;)
+                        assert_equals(cursor.primaryKey, 2)
+                        break
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count)
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - fresh advance still async&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+                cursor.advance(1)
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;data&quot;)
+                        assert_equals(cursor.key,   &quot;data&quot;)
+                        assert_equals(cursor.primaryKey, 1)
+                        break
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;data2&quot;)
+                        assert_equals(cursor.key,   &quot;data2&quot;)
+                        assert_equals(cursor.primaryKey, 2)
+                        break
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count)
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - fresh continue still async&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+                cursor.continue()
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;data&quot;)
+                        assert_equals(cursor.key, 1)
+                        break
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;data2&quot;)
+                        assert_equals(cursor.key, 2)
+                        break
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count)
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+        // Stop blocking the testing system from hereon
+        done();
+    }
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceinvalidprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS IDBCursor.advance() - invalid - attempt to call advance twice 
+PASS IDBCursor.advance() - invalid - pass something other than number 
+PASS IDBCursor.advance() - invalid - pass null/undefined 
+PASS IDBCursor.advance() - invalid - missing argument 
+PASS IDBCursor.advance() - invalid - pass negative numbers 
+PASS IDBCursor.advance() - invalid - got value not set on exception 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceinvalidprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,188 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.advance() - invalid&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;link rel=assert title=&quot;If the value for count is 0 (zero) or a negative number, this method must throw a JavaScript TypeError exception.&quot;&gt;
+&lt;link rel=assert title=&quot;TypeError The value passed into the count parameter was zero or a negative number.&quot;&gt;
+&lt;link rel=assert title=&quot;InvalidStateError The cursor is currently being iterated, or has iterated past its end.&quot;&gt;
+&lt;link rel=assert title=&quot;Calling this method more than once before new cursor data has been loaded is not allowed and results in a DOMException of type InvalidStateError being thrown. For example, calling advance() twice from the same onsuccess handler results in a DOMException of type InvalidStateError being thrown on the second call.&quot;&gt;
+&lt;link rel=assert title=&quot;Before this method returns, unless an exception was thrown, it sets the got value flag on the cursor to false.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db, open;
+
+    setup(function() {
+        open = indexedDB.open('testdb-' + new Date().getTime());
+        open.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;test&quot;);
+            objStore.createIndex(&quot;index&quot;, &quot;&quot;);
+
+            objStore.add(&quot;data&quot;,  1);
+            objStore.add(&quot;data2&quot;, 2);
+        };
+    },
+    { explicit_done: true });
+
+
+    open.onsuccess = function() {
+
+        async_test(document.title + &quot; - attempt to call advance twice&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                cursor.advance(1);
+
+                // Second try
+                assert_throws('InvalidStateError',
+                    function() { cursor.advance(1); }, 'second advance');
+
+                assert_throws('InvalidStateError',
+                    function() { cursor.advance(3); }, 'third advance');
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - pass something other than number&quot;).step(function(e) {
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                var cursor = e.target.result;
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(document); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance({}); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance([]); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(&quot;&quot;); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(&quot;1 2&quot;); });
+
+                this.done();
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - pass null/undefined&quot;).step(function(e) {
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                var cursor = e.target.result;
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(null); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(undefined); });
+
+                var myvar = null;
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(myvar); });
+
+                this.done();
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - missing argument&quot;).step(function(e) {
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                var cursor = e.target.result;
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(); });
+
+                this.done();
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - pass negative numbers&quot;).step(function(e) {
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                var cursor = e.target.result;
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(-1); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(NaN); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(0); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(-0); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(Infinity); });
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(-Infinity); });
+
+                var myvar = -999999;
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(myvar); });
+
+                this.done();
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - got value not set on exception&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                var cursor = e.target.result;
+                if (!cursor)
+                {
+                    assert_equals(count, 2, &quot;count runs&quot;);
+                    this.done();
+                    return;
+                }
+
+                assert_throws({ name: &quot;TypeError&quot; },
+                    function() { cursor.advance(0); });
+
+                cursor.advance(1);
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        // Stop blocking the testing system from hereon
+        done();
+    }
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS IDBCursor.advance() - advances 
+PASS IDBCursor.advance() - advances backwards 
+PASS IDBCursor.advance() - skip far forward 
+PASS IDBCursor.advance() - within range 
+PASS IDBCursor.advance() - within single key range 
+PASS IDBCursor.advance() - within single key range, with several results 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursoradvanceprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,243 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.advance()&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db, open;
+
+    setup(function() {
+        open = indexedDB.open(&quot;testdb-&quot; + new Date().getTime());
+        open.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;test&quot;);
+            objStore.createIndex(&quot;index&quot;, &quot;&quot;);
+
+            objStore.add(&quot;cupcake&quot;, 5);
+            objStore.add(&quot;pancake&quot;, 3); // Yes, it is intended
+            objStore.add(&quot;pie&quot;,     1);
+            objStore.add(&quot;pie&quot;,     4);
+            objStore.add(&quot;taco&quot;,    2);
+        };
+    },
+    { explicit_done: true });
+
+
+    open.onsuccess = function() {
+
+        async_test(document.title + &quot; - advances&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 3, &quot;count&quot;);
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;cupcake&quot;);
+                        assert_equals(cursor.primaryKey, 5);
+                        break;
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 1);
+                        break;
+
+                    case 2:
+                        assert_equals(cursor.value, &quot;taco&quot;);
+                        assert_equals(cursor.primaryKey, 2);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+                cursor.advance(2);
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+        async_test(document.title + &quot; - advances backwards&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor(null, &quot;prev&quot;);
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 3, &quot;count&quot;);
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;taco&quot;);
+                        assert_equals(cursor.primaryKey, 2);
+                        break;
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 1);
+                        break;
+
+                    case 2:
+                        assert_equals(cursor.value, &quot;cupcake&quot;);
+                        assert_equals(cursor.primaryKey, 5);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+                cursor.advance(2);
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+        async_test(document.title + &quot; - skip far forward&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 1, &quot;count&quot;);
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;cupcake&quot;);
+                        assert_equals(cursor.primaryKey, 5);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+                cursor.advance(100000);
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - within range&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor(IDBKeyRange.lowerBound(&quot;cupcake&quot;, true));
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, &quot;count&quot;);
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;pancake&quot;);
+                        assert_equals(cursor.primaryKey, 3);
+                        break;
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 4);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+                cursor.advance(2);
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - within single key range&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor(&quot;pancake&quot;);
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 1, &quot;count&quot;);
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;pancake&quot;);
+                        assert_equals(cursor.primaryKey, 3);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+                cursor.advance(1);
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - within single key range, with several results&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor(&quot;pie&quot;);
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, &quot;count&quot;);
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 1);
+                        break;
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 4);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+                cursor.advance(1);
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        // Stop blocking the testing system from hereon
+        done();
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorcontinueprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS IDBCursor.continue() - continues 
+PASS IDBCursor.continue() - with given key 
+PASS IDBCursor.continue() - skip far forward 
+PASS IDBCursor.continue() - within range 
+PASS IDBCursor.continue() - within single key range 
+PASS IDBCursor.continue() - within single key range, with several results 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorcontinueprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,240 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue()&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue-void-any-key&quot;&gt;
+&lt;link rel=assert title=&quot;The next key to position this cursor at&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db, open;
+    var store = [ { value: &quot;cupcake&quot;, key: 5 },
+                  { value: &quot;pancake&quot;, key: 3 },
+                  { value: &quot;pie&quot;,     key: 1 },
+                  { value: &quot;pie&quot;,     key: 4 },
+                  { value: &quot;taco&quot;,    key: 2 } ];
+
+    setup(function() {
+        open = indexedDB.open('testdb-' + new Date().getTime());
+        open.onupgradeneeded = function(e) {
+            var os, i;
+            db = e.target.result;
+            os = db.createObjectStore(&quot;test&quot;);
+            os.createIndex(&quot;index&quot;, &quot;&quot;);
+
+            for (i = 0; i &lt; store.length; i++)
+                os.add(store[i].value, store[i].key);
+        };
+    },
+    { explicit_done: true });
+
+
+    open.onsuccess = function() {
+
+
+        async_test(document.title + &quot; - continues&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 5, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                assert_equals(cursor.value, store[count].value);
+                assert_equals(cursor.primaryKey, store[count].key);
+
+                cursor.continue();
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - with given key&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;).openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 3, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;cupcake&quot;);
+                        assert_equals(cursor.primaryKey, 5);
+                        cursor.continue(&quot;pie&quot;);
+                        break;
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 1);
+                        cursor.continue(&quot;taco&quot;);
+                        break;
+
+                    case 2:
+                        assert_equals(cursor.value, &quot;taco&quot;);
+                        assert_equals(cursor.primaryKey, 2);
+                        cursor.continue();
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error&quot;)
+        });
+
+
+        async_test(document.title + &quot; - skip far forward&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor();
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 1, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;cupcake&quot;);
+                        assert_equals(cursor.primaryKey, 5);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+                cursor.continue([]); // Arrays are always bigger than strings
+
+            });
+            rq.onerror = fail(this, &quot;unexpected error2&quot;)
+        });
+
+
+        async_test(document.title + &quot; - within range&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor(IDBKeyRange.lowerBound(&quot;cupcake&quot;, true));
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;pancake&quot;);
+                        assert_equals(cursor.primaryKey, 3);
+                        cursor.continue(&quot;pie&quot;);
+                        break;
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 1);
+                        cursor.continue(&quot;zzz&quot;);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error1&quot;)
+        });
+
+
+        async_test(document.title + &quot; - within single key range&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor(&quot;pancake&quot;);
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 1, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;pancake&quot;);
+                        assert_equals(cursor.primaryKey, 3);
+                        cursor.continue(&quot;pie&quot;);
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error1&quot;)
+        });
+
+
+        async_test(document.title + &quot; - within single key range, with several results&quot;).step(function(e) {
+            var count = 0;
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;)
+                       .openCursor(&quot;pie&quot;);
+
+            rq.onsuccess = this.step_func(function(e) {
+                if (!e.target.result) {
+                    assert_equals(count, 2, 'count');
+                    this.done();
+                    return;
+                }
+                var cursor = e.target.result;
+
+                switch(count) {
+                    case 0:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 1);
+                        cursor.continue();
+                        break;
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;pie&quot;);
+                        assert_equals(cursor.primaryKey, 4);
+                        cursor.continue();
+                        break;
+
+                    default:
+                        assert_unreached(&quot;Unexpected count: &quot; + count);
+                }
+
+                count++;
+            });
+            rq.onerror = fail(this, &quot;unexpected error1&quot;)
+        });
+
+
+        // Stop blocking the testing system from hereon
+        done();
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexkeyrangeprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS IDBCursor direction - index with keyrange - next 
+PASS IDBCursor direction - index with keyrange - prev 
+PASS IDBCursor direction - index with keyrange - nextunique 
+PASS IDBCursor direction - index with keyrange - prevunique 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexkeyrangeprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,82 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor direction - index with keyrange&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;next&quot;, let found record be the first record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title=&quot;If position is defined, and source is an index, the record's key is equal to position and the record's value is greater than object store position or the record's key is greater than position.&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;prev&quot;, let found record be the last record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title=&quot;If position is defined, and source is an index, the record's key is equal to position and the record's value is less than object store position or the record's key is less than position.&quot;&gt;
+&lt;link rel=assert title=&quot;If range is defined, the record's key is in range.&quot;&gt;
+&lt;link rel=assert title=&quot;If temp record is defined, let found record be the first record in records whose key is equal to temp record's key.&quot;&gt;
+&lt;link rel=assert title=&quot;records is always sorted in ascending key order. In the case of source being an index, records is secondarily sorted in ascending value order.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var records = [ 1337, &quot;Alice&quot;, &quot;Bob&quot;, &quot;Bob&quot;, &quot;Greg&quot;, &quot;Åke&quot;, [&quot;Anne&quot;] ];
+    var directions = [&quot;next&quot;, &quot;prev&quot;, &quot;nextunique&quot;, &quot;prevunique&quot;];
+    var tests = {};
+
+    directions.forEach(function(dir) {
+        tests[dir] = async_test(document.title + ' - ' + dir);
+    });
+
+    var open_rq = indexedDB.open(&quot;testdb-&quot; + new Date().getTime() + Math.random());
+
+    open_rq.onupgradeneeded = function(e) {
+        var objStore = e.target.result.createObjectStore(&quot;test&quot;);
+        objStore.createIndex(&quot;idx&quot;, &quot;name&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add({ name: records[i] }, i);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.onerror = fail_helper(&quot;db.onerror&quot;);
+
+
+        // The tests
+        testdir('next',       ['Alice:1', 'Bob:2', 'Bob:3', 'Greg:4']);
+        testdir('prev',       ['Greg:4',  'Bob:3', 'Bob:2', 'Alice:1']);
+        testdir('nextunique', ['Alice:1', 'Bob:2', 'Greg:4']);
+        testdir('prevunique', ['Greg:4',  'Bob:2', 'Alice:1']);
+
+
+        // Test function
+        function testdir(dir, expect) {
+            var count = 0;
+            var t = tests[dir];
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;idx&quot;).openCursor(IDBKeyRange.bound(&quot;AA&quot;, &quot;ZZ&quot;), dir);
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+                if (!cursor) {
+                    assert_equals(count, expect.length, &quot;cursor runs&quot;);
+                    t.done();
+                }
+                assert_equals(cursor.value.name + &quot;:&quot; + cursor.primaryKey, expect[count], &quot;cursor.value&quot;);
+                count++;
+                cursor.continue();
+            });
+            rq.onerror = t.step_func(function(e) {
+                e.preventDefault();
+                e.stopPropagation();
+                assert_unreached(&quot;rq.onerror - &quot; + e.message);
+            });
+        }
+    };
+
+    // Fail handling
+    function fail_helper(name) {
+        return function() {
+            directions.forEach(function(dir) {
+                tests[dir].step(function() { assert_unreached(name); });
+            });
+        };
+    }
+    open_rq.onblocked = fail_helper('open_rq.onblocked');
+    open_rq.onerror = fail_helper('open_rq.onerror');
+&lt;/script&gt;
+
+&lt;div id=log&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS IDBCursor direction - index - next 
+PASS IDBCursor direction - index - prev 
+PASS IDBCursor direction - index - nextunique 
+PASS IDBCursor direction - index - prevunique 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionindexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor direction - index&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;next&quot;, let found record be the first record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title=&quot;If position is defined, and source is an object store, the record's key is greater than position.&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;prev&quot;, let found record be the last record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title=&quot;If position is defined, and source is an object store, the record's key is less than position.&quot;&gt;
+&lt;link rel=assert title=&quot;Set cursor's position to found record's key. If source is an index, set cursor's object store position to found record's value.&quot;&gt;
+&lt;link rel=assert title=&quot;Set cursor's key to found record's key.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var records = [ &quot;Alice&quot;, &quot;Bob&quot;, &quot;Bob&quot;, &quot;Greg&quot; ];
+    var directions = [&quot;next&quot;, &quot;prev&quot;, &quot;nextunique&quot;, &quot;prevunique&quot;];
+    var tests = {};
+
+    directions.forEach(function(dir) {
+        tests[dir] = async_test(document.title + ' - ' + dir);
+    });
+
+    var open_rq = indexedDB.open(&quot;testdb-&quot; + new Date().getTime() + Math.random());
+
+    open_rq.onupgradeneeded = function(e) {
+        var objStore = e.target.result.createObjectStore(&quot;test&quot;);
+        objStore.createIndex(&quot;idx&quot;, &quot;name&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add({ name: records[i] }, i);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.onerror = fail_helper(&quot;db.onerror&quot;);
+
+
+        // The tests
+        testdir('next',       ['Alice:0', 'Bob:1', 'Bob:2', 'Greg:3']);
+        testdir('prev',       ['Greg:3',  'Bob:2', 'Bob:1', 'Alice:0']);
+        testdir('nextunique', ['Alice:0', 'Bob:1', 'Greg:3']);
+        testdir('prevunique', ['Greg:3',  'Bob:1', 'Alice:0']);
+
+
+        // Test function
+        function testdir(dir, expect) {
+            var count = 0;
+            var t = tests[dir];
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;idx&quot;).openCursor(undefined, dir);
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+                if (!cursor) {
+                    assert_equals(count, expect.length, &quot;cursor runs&quot;);
+                    t.done();
+                }
+                assert_equals(cursor.value.name + &quot;:&quot; + cursor.primaryKey, expect[count], &quot;cursor.value&quot;);
+                count++;
+                cursor.continue();
+            });
+            rq.onerror = t.step_func(function(e) {
+                e.preventDefault();
+                e.stopPropagation();
+                assert_unreached(&quot;rq.onerror - &quot; + e.message);
+            });
+        }
+    };
+
+    // Fail handling
+    function fail_helper(name) {
+        return function() {
+            directions.forEach(function(dir) {
+                tests[dir].step(function() { assert_unreached(name); });
+            });
+        };
+    }
+    open_rq.onblocked = fail_helper('open_rq.onblocked');
+    open_rq.onerror = fail_helper('open_rq.onerror');
+&lt;/script&gt;
+
+&lt;div id=log&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstorekeyrangeprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS IDBCursor direction - object store with keyrange - next 
+PASS IDBCursor direction - object store with keyrange - prev 
+PASS IDBCursor direction - object store with keyrange - nextunique 
+PASS IDBCursor direction - object store with keyrange - prevunique 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstorekeyrangeprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,77 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor direction - object store with keyrange&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;next&quot;, let found record be the first record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title='If direction is &quot;prev&quot;, let found record be the last record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title=&quot;If range is defined, the record's key is in range.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var records = [ 1337, &quot;Alice&quot;, &quot;Bob&quot;, &quot;Greg&quot;, &quot;Åke&quot;, [&quot;Anne&quot;] ];
+    var directions = [&quot;next&quot;, &quot;prev&quot;, &quot;nextunique&quot;, &quot;prevunique&quot;];
+    var tests = {};
+
+    directions.forEach(function(dir) {
+        tests[dir] = async_test(document.title + ' - ' + dir);
+    });
+
+    var open_rq = indexedDB.open(&quot;testdb-&quot; + new Date().getTime() + Math.random());
+
+    open_rq.onupgradeneeded = function(e) {
+        var objStore = e.target.result.createObjectStore(&quot;test&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i], records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.onerror = fail_helper(&quot;db.onerror&quot;);
+
+
+        // The tests
+        testdir('next',       ['Alice', 'Bob', 'Greg']);
+        testdir('prev',       ['Greg', 'Bob', 'Alice']);
+        testdir('nextunique', ['Alice', 'Bob', 'Greg']);
+        testdir('prevunique', ['Greg', 'Bob', 'Alice']);
+
+
+        // Test function
+        function testdir(dir, expect) {
+            var count = 0;
+            var t = tests[dir];
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).openCursor(IDBKeyRange.bound(&quot;AA&quot;, &quot;ZZ&quot;), dir);
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+                if (!cursor) {
+                    assert_equals(count, expect.length, &quot;cursor runs&quot;);
+                    t.done();
+                }
+                assert_equals(cursor.value, expect[count], &quot;cursor.value&quot;);
+                count++;
+                cursor.continue();
+            });
+            rq.onerror = t.step_func(function(e) {
+                e.preventDefault();
+                e.stopPropagation();
+                assert_unreached(&quot;rq.onerror - &quot; + e.message);
+            });
+        }
+    };
+
+    // Fail handling
+    function fail_helper(name) {
+        return function() {
+            directions.forEach(function(dir) {
+                tests[dir].step(function() { assert_unreached(name); });
+            });
+        };
+    }
+    open_rq.onblocked = fail_helper('open_rq.onblocked');
+    open_rq.onerror = fail_helper('open_rq.onerror');
+&lt;/script&gt;
+
+&lt;div id=log&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS IDBCursor direction - object store - next 
+PASS IDBCursor direction - object store - prev 
+PASS IDBCursor direction - object store - nextunique 
+PASS IDBCursor direction - object store - prevunique 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionobjectstoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor direction - object store&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;next&quot;, let found record be the first record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title=&quot;If position is defined, and source is an object store, the record's key is greater than position.&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;prev&quot;, let found record be the last record in records which satisfy all of the following requirements'&gt;
+&lt;link rel=assert title=&quot;If position is defined, and source is an object store, the record's key is less than position.&quot;&gt;
+&lt;link rel=assert title=&quot;Set cursor's position to found record's key. If source is an index, set cursor's object store position to found record's value.&quot;&gt;
+&lt;link rel=assert title=&quot;Set cursor's key to found record's key.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var records = [ &quot;Alice&quot;, &quot;Bob&quot;, &quot;Greg&quot; ];
+    var directions = [&quot;next&quot;, &quot;prev&quot;, &quot;nextunique&quot;, &quot;prevunique&quot;];
+    var tests = {};
+
+    directions.forEach(function(dir) {
+        tests[dir] = async_test(document.title + ' - ' + dir);
+    });
+
+    var open_rq = indexedDB.open(&quot;testdb-&quot; + new Date().getTime() + Math.random());
+
+    open_rq.onupgradeneeded = function(e) {
+        var objStore = e.target.result.createObjectStore(&quot;test&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i], records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.onerror = fail_helper(&quot;db.onerror&quot;);
+
+
+        // The tests
+        testdir('next',       ['Alice', 'Bob', 'Greg']);
+        testdir('prev',       ['Greg', 'Bob', 'Alice']);
+        testdir('nextunique', ['Alice', 'Bob', 'Greg']);
+        testdir('prevunique', ['Greg', 'Bob', 'Alice']);
+
+
+        // Test function
+        function testdir(dir, expect) {
+            var count = 0;
+            var t = tests[dir];
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).openCursor(undefined, dir);
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+                if (!cursor) {
+                    assert_equals(count, expect.length, &quot;cursor runs&quot;);
+                    t.done();
+                }
+                assert_equals(cursor.value, expect[count], &quot;cursor.value&quot;);
+                count++;
+                cursor.continue();
+            });
+            rq.onerror = t.step_func(function(e) {
+                e.preventDefault();
+                e.stopPropagation();
+                assert_unreached(&quot;rq.onerror - &quot; + e.message);
+            });
+        }
+    };
+
+    // Fail handling
+    function fail_helper(name) {
+        return function() {
+            directions.forEach(function(dir) {
+                tests[dir].step(function() { assert_unreached(name); });
+            });
+        };
+    }
+    open_rq.onblocked = fail_helper('open_rq.onblocked');
+    open_rq.onerror = fail_helper('open_rq.onerror');
+&lt;/script&gt;
+
+&lt;div id=log&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS IDBCursor.direction - undefined 
+PASS IDBCursor.direction - next 
+PASS IDBCursor.direction - prev 
+PASS IDBCursor.direction - nextunique 
+PASS IDBCursor.direction - prevunique 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursordirectionprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.direction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    function cursor_direction(constant, dir)
+    {
+        var db,
+          t = async_test(document.title + &quot; - &quot; + dir),
+          expected = dir ? dir : &quot;next&quot;;
+
+        var open_rq = createdb(t);
+
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;test&quot;);
+
+            objStore.add(&quot;data&quot;, &quot;key&quot;);
+        };
+
+        open_rq.onsuccess = t.step_func(function(e) {
+            var cursor_rq, count = 0;
+            var os = db.transaction(&quot;test&quot;)
+                       .objectStore(&quot;test&quot;);
+            if (dir)
+                cursor_rq = os.openCursor(undefined, dir);
+            else
+                cursor_rq = os.openCursor();
+
+            cursor_rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+
+                assert_equals(cursor.direction, constant, 'direction constant');
+                assert_equals(cursor.direction, expected, 'direction');
+                assert_readonly(cursor, 'direction');
+
+                count++;
+                if (count &gt;= 2)
+                    t.done();
+            });
+
+            var cursor_rq2 = db.transaction(&quot;test&quot;)
+                              .objectStore(&quot;test&quot;)
+                              .openCursor(undefined, constant);
+
+            cursor_rq2.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+
+                assert_equals(cursor.direction, constant, 'direction constant (second try)');
+                assert_equals(cursor.direction, expected, 'direction (second try)');
+                assert_readonly(cursor, 'direction');
+
+                count++;
+                if (count &gt;= 2)
+                    t.done();
+            });
+
+        });
+    }
+
+    cursor_direction(&quot;next&quot;);
+    cursor_direction(&quot;next&quot;,       &quot;next&quot;);
+    cursor_direction(&quot;prev&quot;,       &quot;prev&quot;);
+    cursor_direction(&quot;nextunique&quot;, &quot;nextunique&quot;);
+    cursor_direction(&quot;prevunique&quot;, &quot;prevunique&quot;);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorkeyprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBCursor.key - 1 
+PASS IDBCursor.key - key 
+PASS IDBCursor.key - my,key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorkeyprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-key-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    function cursor_key(key)
+    {
+        var db,
+          t = async_test(document.title + &quot; - &quot; + key);
+
+        var open_rq = createdb(t);
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;test&quot;);
+
+            objStore.add(&quot;data&quot;, key);
+        };
+
+        open_rq.onsuccess = t.step_func(function(e) {
+            var cursor_rq = db.transaction(&quot;test&quot;)
+                              .objectStore(&quot;test&quot;)
+                              .openCursor();
+
+            cursor_rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+                assert_equals(cursor.value, &quot;data&quot;, &quot;prequisite cursor.value&quot;);
+
+                assert_key_equals(cursor.key, key, 'key');
+                assert_readonly(cursor, 'key');
+
+                if (key instanceof Array) {
+                    cursor.key.push(&quot;new&quot;);
+                    key.push(&quot;new&quot;);
+
+                    assert_key_equals(cursor.key, key, 'key after array push');
+
+                    // But we can not change key (like readonly, just a bit different)
+                    cursor.key = 10;
+                    assert_key_equals(cursor.key, key, 'key after assignment');
+                }
+
+                t.done();
+            });
+        });
+    }
+
+    cursor_key(1);
+    cursor_key(&quot;key&quot;);
+    cursor_key([&quot;my&quot;, &quot;key&quot;]);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorprimarykeyprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBCursor.primaryKey - 1 
+PASS IDBCursor.primaryKey - key 
+PASS IDBCursor.primaryKey - my,key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorprimarykeyprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.primaryKey&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    function cursor_primarykey(key)
+    {
+        var db,
+          t = async_test(document.title + &quot; - &quot; + key);
+
+        var open_rq = createdb(t);
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;test&quot;);
+            objStore.createIndex(&quot;index&quot;, &quot;&quot;);
+
+            objStore.add(&quot;data&quot;, key);
+        };
+
+        open_rq.onsuccess = t.step_func(function(e) {
+            var cursor_rq = db.transaction(&quot;test&quot;)
+                              .objectStore(&quot;test&quot;)
+                              .index(&quot;index&quot;)
+                              .openCursor();
+
+            cursor_rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+
+                assert_equals(cursor.value, &quot;data&quot;, &quot;prequisite cursor.value&quot;);
+                assert_equals(cursor.key, &quot;data&quot;, &quot;prequisite cursor.key&quot;);
+
+                assert_key_equals(cursor.primaryKey, key, 'primaryKey');
+                assert_readonly(cursor, 'primaryKey');
+
+                if (key instanceof Array) {
+                    cursor.primaryKey.push(&quot;new&quot;);
+                    key.push(&quot;new&quot;);
+
+                    assert_key_equals(cursor.primaryKey, key, 'primaryKey after array push');
+
+                    // But we can not change key (like readonly, just a bit different)
+                    cursor.key = 10;
+                    assert_key_equals(cursor.primaryKey, key, 'key after assignment');
+                }
+
+                t.done();
+            });
+        });
+    }
+
+    cursor_primarykey(1);
+    cursor_primarykey(&quot;key&quot;);
+    cursor_primarykey([&quot;my&quot;, &quot;key&quot;]);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorreusedprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor is reused 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorreusedprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor is reused&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;meta rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue-void-any-key&quot;&gt;
+&lt;meta rel=assert title=&quot;Otherwise this method runs the steps for asynchronously executing a request. However, the steps are slightly modified such that instead of creating a new IDBRequest, it reuses the request originally created when this cursor was created. The done flag on the request is set to false before the request is returned. The steps are run with the cursor's source as source and the steps for iterating a cursor as operation, using this cursor as cursor and the key parameter as key.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+        var db
+        var open_rq = createdb(async_test())
+
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result
+            var os = db.createObjectStore(&quot;test&quot;)
+
+            os.add(&quot;data&quot;,  &quot;k&quot;)
+            os.add(&quot;data2&quot;, &quot;k2&quot;)
+        }
+
+        open_rq.onsuccess = function(e) {
+            var cursor
+            var count = 0
+            var rq = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).openCursor()
+
+            rq.onsuccess = this.step_func(function(e)
+            {
+                switch(count)
+                {
+                    case 0:
+                        cursor = e.target.result
+
+                        assert_equals(cursor.value, &quot;data&quot;, &quot;prequisite cursor.value&quot;)
+                        cursor.custom_cursor_value = 1
+                        e.target.custom_request_value = 2
+
+                        cursor.continue()
+                        break
+
+                    case 1:
+                        assert_equals(cursor.value, &quot;data2&quot;, &quot;prequisite cursor.value&quot;)
+                        assert_equals(cursor.custom_cursor_value, 1, &quot;custom cursor value&quot;)
+                        assert_equals(e.target.custom_request_value, 2, &quot;custom request value&quot;)
+
+                        cursor.advance(1)
+                        break
+
+                    case 2:
+                        assert_false(!!e.target.result, &quot;got cursor&quot;)
+                        assert_equals(cursor.custom_cursor_value, 1, &quot;custom cursor value&quot;)
+                        assert_equals(e.target.custom_request_value, 2, &quot;custom request value&quot;)
+                        break
+                }
+                count++
+            })
+
+            rq.transaction.oncomplete = this.step_func(function() {
+                assert_equals(count, 3, &quot;cursor callback runs&quot;)
+                assert_equals(rq.custom_request_value, 2, &quot;variable placed on old IDBRequest&quot;)
+                assert_equals(cursor.custom_cursor_value, 1, &quot;custom cursor value (transaction.complete)&quot;)
+                this.done()
+            })
+        }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorsourceprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS IDBCursor.source - IDBObjectStore 
+PASS IDBCursor.source - IDBIndex 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursorsourceprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor-source-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.source&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    setup({ explicit_done: true });
+
+    var db;
+    var open_rq = indexedDB.open('testdb-' + new Date().getTime());
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;my_objectstore&quot;);
+        objStore.createIndex(&quot;my_index&quot;, &quot;&quot;);
+
+        objStore.add(&quot;data&quot;,  1);
+        objStore.add(&quot;data2&quot;, 2);
+    };
+
+    function cursor_source(name, stringified_object, cursor_rq) {
+        var cursor;
+
+        cursor_rq.onsuccess = this.step_func(function(e) {
+            if (!e.target.result) {
+                return;
+            }
+            cursor = e.target.result;
+            assert_readonly(cursor, 'source');
+
+            // Direct try
+            assert_true(cursor.source instanceof Object, &quot;source isobject&quot;);
+            assert_equals(cursor.source + &quot;&quot;, stringified_object, &quot;source&quot;);
+            assert_equals(cursor.source.name, name, &quot;name&quot;);
+
+            cursor.continue();
+        });
+
+        cursor_rq.transaction.oncomplete = this.step_func(function(e) {
+            this.done();
+         });
+
+        cursor_rq.transaction.onerror = this.step_func(function(e) {
+            assert_unreached(&quot;Transaction got error. &quot; + (e.target.error ? e.target.error.name : &quot;unknown&quot;));
+        });
+    }
+
+    open_rq.onsuccess = function() {
+        async_test(document.title + ' - IDBObjectStore').step(function() {
+            cursor_source.call(this, &quot;my_objectstore&quot;, &quot;[object IDBObjectStore]&quot;, db.transaction(&quot;my_objectstore&quot;)
+                                                       .objectStore(&quot;my_objectstore&quot;)
+                                                       .openCursor());
+        });
+
+        async_test(document.title + ' - IDBIndex').step(function() {
+            cursor_source.call(this, &quot;my_index&quot;, &quot;[object IDBIndex]&quot;, db.transaction(&quot;my_objectstore&quot;)
+                                                 .objectStore(&quot;my_objectstore&quot;)
+                                                 .index(&quot;my_index&quot;)
+                                                 .openCursor());
+        });
+
+        done();
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_indexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - index - iterate cursor number of times specified by count  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_indexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.advance() - index - iterate cursor number of times specified by count &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_2&quot;, iKey: &quot;indexKey_2&quot; },
+                  { pKey: &quot;primaryKey_3&quot;, iKey: &quot;indexKey_3&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+        store.createIndex(&quot;idx&quot;, &quot;iKey&quot;);
+
+        for(var i = 0; i &lt; records.length; i++) {
+            store.add(records[i]);
+        }
+    };
+
+    open_rq.onsuccess = function (e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;idx&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            switch(count) {
+                case 0:
+                    count += 3;
+                    cursor.advance(3);
+                    break;
+                case 3:
+                    var record = cursor.value;
+                    assert_equals(record.pKey, records[count].pKey, &quot;record.pKey&quot;);
+                    assert_equals(record.iKey, records[count].iKey, &quot;record.iKey&quot;);
+                    t.done();
+                    break;
+                default:
+                    assert_unreached(&quot;unexpected count&quot;);
+                    break;
+            }
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - attempt to pass a count parameter that is not a number 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.advance() - attempt to pass a count parameter that is not a number&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;link rel=assert title=&quot;The value passed into the count parameter was zero or a negative number.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for(var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor != null, &quot;cursor exist&quot;);
+            assert_throws(new TypeError(),
+                function() { cursor.advance(document); });
+
+            t.done();
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - index - attempt to advance backwards 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.advance() - index - attempt to advance backwards&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;link rel=assert title=&quot;The value passed into the count parameter was zero or a negative number.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script type=&quot;text/javascript&quot;&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath:&quot;pKey&quot; });
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor(undefined, &quot;next&quot;);
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor != null, &quot;cursor exist&quot;);
+            assert_throws(new TypeError(),
+                function() { cursor.advance(-1); });
+
+            t.done();
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - index - iterate to the next record 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.advance() - index - iterate to the next record&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;link rel=assert title=&quot;The operation runs the steps for iterating a cursor count number of times with null as key and this cursor as cursor.&quot;&gt;
+&lt;link rel=assert title=&quot;The number of advances forward the cursor should make.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot;,   iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;,   iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_1-2&quot;, iKey: &quot;indexKey_1&quot; } ],
+      expected = [ { pKey: &quot;primaryKey_0&quot;,   iKey: &quot;indexKey_0&quot; },
+                   { pKey: &quot;primaryKey_1-2&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath:&quot;pKey&quot; })
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;)
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i])
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, expected.length, &quot;cursor run count&quot;)
+                t.done()
+            }
+
+            var record = cursor.value;
+            assert_equals(record.pKey, expected[count].pKey, &quot;primary key&quot;);
+            assert_equals(record.iKey, expected[count].iKey, &quot;index key&quot;);
+
+            cursor.advance(2);
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - index - throw TypeError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - index - throw TypeError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                   { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            assert_throws(new TypeError(), function() {
+                cursor.advance(0);
+            }, &quot;Calling advance() with count argument 0 should throw TypeError.&quot;);
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - index - throw TransactionInactiveError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - index - throw TransactionInactiveError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                   { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            event.target.transaction.abort();
+            assert_throws(&quot;TransactionInactiveError&quot;, function() {
+                cursor.advance(1);
+            }, &quot;Calling advance() should throws an exception TransactionInactiveError when the transaction is not active.&quot;);
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index8privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - index - throw InvalidStateError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index8privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - index - throw InvalidStateError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                   { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            cursor.advance(1);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.advance(1);
+            }, &quot;Calling advance() should throw DOMException when the cursor is currently being iterated.&quot;);
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index9privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - index - throw InvalidStateError caused by object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_index9privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - index - throw InvalidStateError caused by object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                   { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+
+            db.deleteObjectStore(&quot;store&quot;);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.advance(1);
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS  IDBCursor.advance() - object store - iterate cursor number of times specified by count  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt; IDBCursor.advance() - object store - iterate cursor number of times specified by count &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; },
+                  { pKey: &quot;primaryKey_2&quot; },
+                  { pKey: &quot;primaryKey_3&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for(var i = 0; i &lt; records.length; i++) {
+            store.add(records[i]);
+        }
+    };
+
+    open_rq.onsuccess = function (e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            switch(count) {
+                case 0:
+                    count += 3;
+                    cursor.advance(3);
+                    break;
+                case 3:
+                    assert_equals(cursor.value.pKey, records[count].pKey, &quot;cursor.value.pKey&quot;);
+                    t.done();
+                    break;
+                default:
+                    assert_unreached(&quot;unexpected count&quot;);
+                    break;
+            }
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=log&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - object store - throw TypeError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - object store - throw TypeError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;, &quot;readwrite&quot;);
+        var rq = txn.objectStore(&quot;store&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            assert_throws(new TypeError(), function() {
+                cursor.advance(0);
+            }, &quot;Calling advance() with count argument 0 should throw TypeError.&quot;);
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - object store - throw TransactionInactiveError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - object store - throw TransactionInactiveError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;, &quot;readwrite&quot;);
+        var rq = txn.objectStore(&quot;store&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            event.target.transaction.abort();
+            assert_throws(&quot;TransactionInactiveError&quot;, function() {
+                cursor.advance(1);
+            }, &quot;Calling advance() should throws an exception TransactionInactiveError when the transaction is not active&quot;);
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - object store - throw InvalidStateError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - object store - throw InvalidStateError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-advance-void-unsigned-long-count&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;, &quot;readwrite&quot;);
+        var rq = txn.objectStore(&quot;store&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            cursor.advance(1);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.advance(1);
+            }, &quot;Calling advance() should throw DOMException when the cursor is currently being iterated.&quot;);
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.advance() - object store - throw InvalidStateError caused by object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_advance_objectstore5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.advance() - object store - throw InvalidStateError caused by object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+
+            db.deleteObjectStore(&quot;store&quot;);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.advance(1);
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_indexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - iterate to the next record 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_indexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - iterate to the next record&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue-void-any-key&quot;&gt;
+&lt;link rel=assert title=&quot;Otherwise this method runs the steps for asynchronously executing a request.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;,   iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;,   iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_1-2&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath:&quot;pKey&quot; });
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, records.length, &quot;cursor run count&quot;);
+                t.done();
+            }
+
+            var record = cursor.value;
+            assert_equals(record.pKey, records[count].pKey, &quot;primary key&quot;);
+            assert_equals(record.iKey, records[count].iKey, &quot;index key&quot;);
+
+            cursor.continue();
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - attempt to pass a key parameter that is not a valid key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - attempt to pass a key parameter that is not a valid key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue-void-any-key&quot;&gt;
+&lt;link rel=assert title=&quot;If the key parameter is specified and fulfills any of these conditions this method must throw a DOMException of type DataError&quot;&gt;
+&lt;link rel=assert title=&quot;The parameter is not a valid key.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for(var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_throws(&quot;DataError&quot;,
+                function() { cursor.continue(document); });
+
+            assert_true(cursor instanceof IDBCursorWithValue, &quot;cursor&quot;);
+
+            t.done();
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - attempt to iterate to the previous record when the direction is set for the next record  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - attempt to iterate to the previous record when the direction is set for the next record &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue-void-any-key&quot;&gt;
+&lt;link rel=assert title=&quot;The parameter is less than or equal to this cursor's position and this cursor's direction is 'next' or 'nextunique'.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var count = 0;
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor(undefined, &quot;next&quot;); // XXX: Fx has issue with &quot;undefined&quot;
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, 2, &quot;ran number of times&quot;);
+                t.done();
+            }
+
+            // First time checks key equal, second time checks key less than
+            assert_throws(&quot;DataError&quot;,
+                function() { cursor.continue(records[0].iKey); });
+
+            cursor.continue();
+
+            count++;
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - attempt to iterate to the next record when the direction is set for the previous record 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - attempt to iterate to the next record when the direction is set for the previous record&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue-void-any-key&quot;&gt;
+&lt;link rel=assert title=&quot;The parameter is greater than or equal to this cursor's position and this cursor's direction is 'prev' or 'prevunique'.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_2&quot;, iKey: &quot;indexKey_2&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var count = 0,
+          cursor_rq = db.transaction(&quot;test&quot;)
+                        .objectStore(&quot;test&quot;)
+                        .index(&quot;index&quot;)
+                        .openCursor(undefined, &quot;prev&quot;); // XXX Fx issues w undefined
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result,
+              record = cursor.value;
+
+            switch(count) {
+            case 0:
+                assert_equals(record.pKey, records[2].pKey, &quot;first pKey&quot;);
+                assert_equals(record.iKey, records[2].iKey, &quot;first iKey&quot;);
+                cursor.continue();
+                break;
+
+            case 1:
+                assert_equals(record.pKey, records[1].pKey, &quot;second pKey&quot;);
+                assert_equals(record.iKey, records[1].iKey, &quot;second iKey&quot;);
+                assert_throws(&quot;DataError&quot;,
+                    function() { cursor.continue(&quot;indexKey_2&quot;); });
+                t.done();
+                break;
+
+            default:
+                assert_unreached(&quot;Unexpected count value: &quot; + count);
+            }
+
+            count++;
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - iterate using 'prevunique' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - iterate using 'prevunique'&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;prevunique&quot;, let temp record be the last record in records which satisfy all of the following requirements:'&gt;
+&lt;link rel=assert title=&quot;If position is defined, the record's key is less than position.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot;,   iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;,   iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_1-2&quot;, iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_2&quot;,   iKey: &quot;indexKey_2&quot; } ],
+
+      expected = [ { pKey: &quot;primaryKey_2&quot;,   iKey: &quot;indexKey_2&quot; },
+                 { pKey: &quot;primaryKey_1&quot;,   iKey: &quot;indexKey_1&quot; },
+                 { pKey: &quot;primaryKey_0&quot;,   iKey: &quot;indexKey_0&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var count = 0,
+          cursor_rq = db.transaction(&quot;test&quot;)
+                        .objectStore(&quot;test&quot;)
+                        .index(&quot;index&quot;)
+                        .openCursor(undefined, 'prevunique');
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            if (!e.target.result) {
+                assert_equals(count, expected.length, 'count');
+                t.done();
+                return;
+            }
+            var cursor = e.target.result,
+              record = cursor.value;
+
+            assert_equals(record.pKey, expected[count].pKey, &quot;pKey #&quot; + count);
+            assert_equals(record.iKey, expected[count].iKey, &quot;iKey #&quot; + count);
+
+            assert_equals(cursor.key,  expected[count].iKey, &quot;cursor.key #&quot; + count);
+            assert_equals(cursor.primaryKey, expected[count].pKey, &quot;cursor.primaryKey #&quot; + count);
+
+            count++;
+            cursor.continue(expected[count] ? expected[count].iKey : undefined);
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - iterate using nextunique 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - iterate using nextunique&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
+&lt;link rel=assert title='If direction is &quot;nextunique&quot;, let found record be the first record in records which satisfy all of the following requirements:'&gt;
+&lt;link rel=assert title=&quot;If position is defined, the record's key is greater than position.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot;,   iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;,   iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_1-2&quot;, iKey: &quot;indexKey_1&quot; },
+                  { pKey: &quot;primaryKey_2&quot;,   iKey: &quot;indexKey_2&quot; } ],
+
+      expected = [ { pKey: &quot;primaryKey_0&quot;,   iKey: &quot;indexKey_0&quot; },
+                 { pKey: &quot;primaryKey_1&quot;,   iKey: &quot;indexKey_1&quot; },
+                 { pKey: &quot;primaryKey_2&quot;,   iKey: &quot;indexKey_2&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var count = 0,
+          cursor_rq = db.transaction(&quot;test&quot;)
+                        .objectStore(&quot;test&quot;)
+                        .index(&quot;index&quot;)
+                        .openCursor(undefined, &quot;nextunique&quot;);
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            if (!e.target.result) {
+                assert_equals(count, expected.length, 'count');
+                t.done();
+                return;
+            }
+            var cursor = e.target.result,
+              record = cursor.value;
+
+            assert_equals(record.pKey, expected[count].pKey, &quot;pKey #&quot; + count);
+            assert_equals(record.iKey, expected[count].iKey, &quot;iKey #&quot; + count);
+
+            assert_equals(cursor.key,  expected[count].iKey, &quot;cursor.key #&quot; + count);
+            assert_equals(cursor.primaryKey, expected[count].pKey, &quot;cursor.primaryKey #&quot; + count);
+
+            count++;
+            cursor.continue(expected[count] ? expected[count].iKey : undefined);
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - throw TransactionInactiveError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.continue() - index - throw TransactionInactiveError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            event.target.transaction.abort();
+            assert_throws(&quot;TransactionInactiveError&quot;, function() {
+                cursor.continue();
+            }, &quot;Calling continue() should throws an exception TransactionInactiveError when the transaction is not active.&quot;);
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index8privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - throw InvalidStateError caused by object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_index8privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.continue() - index - throw InvalidStateError caused by object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            db.deleteObjectStore(&quot;store&quot;);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.continue();
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_invalidprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - attempt to call continue two times 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_invalidprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - attempt to call continue two times&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000});
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;);
+
+        objStore.createIndex(&quot;index&quot;, &quot;&quot;);
+
+        objStore.add(&quot;data&quot;,  1);
+        objStore.add(&quot;data2&quot;, 2);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var count = 0;
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            if (!e.target.result) {
+                assert_equals(count, 2, 'count');
+                t.done();
+                return;
+            }
+            var cursor = e.target.result;
+
+            cursor.continue(undefined);
+
+            // Second try
+            assert_throws('InvalidStateError',
+                function() { cursor.continue(); }, 'second continue');
+
+            assert_throws('InvalidStateError',
+                function() { cursor.continue(3); }, 'third continue');
+
+            count++;
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - object store - iterate to the next record 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - object store - iterate to the next record&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {autoIncrement:true, keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var store = db.transaction(&quot;test&quot;)
+                      .objectStore(&quot;test&quot;);
+
+        cursor_rq = store.openCursor();
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, records.length, &quot;cursor run count&quot;);
+                t.done();
+            }
+
+            var record = cursor.value;
+            assert_equals(record.pKey, records[count].pKey, &quot;primary key&quot;);
+            assert_equals(record.iKey, records[count].iKey, &quot;index key&quot;);
+
+            cursor.continue();
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=log&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - object store - attempt to pass a key parameter is not a valid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - object store - attempt to pass a key parameter is not a valid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exists&quot;);
+            assert_throws(&quot;DataError&quot;,
+                function() { cursor.continue(document); });
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - object store - attempt to iterate to the previous record when the direction is set for the next record 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - object store - attempt to iterate to the previous record when the direction is set for the next record&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor(undefined, &quot;next&quot;);
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+            assert_throws(&quot;DataError&quot;,
+                function() { cursor.continue(records[0].pKey); });
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - object store - attempt to iterate to the next record when the direction is set for the previous record  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - object store - attempt to iterate to the next record when the direction is set for the previous record &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; },
+                  { pKey: &quot;primaryKey_2&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var count = 0,
+          cursor_rq = db.transaction(&quot;test&quot;)
+                        .objectStore(&quot;test&quot;)
+                        .openCursor(null, &quot;prev&quot;);
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor != null, &quot;cursor exist&quot;);
+
+            switch(count) {
+            case 0:
+                assert_equals(cursor.value.pKey, records[2].pKey, &quot;first cursor pkey&quot;);
+                cursor.continue(records[1].pKey);
+                break;
+
+            case 1:
+                assert_equals(cursor.value.pKey, records[1].pKey, &quot;second cursor pkey&quot;);
+                assert_throws(&quot;DataError&quot;,
+                    function() { cursor.continue(records[2].pKey); });
+                t.done();
+                break;
+
+            default:
+                assert_unreached(&quot;Unexpected count value: &quot; + count);
+            }
+
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - object store - throw TransactionInactiveError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.continue() - object store - throw TransactionInactiveError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exists&quot;);
+
+            e.target.transaction.abort();
+            assert_throws(&quot;TransactionInactiveError&quot;, function() {
+                cursor.continue();
+            }, &quot;Calling continue() should throws an exception TransactionInactiveError when the transaction is not active.&quot;);
+
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - object store - throw InvalidStateError caused by object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_continue_objectstore6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.continue() - object store - throw InvalidStateError caused by object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        var cursor_rq = objStore.openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exists&quot;);
+
+            db.deleteObjectStore(&quot;test&quot;);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.continue();
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_indexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - index - remove a record from the object store 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_indexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.delete() - index - remove a record from the object store&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      count = 0,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = t.step_func(CursorDeleteRecord);
+
+
+    function CursorDeleteRecord(e) {
+        var txn = db.transaction(&quot;test&quot;, &quot;readwrite&quot;),
+          cursor_rq = txn.objectStore(&quot;test&quot;)
+                         .index(&quot;index&quot;)
+                         .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+            cursor.delete();
+        });
+
+        txn.oncomplete = t.step_func(VerifyRecordWasDeleted);
+    }
+
+
+    function VerifyRecordWasDeleted(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (!cursor) {
+                assert_equals(count, 1, 'count');
+                t.done();
+            }
+
+            assert_equals(cursor.value.pKey, records[1].pKey);
+            assert_equals(cursor.value.iKey, records[1].iKey);
+            cursor.continue();
+            count++;
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - index - attempt to remove a record in a read-only transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.delete() - index - attempt to remove a record in a read-only transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+            assert_throws('ReadOnlyError', function() { cursor.delete(); });
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - index - attempt to remove a record in an inactive transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.delete() - index - attempt to remove a record in an inactive transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        var index = objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        var cursor_rq = index.openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+            window.cursor = cursor;
+        });
+
+        e.target.transaction.oncomplete = t.step_func(function(e) {
+            assert_throws('TransactionInactiveError', function() { window.cursor.delete(); })
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - index - throw InvalidStateError caused by object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.delete() - index - throw InvalidStateError caused by object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                   { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+
+            db.deleteObjectStore(&quot;store&quot;);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.delete();
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - index - throw InvalidStateError when the cursor is being iterated 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_index5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.delete() - index - throw InvalidStateError when the cursor is being iterated&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-delete-IDBRequest&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                   { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+
+            cursor.continue();
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.delete();
+            });
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - object store - remove a record from the object store  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.delete() - object store - remove a record from the object store &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      count = 0,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = t.step_func(CursorDeleteRecord);
+
+
+    function CursorDeleteRecord(e) {
+        var txn = db.transaction(&quot;test&quot;, &quot;readwrite&quot;),
+          cursor_rq = txn.objectStore(&quot;test&quot;).openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor != null, &quot;cursor exist&quot;);
+            cursor.delete();
+        });
+
+        txn.oncomplete = t.step_func(VerifyRecordWasDeleted);
+    }
+
+
+    function VerifyRecordWasDeleted(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (!cursor) {
+                assert_equals(count, 1, 'count');
+                t.done();
+            }
+
+            assert_equals(cursor.value.pKey, records[1].pKey);
+            count++;
+            cursor.continue();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - object store - attempt to remove a record in a read-only transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.delete() - object store - attempt to remove a record in a read-only transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_true(cursor != null, &quot;cursor exist&quot;);
+            assert_throws('ReadOnlyError', function() { cursor.delete(); });
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - index - attempt to remove a record in an inactive transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.delete() - index - attempt to remove a record in an inactive transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        var cursor_rq = objStore.openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+            window.cursor = cursor;
+        });
+
+        e.target.transaction.oncomplete = t.step_func(function(e) {
+            assert_throws('TransactionInactiveError', function() { window.cursor.delete(); })
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - object store - throw InvalidStateError caused by object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.delete() - object store - throw InvalidStateError caused by object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+
+            db.deleteObjectStore(&quot;store&quot;);
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.delete();
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.delete() - object store - throw InvalidStateError when the cursor is being iterated 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_delete_objectstore5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.delete() - object store - throw InvalidStateError when the cursor is being iterated&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-delete-IDBRequest&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;, &quot;readwrite&quot;);
+        var rq = txn.objectStore(&quot;store&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+
+            cursor.continue();
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.delete();
+            });
+
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iteratingprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - objectstore - delete next element, and iterate to it 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iteratingprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,110 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - objectstore - delete next element, and iterate to it&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(document.title, {timeout: 10000});
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; });
+
+        for (var i = 0; i &lt; 500; i++)
+            objStore.add({ key: i, val: &quot;val_&quot;+i });
+
+        var rq = objStore.add({ key: 500, val: &quot;val_500&quot; });
+
+        rq.onsuccess = t.step_func(function() {
+            for (var i = 999; i &gt; 500; i--)
+                objStore.add({ key: i, val: &quot;val_&quot;+i });
+        });
+
+        objStore.createIndex('index', ['key', 'val']);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result,
+              store = e.target.source;
+            if (!cursor) {
+                assert_equals(count, 997, &quot;cursor run count&quot;);
+
+                var rq = e.target.source.count();
+                rq.onsuccess = t.step_func(function(e) {
+                    assert_equals(e.target.result, 995, &quot;object count&quot;);
+                    t.done();
+                });
+                return;
+            }
+
+            switch (cursor.key) {
+                case 10:
+                    assert_equals(count, cursor.key, &quot;count&quot;);
+                    store.delete(11);
+                    break;
+
+                case 12:
+                case 499:
+                case 500:
+                case 501:
+                    assert_equals(count, cursor.key - 1, &quot;count&quot;);
+                    break;
+
+                // Delete the next key
+                case 510:
+                    store.delete(511);
+                    break;
+
+                // Delete randomly
+                case 512:
+                    store.delete(611);
+                    store.delete(499);
+                    store.delete(500);
+                    break;
+
+                // Delete and add a new key
+                case 520:
+                    store.delete(521);
+                    store.add({ key: 521, val: &quot;new&quot;});
+                    break;
+
+                case 521:
+                    assert_equals(cursor.value.val, &quot;new&quot;);
+                    break;
+
+                // We should only be here once although we're basically making the index
+                // &quot;heavier&quot; with its new key.
+                case 530:
+                    assert_equals(cursor.value.val, &quot;val_530&quot;);
+                    cursor.update({ key: 530, val: &quot;val_531&quot; })
+
+                    store.get(530).onsuccess = t.step_func(function(e) {
+                        assert_equals(e.target.result.val, &quot;val_531&quot;);
+                    });
+                    break;
+
+                // Shouldn't happen.
+                case 11:
+                case 511:
+                case 611:
+                    assert_unreached(cursor.key + &quot; should be deleted and never run&quot;);
+                    break;
+            }
+
+            cursor.continue();
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_indexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - delete next element, and iterate to it 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_indexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - delete next element, and iterate to it&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot;, obj: { iKey: &quot;iKey_0&quot; }},
+                  { pKey: &quot;primaryKey_1&quot;, obj: { iKey: &quot;iKey_1&quot; }},
+                  { pKey: &quot;primaryKey_2&quot;, obj: { iKey: &quot;iKey_2&quot; }} ],
+
+      expected = [ [ &quot;primaryKey_2&quot;, &quot;iKey_2&quot; ],
+                   [ &quot;primaryKey_0&quot;, &quot;iKey_0&quot; ] ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:[&quot;pKey&quot;, &quot;obj.iKey&quot;]});
+        objStore.createIndex(&quot;index&quot;, [ &quot;pKey&quot;, &quot;obj.iKey&quot; ]);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor(null, &quot;prev&quot;);
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, 2, &quot;cursor run count&quot;);
+                t.done();
+            }
+
+            if (count === 0) {
+                e.target.source.objectStore.delete([&quot;primaryKey_1&quot;, &quot;iKey_1&quot;]);
+            }
+            assert_array_equals(cursor.key, expected[count], &quot;primary key&quot;);
+
+            cursor.continue();
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_index2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - index - add next element, and iterate to it 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_index2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - index - add next element, and iterate to it&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot;, obj: { iKey: &quot;iKey_0&quot; }},
+                  { pKey: &quot;primaryKey_2&quot;, obj: { iKey: &quot;iKey_2&quot; }} ],
+
+      expected = [ [ &quot;primaryKey_2&quot;, &quot;iKey_2&quot; ],
+                   [ &quot;primaryKey_1&quot;, &quot;iKey_1&quot; ],
+                   [ &quot;primaryKey_0&quot;, &quot;iKey_0&quot; ] ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, [ &quot;pKey&quot;, &quot;obj.iKey&quot; ]);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor(null, &quot;prev&quot;);
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, 3, &quot;cursor run count&quot;);
+                t.done();
+            }
+
+            if (count === 0) {
+                e.target.source.objectStore.add({ pKey: &quot;primaryKey_1&quot;, obj: { iKey: &quot;iKey_1&quot; } });
+            }
+            assert_array_equals(cursor.key, expected[count], &quot;primary key&quot;);
+
+            cursor.continue();
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - objectstore - delete next element, and iterate to it 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - objectstore - delete next element, and iterate to it&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; },
+                  { pKey: &quot;primaryKey_2&quot; } ],
+      expected_records = [ { pKey: &quot;primaryKey_0&quot; },
+                           { pKey: &quot;primaryKey_2&quot; }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, 2, &quot;cursor run count&quot;);
+                t.done();
+            }
+
+            var record = cursor.value;
+            if (record.pKey == &quot;primaryKey_0&quot;) {
+               e.target.source.delete(&quot;primaryKey_1&quot;);
+            }
+            assert_equals(record.pKey, expected_records[count].pKey, &quot;primary key&quot;);
+
+            cursor.continue();
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstore2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.continue() - objectstore - add next element, and iterate to it 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_iterating_objectstore2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.continue() - objectstore - add next element, and iterate to it&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      count = 0,
+      t = async_test(document.title, {timeout: 10000}),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_2&quot; } ],
+      expected_records = [ { pKey: &quot;primaryKey_0&quot; },
+                           { pKey: &quot;primaryKey_1&quot; },
+                           { pKey: &quot;primaryKey_2&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            if (!cursor) {
+                assert_equals(count, 3, &quot;cursor run count&quot;);
+                t.done();
+            }
+
+            var record = cursor.value;
+            if (record.pKey == &quot;primaryKey_0&quot;) {
+               e.target.source.add({ pKey: &quot;primaryKey_1&quot; });
+            }
+            assert_equals(record.pKey, expected_records[count].pKey, &quot;primary key&quot;);
+
+            cursor.continue();
+            count++;
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_indexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - modify a record in the object store  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_indexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - index - modify a record in the object store &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      count = 0,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        // XXX: Gecko doesn't like this
+        //e.target.transaction.oncomplete = t.step_func(CursorUpdateRecord);
+    };
+
+    open_rq.onsuccess = CursorUpdateRecord;
+
+
+    function CursorUpdateRecord(e) {
+        var txn = db.transaction(&quot;test&quot;, &quot;readwrite&quot;),
+          cursor_rq = txn.objectStore(&quot;test&quot;)
+                         .index(&quot;index&quot;)
+                         .openCursor();
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            cursor.value.iKey += &quot;_updated&quot;;
+            cursor.update(cursor.value);
+        });
+
+        txn.oncomplete = t.step_func(VerifyRecordWasUpdated);
+    }
+
+
+    function VerifyRecordWasUpdated(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_equals(cursor.value.iKey, records[0].iKey + &quot;_updated&quot;);
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - attempt to modify a record in a read-only transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - index - attempt to modify a record in a read-only transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_throws('ReadOnlyError', function() { cursor.update(cursor.value); });
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - attempt to modify a record in an inactive transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - index - attempt to modify a record in an inactive transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        var index = objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        var cursor_rq = index.openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+            window.cursor = cursor;
+            window.record = cursor.value;
+        });
+
+        e.target.transaction.oncomplete = t.step_func(function(e) {
+            assert_throws('TransactionInactiveError', function() { window.cursor.update(window.record); })
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - attempt to modify a record when object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.update() - index - attempt to modify a record when object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath : &quot;pKey&quot;});
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+        var rq = objStore.index(&quot;index&quot;).openCursor();
+        rq.onsuccess = t.step_func(function(event) {
+            var cursor = event.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            db.deleteObjectStore(&quot;store&quot;);
+            cursor.value.iKey += &quot;_updated&quot;;
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.update(cursor.value);
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - throw DataCloneError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - index - throw DataCloneError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-update-IDBRequest-any-value&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                    { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            var record = cursor.value;
+            record.data = document;
+            assert_throws('DataCloneError', function() {
+                cursor.update(record);
+            });
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - no argument 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - index - no argument&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-update-IDBRequest-any-value&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                    { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            assert_throws(new TypeError(), function() { cursor.update(); });
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - throw DataError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_index7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - index - throw DataError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-update-IDBRequest-any-value&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                    { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;iKey&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .index(&quot;index&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            assert_throws('DataError', function() { cursor.update(null); });
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - objectstore - modify a record in the object store  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - objectstore - modify a record in the object store &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        // XXX: Gecko doesn't like this
+        //e.target.transaction.oncomplete = t.step_func(CursorUpdateRecord);
+    };
+
+    open_rq.onsuccess = CursorUpdateRecord;
+
+
+    function CursorUpdateRecord(e) {
+        var txn = db.transaction(&quot;test&quot;, &quot;readwrite&quot;),
+          cursor_rq = txn.objectStore(&quot;test&quot;)
+                         .openCursor();
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            cursor.value.data = &quot;New information!&quot;;
+            cursor.update(cursor.value);
+        });
+
+        txn.oncomplete = t.step_func(VerifyRecordWasUpdated);
+    }
+
+
+    function VerifyRecordWasUpdated(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            assert_equals(cursor.value.data, &quot;New information!&quot;);
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - object store - attempt to modify a record in a read-only transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - object store - attempt to modify a record in a read-only transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_throws('ReadOnlyError', function() { cursor.update(cursor.value); });
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - object store - attempt to modify a record in an inactive transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - object store - attempt to modify a record in an inactive transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        var cursor_rq = objStore.openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exist&quot;);
+            window.cursor = cursor;
+            window.record = cursor.value;
+        });
+
+        e.target.transaction.oncomplete = t.step_func(function(e) {
+            assert_throws('TransactionInactiveError', function() { window.cursor.update(window.record); })
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - index - modify a record in the object store 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - index - modify a record in the object store &lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000})
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;);
+
+        objStore.add(&quot;data&quot;, &quot;key&quot;);
+    };
+
+    open_rq.onsuccess = t.step_func(function(e) {
+        var txn = db.transaction(&quot;test&quot;, &quot;readwrite&quot;),
+          cursor_rq = txn.objectStore(&quot;test&quot;)
+                         .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            cursor.value = &quot;new data!&quot;;
+            cursor.update(cursor.value).onsuccess = t.step_func(function(e) {
+                assert_equals(e.target.result, &quot;key&quot;);
+                t.done();
+            });
+        });
+    });
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - object store - attempt to  modify a record when object store been deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBCursor.update() - object store - attempt to  modify a record when object store been deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+    var db,
+      t = async_test(),
+      records = [ { pKey: &quot;primaryKey_0&quot; },
+                  { pKey: &quot;primaryKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, {keyPath:&quot;pKey&quot;});
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+
+        var cursor_rq = objStore.openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor, &quot;cursor exists&quot;);
+
+            db.deleteObjectStore(&quot;test&quot;);
+            cursor.value += &quot;_updated&quot;;
+            assert_throws(&quot;InvalidStateError&quot;, function() {
+                cursor.update(cursor.value);
+            }, &quot;If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError&quot;);
+
+
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - object store - throw DataCloneError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - object store - throw DataCloneError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-update-IDBRequest-any-value&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                    { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            var record = cursor.value;
+            record.data = document;
+            assert_throws('DataCloneError', function() {
+                cursor.update(record);
+            });
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - object store - no argument 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - object store - no argument&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-update-IDBRequest-any-value&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                    { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            assert_throws(new TypeError(), function() { cursor.update(); });
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore8privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBCursor.update() - object store - throw DataError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbcursor_update_objectstore8privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBCursor.update() - object store - throw DataError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-update-IDBRequest-any-value&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [ { pKey: &quot;primaryKey_0&quot;, iKey: &quot;indexKey_0&quot; },
+                    { pKey: &quot;primaryKey_1&quot;, iKey: &quot;indexKey_1&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;pKey&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var cursor_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .openCursor();
+
+        cursor_rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+            assert_true(cursor instanceof IDBCursor);
+
+            assert_throws('DataError', function() { cursor.update(null); });
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_closeprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.close() - unblock the version change transaction created by an open database request 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_closeprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.close() - unblock the version change transaction created by an open database request&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+var db;
+var versionchange_fired;
+var blocked_fired;
+var upgradeneeded_fired;
+var t = async_test();
+var open_rq = createdb(t);
+var counter = 0;
+
+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, 'versionchange event fired #')
+        assert_equals(blocked_fired, 1, 'block event fired #')
+        assert_equals(upgradeneeded_fired, 2, 'second upgradeneeded event fired #')
+
+        t.done();
+    });
+    rq.onerror = fail(t, 'Unexpected database deletion error');
+};
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_close2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.close() - unblock the delete database request 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_close2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.close() - unblock the delete database request&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var db;
+var blocked_fired = false;
+var versionchange_fired = false;
+var t = async_test();
+var open_rq = createdb(t);
+
+open_rq.onupgradeneeded = t.step_func(function() {});
+open_rq.onsuccess = t.step_func(function(e) {
+    db = e.target.result;
+
+    db.onversionchange = t.step_func(function (e) {
+      versionchange_fired = true;
+    });
+
+    var rq = window.indexedDB.deleteDatabase(db.name);
+    rq.onblocked = t.step_func(function (e) {
+        blocked_fired = true;
+        db.close();
+    });
+    rq.onsuccess = t.step_func(function (e) {
+        assert_true(versionchange_fired, &quot;versionchange event fired&quot;)
+        assert_true(blocked_fired, &quot;block event fired&quot;)
+        t.done();
+    });
+    rq.onerror = fail(t, 'Unexpected database deletion error');
+});
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStorecreateIndexemptynameprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() and IDBObjectStore.createIndex() - both with empty name 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStorecreateIndexemptynameprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() and IDBObjectStore.createIndex() - both with empty name&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db
+
+    var open_rq = createdb(async_test())
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+        var store = db.createObjectStore(&quot;&quot;)
+
+        for (var i = 0; i &lt; 5; i++)
+            store.add({ idx: &quot;object_&quot; + i }, i)
+
+        store.createIndex(&quot;&quot;, &quot;idx&quot;)
+
+        store.get(4)
+             .onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result.idx, 'object_4', 'result')
+        })
+        assert_equals(store.indexNames[0], &quot;&quot;, &quot;indexNames[0]&quot;)
+        assert_equals(store.indexNames.length, 1, &quot;indexNames.length&quot;)
+    }
+
+    open_rq.onsuccess = function() {
+        var store = db.transaction(&quot;&quot;).objectStore(&quot;&quot;)
+
+        assert_equals(store.indexNames[0], &quot;&quot;, &quot;indexNames[0]&quot;)
+        assert_equals(store.indexNames.length, 1, &quot;indexNames.length&quot;)
+
+        store.index(&quot;&quot;)
+             .get('object_4')
+             .onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result.idx, 'object_4', 'result')
+            this.done()
+        })
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - returns an instance of IDBObjectStore 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - returns an instance of IDBObjectStore&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result
+    var objStore = db.createObjectStore('instancetest')
+
+    assert_true(objStore instanceof IDBObjectStore, 'instanceof IDBObjectStore')
+}
+
+open_rq.onsuccess = function(e) {
+    var db = e.target.result
+    var objStore = db.transaction('instancetest').objectStore('instancetest')
+
+    assert_true(objStore instanceof IDBObjectStore, 'instanceof IDBObjectStore')
+    t.done()
+}
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore101000endsprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - create 1000 object stores, add one item and delete 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore101000endsprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - create 1000 object stores, add one item and delete&lt;/title&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+var db,
+    t = async_test(document.title, {timeout: 600000}),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    db = e.target.result
+    var st, i;
+    for (i = 0; i &lt; 1000; i++)
+    {
+        st = db.createObjectStore(&quot;object_store_&quot; + i)
+        st.add(&quot;test&quot;, 1);
+    }
+
+    st.get(1).onsuccess = t.step_func(function(e) {
+        assert_equals(e.target.result, &quot;test&quot;)
+    })
+}
+open_rq.onsuccess = function(e) {
+    db.close()
+    window.indexedDB.deleteDatabase(db.name).onsuccess = function(e) {
+        t.done()
+    }
+}
+&lt;/script&gt;
+
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore10emptynameprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - empty name 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore10emptynameprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - empty name&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db
+
+    var open_rq = createdb(async_test())
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+        var store = db.createObjectStore(&quot;&quot;)
+
+        for (var i = 0; i &lt; 5; i++)
+            store.add(&quot;object_&quot; + i, i)
+
+        assert_equals(db.objectStoreNames[0], &quot;&quot;, &quot;db.objectStoreNames[0]&quot;)
+        assert_equals(db.objectStoreNames.length, 1, &quot;objectStoreNames.length&quot;)
+    }
+
+    open_rq.onsuccess = function() {
+        var store = db.transaction(&quot;&quot;).objectStore(&quot;&quot;)
+
+        store.get(2).onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result, &quot;object_2&quot;)
+        })
+
+        assert_equals(db.objectStoreNames[0], &quot;&quot;, &quot;db.objectStoreNames[0]&quot;)
+        assert_equals(db.objectStoreNames.length, 1, &quot;objectStoreNames.length&quot;)
+
+        this.done()
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore11privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - attempting to create an existing object store with a different keyPath throw ConstraintError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore11privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - attempting to create an existing object store with a different keyPath throw ConstraintError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-createObjectStore-IDBObjectStore-DOMString-name-IDBObjectStoreParameters-optionalParameters&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var t = async_test(),
+    open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function (e) {
+    var db = e.target.result;
+    db.createObjectStore(&quot;store&quot;);
+    assert_throws(&quot;ConstraintError&quot;, function(){
+        db.createObjectStore(&quot;store&quot;, {
+            keyPath: &quot;key1&quot;,
+        });
+    });
+    t.done();
+}
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - object store 'name' and 'keyPath' properties are correctly set  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - object store 'name' and 'keyPath' properties are correctly set &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result,
+        objStore = db.createObjectStore(&quot;prop&quot;, { keyPath: &quot;mykeypath&quot; })
+
+    assert_equals(objStore.name, &quot;prop&quot;, &quot;object store name&quot;)
+    assert_equals(objStore.keyPath, &quot;mykeypath&quot;, &quot;key path&quot;)
+    assert_equals(objStore.autoIncrement, false, &quot;auto increment&quot;)
+}
+
+open_rq.onsuccess = function(e) {
+    var db = e.target.result
+    var objStore = db.transaction('prop').objectStore('prop')
+
+    assert_equals(objStore.name, &quot;prop&quot;, &quot;object store name&quot;)
+    assert_equals(objStore.keyPath, &quot;mykeypath&quot;, &quot;key path&quot;)
+    assert_equals(objStore.autoIncrement, false, &quot;auto increment&quot;)
+    t.done()
+}
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - attempt to create an object store outside of a version change transaction  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - attempt to create an object store outside of a version change transaction &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function() {}
+open_rq.onsuccess = function (e) {
+    var db = e.target.result
+    assert_throws(
+        'InvalidStateError',
+        function() { db.createObjectStore('fails') })
+    t.done();
+}
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - attempt to create an object store that already exists  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - attempt to create an object store that already exists &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result
+    db.createObjectStore(&quot;dupe&quot;)
+    assert_throws(
+        'ConstraintError',
+        function() { db.createObjectStore(&quot;dupe&quot;) })
+
+    // Bonus test creating a new objectstore after the exception
+    db.createObjectStore(&quot;dupe &quot;)
+    t.done()
+}
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - object store's name appears in database's list  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - object store's name appears in database's list &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result
+
+    db.createObjectStore(&quot;My cool object store name&quot;)
+    assert_true(
+        db.objectStoreNames.contains(&quot;My cool object store name&quot;),
+        'objectStoreNames.contains')
+}
+
+open_rq.onsuccess = function(e) {
+    var db = e.target.result
+
+    assert_true(
+        db.objectStoreNames.contains(&quot;My cool object store name&quot;),
+        'objectStoreNames.contains (in success)')
+    t.done()
+}
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - attempt to create an object store with an invalid key path  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - attempt to create an object store with an invalid key path &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result
+
+    assert_throws('SyntaxError', function() {
+            db.createObjectStore(&quot;invalidkeypath&quot;, { keyPath: &quot;Invalid Keypath&quot; })
+        })
+
+    assert_throws('SyntaxError', function() {
+            db.createObjectStore(&quot;invalidkeypath&quot;, { autoIncrement: true,
+                                                     keyPath: &quot;Invalid Keypath&quot; })
+        })
+
+    t.done()
+}
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore() - create an object store with an unknown optional parameter 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.createObjectStore() - create an object store with an unknown optional parameter &lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(document.title, {timeout: 10000}),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result
+    db.createObjectStore(&quot;with unknown param&quot;, { parameter: 0 });
+
+    t.done()
+}
+
+&lt;/script&gt;
+
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore8parametersprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS IDBObjectStoreParameters - autoInc true 
+PASS IDBObjectStoreParameters - autoInc true, keyPath null 
+PASS IDBObjectStoreParameters - autoInc true, keyPath undefined 
+PASS IDBObjectStoreParameters - autoInc true, keyPath string 
+PASS IDBObjectStoreParameters - autoInc false, keyPath empty 
+PASS IDBObjectStoreParameters - autoInc false, keyPath array 
+PASS IDBObjectStoreParameters - autoInc false, keyPath string 
+PASS IDBObjectStoreParameters - keyPath empty 
+PASS IDBObjectStoreParameters - keyPath array 
+PASS IDBObjectStoreParameters - keyPath string 
+PASS IDBObjectStoreParameters - keyPath null 
+PASS IDBObjectStoreParameters - keyPath undefined 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore8parametersprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStoreParameters&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    function optionalParameters(desc, params) {
+        var t = async_test(document.title + &quot; - &quot; + desc);
+
+        createdb(t).onupgradeneeded = function(e) {
+            e.target.result.createObjectStore(&quot;store&quot;, params);
+
+            this.done();
+        };
+    }
+
+
+    optionalParameters(&quot;autoInc true&quot;,                    {autoIncrement: true});
+    optionalParameters(&quot;autoInc true, keyPath null&quot;,      {autoIncrement: true,  keyPath: null});
+    optionalParameters(&quot;autoInc true, keyPath undefined&quot;, {autoIncrement: true,  keyPath: undefined});
+    optionalParameters(&quot;autoInc true, keyPath string&quot;,    {autoIncrement: true,  keyPath: &quot;a&quot;});
+
+    optionalParameters(&quot;autoInc false, keyPath empty&quot;,  {autoIncrement: false, keyPath: &quot;&quot;});
+    optionalParameters(&quot;autoInc false, keyPath array&quot;,  {autoIncrement: false, keyPath: [&quot;h&quot;, &quot;j&quot;]});
+    optionalParameters(&quot;autoInc false, keyPath string&quot;, {autoIncrement: false, keyPath: &quot;abc&quot;});
+
+    optionalParameters(&quot;keyPath empty&quot;,     {keyPath: &quot;&quot;});
+    optionalParameters(&quot;keyPath array&quot;,     {keyPath: [&quot;a&quot;,&quot;b&quot;]});
+    optionalParameters(&quot;keyPath string&quot;,    {keyPath: &quot;abc&quot;});
+    optionalParameters(&quot;keyPath null&quot;,      {keyPath: null});
+    optionalParameters(&quot;keyPath undefined&quot;, {keyPath: undefined});
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore9invalidparametersprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS createObjectStore: Invalid optionalParameters - autoInc and empty keyPath 
+PASS createObjectStore: Invalid optionalParameters - autoInc and keyPath array 
+PASS createObjectStore: Invalid optionalParameters - autoInc and keyPath array 2 
+PASS createObjectStore: Invalid optionalParameters - autoInc and keyPath object 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_createObjectStore9invalidparametersprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;createObjectStore: Invalid optionalParameters&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    function invalid_optionalParameters(desc, params) {
+        var t = async_test(document.title + &quot; - &quot; + desc);
+
+        createdb(t).onupgradeneeded = function(e) {
+            assert_throws(null, function() {
+                e.target.result.createObjectStore(&quot;store&quot;, params);
+            });
+
+            this.done();
+        };
+    }
+
+    invalid_optionalParameters(&quot;autoInc and empty keyPath&quot;, {autoIncrement: true, keyPath: &quot;&quot;});
+    invalid_optionalParameters(&quot;autoInc and keyPath array&quot;, {autoIncrement: true, keyPath: []});
+    invalid_optionalParameters(&quot;autoInc and keyPath array 2&quot;, {autoIncrement: true, keyPath: [&quot;hey&quot;]});
+    invalid_optionalParameters(&quot;autoInc and keyPath object&quot;, {autoIncrement: true, keyPath: {a:&quot;hey&quot;, b:2}});
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStoreprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.deleteObjectStore() - object store's name is removed from database's list  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStoreprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.deleteObjectStore() - object store's name is removed from database's list &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result
+
+    db.createObjectStore(&quot;deleted&quot;);
+    db.deleteObjectStore(&quot;deleted&quot;);
+    assert_false(db.objectStoreNames.contains(&quot;deleted&quot;))
+
+    t.done()
+}
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.deleteObjectStore() - attempt to remove an object store outside of a version change transaction  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.deleteObjectStore() - attempt to remove an object store outside of a version change transaction &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function(e)
+{
+    var db = e.target.result,
+        objStore = db.createObjectStore(&quot;delete_outside&quot;);
+
+    e.target.transaction.oncomplete = t.step_func(function (e)
+    {
+        assert_throws('InvalidStateError',
+            function() { db.deleteObjectStore(&quot;delete_outside&quot;); });
+        t.done();
+    });
+}
+
+&lt;/script&gt;
+
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.deleteObjectStore() - attempt to remove an object store that does not exist  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.deleteObjectStore() - attempt to remove an object store that does not exist &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(),
+    open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function(e)
+{
+    var db = e.target.result;
+    assert_throws('NotFoundError',
+        function() { db.deleteObjectStore('whatever'); });
+    t.done();
+}
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore4not_reusedprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.deleteObjectStore() - the object store is not reused 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_deleteObjectStore4not_reusedprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBDatabase.deleteObjectStore() - the object store is not reused&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var t = async_test(document.title, {timeout: 10000}),
+    keys = [],
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var db = e.target.result
+
+    var objStore = db.createObjectStore(&quot;resurrected&quot;, { autoIncrement: true, keyPath: &quot;k&quot; });
+    objStore.add({k:5}).onsuccess = function(e) { keys.push(e.target.result); }
+    objStore.add({}).onsuccess = function(e) { keys.push(e.target.result); }
+    objStore.createIndex(&quot;idx&quot;, &quot;i&quot;);
+    assert_true(objStore.indexNames.contains(&quot;idx&quot;));
+    assert_equals(objStore.keyPath, &quot;k&quot;, &quot;keyPath&quot;);
+
+    db.deleteObjectStore(&quot;resurrected&quot;);
+
+    var objStore2 = db.createObjectStore(&quot;resurrected&quot;, { autoIncrement: true });
+    objStore2.add(&quot;Unicorns'R'us&quot;).onsuccess = function(e) { keys.push(e.target.result); };
+    assert_false(objStore2.indexNames.contains(&quot;idx&quot;), &quot;index exist on new objstore&quot;);
+    assert_equals(objStore2.keyPath, null, &quot;keyPath&quot;);
+
+    assert_throws(&quot;NotFoundError&quot;, function() { objStore2.index(&quot;idx&quot;); });
+}
+
+open_rq.onsuccess = function(e) {
+    assert_array_equals(keys, [5, 6, 1], &quot;keys&quot;);
+    t.done();
+}
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transactionprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.transaction() - attempt to open a transaction with invalid scope 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transactionprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.transaction() - attempt to open a transaction with invalid scope&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var db,
+  t = async_test(),
+  open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function() {};
+open_rq.onsuccess = function(e) {
+    db = e.target.result;
+
+    assert_throws('NotFoundError', function() { db.transaction('non-existing'); });
+    t.done();
+};
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.transaction() - opening a transaction defaults to a read-only mode  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.transaction() - opening a transaction defaults to a read-only mode &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var db,
+  t = async_test(),
+  open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function(e) {
+    db = e.target.result;
+    db.createObjectStore('readonly');
+};
+open_rq.onsuccess = function(e) {
+    var txn = db.transaction('readonly');
+    assert_equals(txn.mode, &quot;readonly&quot;, 'txn.mode');
+
+    t.done();
+};
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.transaction() - attempt to open a transaction from closed database connection  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.transaction() - attempt to open a transaction from closed database connection &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore('test');
+    };
+
+    open_rq.onsuccess = function(e) {
+        db.close();
+
+        assert_throws('InvalidStateError',
+            function() { db.transaction('test'); });
+
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.transaction() - attempt to open a transaction with invalid mode 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBDatabase.transaction() - attempt to open a transaction with invalid mode &lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(document.title, {timeout: 10000}),
+      open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore('test');
+    };
+
+    open_rq.onsuccess = function(e) {
+        assert_throws({ name: 'TypeError' },
+            function() { db.transaction('test', 'whatever'); });
+
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.transaction() - If storeNames is an empty list, the implementation must throw a DOMException of type InvalidAccessError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbdatabase_transaction5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBDatabase.transaction() - If storeNames is an empty list, the implementation must throw a DOMException of type InvalidAccessError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-transaction-IDBTransaction-DOMString-sequence-DOMString--storeNames-IDBTransactionMode-mode&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var db,
+    t = async_test(),
+    open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function() {};
+open_rq.onsuccess = function(e) {
+    db = e.target.result;
+    assert_throws('InvalidAccessError', function() { db.transaction([]); });
+    t.done();
+};
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_cmpprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.cmp() 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_cmpprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBFactory.cmp() - compared keys return correct value&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    test(function() {
+        var greater = window.indexedDB.cmp(2, 1);
+        var equal = window.indexedDB.cmp(2, 2);
+        var less = window.indexedDB.cmp(1, 2);
+
+        assert_equals(greater, 1, &quot;greater&quot;);
+        assert_equals(equal, 0, &quot;equal&quot;);
+        assert_equals(less, -1, &quot;less&quot;);
+    }, &quot;IDBFactory.cmp()&quot;);
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_cmp2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBFactory.cmp() - no argument 
+PASS IDBFactory.cmp() - null 
+PASS IDBFactory.cmp() - NaN 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_cmp2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBFactory.cmp() - invalid key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBFactory-cmp-short-any-first-any-second&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+    test( function() {
+        assert_throws(new TypeError(), function() {
+            indexedDB.cmp();
+        });
+    }, &quot;IDBFactory.cmp() - no argument&quot;);
+
+    test( function() {
+        assert_throws(&quot;DataError&quot;, function() {
+            indexedDB.cmp(null, null);
+        });
+        assert_throws(&quot;DataError&quot;, function() {
+            indexedDB.cmp(1, null);
+        });
+        assert_throws(&quot;DataError&quot;, function() {
+            indexedDB.cmp(null, 1);
+        });
+    }, &quot;IDBFactory.cmp() - null&quot;);
+
+    test( function() {
+        assert_throws(&quot;DataError&quot;, function() {
+            indexedDB.cmp(NaN, NaN);
+        });
+        assert_throws(&quot;DataError&quot;, function() {
+            indexedDB.cmp(1, NaN);
+        });
+        assert_throws(&quot;DataError&quot;, function() {
+            indexedDB.cmp(NaN, 1);
+        });
+    }, &quot;IDBFactory.cmp() - NaN&quot;);
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabaseprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.deleteDatabase() - request has no source  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabaseprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.deleteDatabase() - request has no source &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), undefined, 9);
+
+    open_rq.onupgradeneeded = function(e) {};
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.close();
+
+        var delete_rq = window.indexedDB.deleteDatabase(db.name);
+        delete_rq.onerror = fail(this, &quot;Unexpected delete_rq.error event&quot;);
+        delete_rq.onsuccess = this.step_func( function (e) {
+            assert_equals(e.target.source, null, &quot;event.target.source&quot;)
+            this.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.deleteDatabase() - result of the request is set to undefined 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.deleteDatabase() - result of the request is set to undefined&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBFactory-deleteDatabase-IDBOpenDBRequest-DOMString-name&quot;&gt;
+&lt;meta name=assert title=&quot;If the steps above are successful, the implementation must set the result of the request to undefined and fire a success event at the request.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), undefined, 9);
+
+    open_rq.onupgradeneeded = function(e) {};
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.close();
+
+        var delete_rq = window.indexedDB.deleteDatabase(db.name);
+        delete_rq.onerror = fail(this, &quot;Unexpected delete_rq.error event&quot;);
+        delete_rq.onsuccess = this.step_func( function (e) {
+            assert_equals(e.target.result, undefined, &quot;result&quot;);
+            this.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.deleteDatabase() - success event 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.deleteDatabase() - success event&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBFactory-deleteDatabase-IDBOpenDBRequest-DOMString-name&quot;&gt;
+&lt;meta name=assert title=&quot;If the steps above are successful, the implementation must set the result of the request to undefined and fire a success event at the request. The event must implement the IDBVersionChangeEvent interface and have oldVersion set to database version and have the newVersion property set to null.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db
+    var open_rq = createdb(async_test(document.title, {timeout: 10000}), undefined, 9)
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+        db.createObjectStore('os')
+    }
+    open_rq.onsuccess = function(e) {
+        db.close()
+
+        var delete_rq = window.indexedDB.deleteDatabase(db.name)
+        delete_rq.onerror = fail(this, &quot;Unexpected delete_rq.error event&quot;)
+        delete_rq.onsuccess = this.step_func( function (e) {
+            assert_equals(e.oldVersion, 9, &quot;oldVersion&quot;)
+            assert_equals(e.newVersion, null, &quot;newVersion&quot;)
+            assert_equals(e.target.result, undefined, &quot;result&quot;)
+            assert_true(e instanceof IDBVersionChangeEvent, &quot;e instanceof IDBVersionChangeEvent&quot;)
+            this.done()
+        })
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Delete an existing database 
+PASS Delete a nonexistant database 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_deleteDatabase4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Test events opening a second database when one connection is open already&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    var t = async_test(&quot;Delete an existing database&quot;);
+
+    t.step(function() {
+        var openrq = indexedDB.open('db', 3);
+
+        openrq.onupgradeneeded = function(e) {
+            e.target.result.createObjectStore('store');
+        };
+        openrq.onsuccess = t.step_func(function(e) {
+            db = e.target.result;
+
+            // Errors
+            db.onversionchange = fail(t, &quot;db.versionchange&quot;);
+            db.onerror = fail(t, &quot;db.error&quot;);
+            db.abort = fail(t, &quot;db.abort&quot;);
+
+            setTimeout(t.step_func(Second), 4);
+            db.close();
+        });
+
+        // Errors
+        openrq.onerror = fail(t, &quot;open.error&quot;);
+        openrq.onblocked = fail(t, &quot;open.blocked&quot;);
+    });
+
+    function Second(e) {
+        var deleterq = indexedDB.deleteDatabase('db');
+
+        deleterq.onsuccess = function(e) { t.done(); }
+
+        deleterq.onerror = fail(t, &quot;delete.error&quot;);
+        deleterq.onblocked = fail(t, &quot;delete.blocked&quot;);
+        deleterq.onupgradeneeded = fail(t, &quot;delete.upgradeneeded&quot;);
+    }
+
+    async_test(&quot;Delete a nonexistant database&quot;).step(function(e) {
+        var deleterq = indexedDB.deleteDatabase('nonexistant');
+
+        deleterq.onsuccess = this.step_func(function(e) { this.done(); });
+
+        deleterq.onerror = fail(this, &quot;delete.error&quot;);
+        deleterq.onblocked = fail(this, &quot;delete.blocked&quot;);
+        deleterq.onupgradeneeded = fail(this, &quot;delete.upgradeneeded&quot;);
+    });
+
+&lt;/script&gt;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_openprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - request has no source 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_openprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - request has no source&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), undefined, 9);
+
+    open_rq.onupgradeneeded = function(e) {};
+    open_rq.onsuccess = function(e) {
+        assert_equals(e.target.source, null, &quot;source&quot;)
+        this.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt; &lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open10privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - error in upgradeneeded resets db 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open10privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,91 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - error in upgradeneeded resets db&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, db2;
+    var open_rq = createdb(async_test(document.title, {timeout: 10000}), undefined, 9);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var st = db.createObjectStore(&quot;store&quot;);
+        st.createIndex(&quot;index&quot;, &quot;i&quot;);
+
+        assert_equals(db.version, 9, &quot;first db.version&quot;);
+        assert_true(db.objectStoreNames.contains(&quot;store&quot;), &quot;objectStoreNames contains store&quot;);
+        assert_true(st.indexNames.contains(&quot;index&quot;), &quot;indexNames contains index&quot;);
+
+        st.add({i: &quot;Joshua&quot;}, 1);
+        st.add({i: &quot;Jonas&quot;}, 2);
+    };
+    open_rq.onsuccess = function(e) {
+        db.close();
+        var open_rq2 = window.indexedDB.open(db.name, 10);
+        open_rq2.onupgradeneeded = this.step_func(function(e) {
+            db2 = e.target.result;
+
+            db2.createObjectStore(&quot;store2&quot;);
+
+            var store = open_rq2.transaction.objectStore(&quot;store&quot;)
+            store.createIndex(&quot;index2&quot;, &quot;i&quot;);
+
+            assert_equals(db2.version, 10, &quot;db2.version&quot;);
+
+            assert_true(db2.objectStoreNames.contains(&quot;store&quot;), &quot;second objectStoreNames contains store&quot;);
+            assert_true(db2.objectStoreNames.contains(&quot;store2&quot;), &quot;second objectStoreNames contains store2&quot;);
+            assert_true(store.indexNames.contains(&quot;index&quot;), &quot;second indexNames contains index&quot;);
+            assert_true(store.indexNames.contains(&quot;index2&quot;), &quot;second indexNames contains index2&quot;);
+
+            store.add({i: &quot;Odin&quot;}, 3);
+            store.put({i: &quot;Sicking&quot;}, 2);
+
+            open_rq2.transaction.abort();
+        });
+        open_rq2.onerror = this.step_func(function(e) {
+            assert_equals(db2.version, 9, &quot;db2.version after error&quot;);
+            assert_true(db2.objectStoreNames.contains(&quot;store&quot;), &quot;objectStoreNames contains store after error&quot;);
+            assert_false(db2.objectStoreNames.contains(&quot;store2&quot;), &quot;objectStoreNames not contains store2 after error&quot;);
+
+            var open_rq3 = window.indexedDB.open(db.name);
+            open_rq3.onsuccess = this.step_func(function(e) {
+                var db3 = e.target.result;
+
+                assert_true(db3.objectStoreNames.contains(&quot;store&quot;), &quot;third objectStoreNames contains store&quot;);
+                assert_false(db3.objectStoreNames.contains(&quot;store2&quot;), &quot;third objectStoreNames contains store2&quot;);
+
+                var st = db3.transaction(&quot;store&quot;).objectStore(&quot;store&quot;);
+
+                assert_equals(db3.version, 9, &quot;db3.version&quot;);
+
+                assert_true(st.indexNames.contains(&quot;index&quot;), &quot;third indexNames contains index&quot;);
+                assert_false(st.indexNames.contains(&quot;index2&quot;), &quot;third indexNames contains index2&quot;);
+
+                st.openCursor(null, &quot;prev&quot;).onsuccess = this.step_func(function(e) {
+                    assert_equals(e.target.result.key, 2, &quot;opencursor(prev) key&quot;);
+                    assert_equals(e.target.result.value.i, &quot;Jonas&quot;, &quot;opencursor(prev) value&quot;);
+                });
+                st.get(3).onsuccess = this.step_func(function(e) {
+                    assert_equals(e.target.result, undefined, &quot;get(3)&quot;);
+                });
+
+                var idx = st.index(&quot;index&quot;);
+                idx.getKey(&quot;Jonas&quot;).onsuccess = this.step_func(function(e) {
+                    assert_equals(e.target.result, 2, &quot;getKey(Jonas)&quot;);
+                });
+                idx.getKey(&quot;Odin&quot;).onsuccess = this.step_func(function(e) {
+                    assert_equals(e.target.result, undefined, &quot;getKey(Odin)&quot;);
+                });
+                idx.getKey(&quot;Sicking&quot;).onsuccess = this.step_func(function(e) {
+                    assert_equals(e.target.result, undefined, &quot;getKey(Sicking)&quot;);
+                    this.done();
+                });
+            });
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open11privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - second open's transaction is available to get objectStores 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open11privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - second open's transaction is available to get objectStores&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db;
+    var count_done = 0;
+    var open_rq = createdb(async_test(document.title, {timeout: 10000}));
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        db.createObjectStore(&quot;store&quot;);
+        assert_true(db.objectStoreNames.contains(&quot;store&quot;), &quot;objectStoreNames contains store&quot;);
+
+        var store = e.target.transaction.objectStore(&quot;store&quot;);
+        assert_equals(store.name, &quot;store&quot;, &quot;store.name&quot;);
+
+        store.add(&quot;data&quot;, 1);
+
+        store.count().onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result, 1, &quot;count()&quot;);
+            count_done++;
+        });
+
+        store.add(&quot;data2&quot;, 2);
+    };
+    open_rq.onsuccess = function(e) {
+        var store = db.transaction(&quot;store&quot;).objectStore(&quot;store&quot;);
+        assert_equals(store.name, &quot;store&quot;, &quot;store.name&quot;);
+        store.count().onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result, 2, &quot;count()&quot;);
+            count_done++;
+        });
+        db.close();
+
+        var open_rq2 = window.indexedDB.open(db.name, 10);
+        open_rq2.onupgradeneeded = this.step_func(function(e) {
+            var db2 = e.target.result;
+            assert_true(db2.objectStoreNames.contains(&quot;store&quot;), &quot;objectStoreNames contains store&quot;);
+            var store = open_rq2.transaction.objectStore(&quot;store&quot;);
+            assert_equals(store.name, &quot;store&quot;, &quot;store.name&quot;);
+
+            store.add(&quot;data3&quot;, 3);
+
+            store.count().onsuccess = this.step_func(function(e) {
+                assert_equals(e.target.result, 3, &quot;count()&quot;);
+                count_done++;
+
+                assert_equals(count_done, 3, &quot;count_done&quot;);
+                this.done();
+            });
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open12privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS IDBFactory.open() - upgradeneeded gets VersionChangeEvent 
+PASS IDBFactory.open() - upgradeneeded gets VersionChangeEvent - second upgrade 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open12privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - upgradeneeded gets VersionChangeEvent&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db;
+    var open_rq = createdb(async_test(document.title, {timeout: 10000}), undefined, 9);
+    var open2_t = async_test(document.title + &quot; - second upgrade&quot;);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        assert_true(e instanceof IDBVersionChangeEvent, &quot;e instanceof IDBVersionChangeEvent&quot;);
+        assert_equals(e.oldVersion, 0, &quot;oldVersion&quot;);
+        assert_equals(e.newVersion, 9, &quot;newVersion&quot;);
+        assert_equals(e.type, &quot;upgradeneeded&quot;, &quot;event type&quot;);
+
+        assert_equals(db.version, 9, &quot;db.version&quot;);
+    };
+    open_rq.onsuccess = function(e) {
+        assert_true(e instanceof Event, &quot;e instanceof Event&quot;);
+        assert_false(e instanceof IDBVersionChangeEvent, &quot;e not instanceof IDBVersionChangeEvent&quot;);
+        assert_equals(e.type, &quot;success&quot;, &quot;event type&quot;);
+        this.done();
+
+
+        /**
+         * Second test
+         */
+        db.onversionchange = function() { db.close(); };
+
+        var open_rq2 = createdb(open2_t, db.name, 10);
+        open_rq2.onupgradeneeded = function(e) {
+            var db2 = e.target.result;
+            assert_true(e instanceof IDBVersionChangeEvent, &quot;e instanceof IDBVersionChangeEvent&quot;);
+            assert_equals(e.oldVersion, 9, &quot;oldVersion&quot;);
+            assert_equals(e.newVersion, 10, &quot;newVersion&quot;);
+            assert_equals(e.type, &quot;upgradeneeded&quot;, &quot;event type&quot;);
+
+            assert_equals(db2.version, 10, &quot;new db.version&quot;);
+
+            this.done();
+        };
+    };
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - database 'name' and 'version' are correctly set 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - database 'name' and 'version' are correctly set&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), 'database_name', 13);
+
+    open_rq.onupgradeneeded = function(e) {};
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        assert_equals(db.name, 'database_name', 'db.name');
+        assert_equals(db.version, 13, 'db.version');
+        this.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - no version opens current database 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - no version opens current database&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), undefined, 13);
+    var did_upgrade = false;
+
+    open_rq.onupgradeneeded = function() {};
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.close();
+
+        var open_rq2 = window.indexedDB.open(db.name);
+        open_rq2.onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result.version, 13, &quot;db.version&quot;)
+            this.done();
+        });
+        open_rq2.onupgradeneeded = fail(this, 'Unexpected upgradeneeded')
+        open_rq2.onerror = fail(this, 'Unexpected error')
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - new database has default version 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - new database has default version&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), 'database_name');
+
+    open_rq.onupgradeneeded = function(e) {
+        assert_equals(e.target.result.version, 1, &quot;db.version&quot;);
+    };
+    open_rq.onsuccess = function(e) {
+        assert_equals(e.target.result.version, 1, &quot;db.version&quot;);
+        this.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - new database is empty 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - new database is empty&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), 'database_name');
+
+    open_rq.onupgradeneeded = function() {};
+    open_rq.onsuccess = function(e) {
+        assert_equals(e.target.result.objectStoreNames.length, 0, &quot;objectStoreNames.length&quot;);
+        this.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - open database with a lower version than current 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - open database with a lower version than current&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), undefined, 13);
+    var did_upgrade = false;
+
+    open_rq.onupgradeneeded = function() {};
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.close();
+
+        var open_rq2 = window.indexedDB.open(db.name, 14);
+        open_rq2.onupgradeneeded = function() {};
+        open_rq2.onsuccess = this.step_func(open_previous_db);
+        open_rq2.onerror = fail(this, 'Unexpected error')
+    }
+
+    function open_previous_db(e) {
+        var open_rq3 = window.indexedDB.open(e.target.result.name, 13);
+        open_rq3.onerror = this.step_func(function(e) {
+            assert_equals(e.target.error.name, 'VersionError', 'e.target.error.name')
+            this.done();
+        });
+        open_rq3.onupgradeneeded = fail(this, 'Unexpected upgradeneeded')
+        open_rq3.onsuccess = fail(this, 'Unexpected success')
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - open database with a higher version than current 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - open database with a higher version than current&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), undefined, 13);
+    var did_upgrade = false;
+
+    open_rq.onupgradeneeded = function() {};
+    open_rq.onsuccess = function(e) {
+        var db = e.target.result;
+        db.close();
+
+        var open_rq2 = window.indexedDB.open(db.name, 14);
+        open_rq2.onupgradeneeded = function() {
+            did_upgrade = true;
+        };
+        open_rq2.onsuccess = this.step_func(open_current_db);
+        open_rq2.onerror = fail(this, 'Unexpected error')
+    }
+
+    function open_current_db(e) {
+        var open_rq3 = window.indexedDB.open(e.target.result.name);
+        open_rq3.onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result.version, 14, &quot;db.version&quot;)
+            this.done();
+        });
+        open_rq3.onupgradeneeded = fail(this, 'Unexpected upgradeneeded')
+        open_rq3.onerror = fail(this, 'Unexpected error')
+
+        assert_true(did_upgrade, 'did upgrade');
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open8privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBFactory.open() - error in version change transaction aborts open 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open8privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - error in version change transaction aborts open&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var open_rq = createdb(async_test(), undefined, 13);
+    var did_upgrade = false;
+    var did_db_abort = false;
+
+    open_rq.onupgradeneeded = function(e) {
+        did_upgrade = true;
+        e.target.result.onabort = function() {
+            did_db_abort = true;
+        }
+        e.target.transaction.abort();
+    };
+    open_rq.onerror = function(e) {
+        assert_true(did_upgrade);
+        assert_equals(e.target.error.name, 'AbortError', 'target.error');
+        this.done()
+    };
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open9privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+
+PASS Calling open() with version argument -1 should throw TypeError. 
+PASS Calling open() with version argument -0.5 should throw TypeError. 
+PASS Calling open() with version argument 0 should throw TypeError. 
+PASS Calling open() with version argument 0.5 should throw TypeError. 
+PASS Calling open() with version argument 0.8 should throw TypeError. 
+PASS Calling open() with version argument 9007199254740992 should throw TypeError. 
+PASS Calling open() with version argument NaN should throw TypeError. 
+PASS Calling open() with version argument Infinity should throw TypeError. 
+PASS Calling open() with version argument -Infinity should throw TypeError. 
+PASS Calling open() with version argument &quot;foo&quot; should throw TypeError. 
+PASS Calling open() with version argument undefined should throw TypeError. 
+PASS Calling open() with version argument null should throw TypeError. 
+PASS Calling open() with version argument false should throw TypeError. 
+PASS Calling open() with version argument object should throw TypeError. 
+PASS Calling open() with version argument object (second) should throw TypeError. 
+PASS Calling open() with version argument object (third) should throw TypeError. 
+PASS Calling open() with version argument 1.5 should not throw. 
+PASS Calling open() with version argument 9007199254740991 should not throw. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open9privatehtmlfromrev195422trunkLayoutTestsimportedw3cindexeddbidbfactory_open9htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private.html (from rev 195422, trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm) (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBFactory.open() - errors in version argument&lt;/title&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+function should_throw(val, name) {
+    if (!name) {
+        name = ((typeof val == &quot;object&quot; &amp;&amp; val) ? &quot;object&quot; : format_value(val))
+    }
+    test(function() {
+      assert_throws(new TypeError(), function() {
+        window.indexedDB.open('test', val);
+      });
+    }, &quot;Calling open() with version argument &quot; + name + &quot; should throw TypeError.&quot;)
+}
+
+should_throw(-1)
+should_throw(-0.5)
+should_throw(0)
+should_throw(0.5)
+should_throw(0.8)
+should_throw(0x20000000000000)  // Number.MAX_SAFE_INTEGER + 1
+should_throw(NaN)
+should_throw(Infinity)
+should_throw(-Infinity)
+should_throw(&quot;foo&quot;)
+should_throw(undefined)
+should_throw(null)
+should_throw(false)
+
+should_throw({
+    toString: function() { assert_unreached(&quot;toString should not be called for ToPrimitive [Number]&quot;); },
+    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 name = format_value(val);
+    var t = async_test(&quot;Calling open() with version argument &quot; + name + &quot; should not throw.&quot;)
+    var rq = createdb(t, val)
+    rq.onupgradeneeded = function() {
+        t.done()
+    }
+}
+
+should_work(1.5)
+should_work(Number.MAX_SAFE_INTEGER)  // 0x20000000000000 - 1
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbfactory_open9htm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm (195422 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm        2016-01-21 22:56:21 UTC (rev 195422)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -5,13 +5,14 @@
</span><span class="cx"> &lt;script src=support.js&gt;&lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;script&gt;
</span><ins>+var date = Date();
</ins><span class="cx"> function should_throw(val, name) {
</span><span class="cx">     if (!name) {
</span><span class="cx">         name = ((typeof val == &quot;object&quot; &amp;&amp; val) ? &quot;object&quot; : format_value(val))
</span><span class="cx">     }
</span><span class="cx">     test(function() {
</span><span class="cx">       assert_throws(new TypeError(), function() {
</span><del>-        window.indexedDB.open('test', val);
</del><ins>+        window.indexedDB.open('test' + date, val);
</ins><span class="cx">       });
</span><span class="cx">     }, &quot;Calling open() with version argument &quot; + name + &quot; should throw TypeError.&quot;)
</span><span class="cx"> }
</span><span class="lines">@@ -47,9 +48,10 @@
</span><span class="cx"> /* Valid */
</span><span class="cx"> 
</span><span class="cx"> function should_work(val) {
</span><ins>+    
</ins><span class="cx">     var name = format_value(val);
</span><span class="cx">     var t = async_test(&quot;Calling open() with version argument &quot; + name + &quot; should not throw.&quot;)
</span><del>-    var rq = createdb(t, val)
</del><ins>+    var rq = createdb(t, val + date)
</ins><span class="cx">     rq.onupgradeneeded = function() {
</span><span class="cx">         t.done()
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindexmultientryarraykeypathprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.multiEntry: array keyPath with multiEntry 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindexmultientryarraykeypathprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.multiEntry: array keyPath with multiEntry&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct&quot;&gt;
+&lt;link rel=assert title=&quot;XXX&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    createdb(async_test(document.title, {timeout: 10000})).onupgradeneeded = function(e) {
+        var store = e.target.result.createObjectStore(&quot;store&quot;);
+
+        assert_throws('InvalidAccessError', function() {
+            store.createIndex('actors', ['name'], { multiEntry: true })
+        });
+
+        this.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindexmultientrybigprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Adding one item with 1000 multiEntry keys 
+PASS Getting the one item by 1000 indeced keys  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindexmultientrybigprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.multiEntry - a 1000 entry multiEntry array&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct&quot;&gt;
+&lt;link rel=assert title=&quot;XXX&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+        t_add = async_test(&quot;Adding one item with 1000 multiEntry keys&quot;, { timeout: 10000 }),
+        t_get = async_test(&quot;Getting the one item by 1000 indeced keys &quot;, { timeout: 10000 });
+
+    var open_rq = createdb(t_add);
+    var obj = { test: 'yo', idxkeys: [] };
+
+    for (var i = 0; i &lt; 1000; i++)
+        obj.idxkeys.push('index_no_' + i);
+
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        db.createObjectStore('store')
+          .createIndex('index', 'idxkeys', { multiEntry: true });
+    };
+    open_rq.onsuccess = function(e) {
+        var tx = db.transaction('store', 'readwrite');
+        tx.objectStore('store')
+          .put(obj, 1)
+          .onsuccess = t_add.step_func(function(e)
+        {
+            assert_equals(e.target.result, 1, &quot;put'd key&quot;);
+            this.done();
+        });
+
+        tx.oncomplete = t_get.step_func(function() {
+            var idx = db.transaction('store').objectStore('store').index('index')
+
+            for (var i = 0; i &lt; 1000; i++)
+            {
+                idx.get('index_no_' + i).onsuccess = t_get.step_func(function(e) {
+                    assert_equals(e.target.result.test, &quot;yo&quot;);
+                });
+            }
+
+            idx.get('index_no_999').onsuccess = t_get.step_func(function(e) {
+                assert_equals(e.target.result.test, &quot;yo&quot;);
+                assert_equals(e.target.result.idxkeys.length, 1000);
+                this.done();
+            });
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindexmultientryprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.multiEntry - adding keys 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindexmultientryprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.multiEntry - adding keys&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct&quot;&gt;
+&lt;link rel=assert title=&quot;XXX&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+        expected_keys = [1, 2, 2, 3, 3];
+
+    var open_rq = createdb(async_test(document.title, {timeout: 10000}))
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var store = db.createObjectStore(&quot;store&quot;)
+
+        store.createIndex('actors', 'name', { multiEntry: true })
+
+        store.add({name: 'Odin'}, 1);
+        store.add({name: ['Rita', 'Scheeta', {Bobby:'Bobby'}]}, 2);
+        store.add({name: [ {s: 'Robert'}, 'Neil', 'Bobby']}, 3);
+    };
+    open_rq.onsuccess = function(e) {
+        var gotten_keys = [];
+        var idx = db.transaction('store').objectStore('store').index('actors');
+
+        idx.getKey('Odin').onsuccess = this.step_func(function(e) {
+            gotten_keys.push(e.target.result)
+        });
+        idx.getKey('Rita').onsuccess = this.step_func(function(e) {
+            gotten_keys.push(e.target.result)
+        });
+        idx.getKey('Scheeta').onsuccess = this.step_func(function(e) {
+            gotten_keys.push(e.target.result)
+        });
+        idx.getKey('Neil').onsuccess = this.step_func(function(e) {
+            gotten_keys.push(e.target.result)
+        });
+        idx.getKey('Bobby').onsuccess = this.step_func(function(e) {
+            gotten_keys.push(e.target.result)
+
+            assert_array_equals(gotten_keys, expected_keys);
+            this.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_countprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.count() - returns the number of records in the index  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_countprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBIndex.count() - returns the number of records in the index &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, t = async_test();
+
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        for(var i = 0; i &lt; 10; i++) {
+            store.add({ indexedProperty: &quot;data&quot; + i });
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .index(&quot;index&quot;)
+                   .count();
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, 10);
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_count2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.count() - returns the number of records that have keys within the range  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_count2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBIndex.count() - returns the number of records that have keys within the range &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, t = async_test();
+
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        for(var i = 0; i &lt; 10; i++) {
+            store.add({ indexedProperty: &quot;data&quot; + i });
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .index(&quot;index&quot;)
+                   .count(IDBKeyRange.bound('data0', 'data4'));
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, 5);
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_count3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.count() - returns the number of records that have keys with the key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_count3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBIndex.count() - returns the number of records that have keys with the key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db
+
+    createdb(async_test()).onupgradeneeded = function(e) {
+        db = e.target.result
+
+        var store = db.createObjectStore(&quot;store&quot;, { autoIncrement: true })
+        store.createIndex(&quot;myindex&quot;, &quot;idx&quot;)
+
+        for (var i = 0; i &lt; 10; i++)
+            store.add({ idx: &quot;data_&quot; + (i%2) });
+
+        store.index(&quot;myindex&quot;).count(&quot;data_0&quot;).onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result, 5, &quot;count(data_0)&quot;)
+            this.done()
+        })
+    }
+
+&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_count4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.count() - throw DataError when using invalid key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_count4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_count4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.count() - throw DataError when using invalid key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-count-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db, t = async_test();
+
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        for(var i = 0; i &lt; 10; i++) {
+            store.add({ indexedProperty: &quot;data&quot; + i });
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        var index = db.transaction(&quot;store&quot;)
+                      .objectStore(&quot;store&quot;)
+                      .index(&quot;index&quot;);
+
+        assert_throws(&quot;DataError&quot;, function() {
+            index.count(NaN);
+        });
+
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.get() - returns the record  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.get() - returns the record &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, indexedProperty: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        index = objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        objStore.add(record);
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .index(&quot;index&quot;)
+                   .get(record.indexedProperty);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, record.key);
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.get() - returns the record where the index contains duplicate values  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.get() - returns the record where the index contains duplicate values &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { key:1, indexedProperty:&quot;data&quot; },
+                  { key:2, indexedProperty:&quot;data&quot; },
+                  { key:3, indexedProperty:&quot;data&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;test&quot;)
+                   .objectStore(&quot;test&quot;)
+                   .index(&quot;index&quot;)
+                   .get(&quot;data&quot;);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, records[0].key);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.get() - attempt to retrieve a record that doesn't exist  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.get() - attempt to retrieve a record that doesn't exist &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var rq = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; })
+                   .createIndex(&quot;index&quot;, &quot;indexedProperty&quot;)
+                   .get(1);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.get() - returns the record with the first key in the range  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBIndex.get() - returns the record with the first key in the range &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, t = async_test();
+
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        for(var i = 0; i &lt; 10; i++) {
+            store.add({ key: i, indexedProperty: &quot;data&quot; + i });
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .index(&quot;index&quot;)
+                   .get(IDBKeyRange.bound('data4', 'data7'));
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, 4);
+            assert_equals(e.target.result.indexedProperty, 'data4');
+
+            setTimeout(function() { t.done(); }, 4)
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.get() - throw DataError when using invalid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.get() - throw DataError when using invalid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-get-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var index = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; })
+                      .createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+        assert_throws(&quot;DataError&quot;,function(){
+            index.get(NaN);
+        });
+        t.done();
+    };
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.get() - throw InvalidStateError when the index is deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.get() - throw InvalidStateError when the index is deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-get-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+        store.deleteIndex(&quot;index&quot;);
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.get(&quot;data&quot;);
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+FAIL IDBIndex.get() - throw TransactionInactiveError on aborted transaction assert_throws: function &quot;function (){
+            index.get(&quot;data&quot;);
+        }&quot; threw object &quot;Error: Failed to execute 'get' on 'IDBIndex': The transac...&quot; that is not a DOMException InvalidStateError: property &quot;code&quot; is equal to 0, expected 11
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_get7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_get7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.get() - throw TransactionInactiveError on aborted transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-get-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+
+        e.target.transaction.abort();
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.get(&quot;data&quot;);
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKeyprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getKey() - returns the record's primary key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKeyprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.getKey() - returns the record's primary key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key:1, indexedProperty:&quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;test&quot;)
+                   .objectStore(&quot;test&quot;);
+
+        rq = rq.index(&quot;index&quot;);
+
+        rq = rq.getKey(&quot;data&quot;);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, record.key);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getKey() - returns the record's primary key where the index contains duplicate values  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.getKey() - returns the record's primary key where the index contains duplicate values &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      records = [ { key:1, indexedProperty:&quot;data&quot; },
+                  { key:2, indexedProperty:&quot;data&quot; },
+                  { key:3, indexedProperty:&quot;data&quot; } ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;test&quot;)
+                   .objectStore(&quot;test&quot;)
+                   .index(&quot;index&quot;)
+                   .getKey(&quot;data&quot;);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, records[0].key);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getKey() - attempt to retrieve the primary key of a record that doesn't exist 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.getKey() - attempt to retrieve the primary key of a record that doesn't exist&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var rq = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; })
+                   .createIndex(&quot;index&quot;, &quot;indexedProperty&quot;)
+                   .getKey(1);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getKey() - returns the key of the first record within the range  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBIndex.getKey() - returns the key of the first record within the range &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, t = async_test();
+
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        for(var i = 0; i &lt; 10; i++) {
+            store.add({ key: i, indexedProperty: &quot;data&quot; + i });
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .index(&quot;index&quot;)
+                   .getKey(IDBKeyRange.bound('data4', 'data7'));
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, 4);
+
+            setTimeout(function() { t.done(); }, 4)
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getKey() - throw DataError when using invalid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.getKey() - throw DataError when using invalid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-getKey-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var index = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; })
+                      .createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+        assert_throws(&quot;DataError&quot;,function(){
+            index.getKey(NaN);
+        });
+        t.done();
+    };
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getKey() - throw InvalidStateError when the index is deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.getKey() - throw InvalidStateError when the index is deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-getKey-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+        store.deleteIndex(&quot;index&quot;);
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.getKey(&quot;data&quot;);
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+FAIL IDBIndex.getKey() - throw TransactionInactiveError on aborted transaction assert_throws: function &quot;function (){
+            index.getKey(&quot;data&quot;);
+        }&quot; threw object &quot;Error: Failed to execute 'getKey' on 'IDBIndex': The tran...&quot; that is not a DOMException InvalidStateError: property &quot;code&quot; is equal to 0, expected 11
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_getKey7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.getKey() - throw TransactionInactiveError on aborted transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-getKey-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+
+        e.target.transaction.abort();
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.getKey(&quot;data&quot;);
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_indexNamesprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getKey() - returns the record's primary key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_indexNamesprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.getKey() - returns the record's primary key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(document.title, {timeout: 10000});
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; });
+        objStore.createIndex(&quot;index&quot;, &quot;data&quot;);
+
+        assert_equals(objStore.indexNames[0], &quot;index&quot;, &quot;indexNames&quot;);
+        assert_equals(objStore.indexNames.length, 1, &quot;indexNames.length&quot;);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var objStore = db.transaction(&quot;test&quot;)
+                   .objectStore(&quot;test&quot;);
+
+        assert_equals(objStore.indexNames[0], &quot;index&quot;, &quot;indexNames (second)&quot;);
+        assert_equals(objStore.indexNames.length, 1, &quot;indexNames.length (second)&quot;);
+
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openCursorprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.openCursor() - throw InvalidStateError when the index is deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openCursorprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.openCursor() - throw InvalidStateError when the index is deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openCursor-IDBRequest-any-range-IDBCursorDirection-direction&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+        store.deleteIndex(&quot;index&quot;);
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.openCursor();
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openCursor2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+FAIL IDBIndex.openCursor() - throw TransactionInactiveError on aborted transaction assert_throws: function &quot;function (){
+            index.openCursor();
+        }&quot; threw object &quot;Error: Failed to execute 'openCursor' on 'IDBIndex': The ...&quot; that is not a DOMException InvalidStateError: property &quot;code&quot; is equal to 0, expected 11
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openCursor2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.openCursor() - throw TransactionInactiveError on aborted transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openCursor-IDBRequest-any-range-IDBCursorDirection-direction&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+
+        e.target.transaction.abort();
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.openCursor();
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursorprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.openKeyCursor() - throw DataError when using a invalid key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursorprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.openKeyCursor() - throw DataError when using a invalid key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openKeyCursor-IDBRequest-any-range-IDBCursorDirection-direction&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+
+        assert_throws(&quot;DataError&quot;, function(){
+            index.openKeyCursor(NaN);
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.openKeyCursor() - throw InvalidStateError when the index is deleted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.openKeyCursor() - throw InvalidStateError when the index is deleted&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openKeyCursor-IDBRequest-any-range-IDBCursorDirection-direction&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+        store.deleteIndex(&quot;index&quot;);
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.openKeyCursor();
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+FAIL IDBIndex.openKeyCursor() - throw TransactionInactiveError on aborted transaction assert_throws: function &quot;function (){
+            index.openKeyCursor();
+        }&quot; threw object &quot;Error: Failed to execute 'openKeyCursor' on 'IDBIndex': T...&quot; that is not a DOMException InvalidStateError: property &quot;code&quot; is equal to 0, expected 11
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbindex_openKeyCursor3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBIndex.openKeyCursor() - throw TransactionInactiveError on aborted transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openKeyCursor-IDBRequest-any-range-IDBCursorDirection-direction&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        var index = store.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+        store.add({ key: 1, indexedProperty: &quot;data&quot; });
+
+        e.target.transaction.abort();
+
+        assert_throws(&quot;InvalidStateError&quot;, function(){
+            index.openKeyCursor();
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbkeyrangeprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS IDBKeyRange.only() - returns an IDBKeyRange and the properties are set correctly 
+PASS IDBKeyRange.lowerBound() - returns an IDBKeyRange and the properties are set correctly 
+PASS IDBKeyRange.lowerBound() - 'open' parameter has correct default set 
+PASS IDBKeyRange.upperBound() - returns an IDBKeyRange and the properties are set correctly 
+PASS IDBKeyRange.upperBound() - 'open' parameter has correct default set 
+PASS IDBKeyRange.bound() - returns an IDBKeyRange and the properties are set correctly 
+PASS IDBKeyRange.bound() - 'lowerOpen' and 'upperOpen' parameters have correct defaults set 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbkeyrangeprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBKeyRange Tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    // only
+    test( function() {
+        var keyRange = IDBKeyRange.only(1);
+        assert_true(keyRange instanceof IDBKeyRange, &quot;keyRange instanceof IDBKeyRange&quot;);
+        assert_equals(keyRange.lower, 1, &quot;keyRange&quot;);
+        assert_equals(keyRange.upper, 1, &quot;keyRange&quot;);
+        assert_false(keyRange.lowerOpen, &quot;keyRange.lowerOpen&quot;);
+        assert_false(keyRange.upperOpen, &quot;keyRange.upperOpen&quot;);
+    }, &quot;IDBKeyRange.only() - returns an IDBKeyRange and the properties are set correctly&quot;);
+
+    // lowerBound
+    test( function() {
+        var keyRange = IDBKeyRange.lowerBound(1, true)
+        assert_true(keyRange instanceof IDBKeyRange, &quot;keyRange instanceof IDBKeyRange&quot;);
+        assert_equals(keyRange.lower, 1, &quot;keyRange.lower&quot;);
+        assert_equals(keyRange.upper, undefined, &quot;keyRange.upper&quot;);
+        assert_true(keyRange.lowerOpen, &quot;keyRange.lowerOpen&quot;);
+        assert_true(keyRange.upperOpen, &quot;keyRange.upperOpen&quot;);
+    }, &quot;IDBKeyRange.lowerBound() - returns an IDBKeyRange and the properties are set correctly&quot;);
+
+    test( function() {
+        var keyRange = IDBKeyRange.lowerBound(1);
+        assert_false(keyRange.lowerOpen, &quot;keyRange.lowerOpen&quot;);
+    }, &quot;IDBKeyRange.lowerBound() - 'open' parameter has correct default set&quot;);
+
+    // upperBound
+    test( function() {
+            var keyRange = IDBKeyRange.upperBound(1, true);
+            assert_true(keyRange instanceof IDBKeyRange, &quot;keyRange instanceof IDBKeyRange&quot;);
+            assert_equals(keyRange.lower, undefined, &quot;keyRange.lower&quot;);
+            assert_equals(keyRange.upper, 1, &quot;keyRange.upper&quot;);
+            assert_true(keyRange.lowerOpen, &quot;keyRange.lowerOpen&quot;);
+            assert_true(keyRange.upperOpen, &quot;keyRange.upperOpen&quot;);
+    }, &quot;IDBKeyRange.upperBound() - returns an IDBKeyRange and the properties are set correctly&quot;);
+
+    test( function() {
+        var keyRange = IDBKeyRange.upperBound(1);
+        assert_false(keyRange.upperOpen, &quot;keyRange.upperOpen&quot;);
+    }, &quot;IDBKeyRange.upperBound() - 'open' parameter has correct default set&quot;);
+
+    // bound
+    test( function() {
+        var keyRange = IDBKeyRange.bound(1, 2, true, true);
+        assert_true(keyRange instanceof IDBKeyRange, &quot;keyRange instanceof IDBKeyRange&quot;);
+        assert_equals(keyRange.lower, 1, &quot;keyRange&quot;);
+        assert_equals(keyRange.upper, 2, &quot;keyRange&quot;);
+        assert_true(keyRange.lowerOpen, &quot;keyRange.lowerOpen&quot;);
+        assert_true(keyRange.upperOpen, &quot;keyRange.upperOpen&quot;);
+    }, &quot;IDBKeyRange.bound() - returns an IDBKeyRange and the properties are set correctly&quot;);
+
+    test( function() {
+        var keyRange = IDBKeyRange.bound(1, 2);
+        assert_false(keyRange.lowerOpen, &quot;keyRange.lowerOpen&quot;);
+        assert_false(keyRange.upperOpen, &quot;keyRange.upperOpen&quot;);
+    }, &quot;IDBKeyRange.bound() - 'lowerOpen' and 'upperOpen' parameters have correct defaults set&quot;);
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbkeyrange_incorrectprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS IDBKeyRange.bound() - bound requires more than 0 arguments. 
+PASS IDBKeyRange.bound(null, null) - null parameters are incorrect. 
+PASS IDBKeyRange.bound(1, null / null, 1) - null parameter is incorrect. 
+PASS IDBKeyRange.bound(lower, upper / lower &gt; upper) -  'lower' is greater than 'upper'. 
+PASS IDBKeyRange.bound(DOMString/Date/Array, 1) - A DOMString, Date and Array are greater than a float. 
+PASS IDBKeyRange.bound(noExistingVariable, 1 / goodVariable, noExistingVariable) - noExistingVariable is not defined. 
+PASS IDBKeyRange.bound(true, 1) - boolean is not a valid key type. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbkeyrange_incorrectprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta charset=utf-8&gt;
+        &lt;title id='desc'&gt;IDBKeyRange Tests - Incorrect&lt;/title&gt;
+        &lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#range-concept&quot;&gt;
+        &lt;link rel=assert title=&quot;If the lower key is greater than the upper key, then a DOMException of type DataError must be thrown.&quot;&gt;
+        &lt;link rel=author href=&quot;mailto:chrcharles67@gmail.com&quot; title=&quot;Christophe CHARLES&quot;&gt;
+
+        &lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+
+            // TypeError: bound requires more than 0 arguments
+            test( function() {
+                assert_throws(new TypeError(), function() {
+                    IDBKeyRange.bound();
+                });
+            }, &quot;IDBKeyRange.bound() - bound requires more than 0 arguments.&quot;);
+
+            // Null parameters
+            test( function() {
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound(null, null);
+                });
+            }, &quot;IDBKeyRange.bound(null, null) - null parameters are incorrect.&quot;);
+
+            // // Null parameter
+            test( function() {
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound(1, null);
+                });
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound(null, 1);
+                });
+            }, &quot;IDBKeyRange.bound(1, null / null, 1) - null parameter is incorrect.&quot;);
+
+            // bound incorrect
+            test( function() {
+                var lowerBad = Math.floor(Math.random()*31) + 5;
+                var upper = lowerBad - 1;
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound(lowerBad, upper);
+                });
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound('b', 'a');
+                });
+            }, &quot;IDBKeyRange.bound(lower, upper / lower &gt; upper) -  'lower' is greater than 'upper'.&quot;
+            );
+
+            test( function() {
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound('a', 1);
+                });
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound(new Date(), 1);
+                });
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound([1, 2], 1);
+                });
+            }, &quot;IDBKeyRange.bound(DOMString/Date/Array, 1) - A DOMString, Date and Array are greater than a float.&quot;);
+
+
+            // ReferenceError: the variable is not defined
+            test( function() {
+                var goodVariable = 1;
+                assert_throws(new ReferenceError(), function() {
+                    IDBKeyRange.bound(noExistingVariable, 1);
+                });
+                assert_throws(new ReferenceError(), function() {
+                    IDBKeyRange.bound(goodVariable, noExistingVariable);
+                });
+            }, &quot;IDBKeyRange.bound(noExistingVariable, 1 / goodVariable, noExistingVariable) - noExistingVariable is not defined.&quot;);
+
+            // Valid type key error
+            test( function() {
+                assert_throws(&quot;DataError&quot;, function() {
+                    IDBKeyRange.bound(true, 1);
+                });
+            }, &quot;IDBKeyRange.bound(true, 1) - boolean is not a valid key type.&quot;);
+
+
+        &lt;/script&gt;
+    &lt;/head&gt;
+
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_addprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - add with an inline key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_addprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - add with an inline key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(record.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.property, record.property);
+            assert_equals(e.target.result.key, record.key);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add10privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - Attempt to call 'add' without an key parameter when the object store uses out-of-line keys  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add10privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - Attempt to call 'add' without an key parameter when the object store uses out-of-line keys &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.add(record); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add11privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - Attempt to add a record where the record's key does not meet the constraints of a valid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add11privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - Attempt to add a record where the record's key does not meet the constraints of a valid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: { value: 1 }, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.add(record); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add12privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - Attempt to add a record where the record's in-line key is not defined  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add12privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - Attempt to add a record where the record's in-line key is not defined &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.add(record); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add13privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - Attempt to add a record where the out of line key provided does not meet the constraints of a valid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add13privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - Attempt to add a record where the out of line key provided does not meet the constraints of a valid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.add(record, { value: 1 }); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add14privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - Add a record where a value being indexed does not meet the constraints of a valid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add14privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - Add a record where a value being indexed does not meet the constraints of a valid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, indexedProperty: { property: &quot;data&quot; } };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        rq = objStore.add(record);
+
+        assert_true(rq instanceof IDBRequest);
+        rq.onsuccess = function() {
+            t.done();
+        }
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add15privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add15privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-add-IDBRequest-any-value-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;);
+        var ostore = txn.objectStore(&quot;store&quot;);
+        t.step(function(){
+            assert_throws(&quot;ReadOnlyError&quot;, function(){
+                ostore.add({ pKey: &quot;primaryKey_0&quot;});
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add16privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add16privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-add-IDBRequest-any-value-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        ostore,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        ostore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        db.deleteObjectStore(&quot;store&quot;);
+    }
+
+    open_rq.onsuccess = function (event) {
+        t.step(function(){
+            assert_throws(&quot;InvalidStateError&quot;, function(){
+                ostore.add({ pKey: &quot;primaryKey_0&quot;});
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - add with an out-of-line key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - add with an out-of-line key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      key = 1,
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;);
+
+        objStore.add(record, key);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.property, record.property);
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - record with same key already exists  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - record with same key already exists &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        objStore.add(record);
+
+        var rq = objStore.add(record);
+        rq.onsuccess = fail(t, &quot;success on adding duplicate record&quot;)
+
+        rq.onerror = t.step_func(function(e) {
+            assert_equals(e.target.error.name, &quot;ConstraintError&quot;);
+            assert_equals(rq.error.name, &quot;ConstraintError&quot;);
+            assert_equals(e.type, &quot;error&quot;);
+
+            e.preventDefault();
+            e.stopPropagation();
+        });
+    };
+
+    // Defer done, giving rq.onsuccess a chance to run
+    open_rq.onsuccess = function(e) {
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - add where an index has unique:true specified  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - add where an index has unique:true specified &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        objStore.createIndex(&quot;i1&quot;, &quot;property&quot;, { unique: true });
+        objStore.add(record);
+
+        var rq = objStore.add(record);
+        rq.onsuccess = fail(t, &quot;success on adding duplicate indexed record&quot;)
+
+        rq.onerror = t.step_func(function(e) {
+            assert_equals(rq.error.name, &quot;ConstraintError&quot;);
+            assert_equals(e.target.error.name, &quot;ConstraintError&quot;);
+            assert_equals(e.type, &quot;error&quot;);
+
+            e.preventDefault();
+            e.stopPropagation();
+        });
+    };
+
+    // Defer done, giving a spurious rq.onsuccess a chance to run
+    open_rq.onsuccess = function(e) {
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - object store's key path is an object attribute  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - object store's key path is an object attribute &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { test: { obj: { key: 1 } }, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;test.obj.key&quot; });
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(record.test.obj.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.property, record.property);
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - autoIncrement and inline keys  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - autoIncrement and inline keys &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; },
+      expected_keys = [ 1, 2, 3, 4 ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot;, autoIncrement: true });
+
+        objStore.add(record);
+        objStore.add(record);
+        objStore.add(record);
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.value.key);
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expected_keys);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - autoIncrement and out-of-line keys  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - autoIncrement and out-of-line keys &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; },
+      expected_keys = [ 1, 2, 3, 4 ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+
+        objStore.add(record);
+        objStore.add(record);
+        objStore.add(record);
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.key);
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expected_keys);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add8privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - object store has autoIncrement:true and the key path is an object attribute  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add8privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - object store has autoIncrement:true and the key path is an object attribute &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; },
+      expected_keys = [ 1, 2, 3, 4 ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;test.obj.key&quot;, autoIncrement: true });
+
+        objStore.add(record);
+        objStore.add(record);
+        objStore.add(record);
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.value.test.obj.key);
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expected_keys);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add9privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.add() - Attempt to add a record that does not meet the constraints of an object store's inline key requirements  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_add9privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.add() - Attempt to add a record that does not meet the constraints of an object store's inline key requirements &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var t = async_test(),
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        var rq,
+          db = e.target.result,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.add(record, 1); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clearprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.clear() - Verify clear removes all records  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clearprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.clear() - Verify clear removes all records &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+
+        objStore.add({ property: &quot;data&quot; });
+        objStore.add({ something_different: &quot;Yup, totally different&quot; });
+        objStore.add(1234);
+        objStore.add([1, 2, 1234]);
+
+        objStore.clear().onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+        });
+    };
+
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, null, 'cursor');
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.clear() - clear removes all records from an index  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.clear() - clear removes all records from an index &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        objStore.add({ indexedProperty: &quot;data&quot; });
+        objStore.add({ indexedProperty: &quot;yo, man&quot;, something_different: &quot;Yup, totally different&quot; });
+        objStore.add({ indexedProperty: 1234 });
+        objStore.add({ indexedProperty: [1, 2, 1234] });
+        objStore.add(1234);
+
+        objStore.clear().onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+        });
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .index(&quot;index&quot;)
+                   .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, null, 'cursor');
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.clear() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.clear() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-clear-IDBRequest&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;);
+        var ostore = txn.objectStore(&quot;store&quot;);
+        t.step(function(){
+            assert_throws(&quot;ReadOnlyError&quot;, function(){
+                ostore.clear();
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.clear() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_clear4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.clear() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-clear-IDBRequest&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        ostore,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        ostore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        db.deleteObjectStore(&quot;store&quot;);
+    }
+
+    open_rq.onsuccess = function (event) {
+        t.step(function(){
+            assert_throws(&quot;InvalidStateError&quot;, function(){
+                ostore.clear();
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_countprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.count() - returns the number of records in the object store  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_countprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBObjectStore.count() - returns the number of records in the object store &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, t = async_test();
+
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;);
+
+        for(var i = 0; i &lt; 10; i++) {
+            store.add({ data: &quot;data&quot; + i }, i);
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .count();
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, 10);
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.count() - returns the number of records that have keys within the range  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBObjectStore.count() - returns the number of records that have keys within the range &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, t = async_test();
+
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;);
+
+        for(var i = 0; i &lt; 10; i++) {
+            store.add({ data: &quot;data&quot; + i }, i);
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .count(IDBKeyRange.bound(5,20));
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, 5);
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.count() - returns the number of records that have keys with the key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBObjectStore.count() - returns the number of records that have keys with the key&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db
+
+    createdb(async_test()).onupgradeneeded = function(e) {
+        db = e.target.result
+
+        var store = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;k&quot; })
+
+        for (var i = 0; i &lt; 5; i++)
+            store.add({ k: &quot;key_&quot; + i });
+
+        store.count(&quot;key_2&quot;).onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result, 1, &quot;count(key_2)&quot;)
+
+            store.count(&quot;key_&quot;).onsuccess = this.step_func(function(e) {
+                assert_equals(e.target.result, 0, &quot;count(key_)&quot;)
+                this.done()
+            })
+        })
+    }
+
+&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.count() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_count4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.count() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-count-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        ostore,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        ostore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        db.deleteObjectStore(&quot;store&quot;);
+    }
+
+    open_rq.onsuccess = function (event) {
+        t.step(function(){
+            assert_throws(&quot;InvalidStateError&quot;, function(){
+                ostore.count();
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - returns an IDBIndex and the properties are set correctly 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - returns an IDBIndex and the properties are set correctly&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;);
+        var index = objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;, { unique: true });
+
+        assert_true(index instanceof IDBIndex, &quot;IDBIndex&quot;);
+        assert_equals(index.name, &quot;index&quot;, &quot;name&quot;);
+        assert_equals(index.objectStore, objStore, &quot;objectStore&quot;);
+        assert_equals(index.keyPath, &quot;indexedProperty&quot;, &quot;keyPath&quot;);
+        assert_true(index.unique, &quot;unique&quot;);
+        assert_false(index.multiEntry, &quot;multiEntry&quot;);
+
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex10privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createIndex() - If an index with the name name already exists in this object store, the implementation must throw a DOMException of type ConstraintError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex10privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBDatabase.createIndex() - If an index with the name name already exists in this object store, the implementation must throw a DOMException of type ConstraintError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var t = async_test(),
+    open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function (e) {
+    var db = e.target.result;
+    var ostore = db.createObjectStore(&quot;store&quot;);
+    ostore.createIndex(&quot;a&quot;, &quot;a&quot;);
+    assert_throws(&quot;ConstraintError&quot;, function(){
+        ostore.createIndex(&quot;a&quot;, &quot;a&quot;);
+    });
+    t.done();
+}
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex11privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createIndex() - If keyPath is not a valid key path, the implementation must throw a DOMException of type SyntaxError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex11privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBDatabase.createIndex() - If keyPath is not a valid key path, the implementation must throw a DOMException of type SyntaxError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var t = async_test(),
+    open_rq = createdb(t);
+
+open_rq.onupgradeneeded = function (e) {
+    var db = e.target.result;
+    var ostore = db.createObjectStore(&quot;store&quot;);
+    assert_throws(&quot;SyntaxError&quot;, function(){
+        ostore.createIndex(&quot;ab&quot;, &quot;.&quot;);
+    });
+    t.done();
+}
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex12privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createIndex() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex12privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBDatabase.createIndex() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        ostore,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        ostore = db.createObjectStore(&quot;store&quot;);
+        db.deleteObjectStore(&quot;store&quot;);
+    }
+
+    open_rq.onsuccess = function (event) {
+        t.step(function(){
+            assert_throws(&quot;InvalidStateError&quot;, function(){
+                ostore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex13privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBDatabase.createIndex() - Operate out versionchange throw InvalidStateError  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex13privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBDatabase.createIndex() - Operate out versionchange throw InvalidStateError &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        db.createObjectStore(&quot;store&quot;);
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;, &quot;readwrite&quot;);
+        ostore = txn.objectStore(&quot;store&quot;);
+        t.step(function(){
+            assert_throws(&quot;InvalidStateError&quot;, function(){
+                ostore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - attempt to create an index that requires unique values on an object store already contains duplicates  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - attempt to create an index that requires unique values on an object store already contains duplicates &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, aborted,
+      t = async_test(),
+      record = { indexedProperty: &quot;bar&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var txn = e.target.transaction,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        objStore.add(record, 1);
+        objStore.add(record, 2);
+        var index = objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;, { unique: true });
+
+        assert_true(index instanceof IDBIndex, &quot;IDBIndex&quot;);
+
+        e.target.transaction.onabort = t.step_func(function(e) {
+            aborted = true;
+            assert_equals(e.type, &quot;abort&quot;, &quot;event type&quot;);
+        });
+
+        db.onabort = function(e) {
+            assert_true(aborted, &quot;transaction.abort event has fired&quot;);
+            t.done();
+        };
+
+        e.target.transaction.oncomplete = fail(t, &quot;got complete, expected abort&quot;);
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex3usablerightawayprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - the index is usable right after being made 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex3usablerightawayprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - the index is usable right after being made&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, aborted,
+      t = async_test(document.title, {timeout:19000})
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var txn = e.target.transaction,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: 'key' });
+
+        for (var i = 0; i &lt; 100; i++)
+            objStore.add({ key: &quot;key_&quot; + i, indexedProperty: &quot;indexed_&quot; + i });
+
+        var idx = objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;)
+
+        idx.get('indexed_99').onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, 'key_99', 'key');
+        });
+        idx.get('indexed_9').onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, 'key_9', 'key');
+        });
+    }
+
+    open_rq.onsuccess = function() {
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex4deleteIndexevent_orderprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - Event ordering for a later deleted index 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex4deleteIndexevent_orderprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - Event ordering for a later deleted index&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      events = [],
+      t = async_test(document.title, {timeout: 10000})
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        e.target.transaction.oncomplete = log(&quot;transaction.complete&quot;);
+
+        var txn = e.target.transaction,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        var rq_add1 = objStore.add({ animal: &quot;Unicorn&quot; }, 1);
+        rq_add1.onsuccess = log(&quot;rq_add1.success&quot;);
+        rq_add1.onerror   = log(&quot;rq_add1.error&quot;);
+
+        objStore.createIndex(&quot;index&quot;, &quot;animal&quot;, { unique: true });
+
+        var rq_add2 = objStore.add({ animal: &quot;Unicorn&quot; }, 2);
+        rq_add2.onsuccess = log(&quot;rq_add2.success&quot;);
+        rq_add2.onerror   = function(e) {
+            log(&quot;rq_add2.error&quot;)(e);
+            e.preventDefault();
+            e.stopPropagation();
+        }
+
+        objStore.deleteIndex(&quot;index&quot;);
+
+        var rq_add3 = objStore.add({ animal: &quot;Unicorn&quot; }, 3);
+        rq_add3.onsuccess = log(&quot;rq_add3.success&quot;);
+        rq_add3.onerror   = log(&quot;rq_add3.error&quot;);
+    }
+
+    open_rq.onsuccess = function(e) {
+        log(&quot;open_rq.success&quot;)(e);
+        assert_array_equals(events, [ &quot;rq_add1.success&quot;,
+                                      &quot;rq_add2.error: ConstraintError&quot;,
+                                      &quot;rq_add3.success&quot;,
+
+                                      &quot;transaction.complete&quot;,
+
+                                      &quot;open_rq.success&quot; ],
+                            &quot;events&quot;);
+        t.done();
+    }
+
+    function log(msg) {
+        return function(e) {
+            if(e &amp;&amp; e.target &amp;&amp; e.target.error)
+                events.push(msg + &quot;: &quot; + e.target.error.name);
+            else
+                events.push(msg);
+        };
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex5emptykeypathprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - empty keyPath 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex5emptykeypathprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - empty keyPath&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, aborted,
+      t = async_test(document.title, {timeout: 10000})
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var txn = e.target.transaction,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        for (var i = 0; i &lt; 5; i++)
+            objStore.add(&quot;object_&quot; + i, i);
+
+        var rq = objStore.createIndex(&quot;index&quot;, &quot;&quot;)
+        rq.onerror = function() { assert_unreached(&quot;error: &quot; + rq.error.name); }
+        rq.onsuccess = function() { }
+
+        objStore.index(&quot;index&quot;)
+                .get('object_4')
+                .onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, 'object_4', 'result');
+        });
+    }
+
+    open_rq.onsuccess = function() {
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex6event_orderprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - event order when unique constraint is triggered 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex6event_orderprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - event order when unique constraint is triggered&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;meta rel=help href=http://odinho.html5.org/IndexedDB/spec/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-any-keyPath-IDBIndexParameters-optionalParameters&gt;
+&lt;meta rel=assert title=&quot;The index that is requested to be created can contain constraints on the data allowed in the index's referenced object store, such as requiring uniqueness of the values referenced by the index's keyPath. If the referenced object store already contains data which violates these constraints, this must not cause the implementation of createIndex to throw an exception or affect what it returns. The implementation must still create and return an IDBIndex object. Instead the implementation must queue up an operation to abort the 'versionchange' transaction which was used for the createIndex call.&quot;&gt;
+&lt;meta rel=assert title=&quot;In some implementations it's possible for the implementation to asynchronously run into problems creating the index after the createIndex function has returned. For example in implementations where metadata about the newly created index is queued up to be inserted into the database asynchronously, or where the implementation might need to ask the user for permission for quota reasons. Such implementations must still create and return an IDBIndex object. Instead, once the implementation realizes that creating the index has failed, it must abort the transaction using the steps for aborting a transaction using the appropriate error as error parameter.&quot;&gt;
+&lt;meta rel=assert title=&quot;if the index can't be created due to unique constraints, ConstraintError must be used as error&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    // Transaction may fire window.onerror in some implementations.
+    setup({allow_uncaught_exception:true});
+
+    var db,
+      events = [],
+      t = async_test(document.title, {timeout: 10000})
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.onerror = log(&quot;db.error&quot;);
+        db.onabort = log(&quot;db.abort&quot;);
+        e.target.transaction.onabort = log(&quot;transaction.abort&quot;)
+        e.target.transaction.onerror = log(&quot;transaction.error&quot;)
+        e.target.transaction.oncomplete = log(&quot;transaction.complete&quot;)
+
+        var txn = e.target.transaction,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        var rq_add1 = objStore.add({ animal: &quot;Unicorn&quot; }, 1);
+        rq_add1.onsuccess = log(&quot;rq_add1.success&quot;);
+        rq_add1.onerror   = log(&quot;rq_add1.error&quot;);
+
+        var rq_add2 = objStore.add({ animal: &quot;Unicorn&quot; }, 2);
+        rq_add2.onsuccess = log(&quot;rq_add2.success&quot;);
+        rq_add2.onerror   = log(&quot;rq_add2.error&quot;);
+
+        objStore.createIndex(&quot;index&quot;, &quot;animal&quot;, { unique: true })
+
+        var rq_add3 = objStore.add({ animal: &quot;Unicorn&quot; }, 3);
+        rq_add3.onsuccess = log(&quot;rq_add3.success&quot;);
+        rq_add3.onerror   = log(&quot;rq_add3.error&quot;);
+    }
+
+    open_rq.onerror = function(e) {
+        log(&quot;open_rq.error&quot;)(e);
+        assert_array_equals(events, [ &quot;rq_add1.success&quot;,
+                                      &quot;rq_add2.success&quot;,
+
+                                      &quot;rq_add3.error: AbortError&quot;,
+                                      &quot;transaction.error: AbortError&quot;,
+                                      &quot;db.error: AbortError&quot;,
+
+                                      &quot;transaction.abort: ConstraintError&quot;,
+                                      &quot;db.abort: ConstraintError&quot;,
+
+                                      &quot;open_rq.error: AbortError&quot; ],
+                            &quot;events&quot;);
+        t.done();
+    }
+
+    function log(msg) {
+        return function(e) {
+            if(e &amp;&amp; e.target &amp;&amp; e.target.error)
+                events.push(msg + &quot;: &quot; + e.target.error.name);
+            else
+                events.push(msg);
+        };
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex7event_orderprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - Event ordering for ConstraintError on request 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex7event_orderprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - Event ordering for ConstraintError on request&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;meta rel=help href=http://odinho.html5.org/IndexedDB/spec/Overview.html#dfn-steps-for-aborting-a-transaction&gt;
+&lt;meta rel=assert title=&quot;Unless error was set to null, create a DOMError object and set its name to error. Set transaction's error property to this newly created DOMError.&quot;&gt;
+&lt;meta rel=assert title=&quot;If the transaction's request list contain any requests whose done flag is still false, abort the steps for asynchronously executing a request for each such request and queue a task to perform the following steps:&quot;&gt;
+&lt;meta rel=assert title=&quot;set the request's error attribute to a DOMError with a type of AbortError.&quot;&gt;
+&lt;meta rel=assert title=&quot;Dispatch an event at request. The event must use the Event interface and have its type set to 'error'. The event bubbles and is cancelable. The propagation path for the event is transaction's connection, then transaction and finally the request. There is no default action for the event.&quot;&gt;
+&lt;meta rel=assert title=&quot;Queue up an operation to dispatch an event at transaction. The event must use the Event interface and have its type set to 'abort'. The event does bubble but is not cancelable. The propagation path for the event is transaction's connection and then transaction.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    // Transaction may fire window.onerror in some implementations.
+    setup({allow_uncaught_exception:true});
+
+    var db,
+      events = [],
+      t = async_test(document.title, {timeout: 10000})
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var txn = e.target.transaction;
+        db.onerror = log(&quot;db.error&quot;);
+        db.onabort = log(&quot;db.abort&quot;);
+        txn.onabort = log(&quot;transaction.abort&quot;)
+        txn.onerror = log(&quot;transaction.error&quot;)
+        txn.oncomplete = log(&quot;transaction.complete&quot;)
+
+        var objStore = db.createObjectStore(&quot;store&quot;);
+
+        var rq_add1 = objStore.add({ animal: &quot;Unicorn&quot; }, 1);
+        rq_add1.onsuccess = log(&quot;rq_add1.success&quot;);
+        rq_add1.onerror   = log(&quot;rq_add1.error&quot;);
+
+        objStore.createIndex(&quot;index&quot;, &quot;animal&quot;, { unique: true })
+
+        var rq_add2 = objStore.add({ animal: &quot;Unicorn&quot; }, 2);
+        rq_add2.onsuccess = log(&quot;rq_add2.success&quot;);
+        rq_add2.onerror   = log(&quot;rq_add2.error&quot;);
+
+        var rq_add3 = objStore.add({ animal: &quot;Horse&quot; }, 3);
+        rq_add3.onsuccess = log(&quot;rq_add3.success&quot;);
+        rq_add3.onerror   = log(&quot;rq_add3.error&quot;);
+    }
+
+    open_rq.onerror = function(e) {
+        log(&quot;open_rq.error&quot;)(e);
+        assert_array_equals(events, [ &quot;rq_add1.success&quot;,
+
+                                      &quot;rq_add2.error: ConstraintError&quot;,
+                                      &quot;transaction.error: ConstraintError&quot;,
+                                      &quot;db.error: ConstraintError&quot;,
+
+                                      &quot;rq_add3.error: AbortError&quot;,
+                                      &quot;transaction.error: AbortError&quot;,
+                                      &quot;db.error: AbortError&quot;,
+
+                                      &quot;transaction.abort: ConstraintError&quot;,
+                                      &quot;db.abort: ConstraintError&quot;,
+
+                                      &quot;open_rq.error: AbortError&quot; ],
+                            &quot;events&quot;);
+        t.done();
+    }
+
+    function log(msg) {
+        return function(e) {
+            if(e &amp;&amp; e.target &amp;&amp; e.target.error)
+                events.push(msg + &quot;: &quot; + e.target.error.name);
+            else
+                events.push(msg);
+        };
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex8valid_keysprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - index can be valid keys 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex8valid_keysprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - index can be valid keys&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(document.title, {timeout:19000}),
+      now = new Date(),
+      mar18 = new Date(1111111111111),
+      ar = [&quot;Yay&quot;, 2, -Infinity],
+      num = 1337
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var txn = e.target.transaction,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: 'key' });
+
+        objStore.add({ key: &quot;now&quot;,    i: now   });
+        objStore.add({ key: &quot;mar18&quot;,  i: mar18 });
+        objStore.add({ key: &quot;array&quot;,  i: ar    });
+        objStore.add({ key: &quot;number&quot;, i: num   });
+
+        var idx = objStore.createIndex(&quot;index&quot;, &quot;i&quot;)
+
+        idx.get(now).onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, 'now', 'key');
+            assert_equals(e.target.result.i.getTime(), now.getTime(), 'getTime');
+        });
+        idx.get(mar18).onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, 'mar18', 'key');
+            assert_equals(e.target.result.i.getTime(), mar18.getTime(), 'getTime');
+        });
+        idx.get(ar).onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, 'array', 'key');
+            assert_array_equals(e.target.result.i, ar, 'array is the same');
+        });
+        idx.get(num).onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, 'number', 'key');
+            assert_equals(e.target.result.i, num, 'number is the same');
+        });
+    }
+
+    open_rq.onsuccess = function() {
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex9emptynameprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.createIndex() - empty name 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_createIndex9emptynameprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - empty name&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db
+
+    var open_rq = createdb(async_test())
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+        var store = db.createObjectStore(&quot;store&quot;)
+
+        for (var i = 0; i &lt; 5; i++)
+            store.add({ idx: &quot;object_&quot; + i }, i)
+
+        store.createIndex(&quot;&quot;, &quot;idx&quot;)
+
+        store.index(&quot;&quot;)
+             .get('object_4')
+             .onsuccess = this.step_func(function(e) {
+            assert_equals(e.target.result.idx, 'object_4', 'result')
+        })
+        assert_equals(store.indexNames[0], &quot;&quot;, &quot;indexNames[0]&quot;)
+        assert_equals(store.indexNames.length, 1, &quot;indexNames.length&quot;)
+    }
+
+    open_rq.onsuccess = function() {
+        var store = db.transaction(&quot;store&quot;).objectStore(&quot;store&quot;)
+
+        assert_equals(store.indexNames[0], &quot;&quot;, &quot;indexNames[0]&quot;)
+        assert_equals(store.indexNames.length, 1, &quot;indexNames.length&quot;)
+
+        this.done()
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.delete() - delete removes record (inline keys) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.delete() - delete removes record (inline keys)&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;key&quot; });
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var delete_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .delete(record.key);
+
+        delete_rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+
+            e.target.transaction.oncomplete = t.step_func(VerifyRecordRemoved);
+        });
+    };
+
+    function VerifyRecordRemoved() {
+        var rq = db.transaction(&quot;test&quot;)
+                   .objectStore(&quot;test&quot;)
+                   .get(record.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.delete() - key doesn't match any records  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.delete() - key doesn't match any records &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var delete_rq = db.createObjectStore(&quot;test&quot;)
+                          .delete(1);
+
+        delete_rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.delete() - object store's key path is an object attribute  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.delete() - object store's key path is an object attribute &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { test: { obj: { key: 1 } }, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;, { keyPath: &quot;test.obj.key&quot; });
+        objStore.add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var delete_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .delete(record.test.obj.key);
+
+        delete_rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+
+            e.target.transaction.oncomplete = t.step_func(VerifyRecordRemoved);
+        });
+    };
+
+    function VerifyRecordRemoved() {
+        var rq = db.transaction(&quot;test&quot;)
+                   .objectStore(&quot;test&quot;)
+                   .get(record.test.obj.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.delete() - delete removes record (out-of-line keys)  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.delete() - delete removes record (out-of-line keys) &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      key = 1,
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;test&quot;);
+        objStore.add(record, key);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var delete_rq = db.transaction(&quot;test&quot;, &quot;readwrite&quot;)
+                          .objectStore(&quot;test&quot;)
+                          .delete(key);
+
+        delete_rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+
+            e.target.transaction.oncomplete = t.step_func(VerifyRecordRemoved);
+        });
+    };
+
+    function VerifyRecordRemoved() {
+        var rq = db.transaction(&quot;test&quot;)
+                   .objectStore(&quot;test&quot;)
+                   .get(key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result, undefined);
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.delete() - removes all of the records in the range 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBObjectStore.delete() - removes all of the records in the range&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;script&gt;
+    var db
+    var open_rq = createdb(async_test())
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+        var os = db.createObjectStore(&quot;store&quot;)
+
+        for(var i = 0; i &lt; 10; i++)
+            os.add(&quot;data&quot; + i, i)
+    }
+
+    open_rq.onsuccess = function (e) {
+        var os = db.transaction(&quot;store&quot;, &quot;readwrite&quot;)
+                   .objectStore(&quot;store&quot;)
+
+        os.delete( IDBKeyRange.bound(3, 6) )
+        os.count().onsuccess = this.step_func(function(e)
+        {
+            assert_equals(e.target.result, 6, &quot;Count after deleting 3-6 from 10&quot;);
+            this.done();
+        })
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.delete() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.delete() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-delete-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        for (var i = 0; i &lt; records.length; i++) {
+            objStore.add(records[i]);
+        }
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;);
+        var ostore = txn.objectStore(&quot;store&quot;);
+        t.step(function(){
+            assert_throws(&quot;ReadOnlyError&quot;, function(){
+                ostore.delete(&quot;primaryKey_0&quot;);
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.delete() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_delete7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.delete() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-delete-IDBRequest-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        ostore,
+        t = async_test(),
+        records = [{ pKey: &quot;primaryKey_0&quot;},
+                   { pKey: &quot;primaryKey_1&quot;}];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        ostore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        db.deleteObjectStore(&quot;store&quot;);
+    }
+
+    open_rq.onsuccess = function (event) {
+        t.step(function(){
+            assert_throws(&quot;InvalidStateError&quot;, function(){
+                ostore.delete(&quot;primaryKey_0&quot;);
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteIndexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.deleteIndex() - removes the index  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deleteIndexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.deleteIndex() - removes the index &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      key = 1,
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore(&quot;test&quot;)
+          .createIndex(&quot;index&quot;, &quot;indexedProperty&quot;)
+    };
+
+    open_rq.onsuccess = function(e) {
+        db.close();
+        var new_version = createdb(t, db.name, 2);
+        new_version.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = e.target.transaction.objectStore(&quot;test&quot;)
+            objStore.deleteIndex(&quot;index&quot;);
+        }
+        new_version.onsuccess = function(e) {
+            var index,
+              objStore = db.transaction(&quot;test&quot;)
+                           .objectStore(&quot;test&quot;);
+
+            assert_throws('NotFoundError',
+                function() { index = objStore.index(&quot;index&quot;) });
+            assert_equals(index, undefined);
+            t.done();
+        }
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deletedprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Attempting to use deleted IDBObjectStore 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_deletedprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Attempting to use deleted IDBObjectStore&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#object-store&quot;&gt;
+&lt;link rel=assert title=&quot;InvalidStateError Occurs if a request is made on a source object that has been deleted or removed.&quot;&gt;
+&lt;link rel=author href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      add_success = false,
+      t = async_test(document.title, {timeout: 10000})
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        assert_equals(db.objectStoreNames[0], &quot;store&quot;, &quot;objectStoreNames&quot;);
+
+        var rq_add = objStore.add(1);
+        rq_add.onsuccess = function() { add_success = true; };
+        rq_add.onerror = fail(t, 'rq_add.error');
+
+        objStore.createIndex(&quot;idx&quot;, &quot;a&quot;);
+        db.deleteObjectStore(&quot;store&quot;);
+        assert_equals(db.objectStoreNames.length, 0, &quot;objectStoreNames.length after delete&quot;);
+
+        assert_throws(null, function() { objStore.add(2); });
+        assert_throws(null, function() { objStore.put(3); });
+        assert_throws(null, function() { objStore.get(1); });
+        assert_throws(null, function() { objStore.clear(); });
+        assert_throws(null, function() { objStore.count(); });
+        assert_throws(null, function() { objStore.delete(1); });
+        assert_throws(null, function() { objStore.openCursor(); });
+        assert_throws(null, function() { objStore.index(&quot;idx&quot;); });
+        assert_throws(null, function() { objStore.deleteIndex(&quot;idx&quot;); });
+        assert_throws(null, function() { objStore.createIndex(&quot;idx2&quot;, &quot;a&quot;); });
+    }
+
+    open_rq.onsuccess = function() {
+        assert_true(add_success, &quot;First add was successful&quot;);
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_getprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.get() - key is a number  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_getprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.get() - key is a number &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 3.14159265, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; })
+          .add(record);
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(record.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, record.key);
+            assert_equals(e.target.result.property, record.property);
+            t.done();
+        });
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.get() - key is a string  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.get() - key is a string &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: &quot;this is a key that's a string&quot;, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; })
+          .add(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(record.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key, record.key);
+            assert_equals(e.target.result.property, record.property);
+            t.done();
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.get() - key is a Date  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.get() - key is a Date &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: new Date(), property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; })
+          .add(record);
+    }
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(record.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.key.valueOf(), record.key.valueOf());
+            assert_equals(e.target.result.property, record.property);
+            t.done();
+        });
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.get() - attempt to retrieve a record that doesn't exist  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.get() - attempt to retrieve a record that doesn't exist &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var rq = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; })
+                   .get(1);
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.results, undefined);
+            setTimeout(function() { t.done(); }, 10);
+        });
+    };
+
+    open_rq.onsuccess = function() {};
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.get() - returns the record with the first key in the range  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBObjectStore.get() - returns the record with the first key in the range &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+&lt;script&gt;
+    var db
+    var open_rq = createdb(async_test())
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+        var os = db.createObjectStore(&quot;store&quot;)
+
+        for(var i = 0; i &lt; 10; i++)
+            os.add(&quot;data&quot; + i, i)
+    }
+
+    open_rq.onsuccess = function (e) {
+        db.transaction(&quot;store&quot;)
+          .objectStore(&quot;store&quot;)
+          .get( IDBKeyRange.bound(3, 6) )
+          .onsuccess = this.step_func(function(e)
+        {
+            assert_equals(e.target.result, &quot;data3&quot;, &quot;get(3-6)&quot;);
+            this.done();
+        })
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.get() - throw TransactionInactiveError on aborted transaction  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.get() - throw TransactionInactiveError on aborted transaction &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;YuichiNukiyama&quot; href=&quot;https://github.com/YuichiNukiyama&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; })
+    }
+
+    open_rq.onsuccess = function (e) {
+        var store = db.transaction(&quot;store&quot;)
+                      .objectStore(&quot;store&quot;);
+        store.transaction.abort();
+        assert_throws(&quot;TransactionInactiveError&quot;, function () {
+            store.get(1);
+        }, &quot;throw TransactionInactiveError on aborted transaction.&quot;);
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.get() - throw DataError when using invalid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_get7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.get() - throw DataError when using invalid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;YuichiNukiyama&quot; href=&quot;https://github.com/YuichiNukiyama&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; })
+    }
+
+    open_rq.onsuccess = function(e) {
+        var store = db.transaction(&quot;store&quot;)
+                      .objectStore(&quot;store&quot;)
+        assert_throws(&quot;DataError&quot;, function () {
+            store.get(null)
+        }, &quot;throw DataError when using invalid key.&quot;);
+        t.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_indexprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.index() - returns an index  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_indexprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.index() - returns an index &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        db.createObjectStore(&quot;store&quot;)
+          .createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var index = db.transaction(&quot;store&quot;)
+                      .objectStore(&quot;store&quot;)
+                      .index(&quot;index&quot;);
+
+        assert_true(index instanceof IDBIndex, 'instanceof IDBIndex');
+        t.done();
+    };
+
+&lt;/script&gt;
+
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursorprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.openCursor() - iterate through 100 objects 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursorprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBObjectStore.openCursor() - iterate through 100 objects&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db
+    var open_rq = createdb(async_test())
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var store = db.createObjectStore(&quot;store&quot;);
+
+        for (var i=0; i &lt; 100; i++)
+            store.add(&quot;record_&quot; + i, i);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var count = 0
+        var txn = db.transaction(&quot;store&quot;)
+
+        txn.objectStore(&quot;store&quot;)
+           .openCursor().onsuccess = this.step_func(function(e)
+        {
+            if (e.target.result) {
+                count += 1;
+                e.target.result.continue()
+            }
+        })
+
+        txn.oncomplete = this.step_func(function() {
+            assert_equals(count, 100);
+            this.done()
+        })
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursor_invalidprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.openCursor() - invalid - pass something other than number 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_openCursor_invalidprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBObjectStore.openCursor() - invalid&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db, open;
+
+    setup(function() {
+        open = indexedDB.open('testdb-' + new Date().getTime());
+        open.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;test&quot;);
+            objStore.createIndex(&quot;index&quot;, &quot;&quot;);
+
+            objStore.add(&quot;data&quot;,  1);
+            objStore.add(&quot;data2&quot;, 2);
+        };
+    },
+    { explicit_done: true });
+
+
+    open.onsuccess = function() {
+
+        async_test(document.title + &quot; - pass something other than number&quot;).step(function(e) {
+            var idx = db.transaction(&quot;test&quot;).objectStore(&quot;test&quot;).index(&quot;index&quot;);
+
+            assert_throws(&quot;DataError&quot;,
+                function() { idx.openCursor({ lower: &quot;a&quot; }); });
+
+            assert_throws(&quot;DataError&quot;,
+                function() { idx.openCursor({ lower: &quot;a&quot;, lowerOpen: false }); });
+
+            assert_throws(&quot;DataError&quot;,
+                function() { idx.openCursor({ lower: &quot;a&quot;, lowerOpen: false, upper: null, upperOpen: false }); });
+
+            this.done();
+        });
+
+
+        // Stop blocking the testing system from hereon
+        done();
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_putprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - put with an inline key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_putprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - put with an inline key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        objStore.put(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(record.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.property, record.property);
+            assert_equals(e.target.result.key, record.key);
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put10privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - Attempt to call 'put' without an key parameter when the object store uses out-of-line keys  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put10privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - Attempt to call 'put' without an key parameter when the object store uses out-of-line keys &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.put(record); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put11privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - Attempt to put a record where the record's key does not meet the constraints of a valid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put11privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - Attempt to put a record where the record's key does not meet the constraints of a valid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: { value: 1 }, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.put(record); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put12privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - Attempt to put a record where the record's in-line key is not defined  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put12privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - Attempt to put a record where the record's in-line key is not defined &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.put(record); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put13privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - Attempt to put a record where the out of line key provided does not meet the constraints of a valid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put13privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - Attempt to put a record where the out of line key provided does not meet the constraints of a valid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.put(record, { value: 1 }); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put14privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - Put a record where a value being indexed does not meet the constraints of a valid key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put14privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - Put a record where a value being indexed does not meet the constraints of a valid key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { key: 1, indexedProperty: { property: &quot;data&quot; } };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        var rq,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;);
+
+        rq = objStore.put(record);
+
+        assert_true(rq instanceof IDBRequest);
+        rq.onsuccess = function() {
+            t.done();
+        }
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put15privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put15privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-put-IDBRequest-any-value-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+    }
+
+    open_rq.onsuccess = function (event) {
+        var txn = db.transaction(&quot;store&quot;);
+        var ostore = txn.objectStore(&quot;store&quot;);
+        t.step(function(){
+            assert_throws(&quot;ReadOnlyError&quot;, function(){
+                ostore.put({pKey: &quot;primaryKey_0&quot;});
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put16privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put16privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-put-IDBRequest-any-value-any-key&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    var db,
+        ostore,
+        t = async_test();
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event) {
+        db = event.target.result;
+        ostore = db.createObjectStore(&quot;store&quot;, {keyPath:&quot;pKey&quot;});
+        db.deleteObjectStore(&quot;store&quot;);
+    }
+
+    open_rq.onsuccess = function (event) {
+        t.step(function(){
+            assert_throws(&quot;InvalidStateError&quot;, function(){
+                ostore.put({pKey: &quot;primaryKey_0&quot;});
+            });
+        });
+        t.done();
+    }
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put2privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - put with an out-of-line key  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put2privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - put with an out-of-line key &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      key = 1,
+      record = { property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;);
+
+        objStore.put(record, key);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.property, record.property);
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put3privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - record with same key already exists  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put3privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - record with same key already exists &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, success_event,
+      t = async_test(),
+      record = { key: 1, property: &quot;data&quot; },
+      record_put = { key: 1, property: &quot;changed&quot;, more: [&quot;stuff&quot;, 2] };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+        objStore.put(record);
+
+        var rq = objStore.put(record_put);
+        rq.onerror = fail(t, &quot;error on put&quot;);
+
+        rq.onsuccess = t.step_func(function(e) {
+            success_event = true;
+        });
+    };
+
+    open_rq.onsuccess = function(e) {
+        assert_true(success_event);
+
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(1);
+
+        rq.onsuccess = t.step_func(function(e) {
+            var rec = e.target.result;
+
+            assert_equals(rec.key, record_put.key);
+            assert_equals(rec.property, record_put.property);
+            assert_array_equals(rec.more, record_put.more);
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put4privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - put where an index has unique:true specified  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put4privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - put where an index has unique:true specified &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(async_test());
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        objStore.createIndex(&quot;i1&quot;, &quot;property&quot;, { unique: true });
+        objStore.put(record);
+
+        var rq = objStore.put(record);
+        rq.onsuccess = fail(this, &quot;success on putting duplicate indexed record&quot;)
+
+        rq.onerror = this.step_func(function(e) {
+            assert_equals(rq.error.name, &quot;ConstraintError&quot;);
+            assert_equals(e.target.error.name, &quot;ConstraintError&quot;);
+
+            assert_equals(e.type, &quot;error&quot;);
+
+            e.preventDefault();
+            e.stopPropagation();
+        });
+    };
+
+    // Defer done, giving a spurious rq.onsuccess a chance to run
+    open_rq.onsuccess = function(e) {
+        this.done();
+    }
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put5privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - object store's key path is an object attribute  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put5privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - object store's key path is an object attribute &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { test: { obj: { key: 1 } }, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;test.obj.key&quot; });
+        objStore.put(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var rq = db.transaction(&quot;store&quot;)
+                   .objectStore(&quot;store&quot;)
+                   .get(record.test.obj.key);
+
+        rq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.target.result.property, record.property);
+
+            t.done();
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put6privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - autoIncrement and inline keys  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put6privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - autoIncrement and inline keys &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; },
+      expected_keys = [ 1, 2, 3, 4 ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot;, autoIncrement: true });
+
+        objStore.put(record);
+        objStore.put(record);
+        objStore.put(record);
+        objStore.put(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.value.key);
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expected_keys);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put7privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - autoIncrement and out-of-line keys  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put7privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - autoIncrement and out-of-line keys &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; },
+      expected_keys = [ 1, 2, 3, 4 ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+
+        objStore.put(record);
+        objStore.put(record);
+        objStore.put(record);
+        objStore.put(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.key);
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expected_keys);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put8privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - object store has autoIncrement:true and the key path is an object attribute  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put8privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - object store has autoIncrement:true and the key path is an object attribute &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(),
+      record = { property: &quot;data&quot; },
+      expected_keys = [ 1, 2, 3, 4 ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;test.obj.key&quot;, autoIncrement: true });
+
+        objStore.put(record);
+        objStore.put(record);
+        objStore.put(record);
+        objStore.put(record);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.value.test.obj.key);
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expected_keys);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put9privateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.put() - Attempt to put a record that does not meet the constraints of an object store's inline key requirements  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbobjectstore_put9privatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;IDBObjectStore.put() - Attempt to put a record that does not meet the constraints of an object store's inline key requirements &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var t = async_test(),
+      record = { key: 1, property: &quot;data&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        var rq,
+          db = e.target.result,
+          objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        assert_throws(&quot;DataError&quot;,
+            function() { rq = objStore.put(record, 1); });
+
+        assert_equals(rq, undefined);
+        t.done();
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbtransactiononcompleteprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBTransaction - complete event 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbtransactiononcompleteprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBTransaction - complete event&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, store,
+      t = async_test(document.title, {timeout: 10000}),
+      open_rq = createdb(t),
+      stages = [];
+
+    open_rq.onupgradeneeded = function(e) {
+        stages.push(&quot;upgradeneeded&quot;);
+
+        db = e.target.result;
+        store = db.createObjectStore('store');
+
+        e.target.transaction.oncomplete = function() {
+            stages.push(&quot;complete&quot;);
+        };
+    };
+
+    open_rq.onsuccess = function(e) {
+        stages.push(&quot;success&quot;);
+
+        // Making a totally new transaction to check
+        db.transaction('store').objectStore('store').count().onsuccess = t.step_func(function(e) {
+            assert_array_equals(stages, [ &quot;upgradeneeded&quot;,
+                                          &quot;complete&quot;,
+                                          &quot;success&quot; ]);
+            t.done();
+        });
+        // XXX: Make one with real transactions, not only open() versionchange one
+
+        /*db.transaction.objectStore('store').openCursor().onsuccess = function(e) {
+            stages.push(&quot;opencursor1&quot;);
+        }
+
+        store.openCursor().onsuccess = function(e) {
+            stages.push(&quot;opencursor2&quot;);
+        }
+
+        e.target.transaction.objectStore('store').openCursor().onsuccess = function(e) {
+            stages.push(&quot;opencursor3&quot;);
+        }
+        */
+    }
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbtransactionprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS IDBTransaction - request gotten by the handler 
+PASS IDBTransaction - request returned by open() 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbtransactionprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBTransaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      t = async_test(document.title + &quot; - request gotten by the handler&quot;),
+      open_t = async_test(document.title + &quot; - request returned by open()&quot;),
+
+    open_rq = indexedDB.open(&quot;idbtransaction-&quot; + new Date().getTime() + Math.random());
+
+    open_t.step(function() {
+        assert_equals(open_rq.transaction, null, &quot;IDBOpenDBRequest.transaction&quot;);
+        assert_equals(open_rq.source, null, &quot;IDBOpenDBRequest.source&quot;);
+        assert_equals(open_rq.readyState, &quot;pending&quot;, &quot;IDBOpenDBRequest.readyState&quot;);
+
+        assert_true(open_rq instanceof IDBOpenDBRequest, &quot;open_rq instanceof IDBOpenDBRequest&quot;);
+        assert_equals(open_rq + &quot;&quot;, &quot;[object IDBOpenDBRequest]&quot;, &quot;IDBOpenDBRequest (open_rq)&quot;);
+
+        open_t.done();
+    });
+
+    open_rq.onupgradeneeded = t.step_func(function(e) {
+        assert_equals(e.target, open_rq, &quot;e.target is reusing the same IDBOpenDBRequest&quot;);
+        assert_equals(e.target.transaction, open_rq.transaction, &quot;IDBOpenDBRequest.transaction&quot;);
+
+        assert_true(e.target.transaction instanceof IDBTransaction, &quot;transaction instanceof IDBTransaction&quot;);
+        t.done();
+    });
+
+
+    // Not plausible conditions...
+    function fail_helper(name) {
+        return function() {
+            t.step(function() { assert_unreached(name); });
+            open_t.step(function() { assert_unreached(name); });
+        };
+    }
+    open_rq.onblocked = fail_helper('open_rq.onblocked');
+    open_rq.onerror = fail_helper('open_rq.onerror');
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbtransaction_abortprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBTransaction - abort 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbtransaction_abortprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBTransaction - abort&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, aborted,
+      t = async_test(document.title, {timeout: 10000}),
+      record = { indexedProperty: &quot;bar&quot; };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var txn = e.target.transaction,
+          objStore = db.createObjectStore(&quot;store&quot;);
+
+        objStore.add(record, 1);
+        objStore.add(record, 2);
+        var index = objStore.createIndex(&quot;index&quot;, &quot;indexedProperty&quot;, { unique: true });
+
+        assert_true(index instanceof IDBIndex, &quot;IDBIndex&quot;);
+
+        e.target.transaction.onabort = t.step_func(function(e) {
+            aborted = true;
+            assert_equals(e.type, &quot;abort&quot;, &quot;event type&quot;);
+        });
+
+        db.onabort = function(e) {
+            assert_true(aborted, &quot;transaction.abort event has fired&quot;);
+            t.done();
+        };
+
+        e.target.transaction.oncomplete = fail(t, &quot;got complete, expected abort&quot;);
+    };
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbversionchangeeventprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBVersionChangeEvent fired in upgradeneeded, versionchange and deleteDatabase 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbidbversionchangeeventprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IDBVersionChangeEvent fired in upgradeneeded, versionchange and deleteDatabase&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#versionchange--transaction-steps&quot;&gt;
+&lt;link rel=assert title=&quot;Fire a versionchange event at each object in openDatabases that is open. The event must not be fired on objects which has the closePending flag set. The event must use the IDBVersionChangeEvent interface and have the oldVersion property set to db's version and have the newVersion property set to version.&quot;&gt;
+&lt;link rel=assert title=&quot;Fire a upgradeneeded event targeted at request. The event must use the IDBVersionChangeEvent interface and have the oldVersion property set to old version and have the newVersion property set to version.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    var db,
+        t = async_test(document.title, {timeout: 10000});
+
+    t.step(function() {
+        var openrq = indexedDB.open('db', 3);
+
+        openrq.onupgradeneeded = t.step_func(function(e) {
+            assert_equals(e.oldVersion, 0, &quot;old version (upgradeneeded)&quot;);
+            assert_equals(e.newVersion, 3, &quot;new version (upgradeneeded)&quot;);
+            assert_true(e instanceof IDBVersionChangeEvent, &quot;upgradeneeded instanceof IDBVersionChangeEvent&quot;);
+        });
+
+        openrq.onsuccess = t.step_func(function(e) {
+            db = e.target.result;
+
+            db.onversionchange = t.step_func(function(e) {
+                assert_equals(e.oldVersion, 3, &quot;old version (versionchange)&quot;);
+                assert_equals(e.newVersion, null, &quot;new version (versionchange)&quot;);
+                assert_true(e instanceof IDBVersionChangeEvent, &quot;versionchange instanceof IDBVersionChangeEvent&quot;);
+                db.close();
+            });
+
+            // Errors
+            db.onerror = fail(t, &quot;db.error&quot;);
+            db.onabort = fail(t, &quot;db.abort&quot;);
+
+            setTimeout(t.step_func(deleteDB), 10);
+        });
+
+        // Errors
+        openrq.onerror = fail(t, &quot;open.error&quot;);
+        openrq.onblocked = fail(t, &quot;open.blocked&quot;);
+
+    });
+
+    function deleteDB (e) {
+        var deleterq = indexedDB.deleteDatabase('db');
+
+        deleterq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.oldVersion, 3, &quot;old version (delete.success)&quot;);
+            assert_equals(e.newVersion, null, &quot;new version (delete.success)&quot;);
+            assert_true(e instanceof IDBVersionChangeEvent, &quot;delete.success instanceof IDBVersionChangeEvent&quot;);
+
+            setTimeout(function() { t.done(); }, 10);
+        });
+
+        // Errors
+        deleterq.onerror = fail(t, &quot;delete.error&quot;);
+        deleterq.onblocked = fail(t, &quot;delete.blocked&quot;);
+    }
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbindex_sort_orderprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Verify key sort order in an index is 'number &lt; Date &lt; DOMString'  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbindex_sort_orderprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/index_sort_order-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Verify key sort order in an index is 'number &amp;lt; Date &amp;lt; DOMString' &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      d = new Date(),
+      t = async_test(),
+      records = [ { foo: d },
+                  { foo: &quot;test&quot; },
+                  { foo: 1 },
+                  { foo: 2.55 }  ],
+      expectedKeyOrder = [ 1, 2.55, d.valueOf(), &quot;test&quot; ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { autoIncrement: true });
+        objStore.createIndex(&quot;index&quot;, &quot;foo&quot;);
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .index(&quot;index&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.key.valueOf());
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expectedKeyOrder);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkey_invalidprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+
+PASS Invalid key - true 
+PASS Invalid key - false 
+PASS Invalid key - null 
+PASS Invalid key - NaN 
+PASS Invalid key - undefined 
+PASS Invalid key - undefined2 
+PASS Invalid key - function() {} 
+PASS Invalid key - {} 
+PASS Invalid key - { obj: 1 } 
+PASS Invalid key - Math 
+PASS Invalid key - window 
+PASS Invalid key - {length:0,constructor:Array} 
+PASS Invalid key - Array clone’s instance 
+PASS Invalid key - Array (object) 
+PASS Invalid key - String (object) 
+PASS Invalid key - new String() 
+PASS Invalid key - new Number() 
+PASS Invalid key - new Boolean() 
+PASS Invalid key - [{}] 
+PASS Invalid key - [[], [], [], [[ Date ]]] 
+PASS Invalid key - [undefined] 
+PASS Invalid key - [,1] 
+PASS Invalid key - document.getElementsByTagName(&quot;script&quot;) 
+PASS Invalid key - new Date(NaN) 
+PASS Invalid key - new Date(Infinity) 
+PASS Invalid key - /foo/ 
+PASS Invalid key - new RegExp() 
+PASS Invalid key - sparse array 
+PASS Invalid key - sparse array 2 
+PASS Invalid key - [[1], [3], [7], [[ sparse array ]]] 
+PASS Invalid key - [1,2,3,,] 
+PASS Invalid key - array directly contains self 
+PASS Invalid key - array indirectly contains self 
+PASS Invalid key - array member contains self 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkey_invalidprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/key_invalid-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,129 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;meta charset=utf-8&quot;&gt;
+&lt;title&gt;Invalid key&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct&quot;&gt;
+&lt;link rel=assert title=&quot;A value is said to be a valid key if it is one of the following types: Array JavaScript objects [ECMA-262], DOMString [WEBIDL], Date [ECMA-262] or float [WEBIDL]. However Arrays are only valid keys if every item in the array is defined and is a valid key (i.e. sparse arrays can not be valid keys) and if the Array doesn't directly or indirectly contain itself. Any non-numeric properties are ignored, and thus does not affect whether the Array is a valid key. Additionally, if the value is of type float, it is only a valid key if it is not NaN, and if the value is of type Date it is only a valid key if its [[PrimitiveValue]] internal property, as defined by [ECMA-262], is not NaN. Conforming user agents must support all valid keys as keys.&quot;&gt;
+&lt;!-- original author --&gt;
+&lt;link rel=author href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;!-- some additions by Baptiste Fontaine (batifon@yahoo.fr) --&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db        = createdb_for_multiple_tests(),
+        // cache for ObjectStores
+        objStore  = null,
+        objStore2 = null;
+
+    function is_cloneable(o) {
+        try {
+            self.postMessage(o, '*');
+            return true;
+        } catch (ex) {
+            return false;
+        }
+    }
+
+    function invalid_key(desc, key) {
+        var t = async_test(document.title + &quot; - &quot; + desc);
+
+        // set the current test, and run it
+        db.setTest(t).onupgradeneeded = function(e) {
+            objStore = objStore || e.target.result.createObjectStore(&quot;store&quot;);
+            assert_throws('DataError', function() {
+                objStore.add(&quot;value&quot;, key);
+            });
+
+            if (is_cloneable(key)) {
+                objStore2 = objStore2 || e.target.result.createObjectStore(&quot;store2&quot;, { keyPath: [&quot;x&quot;, &quot;keypath&quot;] });
+                assert_throws('DataError', function() {
+                    objStore2.add({ x: &quot;value&quot;, keypath: key });
+                });
+            }
+            this.done();
+        };
+    }
+
+    var fake_array = {
+        length      : 0,
+        constructor : Array
+    };
+
+    var ArrayClone = function(){};
+    ArrayClone.prototype = Array;
+    var ArrayClone_instance = new ArrayClone();
+
+    // booleans
+    invalid_key( 'true'  , true );
+    invalid_key( 'false' , false );
+
+    // null/NaN/undefined
+    invalid_key( 'null'      , null );
+    invalid_key( 'NaN'       , NaN );
+    invalid_key( 'undefined' , undefined );
+    invalid_key( 'undefined2');
+
+    // functions
+    invalid_key( 'function() {}', function(){} );
+
+    // objects
+    invalid_key( '{}'                           , {} );
+    invalid_key( '{ obj: 1 }'                   , { obj: 1 });
+    invalid_key( 'Math'                         , Math );
+    invalid_key( 'window'                       , window );
+    invalid_key( '{length:0,constructor:Array}' , fake_array );
+    invalid_key( 'Array clone’s instance'       , ArrayClone_instance );
+    invalid_key( 'Array (object)'               , Array );
+    invalid_key( 'String (object)'              , String );
+    invalid_key( 'new String()'                 , new String() );
+    invalid_key( 'new Number()'                 , new Number() );
+    invalid_key( 'new Boolean()'                , new Boolean() );
+
+    // arrays
+    invalid_key( '[{}]'                     , [{}] );
+    invalid_key( '[[], [], [], [[ Date ]]]' , [ [], [], [], [[ Date ]] ] );
+    invalid_key( '[undefined]'              , [undefined] );
+    invalid_key( '[,1]'                     , [,1] );
+
+    invalid_key( 'document.getElements'
+                +'ByTagName(&quot;script&quot;)'      , document.getElementsByTagName(&quot;script&quot;) );
+
+    //  dates
+    invalid_key( 'new Date(NaN)'      , new Date(NaN) );
+    invalid_key( 'new Date(Infinity)' , new Date(Infinity) );
+
+    // regexes
+    invalid_key( '/foo/'        , /foo/ );
+    invalid_key( 'new RegExp()' , new RegExp() );
+
+    var sparse = [];
+    sparse[10] = &quot;hei&quot;;
+    invalid_key('sparse array', sparse);
+
+    var sparse2 = [];
+    sparse2[0]  = 1;
+    sparse2[&quot;&quot;] = 2;
+    sparse2[2]  = 3;
+    invalid_key('sparse array 2', sparse2);
+
+    invalid_key('[[1], [3], [7], [[ sparse array ]]]', [ [1], [3], [7], [[ sparse2 ]] ]);
+
+    // sparse3
+    invalid_key( '[1,2,3,,]', [1,2,3,,] );
+
+    var recursive = [];
+    recursive.push(recursive);
+    invalid_key('array directly contains self', recursive);
+
+    var recursive2 = [];
+    recursive2.push([recursive2]);
+    invalid_key('array indirectly contains self', recursive2);
+
+    var recursive3 = [recursive];
+    invalid_key('array member contains self', recursive3);
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkey_validprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+
+PASS Valid key - new Date() 
+PASS Valid key - new Date(0) 
+PASS Valid key - [] 
+PASS Valid key - new Array() 
+PASS Valid key - [&quot;undefined&quot;] 
+PASS Valid key - Infinity 
+PASS Valid key - -Infinity 
+PASS Valid key - 0 
+PASS Valid key - 1.5 
+PASS Valid key - 3e38 
+PASS Valid key - 3e-38 
+PASS Valid key - &quot;foo&quot; 
+PASS Valid key - &quot;\n&quot; 
+PASS Valid key - &quot;&quot; 
+PASS Valid key - &quot;\&quot;&quot; 
+PASS Valid key - &quot;\u1234&quot; 
+PASS Valid key - &quot;\u0000&quot; 
+PASS Valid key - &quot;NaN&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkey_validprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/key_valid-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;meta charset=utf-8&quot;&gt;
+&lt;meta name=&quot;timeout&quot; content=&quot;long&quot;&gt;
+&lt;title&gt;Valid key&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct&quot;&gt;
+&lt;link rel=assert title=&quot;A value is said to be a valid key if it is one of the following types: Array JavaScript objects [ECMA-262], DOMString [WEBIDL], Date [ECMA-262] or float [WEBIDL]. However Arrays are only valid keys if every item in the array is defined and is a valid key (i.e. sparse arrays can not be valid keys) and if the Array doesn't directly or indirectly contain itself. Any non-numeric properties are ignored, and thus does not affect whether the Array is a valid key. Additionally, if the value is of type float, it is only a valid key if it is not NaN, and if the value is of type Date it is only a valid key if its [[PrimitiveValue]] internal property, as defined by [ECMA-262], is not NaN. Conforming user agents must support all valid keys as keys.&quot;&gt;
+&lt;link rel=author href=&quot;mailto:batifon@yahoo.fr&quot; title=&quot;Baptiste Fontaine&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    function valid_key(desc, key) {
+        var db;
+        var t = async_test(document.title + &quot; - &quot; + desc);
+        var open_rq = createdb(t);
+
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+
+            store = db.createObjectStore(&quot;store&quot;);
+            assert_true(store.add('value', key) instanceof IDBRequest);
+
+            store2 = db.createObjectStore(&quot;store2&quot;, { keyPath: [&quot;x&quot;, &quot;keypath&quot;] });
+            assert_true(store2.add({ x: 'v', keypath: key }) instanceof IDBRequest);
+        };
+        open_rq.onsuccess = function(e) {
+            var rq = db.transaction(&quot;store&quot;)
+                       .objectStore(&quot;store&quot;)
+                       .get(key)
+            rq.onsuccess = t.step_func(function(e) {
+                assert_equals(e.target.result, 'value')
+                var rq = db.transaction(&quot;store2&quot;)
+                           .objectStore(&quot;store2&quot;)
+                           .get(['v', key])
+                rq.onsuccess = t.step_func(function(e) {
+                    assert_equals(e.target.result.x, 'v');
+                    assert_key_equals(e.target.result.keypath, key);
+                    t.done()
+                })
+            })
+        }
+    }
+
+    // Date
+    valid_key( 'new Date()'    , new Date() );
+    valid_key( 'new Date(0)'   , new Date(0) );
+
+    // Array
+    valid_key( '[]'            , [] );
+    valid_key( 'new Array()'   , new Array() );
+
+    valid_key( '[&quot;undefined&quot;]' , ['undefined'] );
+
+    // Float
+    valid_key( 'Infinity'      , Infinity );
+    valid_key( '-Infinity'     , -Infinity );
+    valid_key( '0'             , 0 );
+    valid_key( '1.5'           , 1.5 );
+    valid_key( '3e38'          , 3e38 );
+    valid_key( '3e-38'         , 3e38 );
+
+    // String
+    valid_key( '&quot;foo&quot;'         , &quot;foo&quot; );
+    valid_key( '&quot;\\n&quot;'         , &quot;\n&quot; );
+    valid_key( '&quot;&quot;'            , &quot;&quot; );
+    valid_key( '&quot;\\&quot;&quot;'         , &quot;\&quot;&quot; );
+    valid_key( '&quot;\\u1234&quot;'     , &quot;\u1234&quot; );
+    valid_key( '&quot;\\u0000&quot;'     , &quot;\u0000&quot; );
+    valid_key( '&quot;NaN&quot;'         , &quot;NaN&quot; );
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeygeneratorconstrainterrorprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Keygenerator ConstraintError when using same id as already generated 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeygeneratorconstrainterrorprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Keygenerator ConstraintError when using same id as already generated&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000}),
+      objects = [1, null, {id: 2}, null, 2.00001, 5, null, {id: 6} ],
+      expected = [1, 2, 2.00001, 3, 5, 6],
+      errors = 0;
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;id&quot;, autoIncrement: true });
+
+        for (var i = 0; i &lt; objects.length; i++)
+        {
+            if (objects[i] === null)
+            {
+                objStore.add({});
+            }
+            else if (typeof objects[i] === &quot;object&quot;)
+            {
+                var rq = objStore.add(objects[i])
+                rq.yeh = objects[i];
+                rq.onerror = t.step_func(function(e) {
+                    errors++;
+
+                    assert_equals(e.target.error.name, &quot;ConstraintError&quot;);
+                    assert_equals(e.type, &quot;error&quot;);
+
+                    e.stopPropagation();
+                    e.preventDefault();
+                });
+                rq.onsuccess = t.step_func(function(e) {
+                    assert_unreached(&quot;Got rq.success when adding duplicate id &quot; + objects[i]);
+                });
+            }
+            else
+                objStore.add({ id: objects[i] });
+        }
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.key.valueOf());
+                cursor.continue();
+            }
+            else {
+                assert_equals(errors, 2, &quot;expected ConstraintError's&quot;);
+                assert_array_equals(actual_keys, expected, &quot;keygenerator array&quot;);
+                t.done();
+            }
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeygeneratoroverflowprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Keygenerator overflow 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeygeneratoroverflowprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Keygenerator overflow&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-generator-concept&quot;&gt;
+&lt;link rel=assert title=&quot;When the current number of a key generator reaches above the value 2^53 (9007199254740992) any attempts to use the key generator to generate a new key will result in an error. It's still possible to insert records into the object store by specifying an explicit key, however the only way to use a key generator again for the object store is to delete the object store and create a new one.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var db,
+      t = async_test(document.title, {timeout: 10000}),
+      overflow_error_fired = false,
+      objects =  [9007199254740991, null, &quot;error&quot;, 2, &quot;error&quot; ],
+      expected_keys = [2, 9007199254740991, 9007199254740992];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;id&quot;, autoIncrement: true });
+
+        for (var i = 0; i &lt; objects.length; i++)
+        {
+            if (objects[i] === null)
+            {
+                objStore.add({});
+            }
+            else if (objects[i] === &quot;error&quot;)
+            {
+                var rq = objStore.add({});
+                rq.onsuccess = fail(t, 'When &quot;current number&quot; overflows, error event is expected');
+                rq.onerror = t.step_func(function(e) {
+                    overflow_error_fired = true;
+                    assert_equals(e.target.error.name, &quot;ConstraintError&quot;, &quot;error name&quot;);
+                    e.preventDefault();
+                    e.stopPropagation();
+                });
+            }
+            else
+                objStore.add({ id: objects[i] });
+        }
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.key.valueOf());
+                cursor.continue();
+            }
+            else {
+                assert_true(overflow_error_fired, &quot;error fired on 'current number' overflow&quot;);
+                assert_array_equals(actual_keys, expected_keys, &quot;keygenerator array&quot;);
+
+                t.done();
+            }
+        });
+    };
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeygeneratorprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Keygenerator - starts at one, and increments by one 
+PASS Keygenerator - increments by one from last set key 
+PASS Keygenerator - don't increment when new key is not bigger than current 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeygeneratorprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keygenerator-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Keygenerator&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-generator-concept&quot;&gt;
+&lt;link rel=assert title=&quot;The current number of a key generator is always set to 1 when the object store for that key generator is first created.&quot;&gt;
+&lt;link rel=assert title=&quot;When a key generator is used to generate a new key for a object store, the key generator's current number is used as the new key value and then the key generator's current number is increased by 1.&quot;&gt;
+&lt;link rel=assert title=&quot;When a record is stored in a object store which uses a key generator, and an explicit key is defined, if the key's value is a float greater than or equal to the key generator's current number, then the key generator's current number is set to the smallest integer number larger than the explicit key. Only explicit keys which are float values affect the current number of the key generator.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    function keygenerator(objects, expected_keys, desc, func) {
+        var db,
+          t = async_test(document.title + &quot; - &quot; + desc);
+
+        var open_rq = createdb(t);
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;id&quot;, autoIncrement: true });
+
+            for (var i = 0; i &lt; objects.length; i++)
+            {
+                if (objects[i] === null)
+                    objStore.add({});
+                else
+                    objStore.add({ id: objects[i] });
+            }
+        };
+
+        open_rq.onsuccess = function(e) {
+            var actual_keys = [],
+              rq = db.transaction(&quot;store&quot;)
+                     .objectStore(&quot;store&quot;)
+                     .openCursor();
+
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+
+                if (cursor) {
+                    actual_keys.push(cursor.key.valueOf());
+                    cursor.continue();
+                }
+                else {
+                    assert_key_equals(actual_keys, expected_keys, &quot;keygenerator array&quot;);
+                    t.done();
+                }
+            });
+        };
+    }
+
+
+    keygenerator([null, null, null, null],  [1, 2, 3, 4],
+        &quot;starts at one, and increments by one&quot;);
+
+    keygenerator([2, null, 5, null, 6.66, 7],  [2, 3, 5, 6, 6.66, 7],
+        &quot;increments by one from last set key&quot;);
+
+    keygenerator([-10, null, &quot;6&quot;, 6.3, [10], -2, 4, null],   [-10, -2, 1, 4, 6.3, 7, &quot;6&quot;, [10]],
+        &quot;don't increment when new key is not bigger than current&quot;);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeyorderprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+
+PASS Database readback sort - String &lt; Array 
+PASS IDBKey.cmp sorted - String &lt; Array 
+PASS Database readback sort - float &lt; String 
+PASS IDBKey.cmp sorted - float &lt; String 
+PASS Database readback sort - float &lt; Date 
+PASS IDBKey.cmp sorted - float &lt; Date 
+PASS Database readback sort - float &lt; Date &lt; String &lt; Array 
+PASS IDBKey.cmp sorted - float &lt; Date &lt; String &lt; Array 
+PASS Database readback sort - Date(1 sec ago) &lt; Date(now) &lt; Date(1 minute in future) 
+PASS IDBKey.cmp sorted - Date(1 sec ago) &lt; Date(now) &lt; Date(1 minute in future) 
+PASS Database readback sort - -1.1 &lt; 1 &lt; 1.01337 &lt; 1.013373 &lt; 2 
+PASS IDBKey.cmp sorted - -1.1 &lt; 1 &lt; 1.01337 &lt; 1.013373 &lt; 2 
+PASS Database readback sort - -Infinity &lt; -0.01 &lt; 0 &lt; Infinity 
+PASS IDBKey.cmp sorted - -Infinity &lt; -0.01 &lt; 0 &lt; Infinity 
+PASS Database readback sort - &quot;&quot; &lt; &quot;a&quot; &lt; &quot;ab&quot; &lt; &quot;b&quot; &lt; &quot;ba&quot; 
+PASS IDBKey.cmp sorted - &quot;&quot; &lt; &quot;a&quot; &lt; &quot;ab&quot; &lt; &quot;b&quot; &lt; &quot;ba&quot; 
+PASS Database readback sort - Arrays 
+PASS IDBKey.cmp sorted - Arrays 
+PASS Database readback sort - Array.length: 10,000 &lt; Array.length: 10,001 
+PASS IDBKey.cmp sorted - Array.length: 10,000 &lt; Array.length: 10,001 
+PASS Database readback sort - Infinity inside arrays 
+PASS IDBKey.cmp sorted - Infinity inside arrays 
+PASS Database readback sort - Test different stuff at once 
+PASS IDBKey.cmp sorted - Test different stuff at once 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeyorderprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keyorder-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,175 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Key sort order&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct&quot;&gt;
+&lt;link rel=assert title=&quot;For purposes of comparison, all Arrays are greater than all DOMString, Date and float values; all DOMString values are greater than all Date and float values; and all Date values are greater than all float values. Values of type float are compared to other float values numerically. Values of type Date are compared to other Date values chronologically. Values of type DOMString are compared to other values of type DOMString by using the algorithm defined by step 4 of section 11.8.5, The Abstract Relational Comparison Algorithm, of the ECMAScript Language Specification [ECMA-262]. Values of type Array are compared to other values of type Array as follows:
+
+1. Let A be the first Array value and B be the second Array value.
+2. Let length be the lesser of A's length and B's length.
+3. Let i be 0.
+4. If the ith value of A is less than the ith value of B, then A is less than B. Skip the remaining steps.
+5. If the ith value of A is greater than the ith value of B, then A is greater than B. Skip the remaining steps.
+6. Increase i by 1.
+7. If i is not equal to length, go back to step 4. Otherwise continue to next step.
+8. If A's length is less than B's length, then A is less than B. If A's length is greater than B's length, then A is greater than B. Otherwise A and B are equal.&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var global_db = createdb_for_multiple_tests();
+
+    function keysort(desc, unsorted, expected) {
+        var db,
+            t = async_test(&quot;Database readback sort - &quot; + desc, { timeout: 10000 }),
+            store_name = 'store-' + Date.now() + Math.random();
+
+        // The database test
+        var open_rq = global_db.setTest(t);
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(store_name);
+
+            for (var i = 0; i &lt; unsorted.length; i++)
+                objStore.add(&quot;value&quot;, unsorted[i]);
+        };
+
+        open_rq.onsuccess = function(e) {
+            var actual_keys = [],
+              rq = db.transaction(store_name)
+                     .objectStore(store_name)
+                     .openCursor();
+
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+
+                if (cursor) {
+                    actual_keys.push(cursor.key);
+                    cursor.continue();
+                }
+                else {
+                    assert_key_equals(actual_keys, expected, &quot;keyorder array&quot;);
+                    assert_equals(actual_keys.length, expected.length, &quot;array length&quot;);
+
+                    t.done();
+                }
+            });
+        };
+
+        // The IDBKey.cmp test
+        test(function () {
+            var sorted = unsorted.slice(0).sort(function(a, b) { return indexedDB.cmp(a, b)});
+            assert_key_equals(sorted, expected, &quot;sorted array&quot;);
+
+        }, &quot;IDBKey.cmp sorted - &quot; + desc);
+    }
+
+    var now = new Date(),
+        one_sec_ago = new Date(now - 1000),
+        one_min_future = new Date(now.getTime() + (1000*60));
+
+    keysort('String &lt; Array',
+        [ [0], &quot;yo&quot;, &quot;&quot;, [] ],
+        [ &quot;&quot;, &quot;yo&quot;, [], [0] ]);
+
+    keysort('float &lt; String',
+        [ Infinity, &quot;yo&quot;, 0, &quot;&quot;, 100 ],
+        [ 0, 100, Infinity, &quot;&quot;, &quot;yo&quot; ]);
+
+    keysort('float &lt; Date',
+        [ now, 0, 9999999999999, -0.22 ],
+        [ -0.22, 0, 9999999999999, now ]);
+
+    keysort('float &lt; Date &lt; String &lt; Array',
+        [ [], &quot;&quot;, now, [0], &quot;-1&quot;, 0, 9999999999999, ],
+        [ 0, 9999999999999, now, &quot;&quot;, &quot;-1&quot;, [], [0] ]);
+
+
+    keysort('Date(1 sec ago) &lt; Date(now) &lt; Date(1 minute in future)',
+        [ now, one_sec_ago, one_min_future ],
+        [ one_sec_ago, now, one_min_future ]);
+
+    keysort('-1.1 &lt; 1 &lt; 1.01337 &lt; 1.013373 &lt; 2',
+        [ 1.013373, 2, 1.01337, -1.1, 1 ],
+        [ -1.1, 1, 1.01337, 1.013373, 2 ]);
+
+    keysort('-Infinity &lt; -0.01 &lt; 0 &lt; Infinity',
+        [ 0, -0.01, -Infinity, Infinity ],
+        [ -Infinity, -0.01, 0, Infinity ]);
+
+    keysort('&quot;&quot; &lt; &quot;a&quot; &lt; &quot;ab&quot; &lt; &quot;b&quot; &lt; &quot;ba&quot;',
+        [ &quot;a&quot;, &quot;ba&quot;, &quot;&quot;, &quot;b&quot;, &quot;ab&quot; ],
+        [ &quot;&quot;, &quot;a&quot;, &quot;ab&quot;, &quot;b&quot;, &quot;ba&quot; ]);
+
+    keysort('Arrays',
+        [ [[0]], [0], [], [0, 0], [0, [0]] ],
+        [ [], [0], [0, 0], [0, [0]], [[0]] ]);
+
+    var big_array = [], bigger_array = [];
+    for (var i=0; i &lt; 10000; i++) {
+        big_array.push(i);
+        bigger_array.push(i);
+    }
+    bigger_array.push(0);
+
+    keysort('Array.length: 10,000 &lt; Array.length: 10,001',
+        [ bigger_array, [0, 2, 3], [0], [9], big_array ],
+        [ [0], big_array, bigger_array, [0, 2, 3], [9] ]);
+
+    keysort('Infinity inside arrays',
+        [ [Infinity, 1], [Infinity, Infinity], [1, 1],
+            [1, Infinity], [1, -Infinity], [-Infinity, Infinity] ],
+        [ [-Infinity, Infinity], [1, -Infinity], [1, 1],
+            [1, Infinity], [Infinity, 1], [Infinity, Infinity] ]);
+
+
+    keysort('Test different stuff at once',
+        [
+          now,
+          [0, []],
+          &quot;test&quot;,
+          1,
+          [&quot;a&quot;, [1, [-1]]],
+          [&quot;b&quot;, &quot;a&quot;],
+          [ 0, 2, &quot;c&quot;],
+          [&quot;a&quot;, [1, 2]],
+          [],
+          [0, [], 3],
+          [&quot;a&quot;, &quot;b&quot;],
+          [ 1, 2 ],
+          [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;],
+          one_sec_ago,
+          [ 0, &quot;b&quot;, &quot;c&quot;],
+          Infinity,
+          -Infinity,
+          2.55,
+          [ 0, now ],
+          [1]
+        ],
+        [
+          -Infinity,
+          1,
+          2.55,
+          Infinity,
+          one_sec_ago,
+          now,
+          &quot;test&quot;,
+          [],
+          [0 ,2, &quot;c&quot;],
+          [0, now],
+          [0, &quot;b&quot;, &quot;c&quot;],
+          [0, []],
+          [0, [], 3],
+          [1],
+          [1, 2],
+          [&quot;a&quot;, &quot;b&quot;],
+          [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;],
+          [&quot;a&quot;, [1, 2]],
+          [&quot;a&quot;, [1, [-1]]],
+          [&quot;b&quot;, &quot;a&quot;]
+        ]);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeypathprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keypath-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keypath-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keypath-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+
+PASS Keypath - my.key 
+PASS Keypath - my.køi 
+PASS Keypath - my.key_ya 
+PASS Keypath - public.key$ya 
+PASS Keypath - true.$ 
+PASS Keypath - my._ 
+PASS Keypath - delete.a7 
+PASS Keypath - p.p.p.p.p.p.p.p.p.p.p.p.p.p 
+PASS Keypath - str.length 
+PASS Keypath - arr.length 
+PASS Keypath - length 
+PASS Keypath - '' uses value as key 
+PASS Keypath - [''] uses value as [key] 
+PASS Keypath - ['x', 'y'] 
+PASS Keypath - [['x'], 'y'] (stringifies) 
+PASS Keypath - ['x', {toString-&gt;'y'}] (stringifies) 
+PASS Keypath - name,type 
+PASS Keypath - name,type.name 
+PASS Keypath - array loop -&gt; stringify becomes [''] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeypathprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keypath-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keypath-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keypath-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,146 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Keypath&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-path-construct&quot;&gt;
+&lt;link rel=assert title=&quot;A key path is a DOMString that defines how to extract a key from a value. A valid key path is either the empty string, a JavaScript identifier, or multiple Javascript identifiers separated by periods (ASCII character code 46) [ECMA-262].&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var global_db = createdb_for_multiple_tests();
+
+    function keypath(keypath, objects, expected_keys, desc) {
+        var db,
+            t = async_test(document.title + &quot; - &quot; + (desc ? desc : keypath)),
+
+            store_name = &quot;store-&quot;+(Date.now())+Math.random();
+
+        var open_rq = global_db.setTest(t);
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(store_name, { keyPath: keypath });
+
+            for (var i = 0; i &lt; objects.length; i++)
+                objStore.add(objects[i]);
+        };
+
+        open_rq.onsuccess = function(e) {
+            var actual_keys = [],
+              rq = db.transaction(store_name)
+                     .objectStore(store_name)
+                     .openCursor();
+
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+
+                if (cursor) {
+                    actual_keys.push(cursor.key.valueOf());
+                    cursor.continue();
+                }
+                else {
+                    assert_key_equals(actual_keys, expected_keys, &quot;keyorder array&quot;);
+                    t.done();
+                }
+            });
+        };
+    }
+
+    keypath('my.key',
+        [ { my: { key: 10 } } ],
+        [ 10 ]);
+
+    keypath('my.køi',
+        [ { my: { køi: 5 } } ],
+        [ 5 ]);
+
+    keypath('my.key_ya',
+        [ { my: { key_ya: 10 } } ],
+        [ 10 ]);
+
+    keypath('public.key$ya',
+        [ { public: { key$ya: 10 } } ],
+        [ 10 ]);
+
+    keypath('true.$',
+        [ { true: { $: 10 } } ],
+        [ 10 ]);
+
+    keypath('my._',
+        [ { my: { _: 10 } } ],
+        [ 10 ]);
+
+    keypath('delete.a7',
+        [ { delete: { a7: 10 } } ],
+        [ 10 ]);
+
+    keypath('p.p.p.p.p.p.p.p.p.p.p.p.p.p',
+        [ {p:{p:{p:{p:{p:{p:{p:{p:{p:{p:{p:{p:{p:{p:10}}}}}}}}}}}}}} ],
+        [ 10 ]);
+
+    keypath('str.length',
+        [ { str: &quot;pony&quot; }, { str: &quot;my&quot; }, { str: &quot;little&quot; }, { str: &quot;&quot; } ],
+        [ 0, 2, 4, 6 ]);
+
+    keypath('arr.length',
+        [ {arr: [0, 0, 0, 0]}, {arr: [{}, 0, &quot;hei&quot;, &quot;length&quot;, Infinity, []]}, {arr: [10, 10]}, { arr: []} ],
+        [ 0, 2, 4, 6 ]);
+
+    keypath('length',
+        [ [10, 10], &quot;123&quot;, { length: 20 } ],
+        [ 2, 3, 20 ]);
+
+    keypath('',
+        [ [&quot;bags&quot;], &quot;bean&quot;, 10 ],
+        [ 10, &quot;bean&quot;, [&quot;bags&quot;] ],
+        &quot;'' uses value as key&quot;);
+
+    keypath([''],
+        [ [&quot;bags&quot;], &quot;bean&quot;, 10 ],
+        [ [10], [&quot;bean&quot;] , [[&quot;bags&quot;]] ],
+        &quot;[''] uses value as [key]&quot;);
+
+    keypath(['x', 'y'],
+        [ {x:10, y:20}, {y:1.337, x:100} ],
+        [ [10, 20], [100, 1.337] ],
+        &quot;['x', 'y']&quot;);
+
+    keypath([['x'], ['y']],
+        [ {x:10, y:20}, {y:1.337, x:100} ],
+        [ [10, 20], [100, 1.337] ],
+        &quot;[['x'], 'y'] (stringifies)&quot;);
+
+    keypath(['x', {toString:function(){return 'y'}}],
+        [ {x:10, y:20}, {y:1.337, x:100} ],
+        [ [10, 20], [100, 1.337] ],
+        &quot;['x', {toString-&gt;'y'}] (stringifies)&quot;);
+
+    if (false) {
+        var myblob = Blob([&quot;Yoda&quot;], {type:'suprawsum'});
+        keypath(['length', 'type'],
+            [ myblob ],
+            [ 4, 'suprawsum' ],
+            &quot;[Blob.length, Blob.type]&quot;);
+    }
+
+    // File.name and File.lastModifiedDate is not testable automatically
+
+    keypath(['name', 'type'],
+        [ { name: &quot;orange&quot;, type: &quot;fruit&quot; }, { name: &quot;orange&quot;, type: [&quot;telecom&quot;, &quot;french&quot;] } ],
+        [ [&quot;orange&quot;, &quot;fruit&quot;], [&quot;orange&quot;, [&quot;telecom&quot;, &quot;french&quot;]] ]);
+
+    keypath(['name', 'type.name'],
+        [ { name: &quot;orange&quot;, type: { name: &quot;fruit&quot; }}, { name: &quot;orange&quot;, type: { name: &quot;telecom&quot; }} ],
+        [ [&quot;orange&quot;, &quot;fruit&quot;], [&quot;orange&quot;, &quot;telecom&quot; ] ]);
+
+    loop_array = [];
+    loop_array.push(loop_array);
+    keypath(loop_array,
+        [ &quot;a&quot;, 1, [&quot;k&quot;] ],
+        [ [1], [&quot;a&quot;], [[&quot;k&quot;]] ],
+        &quot;array loop -&gt; stringify becomes ['']&quot;);
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeypath_invalidprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+
+PASS Invalid keyPath - &quot;j a&quot; 
+PASS Invalid keyPath - &quot;.yo&quot; 
+PASS Invalid keyPath - &quot;yo,lo&quot; 
+PASS Invalid keyPath - [] 
+PASS Invalid keyPath - [&quot;array with space&quot;] 
+PASS Invalid keyPath - multidimensional array (invalid toString) 
+PASS Invalid keyPath - &quot;3m&quot; 
+PASS Invalid keyPath - {toString-&gt;3m} 
+PASS Invalid keyPath - &quot;my.1337&quot; 
+PASS Invalid keyPath - &quot;..yo&quot; 
+PASS Invalid keyPath - &quot;y..o&quot; 
+PASS Invalid keyPath - &quot;y.o.&quot; 
+PASS Invalid keyPath - &quot;y.o..&quot; 
+PASS Invalid keyPath - &quot;m.*&quot; 
+PASS Invalid keyPath - &quot;\&quot;m\&quot;&quot; 
+PASS Invalid keyPath - &quot;m%&quot; 
+PASS Invalid keyPath - &quot;m/&quot; 
+PASS Invalid keyPath - &quot;m/a&quot; 
+PASS Invalid keyPath - &quot;m&amp;&quot; 
+PASS Invalid keyPath - &quot;m!&quot; 
+PASS Invalid keyPath - &quot;*&quot; 
+PASS Invalid keyPath - &quot;*.*&quot; 
+PASS Invalid keyPath - &quot;^m&quot; 
+PASS Invalid keyPath - &quot;/m/&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeypath_invalidprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keypath_invalid-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Invalid keypath&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-path-construct&quot;&gt;
+&lt;link rel=assert title=&quot;A key path is a DOMString that defines how to extract a key from a value. A valid key path is either the empty string, a JavaScript identifier, or multiple Javascript identifiers separated by periods (ASCII character code 46) [ECMA-262].&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var global_db = createdb_for_multiple_tests();
+
+    function invalid_keypath(keypath, desc) {
+        var t = async_test(&quot;Invalid keyPath - &quot; + (desc ? desc : format_value(keypath)), undefined, 2);
+
+        var openrq = global_db.setTest(t),
+            store_name  = &quot;store-&quot; + Date.now() + Math.random();
+
+        openrq.onupgradeneeded = function(e) {
+            var db = e.target.result;
+            assert_throws('SyntaxError', function() {
+                    db.createObjectStore(store_name, { keyPath: keypath })
+                }, &quot;createObjectStore with keyPath&quot;);
+
+            store = db.createObjectStore(store_name);
+            assert_throws('SyntaxError', function() {
+                    store.createIndex('index', keypath);
+                }, &quot;createIndex with keyPath&quot;);
+
+            db.close();
+
+            this.done();
+        };
+    }
+
+    invalid_keypath('j a');
+    invalid_keypath('.yo');
+    invalid_keypath('yo,lo');
+    invalid_keypath([]);
+    invalid_keypath(['array with space']);
+    invalid_keypath(['multi_array', ['a', 'b']], &quot;multidimensional array (invalid toString)&quot;); // =&gt; ['multi_array', 'a,b']
+    invalid_keypath('3m');
+    invalid_keypath({toString:function(){return '3m'}}, '{toString-&gt;3m}');
+    invalid_keypath('my.1337');
+    invalid_keypath('..yo');
+    invalid_keypath('y..o');
+    invalid_keypath('y.o.');
+    invalid_keypath('y.o..');
+    invalid_keypath('m.*');
+    invalid_keypath('&quot;m&quot;');
+    invalid_keypath('m%');
+    invalid_keypath('m/');
+    invalid_keypath('m/a');
+    invalid_keypath('m&amp;');
+    invalid_keypath('m!');
+    invalid_keypath('*');
+    invalid_keypath('*.*');
+    invalid_keypath('^m');
+    invalid_keypath('/m/');
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeypath_maxsizeprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Keypath - ~260 chars 
+PASS Keypath - ~530 chars 
+PASS Keypath - ~1050 chars 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbkeypath_maxsizeprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Keypath&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-path-construct&quot;&gt;
+&lt;link rel=assert title=&quot;A key path is a DOMString that defines how to extract a key from a value. A valid key path is either the empty string, a JavaScript identifier, or multiple Javascript identifiers separated by periods (ASCII character code 46) [ECMA-262].&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    function keypath(keypath, objects, expected_keys, desc) {
+        var db,
+            t = async_test(document.title + &quot; - &quot; + (desc ? desc : keypath), { timeout: 10000 }),
+            open_rq = createdb(t);
+
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: keypath });
+
+            for (var i = 0; i &lt; objects.length; i++)
+                objStore.add(objects[i]);
+        };
+
+        open_rq.onerror = function(e) {
+            assert_unreached(e.target.error.name);
+        };
+
+        open_rq.onsuccess = function(e) {
+            var actual_keys = [],
+                rq = db.transaction(&quot;store&quot;)
+                       .objectStore(&quot;store&quot;)
+                       .openCursor();
+
+            rq.onsuccess = t.step_func(function(e) {
+                var cursor = e.target.result;
+
+                if (cursor) {
+                    actual_keys.push(cursor.key.valueOf());
+                    cursor.continue();
+                } else {
+                    assert_array_equals(actual_keys, expected_keys, &quot;keyorder array&quot;);
+                    t.done();
+                }
+            });
+        };
+    }
+
+    keypath('maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai.keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey',
+        [ { maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai: { keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey: 10 } } ],
+        [ 10 ], '~260 chars');
+
+    keypath('maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai.keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey',
+        [ { maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai: { keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey: 10 } } ],
+        [ 10 ], '~530 chars');
+
+    keypath('maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai.keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeeeee
 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey',
+        [ { maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai_maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai: { keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey_keeeeeeeeeeeeeeeeeeeeeeeee
 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeey: 10 } } ],
+        [ 10 ], '~1050 chars');
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/log&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddblist_orderingprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS objectStoreNames and indexNames order - numbers 
+PASS objectStoreNames and indexNames order - numbers 'overflow' 
+PASS objectStoreNames and indexNames order - lexigraphical string sort 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddblist_orderingprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/list_ordering-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;objectStoreNames and indexNames order&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-objectStoreNames&quot;&gt;
+&lt;link rel=assert title=&quot;The list must be sorted in ascending order using the algorithm defined by step 4 of section 11.8.5, The Abstract Relational Comparison Algorithm of the ECMAScript Language Specification [ECMA-262].&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    function list_order(desc, unsorted, expected) {
+        var objStore, db,
+          t = async_test(document.title + &quot; - &quot; + desc);
+
+        var open_rq = createdb(t);
+        open_rq.onupgradeneeded = function(e) {
+            db = e.target.result;
+            for (var i = 0; i &lt; unsorted.length; i++)
+                objStore = db.createObjectStore(unsorted[i]);
+
+            assert_equals(db.objectStoreNames.length, expected.length, &quot;objectStoreNames length&quot;);
+            for (var i = 0; i &lt; expected.length; i++)
+               assert_equals(db.objectStoreNames[i], expected[i], &quot;objectStoreNames[&quot;+i+&quot;]&quot;);
+
+            for (var i = 0; i &lt; unsorted.length; i++)
+                objStore.createIndex(unsorted[i], &quot;length&quot;);
+
+            assert_equals(objStore.indexNames.length, expected.length, &quot;indexNames length&quot;);
+            for (var i = 0; i &lt; expected.length; i++)
+                assert_equals(objStore.indexNames[i], expected[i], &quot;indexNames[&quot;+i+&quot;]&quot;);
+        };
+
+        open_rq.onsuccess = function(e) {
+            assert_equals(db.objectStoreNames.length, expected.length, &quot;objectStoreNames length&quot;);
+            for (var i = 0; i &lt; expected.length; i++)
+                assert_equals(db.objectStoreNames[i], expected[i], &quot;objectStoreNames[&quot;+i+&quot;]&quot;);
+
+            assert_equals(objStore.indexNames.length, expected.length, &quot;indexNames length&quot;);
+            for (var i = 0; i &lt; expected.length; i++)
+                assert_equals(objStore.indexNames[i], expected[i], &quot;indexNames[&quot;+i+&quot;]&quot;);
+
+            t.done();
+        };
+    }
+
+    list_order(&quot;numbers&quot;,
+        [123456, -12345, -123, 123, 1234, -1234, 0, 12345, -123456],
+        [&quot;-123&quot;, &quot;-1234&quot;, &quot;-12345&quot;, &quot;-123456&quot;, &quot;0&quot;, &quot;123&quot;, &quot;1234&quot;, &quot;12345&quot;, &quot;123456&quot;]);
+
+    list_order(&quot;numbers 'overflow'&quot;,
+        [9, 1, 1000000000, 200000000000000000],
+        [&quot;1&quot;, &quot;1000000000&quot;, &quot;200000000000000000&quot;, &quot;9&quot;]);
+
+    list_order(&quot;lexigraphical string sort&quot;,
+        [ &quot;cc&quot;, &quot;c&quot;, &quot;aa&quot;, &quot;a&quot;, &quot;bb&quot;, &quot;b&quot;, &quot;ab&quot;, &quot;&quot;, &quot;ac&quot; ],
+        [ &quot;&quot;, &quot;a&quot;, &quot;aa&quot;, &quot;ab&quot;, &quot;ac&quot;, &quot;b&quot;, &quot;bb&quot;, &quot;c&quot;, &quot;cc&quot; ]);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbobjectstore_keyorderprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Verify key sort order in an object store is 'number &lt; Date &lt; DOMString'  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbobjectstore_keyorderprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Verify key sort order in an object store is 'number &amp;lt; Date &amp;lt; DOMString' &lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db,
+      d = new Date(),
+      t = async_test(),
+      records = [ { key: d },
+                  { key: &quot;test&quot; },
+                  { key: 1 },
+                  { key: 2.55 }  ],
+      expectedKeyOrder = [ 1, 2.55, d.valueOf(), &quot;test&quot; ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        var objStore = db.createObjectStore(&quot;store&quot;, { keyPath: &quot;key&quot; });
+
+        for (var i = 0; i &lt; records.length; i++)
+            objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function(e) {
+        var actual_keys = [],
+          rq = db.transaction(&quot;store&quot;)
+                 .objectStore(&quot;store&quot;)
+                 .openCursor();
+
+        rq.onsuccess = t.step_func(function(e) {
+            var cursor = e.target.result;
+
+            if (cursor) {
+                actual_keys.push(cursor.key.valueOf());
+                cursor.continue();
+            }
+            else {
+                assert_array_equals(actual_keys, expectedKeyOrder);
+                t.done();
+            }
+        });
+    };
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbrequest_bubbleandcaptureprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Bubbling and capturing of request events 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbrequest_bubbleandcaptureprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Bubbling and capturing of request events&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var events = [];
+
+    var open_rq = createdb(async_test(document.title, {timeout: 10000}));
+    open_rq.onupgradeneeded = function(e) {
+        var db = e.target.result;
+        var txn = e.target.transaction;
+        var store = db.createObjectStore(&quot;s&quot;);
+        var rq1 = store.add(&quot;&quot;, 1);
+        var rq2 = store.add(&quot;&quot;, 1);
+        db.onerror = function(){};
+
+        log_request(' db',  db);
+        log_request('txn', txn);
+        log_request('rq1', rq1);
+        log_request('rq2', rq2);
+
+        // Don't let it get to abort
+        db.addEventListener('error', function(e) { e.preventDefault() }, false);
+    }
+
+    open_rq.onsuccess = function(e) {
+        log(&quot;open_rq.success&quot;)(e);
+        assert_array_equals(events, [
+                                      &quot;capture  db.success&quot;,
+                                      &quot;capture txn.success&quot;,
+                                      &quot;capture rq1.success&quot;,
+                                      &quot;bubble  rq1.success&quot;,
+
+                                      &quot;capture  db.error: ConstraintError&quot;,
+                                      &quot;capture txn.error: ConstraintError&quot;,
+                                      &quot;capture rq2.error: ConstraintError&quot;,
+                                      &quot;bubble  rq2.error: ConstraintError&quot;,
+                                      &quot;bubble  txn.error: ConstraintError&quot;,
+                                      &quot;bubble   db.error: ConstraintError&quot;,
+
+                                      &quot;open_rq.success&quot;
+                                     ],
+                            &quot;events&quot;);
+        this.done();
+    }
+
+
+    function log_request(type, obj) {
+        obj.addEventListener('success', log('capture ' + type + '.success'), true);
+        obj.addEventListener('success', log('bubble  ' + type + '.success'), false);
+        obj.addEventListener('error', log('capture ' + type + '.error'), true);
+        obj.addEventListener('error', log('bubble  ' + type + '.error'), false);
+    }
+
+    function log(msg) {
+        return function(e) {
+            if(e &amp;&amp; e.target &amp;&amp; e.target.error)
+                events.push(msg + &quot;: &quot; + e.target.error.name);
+            else
+                events.push(msg);
+        };
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbstringlistorderingprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Test string list ordering in IndexedDB 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbstringlistorderingprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/string-list-ordering-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+&lt;!--
+Test converted from WebKit:
+http://trac.webkit.org/browser/trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js
+--&gt;
+
+&lt;!DOCTYPE html&gt;
+&lt;!-- Submitted from TestTWF Paris --&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Test string list ordering in IndexedDB&lt;/title&gt;
+&lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-objectStoreNames&quot;&gt;
+&lt;link rel=assert title=&quot;The list must be sorted in ascending order using the algorithm defined by step 4 of section 11.8.5, The Abstract Relational Comparison Algorithm of the ECMAScript Language Specification [ECMA-262].&quot;&gt;
+&lt;link rel=author href=&quot;mailto:romain.huet@gmail.com&quot; title=&quot;Romain Huet&quot;&gt;
+
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+    var expectedOrder = [
+        &quot;&quot;,
+        &quot;\x00&quot;, // 'NULL' (U+0000)
+        &quot;0&quot;,
+        &quot;1&quot;,
+        &quot;A&quot;,
+        &quot;B&quot;,
+        &quot;a&quot;,
+        &quot;b&quot;,
+        &quot;\x7F&quot;, // 'DELETE' (U+007F)
+        &quot;\xC0&quot;, // 'LATIN CAPITAL LETTER A WITH GRAVE' (U+00C0)
+        &quot;\xC1&quot;, // 'LATIN CAPITAL LETTER A WITH ACUTE' (U+00C1)
+        &quot;\xE0&quot;, // 'LATIN SMALL LETTER A WITH GRAVE' (U+00E0)
+        &quot;\xE1&quot;, // 'LATIN SMALL LETTER A WITH ACUTE' (U+00E1)
+        &quot;\xFF&quot;, // 'LATIN SMALL LETTER Y WITH DIAERESIS' (U+00FF)
+        &quot;\u0100&quot;, // 'LATIN CAPITAL LETTER A WITH MACRON' (U+0100)
+        &quot;\u1000&quot;, // 'MYANMAR LETTER KA' (U+1000)
+        &quot;\uD834\uDD1E&quot;, // 'MUSICAL SYMBOL G-CLEF' (U+1D11E), UTF-16 surrogate pairs
+        &quot;\uFFFD&quot; // 'REPLACEMENT CHARACTER' (U+FFFD)
+    ];
+
+    var i, tmp, permutedOrder = expectedOrder.slice();
+    permutedOrder.reverse();
+    for (i = 0; i &lt; permutedOrder.length - 2; i += 2) {
+        tmp = permutedOrder[i];
+        permutedOrder[i] = permutedOrder[i + 1];
+        permutedOrder[i + 1] = tmp;
+    }
+
+    var objStore, db;
+    var t = async_test();
+
+    // Check that the expected order is the canonical JS sort order.
+    var sortedOrder = expectedOrder.slice();
+    sortedOrder.sort();
+    assert_array_equals(sortedOrder, expectedOrder);
+
+    var request = createdb(t);
+
+    request.onupgradeneeded = function(e) {
+        db = e.target.result;
+
+        // Object stores.
+        for (var i = 0; i &lt; permutedOrder.length; i++) {
+            objStore = db.createObjectStore(permutedOrder[i]);
+        }
+        assert_array_equals(db.objectStoreNames, expectedOrder);
+
+        // Indexes.
+        for (var i = 0; i &lt; permutedOrder.length; i++) {
+            objStore.createIndex(permutedOrder[i], &quot;keyPath&quot;);
+        }
+        assert_array_equals(objStore.indexNames, expectedOrder);
+    };
+
+    request.onsuccess = function(e) {
+        // Object stores.
+        assert_array_equals(db.objectStoreNames, expectedOrder);
+        // Indexes.
+        assert_array_equals(objStore.indexNames, expectedOrder);
+        t.done();
+    };
+
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbsupportjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/indexeddb/support.js (195422 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/support.js        2016-01-21 22:56:21 UTC (rev 195422)
+++ trunk/LayoutTests/imported/w3c/indexeddb/support.js        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -1,6 +1,10 @@
</span><span class="cx"> if (window.testRunner) {
</span><span class="cx">     testRunner.dumpAsText();
</span><span class="cx">     testRunner.waitUntilDone();
</span><ins>+
+    // If the test file URL ends in &quot;-private.htm(l)&quot;, enable private browsing.
+    if (window.location.href.endsWith(&quot;-private.htm&quot;) || window.location.href.endsWith(&quot;-private.html&quot;))
+        testRunner.setPrivateBrowsingEnabled(true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> var databaseName = &quot;database&quot;;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactioncreate_in_versionchangeprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Attempt to create new transactions inside a versionchange transaction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactioncreate_in_versionchangeprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,82 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Attempt to create new transactions inside a versionchange transaction&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, events = [],
+        open_rq = createdb(async_test())
+
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result
+
+        db.createObjectStore(&quot;store&quot;)
+            .add(&quot;versionchange1&quot;, 1)
+            .addEventListener(&quot;success&quot;, log(&quot;versionchange_add.success&quot;))
+
+        assert_throws('InvalidStateError', function() { db.transaction(&quot;store&quot;) })
+
+        e.target.transaction
+            .objectStore(&quot;store&quot;)
+            .count(2)
+            .addEventListener(&quot;success&quot;, log(&quot;versionchange_count.success&quot;))
+
+        assert_throws('InvalidStateError', function() { db.transaction(&quot;store&quot;, &quot;readwrite&quot;) })
+
+        open_rq.transaction
+            .objectStore(&quot;store&quot;)
+            .add(&quot;versionchange2&quot;, 2)
+            .addEventListener(&quot;success&quot;, log(&quot;versionchange_add2.success&quot;))
+
+        open_rq.transaction.oncomplete = function(e) {
+            log(&quot;versionchange_txn.complete&quot;)(e)
+
+            db.transaction(&quot;store&quot;)
+                .objectStore(&quot;store&quot;)
+                .count()
+                .addEventListener(&quot;success&quot;, log(&quot;complete_count.success&quot;))
+        }
+    }
+
+    open_rq.onsuccess = function(e) {
+        log(&quot;open_rq.success&quot;)(e)
+
+        var txn = db.transaction(&quot;store&quot;, &quot;readwrite&quot;)
+        txn.objectStore(&quot;store&quot;)
+            .put(&quot;woo&quot;, 1)
+            .addEventListener(&quot;success&quot;, log(&quot;complete2_get.success&quot;))
+
+        txn.oncomplete = this.step_func(function(e) {
+            assert_array_equals(events, [
+                                  &quot;versionchange_add.success: 1&quot;,
+                                  &quot;versionchange_count.success: 0&quot;,
+                                  &quot;versionchange_add2.success: 2&quot;,
+                                  &quot;versionchange_txn.complete&quot;,
+
+                                  &quot;open_rq.success: [object IDBDatabase]&quot;,
+
+                                  &quot;complete_count.success: 2&quot;,
+                                  &quot;complete2_get.success: 1&quot;,
+                                ],
+                       &quot;events&quot;)
+            this.done()
+        })
+    }
+
+
+    function log(msg) {
+        return function(e) {
+            if(e &amp;&amp; e.target &amp;&amp; e.target.error)
+                events.push(msg + &quot;: &quot; + e.target.error.name)
+            else if(e &amp;&amp; e.target &amp;&amp; e.target.result !== undefined)
+                events.push(msg + &quot;: &quot; + e.target.result)
+            else
+                events.push(msg)
+        };
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeblockedprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Blocked event 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeblockedprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,108 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Blocked event&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    var db, db_got_versionchange, db2,
+        events = [],
+        t = async_test(document.title, {timeout: 10000});
+
+    t.step(function() {
+        var openrq = indexedDB.open('db', 3);
+
+        // 1
+        openrq.onupgradeneeded = t.step_func(function(e) {
+            events.push(&quot;open.&quot; + e.type);
+            e.target.result.createObjectStore('store');
+        });
+
+        // 2
+        openrq.onsuccess = t.step_func(function(e) {
+            db = e.target.result;
+
+            events.push(&quot;open.&quot; + e.type);
+
+            // 3
+            db.onversionchange = t.step_func(function(e) {
+                events.push(&quot;db.&quot; + e.type);
+
+                assert_equals(e.oldVersion, 3, &quot;old version&quot;);
+                assert_equals(e.newVersion, 4, &quot;new version&quot;);
+                // Do not close db here (as we should)
+            });
+
+            // Errors
+            db.onerror = fail(t, &quot;db.error&quot;);
+            db.abort = fail(t, &quot;db.abort&quot;);
+
+            setTimeout(t.step_func(OpenSecond), 10);
+        });
+
+        // Errors
+        openrq.onerror = fail(t, &quot;open.error&quot;);
+        openrq.onblocked = fail(t, &quot;open.blocked&quot;);
+
+    });
+
+    function OpenSecond (e) {
+        assert_equals(db2, undefined);
+        assert_equals(db + &quot;&quot;, &quot;[object IDBDatabase]&quot;);
+        assert_array_equals(db.objectStoreNames, [ &quot;store&quot; ]);
+
+        var openrq2 = indexedDB.open('db', 4);
+
+        // 4
+        openrq2.onblocked = t.step_func(function(e) {
+            events.push(&quot;open2.&quot; + e.type);
+            // We're closing connection from the other open()
+            db.close();
+        });
+
+        // 5
+        openrq2.onupgradeneeded = t.step_func(function(e) {
+            db2 = e.target.result;
+
+            events.push(&quot;open2.&quot; + e.type);
+
+            assert_equals(db2 + &quot;&quot;, &quot;[object IDBDatabase]&quot;);
+
+            // Errors
+            db2.onversionchange = fail(t, &quot;db2.versionchange&quot;);
+            db2.onerror = fail(t, &quot;db2.error&quot;);
+            db2.abort = fail(t, &quot;db2.abort&quot;);
+        });
+
+        // 6
+        openrq2.onsuccess = t.step_func(function(e) {
+            events.push(&quot;open2.&quot; + e.type);
+
+            assert_array_equals(events,
+                [ &quot;open.upgradeneeded&quot;,
+                  &quot;open.success&quot;,
+                  &quot;db.versionchange&quot;,
+                  &quot;open2.blocked&quot;,
+                  &quot;open2.upgradeneeded&quot;,
+                  &quot;open2.success&quot;,
+                ]);
+
+            setTimeout(function() { t.done(); }, 10);
+        });
+
+        // Errors
+        openrq2.onerror = fail(t, &quot;open2.error&quot;);
+    }
+
+
+    // Cleanup
+    add_completion_callback(function(tests) {
+        if (db2) db2.close();
+        indexedDB.deleteDatabase('db');
+    })
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Test events opening a second database when one connection is open already 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactionlifetimeprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,101 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Test events opening a second database when one connection is open already&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    var db, db_got_versionchange, db2,
+        events = [],
+        t = async_test(document.title, {timeout: 10000});
+
+    t.step(function() {
+        var openrq = indexedDB.open('db', 3);
+
+        // 1
+        openrq.onupgradeneeded = t.step_func(function(e) {
+            events.push(&quot;open.&quot; + e.type);
+            e.target.result.createObjectStore('store');
+        });
+
+        // 2
+        openrq.onsuccess = t.step_func(function(e) {
+            db = e.target.result;
+
+            events.push(&quot;open.&quot; + e.type);
+
+            // 3
+            db.onversionchange = t.step_func(function(e) {
+                events.push(&quot;db.&quot; + e.type);
+
+                assert_equals(e.oldVersion, 3, &quot;old version&quot;);
+                assert_equals(e.newVersion, 4, &quot;new version&quot;);
+                db.close();
+            });
+
+            // Errors
+            db.onerror = fail(t, &quot;db.error&quot;);
+            db.abort = fail(t, &quot;db.abort&quot;);
+
+            setTimeout(t.step_func(OpenSecond), 10);
+        });
+
+        // Errors
+        openrq.onerror = fail(t, &quot;open.error&quot;);
+        openrq.onblocked = fail(t, &quot;open.blocked&quot;);
+
+    });
+
+    function OpenSecond (e) {
+        assert_equals(db2, undefined);
+        assert_equals(db + &quot;&quot;, &quot;[object IDBDatabase]&quot;);
+        assert_array_equals(db.objectStoreNames, [ &quot;store&quot; ]);
+
+        var openrq2 = indexedDB.open('db', 4);
+
+        // 4
+        openrq2.onupgradeneeded = t.step_func(function(e) {
+            db2 = e.target.result;
+
+            events.push(&quot;open2.&quot; + e.type);
+
+            assert_equals(db2 + &quot;&quot;, &quot;[object IDBDatabase]&quot;);
+
+            // Errors
+            db2.onversionchange = fail(t, &quot;db2.versionchange&quot;);
+            db2.onerror = fail(t, &quot;db2.error&quot;);
+            db2.abort = fail(t, &quot;db2.abort&quot;);
+        });
+
+        // 5
+        openrq2.onsuccess = t.step_func(function(e) {
+            events.push(&quot;open2.&quot; + e.type);
+
+            assert_array_equals(events,
+                [ &quot;open.upgradeneeded&quot;,
+                  &quot;open.success&quot;,
+                  &quot;db.versionchange&quot;,
+                  &quot;open2.upgradeneeded&quot;,
+                  &quot;open2.success&quot;,
+                ]);
+
+            setTimeout(function() { t.done(); }, 10);
+        });
+
+        // Errors
+        openrq2.onerror = fail(t, &quot;open2.error&quot;);
+        openrq2.onblocked = fail(t, &quot;open2.blocked&quot;);
+    }
+
+
+    // Cleanup
+    add_completion_callback(function(tests) {
+        if (db2) db2.close();
+        indexedDB.deleteDatabase('db');
+    })
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactionrequestqueueprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Transactions have a request queue 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransactionrequestqueueprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,89 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Transactions have a request queue&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+
+var db, t = async_test(document.title, {timeout: 10000}),
+    keys = { txn: [], txn2: [] },
+    open_rq = createdb(t)
+
+open_rq.onupgradeneeded = function(e) {
+    var i, os;
+    db = e.target.result;
+
+    for (i = 1; i &lt; 6; i++)
+    {
+        os = db.createObjectStore(&quot;os&quot; + i, { autoIncrement: true, keyPath: &quot;k&quot; });
+        os.add({ os: &quot;os&quot; + i });
+        os.put({ os: &quot;os&quot; + i, k: i});
+        os.add({ os: &quot;os&quot; + i });
+    }
+}
+
+open_rq.onsuccess = function(e) {
+    var txn = db.transaction([&quot;os2&quot;, &quot;os1&quot;, &quot;os3&quot;, &quot;os5&quot;])
+    txn.objectStore(&quot;os1&quot;).openCursor().onsuccess = reg(&quot;txn&quot;)
+    txn.objectStore(&quot;os3&quot;).openCursor().onsuccess = reg(&quot;txn&quot;)
+    txn.objectStore(&quot;os1&quot;).get(2).onsuccess = reg(&quot;txn&quot;)
+    txn.objectStore(&quot;os2&quot;).get(3).onsuccess = reg(&quot;txn&quot;)
+
+    var txn2 = db.transaction([&quot;os4&quot;, &quot;os3&quot;, &quot;os1&quot;, &quot;os5&quot;])
+    var os4 = txn2.objectStore(&quot;os4&quot;)
+
+    for (var i=0; i &lt; 3; i++) {
+        os4.openCursor().onsuccess = reg(&quot;txn2&quot;)
+        os4.get(5).onsuccess = reg(&quot;txn2&quot;)
+        os4.get(4).onsuccess = reg(&quot;txn2&quot;)
+        txn.objectStore(&quot;os2&quot;).get(1).onsuccess = reg(&quot;txn&quot;)
+        txn2.objectStore(&quot;os3&quot;).get(1).onsuccess = reg(&quot;txn2&quot;)
+    }
+
+    txn2.objectStore(&quot;os1&quot;).get(2).onsuccess = reg(&quot;txn2&quot;)
+    txn.objectStore(&quot;os1&quot;).openCursor(null, &quot;prev&quot;).onsuccess = reg(&quot;txn&quot;)
+    os4.openCursor(null, &quot;prev&quot;).onsuccess = reg(&quot;txn2&quot;)
+
+    txn.oncomplete = t.step_func(finish);
+    txn2.oncomplete = t.step_func(finish);
+}
+
+
+function reg(n) {
+    return t.step_func(function (e) {
+        var v = e.target.result;
+        if (v.value) v = v.value;
+        keys[n].push(v.os + &quot;: &quot; + v.k);
+    });
+}
+
+var finish_to_go = 2;
+function finish() {
+    if (--finish_to_go)
+        return;
+
+    assert_array_equals(keys['txn'], [
+        &quot;os1: 1&quot;,
+        &quot;os3: 1&quot;,
+        &quot;os1: 2&quot;,
+        &quot;os2: 3&quot;,
+        &quot;os2: 1&quot;, &quot;os2: 1&quot;, &quot;os2: 1&quot;,
+        &quot;os1: 2&quot;,
+    ], 'transaction keys');
+
+    assert_array_equals(keys['txn2'], [
+        &quot;os4: 1&quot;, &quot;os4: 5&quot;, &quot;os4: 4&quot;, &quot;os3: 1&quot;,
+        &quot;os4: 1&quot;, &quot;os4: 5&quot;, &quot;os4: 4&quot;, &quot;os3: 1&quot;,
+        &quot;os4: 1&quot;, &quot;os4: 5&quot;, &quot;os4: 4&quot;, &quot;os3: 1&quot;,
+        &quot;os1: 2&quot;,
+        &quot;os4: 5&quot;,
+    ], 'transaction 2 keys');
+
+    t.done();
+}
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransaction_bubbleandcaptureprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Capture and bubble 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbtransaction_bubbleandcaptureprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Capture and bubble&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var events = [];
+
+    var open_rq = createdb(async_test(document.title, {timeout: 10000}));
+    open_rq.onupgradeneeded = function(e) {
+        var db = e.target.result;
+        var txn = e.target.transaction;
+        var store = db.createObjectStore(&quot;store&quot;);
+        var rq1 = store.add(&quot;&quot;, 1);
+        var rq2 = store.add(&quot;&quot;, 1);
+
+        db.onerror = undefined; // We will run db.error, but don't let that fail the test
+
+        log_events('db', db, 'success');
+        log_events('db', db, 'error');
+
+        log_events('txn', txn, 'success');
+        log_events('txn', txn, 'error');
+
+        log_events('rq1', rq1, 'success');
+        log_events('rq1', rq1, 'error');
+
+        log_events('rq2', rq2, 'success');
+        log_events('rq2', rq2, 'error');
+
+        // Don't let it get to abort
+        db.addEventListener('error', function(e) { e.preventDefault(); }, false);
+    }
+
+    open_rq.onsuccess = function(e) {
+        log(&quot;open_rq.success&quot;)(e);
+        assert_array_equals(events, [
+                                      &quot;capture db.success&quot;,
+                                      &quot;capture txn.success&quot;,
+                                      &quot;capture rq1.success&quot;,
+                                      &quot;bubble  rq1.success&quot;,
+
+                                      &quot;capture db.error: ConstraintError&quot;,
+                                      &quot;capture txn.error: ConstraintError&quot;,
+                                      &quot;capture rq2.error: ConstraintError&quot;,
+                                      &quot;bubble  rq2.error: ConstraintError&quot;,
+                                      &quot;bubble  txn.error: ConstraintError&quot;,
+                                      &quot;bubble  db.error: ConstraintError&quot;,
+
+                                      &quot;open_rq.success&quot;,
+                                     ],
+                            &quot;events&quot;);
+        this.done();
+    }
+
+
+    function log_events(type, obj, evt) {
+        obj.addEventListener(evt, log('capture ' + type + '.' + evt), true);
+        obj.addEventListener(evt, log('bubble  ' + type + '.' + evt), false);
+    }
+
+    function log(msg) {
+        return function(e) {
+            if(e &amp;&amp; e.target &amp;&amp; e.target.error)
+                events.push(msg + &quot;: &quot; + e.target.error.name);
+            else
+                events.push(msg);
+        };
+    }
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbvalueprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/value-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/value-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/value-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Values - Date 
+PASS Values - Array 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbvalueprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/value-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/value-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/value-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Values&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+function value(value, _instanceof) {
+    var t = async_test(document.title + &quot; - &quot; + _instanceof.name);
+    t.step(function() {
+        assert_true(value instanceof _instanceof, &quot;TEST ERROR, instanceof&quot;);
+    });
+
+    createdb(t).onupgradeneeded = function(e) {
+        e.target.result
+                .createObjectStore(&quot;store&quot;)
+                .add(value, 1);
+
+        e.target.onsuccess = t.step_func(function(e) {
+            e.target.result
+                    .transaction(&quot;store&quot;)
+                    .objectStore(&quot;store&quot;)
+                    .get(1)
+                    .onsuccess = t.step_func(function(e)
+            {
+                assert_true(e.target.result instanceof _instanceof, &quot;instanceof&quot;)
+                t.done();
+            });
+        });
+    };
+}
+
+value(new Date(), Date);
+value(new Array(), Array);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbvalue_recursiveprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Recursive value - array directly contains self 
+PASS Recursive value - array indirectly contains self 
+PASS Recursive value - array member contains self 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbvalue_recursiveprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/value_recursive-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Recursive value&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+function recursive_value(desc, value) {
+    var db, t = async_test(document.title + &quot; - &quot; + desc);
+
+    createdb(t).onupgradeneeded = function(e) {
+        db = e.target.result
+        db.createObjectStore(&quot;store&quot;)
+          .add(value, 1);
+
+        e.target.onsuccess = t.step_func(function(e) {
+            db.transaction('store')
+              .objectStore('store')
+              .get(1)
+              .onsuccess = t.step_func(function(e)
+            {
+
+                try
+                {
+                    var fresh_value = JSON.stringify(value);
+                    assert_unreached(&quot;Testcase is written wrongly, must supply something recursive (that JSON won't stringify).&quot;);
+                }
+                catch (e)
+                {
+                    if (e.name == 'TypeError')
+                    {
+                        try
+                        {
+                            JSON.stringify(e.target.result);
+                            assert_unreached(&quot;Expected a non-JSON-serializable value back, didn't get that.&quot;);
+                        }
+                        catch (e)
+                        {
+                            t.done();
+                            return;
+                        }
+                    }
+                    else
+                        throw e;
+                }
+            });
+        });
+    };
+}
+
+var recursive = [];
+recursive.push(recursive);
+recursive_value('array directly contains self', recursive);
+
+var recursive2 = [];
+recursive2.push([recursive2]);
+recursive_value('array indirectly contains self', recursive2);
+
+var recursive3 = [recursive];
+recursive_value('array member contains self', recursive3);
+
+&lt;/script&gt;
+
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbwriterstarvationprivateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private-expected.txt (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private-expected.txt        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Writer starvation 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cindexeddbwriterstarvationprivatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private.html (0 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/indexeddb/writer-starvation-private.html        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -0,0 +1,105 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Writer starvation&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=&quot;../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=support.js&gt;&lt;/script&gt;
+
+&lt;script&gt;
+    var db, read_request_count = 0, read_success_count = 0;
+    var write_request_count = 0, write_success_count = 0;
+    var RQ_COUNT = 25;
+
+    var open_rq = createdb(async_test(undefined, {timeout: 20000}));
+    open_rq.onupgradeneeded = function(e) {
+        db = e.target.result;
+        db.createObjectStore(&quot;s&quot;)
+          .add(&quot;1&quot;, 1);
+    }
+
+    open_rq.onsuccess = function(e) {
+        var i = 0, continue_reading = true;
+
+        /* Pre-fill some read requests */
+        for (i = 0; i &lt; RQ_COUNT; i++)
+        {
+            read_request_count++;
+
+            db.transaction(&quot;s&quot;)
+              .objectStore(&quot;s&quot;)
+              .get(1)
+              .onsuccess = this.step_func(function(e) {
+                    read_success_count++;
+                    assert_equals(e.target.transaction.mode, &quot;readonly&quot;);
+                });
+        }
+
+        this.step(loop);
+
+        function loop() {
+            read_request_count++;
+
+            db.transaction(&quot;s&quot;)
+              .objectStore(&quot;s&quot;)
+              .get(1)
+              .onsuccess = this.step_func(function(e)
+            {
+                read_success_count++;
+                assert_equals(e.target.transaction.mode, &quot;readonly&quot;);
+
+                if (read_success_count &gt;= RQ_COUNT &amp;&amp; write_request_count == 0)
+                {
+                    write_request_count++;
+
+                    db.transaction(&quot;s&quot;, &quot;readwrite&quot;)
+                      .objectStore(&quot;s&quot;)
+                      .add(&quot;written&quot;, read_request_count)
+                      .onsuccess = this.step_func(function(e)
+                    {
+                        write_success_count++;
+                        assert_equals(e.target.transaction.mode, &quot;readwrite&quot;);
+                        assert_equals(e.target.result, read_success_count,
+                                       &quot;write cb came before later read cb's&quot;)
+                    });
+
+                    /* Reads done after the write */
+                    for (i = 0; i &lt; 5; i++)
+                    {
+                        read_request_count++;
+
+                        db.transaction(&quot;s&quot;)
+                          .objectStore(&quot;s&quot;)
+                          .get(1)
+                          .onsuccess = this.step_func(function(e)
+                        {
+                            read_success_count++;
+                        });
+                    }
+                }
+            });
+
+            if (read_success_count &lt; RQ_COUNT + 5)
+                setTimeout(this.step_func(loop), write_request_count ? 1000 : 100);
+            else
+                // This is merely a &quot;nice&quot; hack to run finish after the last request is done
+                db.transaction(&quot;s&quot;)
+                  .objectStore(&quot;s&quot;)
+                  .count()
+                  .onsuccess = this.step_func(function()
+                {
+                    setTimeout(this.step_func(finish), 100);
+                });
+        }
+    }
+
+
+function finish() {
+    assert_equals(read_request_count, read_success_count, &quot;read counts&quot;);
+    assert_equals(write_request_count, write_success_count, &quot;write counts&quot;);
+    this.done();
+}
+&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformwk2TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/wk2/TestExpectations (195422 => 195423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/wk2/TestExpectations        2016-01-21 22:56:21 UTC (rev 195422)
+++ trunk/LayoutTests/platform/wk2/TestExpectations        2016-01-21 23:15:46 UTC (rev 195423)
</span><span class="lines">@@ -724,6 +724,250 @@
</span><span class="cx"> webkit.org/b/115274 http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled.html [ Skip ]
</span><span class="cx"> 
</span><span class="cx"> # Legacy IndexedDB will never properly support IDB in private browsing
</span><ins>+imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private.html [ Skip ]
+imported/w3c/indexeddb/close-in-upgradeneeded-private.html [ Skip ]
+imported/w3c/indexeddb/cursor-overloads-private.html [ Skip ]
+imported/w3c/indexeddb/idb_webworkers-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-advance-continue-async-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-advance-invalid-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-advance-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-continue-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-direction-index-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-direction-objectstore-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-direction-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-key-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-primarykey-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-reused-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor-source-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index6-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index7-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index8-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_index9-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_objectstore-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_objectstore2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_objectstore3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_objectstore4-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_advance_objectstore5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index4-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index6-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index7-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_index8-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_invalid-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_objectstore-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_objectstore2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_objectstore3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_objectstore4-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_objectstore5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_continue_objectstore6-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_index-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_index2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_index3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_index4-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_index5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_objectstore-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_objectstore2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_objectstore3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_objectstore4-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_delete_objectstore5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_iterating-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_iterating_index-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_iterating_index2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_iterating_objectstore-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_index-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_index2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_index3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_index4-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_index5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_index6-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_index7-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore2-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore3-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore4-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore5-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore6-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore7-private.html [ Skip ]
+imported/w3c/indexeddb/idbcursor_update_objectstore8-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_close-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_close2-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore11-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore2-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore3-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore4-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore5-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore6-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore7-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_transaction-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_transaction2-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_transaction3-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_transaction4-private.html [ Skip ]
+imported/w3c/indexeddb/idbdatabase_transaction5-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_cmp-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_cmp2-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_deleteDatabase-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_deleteDatabase2-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_deleteDatabase3-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_deleteDatabase4-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open10-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open11-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open12-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open2-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open3-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open4-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open5-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open6-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open7-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open8-private.html [ Skip ]
+imported/w3c/indexeddb/idbfactory_open9-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex-multientry-big-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex-multientry-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_count-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_count2-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_count3-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_count4-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_get-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_get2-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_get3-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_get4-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_get5-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_get6-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_get7-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_getKey-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_getKey2-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_getKey3-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_getKey4-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_getKey5-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_getKey6-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_getKey7-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_indexNames-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_openCursor-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_openCursor2-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_openKeyCursor-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_openKeyCursor2-private.html [ Skip ]
+imported/w3c/indexeddb/idbindex_openKeyCursor3-private.html [ Skip ]
+imported/w3c/indexeddb/idbkeyrange-private.html [ Skip ]
+imported/w3c/indexeddb/idbkeyrange_incorrect-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add10-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add11-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add12-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add13-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add14-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add15-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add16-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add2-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add3-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add4-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add5-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add6-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add7-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add8-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_add9-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_clear-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_clear2-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_clear3-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_clear4-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_count-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_count2-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_count3-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_count4-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex10-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex11-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex12-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex13-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex2-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_delete-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_delete2-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_delete3-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_delete4-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_delete5-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_delete6-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_delete7-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_deleteIndex-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_deleted-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_get-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_get2-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_get3-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_get4-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_get5-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_get6-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_get7-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_index-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_openCursor-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put10-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put11-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put12-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put13-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put14-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put15-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put16-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put2-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put3-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put4-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put5-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put6-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put7-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put8-private.html [ Skip ]
+imported/w3c/indexeddb/idbobjectstore_put9-private.html [ Skip ]
+imported/w3c/indexeddb/idbtransaction-oncomplete-private.html [ Skip ]
+imported/w3c/indexeddb/idbtransaction-private.html [ Skip ]
+imported/w3c/indexeddb/idbtransaction_abort-private.html [ Skip ]
+imported/w3c/indexeddb/idbversionchangeevent-private.html [ Skip ]
+imported/w3c/indexeddb/index_sort_order-private.html [ Skip ]
+imported/w3c/indexeddb/key_invalid-private.html [ Skip ]
+imported/w3c/indexeddb/key_valid-private.html [ Skip ]
+imported/w3c/indexeddb/keygenerator-constrainterror-private.html [ Skip ]
+imported/w3c/indexeddb/keygenerator-overflow-private.html [ Skip ]
+imported/w3c/indexeddb/keygenerator-private.html [ Skip ]
+imported/w3c/indexeddb/keyorder-private.html [ Skip ]
+imported/w3c/indexeddb/keypath-private.html [ Skip ]
+imported/w3c/indexeddb/keypath_invalid-private.html [ Skip ]
+imported/w3c/indexeddb/keypath_maxsize-private.html [ Skip ]
+imported/w3c/indexeddb/list_ordering-private.html [ Skip ]
+imported/w3c/indexeddb/objectstore_keyorder-private.html [ Skip ]
+imported/w3c/indexeddb/request_bubble-and-capture-private.html [ Skip ]
+imported/w3c/indexeddb/string-list-ordering-private.html [ Skip ]
+imported/w3c/indexeddb/transaction-create_in_versionchange-private.html [ Skip ]
+imported/w3c/indexeddb/transaction-lifetime-blocked-private.html [ Skip ]
+imported/w3c/indexeddb/transaction-lifetime-private.html [ Skip ]
+imported/w3c/indexeddb/transaction-requestqueue-private.html [ Skip ]
+imported/w3c/indexeddb/transaction_bubble-and-capture-private.html [ Skip ]
+imported/w3c/indexeddb/value-private.html [ Skip ]
+imported/w3c/indexeddb/value_recursive-private.html [ Skip ]
+imported/w3c/indexeddb/writer-starvation-private.html [ Skip ]
</ins><span class="cx"> storage/indexeddb/aborted-versionchange-closes-private.html
</span><span class="cx"> storage/indexeddb/basics-private.html
</span><span class="cx"> storage/indexeddb/clone-exception-private.html
</span></span></pre>
</div>
</div>

</body>
</html>