<!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>[163963] 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/163963">163963</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2014-02-12 10:17:47 -0800 (Wed, 12 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>IDB: Reimport storage/indexeddb tests from Blink
https://bugs.webkit.org/show_bug.cgi?id=128636

Rubberstamped by Jer Noble.

Take two.

When I did this last night in <a href="http://trac.webkit.org/projects/webkit/changeset/163923">r163923</a> the Mozilla tests outputted different results
because one of the logging functions they made had become more verbose.

This time we include the new test expectations for those tests, and update them to
reflect the different exception message outputted in WebKit vs Blink.

* resources/js-test.js: Added.
* storage/indexeddb/aborted-versionchange-closes-expected.txt:
* storage/indexeddb/aborted-versionchange-closes.html:
* storage/indexeddb/basics-expected.txt:
* storage/indexeddb/basics-shared-workers-expected.txt:
* storage/indexeddb/basics-shared-workers.html:
* storage/indexeddb/basics-workers-expected.txt:
* storage/indexeddb/basics-workers.html:
* storage/indexeddb/basics.html:
* storage/indexeddb/clone-exception-expected.txt:
* storage/indexeddb/clone-exception.html:
* storage/indexeddb/closed-cursor-expected.txt: Added.
* storage/indexeddb/closed-cursor.html: Added.
* storage/indexeddb/connection-leak-expected.txt: Added.
* storage/indexeddb/connection-leak.html: Added.
* storage/indexeddb/create-and-remove-object-store-expected.txt:
* storage/indexeddb/create-and-remove-object-store.html:
* storage/indexeddb/create-object-store-options-expected.txt:
* storage/indexeddb/create-object-store-options.html:
* storage/indexeddb/createIndex-after-failure-expected.txt:
* storage/indexeddb/createIndex-after-failure.html:
* storage/indexeddb/createObjectStore-name-argument-required-expected.txt:
* storage/indexeddb/createObjectStore-name-argument-required.html:
* storage/indexeddb/createObjectStore-null-name.html:
* storage/indexeddb/cursor-added-bug.html:
* storage/indexeddb/cursor-advance-expected.txt:
* storage/indexeddb/cursor-advance-workers-expected.txt:
* storage/indexeddb/cursor-advance-workers.html:
* storage/indexeddb/cursor-advance.html:
* storage/indexeddb/cursor-basics-expected.txt: Added.
* storage/indexeddb/cursor-basics.html: Added.
* storage/indexeddb/cursor-cast-expected.txt: Added.
* storage/indexeddb/cursor-cast.html: Added.
* storage/indexeddb/cursor-continue-dir-expected.txt:
* storage/indexeddb/cursor-continue-dir.html:
* storage/indexeddb/cursor-continue-expected.txt:
* storage/indexeddb/cursor-continue-validity-expected.txt:
* storage/indexeddb/cursor-continue-validity.html:
* storage/indexeddb/cursor-continue.html:
* storage/indexeddb/cursor-continueprimarykey-expected.txt: Added.
* storage/indexeddb/cursor-continueprimarykey.html: Added.
* storage/indexeddb/cursor-delete.html:
* storage/indexeddb/cursor-finished-expected.txt:
* storage/indexeddb/cursor-finished.html:
* storage/indexeddb/cursor-inconsistency.html:
* storage/indexeddb/cursor-index-delete.html:
* storage/indexeddb/cursor-key-order.html:
* storage/indexeddb/cursor-leak-expected.txt:
* storage/indexeddb/cursor-leak.html: Added.
* storage/indexeddb/cursor-overloads-expected.txt:
* storage/indexeddb/cursor-overloads.html:
* storage/indexeddb/cursor-prev-no-duplicate.html:
* storage/indexeddb/cursor-primary-key-order.html:
* storage/indexeddb/cursor-properties.html:
* storage/indexeddb/cursor-request-cycle-expected.txt: Added.
* storage/indexeddb/cursor-request-cycle.html: Added.
* storage/indexeddb/cursor-reverse-bug.html:
* storage/indexeddb/cursor-skip-deleted.html:
* storage/indexeddb/cursor-update-expected.txt:
* storage/indexeddb/cursor-update-value-argument-required-expected.txt:
* storage/indexeddb/cursor-update-value-argument-required.html:
* storage/indexeddb/cursor-update.html:
* storage/indexeddb/cursor-value.html:
* storage/indexeddb/data-corruption-expected.txt:
* storage/indexeddb/data-corruption.html:
* storage/indexeddb/database-basics-expected.txt:
* storage/indexeddb/database-basics.html:
* storage/indexeddb/database-close-expected.txt:
* storage/indexeddb/database-close.html:
* storage/indexeddb/database-closepending-flag-expected.txt:
* storage/indexeddb/database-closepending-flag.html:
* storage/indexeddb/database-deletepending-flag.html:
* storage/indexeddb/database-name-undefined-expected.txt:
* storage/indexeddb/database-name-undefined.html:
* storage/indexeddb/database-odd-names.html:
* storage/indexeddb/database-wrapper-expected.txt:
* storage/indexeddb/database-wrapper.html:
* storage/indexeddb/delete-closed-database-object-expected.txt:
* storage/indexeddb/delete-closed-database-object.html:
* storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html:
* storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt:
* storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html:
* storage/indexeddb/delete-range.html:
* storage/indexeddb/deleteIndex-bug110792-expected.txt:
* storage/indexeddb/deleteIndex-bug110792.html:
* storage/indexeddb/deleteIndex-expected.txt:
* storage/indexeddb/deleteIndex.html:
* storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt:
* storage/indexeddb/deleteObjectStore-name-argument-required.html:
* storage/indexeddb/deleteObjectStore-null-name.html:
* storage/indexeddb/deleted-objects-expected.txt:
* storage/indexeddb/deleted-objects.html:
* storage/indexeddb/deletedatabase-blocked.html:
* storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html:
* storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html:
* storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt:
* storage/indexeddb/deletedatabase-delayed-by-versionchange.html:
* storage/indexeddb/deletedatabase-not-blocked.html:
* storage/indexeddb/deletedatabase-transaction.html:
* storage/indexeddb/dont-commit-on-blocked.html:
* storage/indexeddb/dont-wedge.html:
* storage/indexeddb/duplicates.html:
* storage/indexeddb/error-causes-abort-by-default.html:
* storage/indexeddb/events-expected.txt:
* storage/indexeddb/events.html:
* storage/indexeddb/exception-in-event-aborts-expected.txt:
* storage/indexeddb/exception-in-event-aborts.html:
* storage/indexeddb/exceptions-expected.txt:
* storage/indexeddb/exceptions.html:
* storage/indexeddb/factory-basics-expected.txt:
* storage/indexeddb/factory-basics-workers-expected.txt:
* storage/indexeddb/factory-basics-workers.html:
* storage/indexeddb/factory-basics.html:
* storage/indexeddb/factory-cmp-expected.txt:
* storage/indexeddb/factory-cmp.html:
* storage/indexeddb/factory-deletedatabase.html:
* storage/indexeddb/get-keyrange-expected.txt:
* storage/indexeddb/get-keyrange.html:
* storage/indexeddb/index-basics-expected.txt:
* storage/indexeddb/index-basics-workers-expected.txt:
* storage/indexeddb/index-basics-workers.html:
* storage/indexeddb/index-basics.html:
* storage/indexeddb/index-count-expected.txt:
* storage/indexeddb/index-count.html:
* storage/indexeddb/index-cursor.html:
* storage/indexeddb/index-duplicate-keypaths.html:
* storage/indexeddb/index-get-key-argument-required-expected.txt:
* storage/indexeddb/index-get-key-argument-required.html:
* storage/indexeddb/index-multientry.html:
* storage/indexeddb/index-population.html:
* storage/indexeddb/index-unique.html:
* storage/indexeddb/interfaces.html:
* storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html:
* storage/indexeddb/intversion-bad-parameters-expected.txt:
* storage/indexeddb/intversion-bad-parameters.html:
* storage/indexeddb/intversion-blocked.html:
* storage/indexeddb/intversion-close-between-events.html:
* storage/indexeddb/intversion-close-in-oncomplete-expected.txt:
* storage/indexeddb/intversion-close-in-oncomplete.html:
* storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt:
* storage/indexeddb/intversion-close-in-upgradeneeded.html:
* storage/indexeddb/intversion-encoding.html:
* storage/indexeddb/intversion-gated-on-delete.html:
* storage/indexeddb/intversion-long-queue-expected.txt:
* storage/indexeddb/intversion-long-queue.html:
* storage/indexeddb/intversion-omit-parameter.html:
* storage/indexeddb/intversion-open-in-upgradeneeded.html:
* storage/indexeddb/intversion-open-with-version.html:
* storage/indexeddb/intversion-pending-version-changes-ascending-expected.txt: Added.
* storage/indexeddb/intversion-pending-version-changes-ascending.html: Added.
* storage/indexeddb/intversion-pending-version-changes-descending-expected.txt: Added.
* storage/indexeddb/intversion-pending-version-changes-descending.html: Added.
* storage/indexeddb/intversion-pending-version-changes-same-expected.txt: Added.
* storage/indexeddb/intversion-pending-version-changes-same.html: Added.
* storage/indexeddb/intversion-persistence.html:
* storage/indexeddb/intversion-revert-on-abort.html:
* storage/indexeddb/intversion-two-opens-no-versions.html:
* storage/indexeddb/intversion-upgrades-expected.txt:
* storage/indexeddb/intversion-upgrades.html:
* storage/indexeddb/invalid-keys-expected.txt:
* storage/indexeddb/invalid-keys.html:
* storage/indexeddb/key-generator.html:
* storage/indexeddb/key-sort-order-across-types.html:
* storage/indexeddb/key-sort-order-date.html:
* storage/indexeddb/key-type-array-expected.txt:
* storage/indexeddb/key-type-array.html:
* storage/indexeddb/key-type-binary-expected.txt: Added.
* storage/indexeddb/key-type-binary.html: Added.
* storage/indexeddb/key-type-infinity.html:
* storage/indexeddb/keypath-arrays-expected.txt:
* storage/indexeddb/keypath-arrays.html:
* storage/indexeddb/keypath-basics-expected.txt:
* storage/indexeddb/keypath-basics.html:
* storage/indexeddb/keypath-edges-expected.txt:
* storage/indexeddb/keypath-edges.html:
* storage/indexeddb/keypath-fetch-key.html:
* storage/indexeddb/keypath-intrinsic-properties.html:
* storage/indexeddb/keyrange-expected.txt:
* storage/indexeddb/keyrange-required-arguments-expected.txt:
* storage/indexeddb/keyrange-required-arguments.html:
* storage/indexeddb/keyrange.html:
* storage/indexeddb/lazy-index-population-expected.txt:
* storage/indexeddb/lazy-index-population.html:
* storage/indexeddb/lazy-index-types.html:
* storage/indexeddb/legacy-constants.html:
* storage/indexeddb/list-ordering.html:
* storage/indexeddb/metadata-race-expected.txt: Added.
* storage/indexeddb/metadata-race.html: Added.
* storage/indexeddb/metadata.html:
* storage/indexeddb/mozilla/add-twice-failure.html:
* storage/indexeddb/mozilla/autoincrement-indexes.html:
* storage/indexeddb/mozilla/bad-keypath-expected.txt:
* storage/indexeddb/mozilla/bad-keypath.html:
* storage/indexeddb/mozilla/clear-expected.txt:
* storage/indexeddb/mozilla/clear.html:
* storage/indexeddb/mozilla/create-index-unique.html:
* storage/indexeddb/mozilla/create-index-with-integer-keys.html:
* storage/indexeddb/mozilla/create-objectstore-basics-expected.txt:
* storage/indexeddb/mozilla/create-objectstore-basics.html:
* storage/indexeddb/mozilla/create-objectstore-null-name.html:
* storage/indexeddb/mozilla/cursor-mutation-objectstore-only.html:
* storage/indexeddb/mozilla/cursor-mutation.html:
* storage/indexeddb/mozilla/cursor-update-updates-indexes.html:
* storage/indexeddb/mozilla/cursors-expected.txt:
* storage/indexeddb/mozilla/cursors.html:
* storage/indexeddb/mozilla/delete-result.html:
* storage/indexeddb/mozilla/event-source.html:
* storage/indexeddb/mozilla/global-data.html:
* storage/indexeddb/mozilla/index-prev-no-duplicate.html:
* storage/indexeddb/mozilla/indexes.html:
* storage/indexeddb/mozilla/key-requirements-delete-null-key-expected.txt:
* storage/indexeddb/mozilla/key-requirements-delete-null-key.html:
* storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt:
* storage/indexeddb/mozilla/key-requirements-inline-and-passed.html:
* storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt:
* storage/indexeddb/mozilla/key-requirements-put-no-key.html:
* storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt:
* storage/indexeddb/mozilla/key-requirements-put-null-key.html:
* storage/indexeddb/mozilla/key-requirements.html:
* storage/indexeddb/mozilla/object-cursors.html:
* storage/indexeddb/mozilla/object-identity.html:
* storage/indexeddb/mozilla/object-store-inline-autoincrement-key-added-on-put.html:
* storage/indexeddb/mozilla/object-store-remove-values.html:
* storage/indexeddb/mozilla/objectstorenames.html:
* storage/indexeddb/mozilla/odd-result-order.html:
* storage/indexeddb/mozilla/open-database-null-name.html:
* storage/indexeddb/mozilla/put-get-values.html:
* storage/indexeddb/mozilla/readonly-transactions-expected.txt:
* storage/indexeddb/mozilla/readonly-transactions.html:
* storage/indexeddb/mozilla/readwrite-transactions.html:
* storage/indexeddb/mozilla/readyState.html:
* storage/indexeddb/mozilla/remove-index.html:
* storage/indexeddb/mozilla/remove-objectstore.html:
* storage/indexeddb/mozilla/resources/add-twice-failure.js:
* storage/indexeddb/mozilla/resources/autoincrement-indexes.js:
* storage/indexeddb/mozilla/resources/bad-keypath.js:
* storage/indexeddb/mozilla/resources/clear.js:
* storage/indexeddb/mozilla/resources/create-index-unique.js:
* storage/indexeddb/mozilla/resources/create-index-with-integer-keys.js:
* storage/indexeddb/mozilla/resources/create-objectstore-basics.js:
* storage/indexeddb/mozilla/resources/create-objectstore-null-name.js:
* storage/indexeddb/mozilla/resources/cursor-mutation-objectstore-only.js:
* storage/indexeddb/mozilla/resources/cursor-mutation.js:
* storage/indexeddb/mozilla/resources/cursor-update-updates-indexes.js:
* storage/indexeddb/mozilla/resources/cursors.js:
* storage/indexeddb/mozilla/resources/delete-result.js:
* storage/indexeddb/mozilla/resources/event-source.js:
* storage/indexeddb/mozilla/resources/global-data.js:
* storage/indexeddb/mozilla/resources/indexes.js:
* storage/indexeddb/mozilla/resources/key-requirements-delete-null-key.js:
* storage/indexeddb/mozilla/resources/key-requirements-inline-and-passed.js:
* storage/indexeddb/mozilla/resources/key-requirements-put-no-key.js:
* storage/indexeddb/mozilla/resources/key-requirements-put-null-key.js:
* storage/indexeddb/mozilla/resources/key-requirements.js:
* storage/indexeddb/mozilla/resources/object-cursors.js:
* storage/indexeddb/mozilla/resources/object-identity.js:
* storage/indexeddb/mozilla/resources/object-store-inline-autoincrement-key-added-on-put.js:
* storage/indexeddb/mozilla/resources/object-store-remove-values.js:
* storage/indexeddb/mozilla/resources/objectstorenames.js:
* storage/indexeddb/mozilla/resources/odd-result-order.js:
* storage/indexeddb/mozilla/resources/open-database-null-name.js:
* storage/indexeddb/mozilla/resources/put-get-values.js:
* storage/indexeddb/mozilla/resources/readonly-transactions.js:
* storage/indexeddb/mozilla/resources/readwrite-transactions.js:
* storage/indexeddb/mozilla/resources/readyState.js:
* storage/indexeddb/mozilla/resources/remove-index.js:
* storage/indexeddb/mozilla/resources/remove-objectstore.js:
* storage/indexeddb/mozilla/resources/versionchange-abort.js:
* storage/indexeddb/mozilla/versionchange-abort.html:
* storage/indexeddb/mutating-cursor.html:
* storage/indexeddb/noblobs-expected.txt:
* storage/indexeddb/noblobs.html:
* storage/indexeddb/object-lookups-in-versionchange-expected.txt:
* storage/indexeddb/object-lookups-in-versionchange.html:
* storage/indexeddb/objectStore-required-arguments-expected.txt:
* storage/indexeddb/objectStore-required-arguments.html:
* storage/indexeddb/objectstore-autoincrement-expected.txt:
* storage/indexeddb/objectstore-autoincrement.html:
* storage/indexeddb/objectstore-basics-expected.txt:
* storage/indexeddb/objectstore-basics-workers-expected.txt:
* storage/indexeddb/objectstore-basics-workers.html:
* storage/indexeddb/objectstore-basics.html:
* storage/indexeddb/objectstore-clear.html:
* storage/indexeddb/objectstore-count-expected.txt:
* storage/indexeddb/objectstore-count.html:
* storage/indexeddb/objectstore-cursor-expected.txt:
* storage/indexeddb/objectstore-cursor.html:
* storage/indexeddb/objectstore-keycursor-expected.txt: Added.
* storage/indexeddb/objectstore-keycursor.html: Added.
* storage/indexeddb/objectstore-removeobjectstore.html:
* storage/indexeddb/odd-strings.html:
* storage/indexeddb/open-bad-versions.html:
* storage/indexeddb/open-cursor-expected.txt:
* storage/indexeddb/open-cursor.html:
* storage/indexeddb/open-during-transaction.html:
* storage/indexeddb/open-ordering.html:
* storage/indexeddb/open-twice-workers.html:
* storage/indexeddb/opencursor-key.html:
* storage/indexeddb/optional-arguments-expected.txt: Added.
* storage/indexeddb/optional-arguments.html: Added.
* storage/indexeddb/pending-activity-workers.html:
* storage/indexeddb/pending-activity.html:
* storage/indexeddb/pending-version-change-on-exit.html:
* storage/indexeddb/pending-version-change-stuck-works-with-terminate.html:
* storage/indexeddb/pending-version-change-stuck.html:
* storage/indexeddb/persistence.html:
* storage/indexeddb/prefetch-bugfix-108071-expected.txt:
* storage/indexeddb/prefetch-bugfix-108071.html:
* storage/indexeddb/prefetch-invalidation-expected.txt: Added.
* storage/indexeddb/prefetch-invalidation.html: Added.
* storage/indexeddb/prefetch-race-expected.txt: Added.
* storage/indexeddb/prefetch-race.html: Added.
* storage/indexeddb/queued-commands.html:
* storage/indexeddb/readonly-properties.html:
* storage/indexeddb/readonly.html:
* storage/indexeddb/removed-expected.txt:
* storage/indexeddb/removed.html:
* storage/indexeddb/request-continue-abort.html:
* storage/indexeddb/request-event-propagation.html:
* storage/indexeddb/request-leak-expected.txt: Added.
* storage/indexeddb/request-leak.html: Added.
* storage/indexeddb/request-result-cache-expected.txt: Added.
* storage/indexeddb/request-result-cache.html: Added.
* storage/indexeddb/resources/aborted-versionchange-closes.js:
* storage/indexeddb/resources/basics.js:
* storage/indexeddb/resources/create-and-remove-object-store.js:
* storage/indexeddb/resources/create-object-store-options.js:
* storage/indexeddb/resources/createIndex-after-failure.js:
* storage/indexeddb/resources/createObjectStore-name-argument-required.js:
* storage/indexeddb/resources/createObjectStore-null-name.js:
* storage/indexeddb/resources/cursor-added-bug.js:
* storage/indexeddb/resources/cursor-advance.js:
* storage/indexeddb/resources/cursor-basics.js: Added.
* storage/indexeddb/resources/cursor-continue-dir.js:
* storage/indexeddb/resources/cursor-continue-validity.js:
* storage/indexeddb/resources/cursor-continue.js:
* storage/indexeddb/resources/cursor-continueprimarykey.js: Added.
* storage/indexeddb/resources/cursor-delete.js:
* storage/indexeddb/resources/cursor-inconsistency.js:
* storage/indexeddb/resources/cursor-index-delete.js:
* storage/indexeddb/resources/cursor-key-order.js:
* storage/indexeddb/resources/cursor-prev-no-duplicate.js:
* storage/indexeddb/resources/cursor-primary-key-order.js:
* storage/indexeddb/resources/cursor-properties.js:
* storage/indexeddb/resources/cursor-reverse-bug.js:
* storage/indexeddb/resources/cursor-skip-deleted.js:
* storage/indexeddb/resources/cursor-update-value-argument-required.js:
* storage/indexeddb/resources/cursor-update.js:
* storage/indexeddb/resources/cursor-value.js:
* storage/indexeddb/resources/data-corruption.js:
* storage/indexeddb/resources/database-basics.js:
* storage/indexeddb/resources/database-close.js:
* storage/indexeddb/resources/database-closepending-flag.js:
* storage/indexeddb/resources/database-deletepending-flag.js:
* storage/indexeddb/resources/database-name-undefined.js:
* storage/indexeddb/resources/database-odd-names.js:
* storage/indexeddb/resources/database-quota.js:
* storage/indexeddb/resources/database-wrapper.js:
* storage/indexeddb/resources/delete-closed-database-object.js:
* storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js:
* storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js:
* storage/indexeddb/resources/delete-range.js:
* storage/indexeddb/resources/deleteIndex.js:
* storage/indexeddb/resources/deleteObjectStore-name-argument-required.js:
* storage/indexeddb/resources/deleteObjectStore-null-name.js:
* storage/indexeddb/resources/deleted-objects.js:
* storage/indexeddb/resources/deletedatabase-blocked.js:
* storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js:
* storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js:
* storage/indexeddb/resources/deletedatabase-not-blocked.js:
* storage/indexeddb/resources/dont-commit-on-blocked-worker.js:
* storage/indexeddb/resources/dont-wedge.js:
* storage/indexeddb/resources/duplicates.js:
* storage/indexeddb/resources/error-causes-abort-by-default.js:
* storage/indexeddb/resources/events.js:
* storage/indexeddb/resources/exception-in-event-aborts.js:
* storage/indexeddb/resources/exceptions.js:
* storage/indexeddb/resources/factory-basics.js:
* storage/indexeddb/resources/factory-cmp.js:
* storage/indexeddb/resources/factory-deletedatabase.js:
* storage/indexeddb/resources/get-keyrange.js:
* storage/indexeddb/resources/index-basics.js:
* storage/indexeddb/resources/index-count.js:
* storage/indexeddb/resources/index-cursor.js:
* storage/indexeddb/resources/index-duplicate-keypaths.js:
* storage/indexeddb/resources/index-get-key-argument-required.js:
* storage/indexeddb/resources/index-multientry.js:
* storage/indexeddb/resources/index-population.js:
* storage/indexeddb/resources/index-unique.js:
* storage/indexeddb/resources/interfaces.js:
* storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js:
* storage/indexeddb/resources/intversion-bad-parameters.js:
* storage/indexeddb/resources/intversion-blocked.js:
* storage/indexeddb/resources/intversion-close-between-events.js:
* storage/indexeddb/resources/intversion-close-in-oncomplete.js:
* storage/indexeddb/resources/intversion-close-in-upgradeneeded.js:
* storage/indexeddb/resources/intversion-encoding.js:
* storage/indexeddb/resources/intversion-gated-on-delete.js:
* storage/indexeddb/resources/intversion-long-queue.js:
* storage/indexeddb/resources/intversion-omit-parameter.js:
* storage/indexeddb/resources/intversion-open-in-upgradeneeded.js:
* storage/indexeddb/resources/intversion-open-with-version.js:
* storage/indexeddb/resources/intversion-pending-version-changes-ascending.js: Added.
* storage/indexeddb/resources/intversion-pending-version-changes-descending.js: Added.
* storage/indexeddb/resources/intversion-pending-version-changes-same.js: Added.
* storage/indexeddb/resources/intversion-persistence.js:
* storage/indexeddb/resources/intversion-revert-on-abort.js:
* storage/indexeddb/resources/intversion-two-opens-no-versions.js:
* storage/indexeddb/resources/intversion-upgrades.js:
* storage/indexeddb/resources/invalid-keys.js:
* storage/indexeddb/resources/key-generator.js:
* storage/indexeddb/resources/key-sort-order-across-types.js:
* storage/indexeddb/resources/key-sort-order-date.js:
* storage/indexeddb/resources/key-type-array.js:
* storage/indexeddb/resources/key-type-binary.js: Added.
* storage/indexeddb/resources/key-type-infinity.js:
* storage/indexeddb/resources/keypath-arrays.js:
* storage/indexeddb/resources/keypath-basics.js:
* storage/indexeddb/resources/keypath-edges.js:
* storage/indexeddb/resources/keypath-fetch-key.js:
* storage/indexeddb/resources/keypath-intrinsic-properties.js:
* storage/indexeddb/resources/keyrange-required-arguments.js:
* storage/indexeddb/resources/keyrange.js:
* storage/indexeddb/resources/lazy-index-types.js:
* storage/indexeddb/resources/legacy-constants.js:
* storage/indexeddb/resources/list-ordering.js:
* storage/indexeddb/resources/metadata.js:
* storage/indexeddb/resources/mutating-cursor.js:
* storage/indexeddb/resources/objectStore-required-arguments.js:
* storage/indexeddb/resources/objectstore-autoincrement.js:
* storage/indexeddb/resources/objectstore-basics.js:
* storage/indexeddb/resources/objectstore-clear.js:
* storage/indexeddb/resources/objectstore-count.js:
* storage/indexeddb/resources/objectstore-cursor.js:
* storage/indexeddb/resources/objectstore-keycursor.js:
* storage/indexeddb/resources/objectstore-removeobjectstore.js:
* storage/indexeddb/resources/odd-strings.js:
* storage/indexeddb/resources/open-cursor.js:
* storage/indexeddb/resources/open-during-transaction.js:
* storage/indexeddb/resources/open-ordering.js:
* storage/indexeddb/resources/open-twice.js:
* storage/indexeddb/resources/opencursor-key.js:
* storage/indexeddb/resources/pending-activity.js:
* storage/indexeddb/resources/pending-version-change-on-exit.js:
* storage/indexeddb/resources/pending-version-change-stuck.js:
* storage/indexeddb/resources/persistence.js:
* storage/indexeddb/resources/prefetch-bugfix-108071.js:
* storage/indexeddb/resources/queued-commands.js:
* storage/indexeddb/resources/readonly-properties.js:
* storage/indexeddb/resources/readonly.js:
* storage/indexeddb/resources/removed.js:
* storage/indexeddb/resources/request-continue-abort.js:
* storage/indexeddb/resources/request-event-propagation.js:
* storage/indexeddb/resources/set_version_blocked.js:
* storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js:
* storage/indexeddb/resources/setversion-not-blocked.js:
* storage/indexeddb/resources/shared.js:
* storage/indexeddb/resources/transaction-abort.js:
* storage/indexeddb/resources/transaction-active-flag.js:
* storage/indexeddb/resources/transaction-after-close.js:
* storage/indexeddb/resources/transaction-and-objectstore-calls.js:
* storage/indexeddb/resources/transaction-basics.js:
* storage/indexeddb/resources/transaction-complete-workers.js:
* storage/indexeddb/resources/transaction-coordination-across-databases.js:
* storage/indexeddb/resources/transaction-coordination-within-database.js:
* storage/indexeddb/resources/transaction-crash-on-abort.js:
* storage/indexeddb/resources/transaction-error.js:
* storage/indexeddb/resources/transaction-event-propagation.js:
* storage/indexeddb/resources/transaction-read-only.js:
* storage/indexeddb/resources/transaction-readwrite-exclusive.js:
* storage/indexeddb/resources/transaction-rollback.js:
* storage/indexeddb/resources/transaction-scope-sequencing.js:
* storage/indexeddb/resources/transaction-starvation.js:
* storage/indexeddb/resources/transaction-storeNames-required.js:
* storage/indexeddb/resources/unblocked-version-changes.js:
* storage/indexeddb/resources/unprefix.js:
* storage/indexeddb/resources/value-undefined.js:
* storage/indexeddb/resources/values-odd-types.js:
* storage/indexeddb/resources/version-change-abort.js:
* storage/indexeddb/resources/version-change-exclusive.js:
* storage/indexeddb/resources/versionchangerequest-activedomobject.js:
* storage/indexeddb/set_version_blocked.html:
* storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt:
* storage/indexeddb/setversion-blocked-by-versionchange-close.html:
* storage/indexeddb/setversion-not-blocked.html:
* storage/indexeddb/structured-clone-expected.txt:
* storage/indexeddb/structured-clone.html:
* storage/indexeddb/transaction-abort-expected.txt:
* storage/indexeddb/transaction-abort.html:
* storage/indexeddb/transaction-active-flag-expected.txt:
* storage/indexeddb/transaction-active-flag.html:
* storage/indexeddb/transaction-after-close-expected.txt:
* storage/indexeddb/transaction-after-close.html:
* storage/indexeddb/transaction-and-objectstore-calls-expected.txt:
* storage/indexeddb/transaction-and-objectstore-calls.html:
* storage/indexeddb/transaction-basics-expected.txt:
* storage/indexeddb/transaction-basics.html:
* storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html:
* storage/indexeddb/transaction-complete-with-js-recursion.html:
* storage/indexeddb/transaction-complete-workers-expected.txt:
* storage/indexeddb/transaction-complete-workers.html:
* storage/indexeddb/transaction-coordination-across-databases.html:
* storage/indexeddb/transaction-coordination-within-database.html:
* storage/indexeddb/transaction-crash-in-tasks.html:
* storage/indexeddb/transaction-crash-on-abort.html:
* storage/indexeddb/transaction-error-expected.txt:
* storage/indexeddb/transaction-error.html:
* storage/indexeddb/transaction-event-propagation.html:
* storage/indexeddb/transaction-ordering-expected.txt: Added.
* storage/indexeddb/transaction-ordering.html: Added.
* storage/indexeddb/transaction-read-only-expected.txt:
* storage/indexeddb/transaction-read-only.html:
* storage/indexeddb/transaction-readwrite-exclusive.html:
* storage/indexeddb/transaction-rollback.html:
* storage/indexeddb/transaction-scope-sequencing.html:
* storage/indexeddb/transaction-starvation.html:
* storage/indexeddb/transaction-storeNames-required-expected.txt:
* storage/indexeddb/transaction-storeNames-required.html:
* storage/indexeddb/unblocked-version-changes-expected.txt:
* storage/indexeddb/unblocked-version-changes.html:
* storage/indexeddb/unprefix-workers.html:
* storage/indexeddb/unprefix.html:
* storage/indexeddb/value-undefined.html:
* storage/indexeddb/values-odd-types.html:
* storage/indexeddb/version-change-abort-expected.txt:
* storage/indexeddb/version-change-abort.html:
* storage/indexeddb/version-change-exclusive-expected.txt:
* storage/indexeddb/version-change-exclusive.html:
* storage/indexeddb/versionchangerequest-activedomobject.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbabortedversionchangeclosesexpectedtxt">trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbabortedversionchangecloseshtml">trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbbasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbbasicssharedworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbbasicssharedworkershtml">trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbbasicsworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/basics-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbbasicsworkershtml">trunk/LayoutTests/storage/indexeddb/basics-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbbasicshtml">trunk/LayoutTests/storage/indexeddb/basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcloneexceptionexpectedtxt">trunk/LayoutTests/storage/indexeddb/clone-exception-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcloneexceptionhtml">trunk/LayoutTests/storage/indexeddb/clone-exception.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateandremoveobjectstoreexpectedtxt">trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateandremoveobjectstorehtml">trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateobjectstoreoptionsexpectedtxt">trunk/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateobjectstoreoptionshtml">trunk/LayoutTests/storage/indexeddb/create-object-store-options.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateIndexafterfailureexpectedtxt">trunk/LayoutTests/storage/indexeddb/createIndex-after-failure-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateIndexafterfailurehtml">trunk/LayoutTests/storage/indexeddb/createIndex-after-failure.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateObjectStorenameargumentrequiredexpectedtxt">trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateObjectStorenameargumentrequiredhtml">trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcreateObjectStorenullnamehtml">trunk/LayoutTests/storage/indexeddb/createObjectStore-null-name.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursoraddedbughtml">trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursoradvanceexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-advance-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursoradvanceworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursoradvanceworkershtml">trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursoradvancehtml">trunk/LayoutTests/storage/indexeddb/cursor-advance.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinuedirexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-continue-dir-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinuedirhtml">trunk/LayoutTests/storage/indexeddb/cursor-continue-dir.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinueexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-continue-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinuevalidityexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-continue-validity-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinuevalidityhtml">trunk/LayoutTests/storage/indexeddb/cursor-continue-validity.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinuehtml">trunk/LayoutTests/storage/indexeddb/cursor-continue.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursordeletehtml">trunk/LayoutTests/storage/indexeddb/cursor-delete.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorfinishedexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-finished-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorfinishedhtml">trunk/LayoutTests/storage/indexeddb/cursor-finished.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorinconsistencyhtml">trunk/LayoutTests/storage/indexeddb/cursor-inconsistency.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorindexdeletehtml">trunk/LayoutTests/storage/indexeddb/cursor-index-delete.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorkeyorderhtml">trunk/LayoutTests/storage/indexeddb/cursor-key-order.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursoroverloadsexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-overloads-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursoroverloadshtml">trunk/LayoutTests/storage/indexeddb/cursor-overloads.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorprevnoduplicatehtml">trunk/LayoutTests/storage/indexeddb/cursor-prev-no-duplicate.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorprimarykeyorderhtml">trunk/LayoutTests/storage/indexeddb/cursor-primary-key-order.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorpropertieshtml">trunk/LayoutTests/storage/indexeddb/cursor-properties.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorreversebughtml">trunk/LayoutTests/storage/indexeddb/cursor-reverse-bug.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorskipdeletedhtml">trunk/LayoutTests/storage/indexeddb/cursor-skip-deleted.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorupdateexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-update-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorupdatevalueargumentrequiredexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorupdatevalueargumentrequiredhtml">trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorupdatehtml">trunk/LayoutTests/storage/indexeddb/cursor-update.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorvaluehtml">trunk/LayoutTests/storage/indexeddb/cursor-value.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatacorruptionexpectedtxt">trunk/LayoutTests/storage/indexeddb/data-corruption-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatacorruptionhtml">trunk/LayoutTests/storage/indexeddb/data-corruption.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasebasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/database-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasebasicshtml">trunk/LayoutTests/storage/indexeddb/database-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasecloseexpectedtxt">trunk/LayoutTests/storage/indexeddb/database-close-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabaseclosehtml">trunk/LayoutTests/storage/indexeddb/database-close.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabaseclosependingflagexpectedtxt">trunk/LayoutTests/storage/indexeddb/database-closepending-flag-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabaseclosependingflaghtml">trunk/LayoutTests/storage/indexeddb/database-closepending-flag.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasedeletependingflaghtml">trunk/LayoutTests/storage/indexeddb/database-deletepending-flag.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasenameundefinedexpectedtxt">trunk/LayoutTests/storage/indexeddb/database-name-undefined-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasenameundefinedhtml">trunk/LayoutTests/storage/indexeddb/database-name-undefined.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabaseoddnameshtml">trunk/LayoutTests/storage/indexeddb/database-odd-names.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasewrapperexpectedtxt">trunk/LayoutTests/storage/indexeddb/database-wrapper-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdatabasewrapperhtml">trunk/LayoutTests/storage/indexeddb/database-wrapper.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletecloseddatabaseobjectexpectedtxt">trunk/LayoutTests/storage/indexeddb/delete-closed-database-object-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletecloseddatabaseobjecthtml">trunk/LayoutTests/storage/indexeddb/delete-closed-database-object.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteinupgradeneededcloseinopensuccesshtml">trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteinupgradeneededcloseinversionchangeexpectedtxt">trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteinupgradeneededcloseinversionchangehtml">trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleterangehtml">trunk/LayoutTests/storage/indexeddb/delete-range.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteIndexbug110792expectedtxt">trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteIndexbug110792html">trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteIndexexpectedtxt">trunk/LayoutTests/storage/indexeddb/deleteIndex-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteIndexhtml">trunk/LayoutTests/storage/indexeddb/deleteIndex.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteObjectStorenameargumentrequiredexpectedtxt">trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteObjectStorenameargumentrequiredhtml">trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeleteObjectStorenullnamehtml">trunk/LayoutTests/storage/indexeddb/deleteObjectStore-null-name.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedobjectsexpectedtxt">trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedobjectshtml">trunk/LayoutTests/storage/indexeddb/deleted-objects.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedatabaseblockedhtml">trunk/LayoutTests/storage/indexeddb/deletedatabase-blocked.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyopenandversionchangeworkershtml">trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyopenandversionchangehtml">trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyversionchangeexpectedtxt">trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyversionchangehtml">trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedatabasenotblockedhtml">trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdeletedatabasetransactionhtml">trunk/LayoutTests/storage/indexeddb/deletedatabase-transaction.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdontcommitonblockedhtml">trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdontwedgehtml">trunk/LayoutTests/storage/indexeddb/dont-wedge.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbduplicateshtml">trunk/LayoutTests/storage/indexeddb/duplicates.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddberrorcausesabortbydefaulthtml">trunk/LayoutTests/storage/indexeddb/error-causes-abort-by-default.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbeventsexpectedtxt">trunk/LayoutTests/storage/indexeddb/events-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbeventshtml">trunk/LayoutTests/storage/indexeddb/events.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbexceptionineventabortsexpectedtxt">trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbexceptionineventabortshtml">trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbexceptionsexpectedtxt">trunk/LayoutTests/storage/indexeddb/exceptions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbexceptionshtml">trunk/LayoutTests/storage/indexeddb/exceptions.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorybasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/factory-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorybasicsworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/factory-basics-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorybasicsworkershtml">trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorybasicshtml">trunk/LayoutTests/storage/indexeddb/factory-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorycmpexpectedtxt">trunk/LayoutTests/storage/indexeddb/factory-cmp-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorycmphtml">trunk/LayoutTests/storage/indexeddb/factory-cmp.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorydeletedatabasehtml">trunk/LayoutTests/storage/indexeddb/factory-deletedatabase.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbgetkeyrangeexpectedtxt">trunk/LayoutTests/storage/indexeddb/get-keyrange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbgetkeyrangehtml">trunk/LayoutTests/storage/indexeddb/get-keyrange.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexbasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/index-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexbasicsworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexbasicsworkershtml">trunk/LayoutTests/storage/indexeddb/index-basics-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexbasicshtml">trunk/LayoutTests/storage/indexeddb/index-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexcountexpectedtxt">trunk/LayoutTests/storage/indexeddb/index-count-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexcounthtml">trunk/LayoutTests/storage/indexeddb/index-count.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexcursorhtml">trunk/LayoutTests/storage/indexeddb/index-cursor.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexduplicatekeypathshtml">trunk/LayoutTests/storage/indexeddb/index-duplicate-keypaths.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexgetkeyargumentrequiredexpectedtxt">trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexgetkeyargumentrequiredhtml">trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexmultientryhtml">trunk/LayoutTests/storage/indexeddb/index-multientry.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexpopulationhtml">trunk/LayoutTests/storage/indexeddb/index-population.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbindexuniquehtml">trunk/LayoutTests/storage/indexeddb/index-unique.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbinterfaceshtml">trunk/LayoutTests/storage/indexeddb/interfaces.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionabortininitialupgradeneededhtml">trunk/LayoutTests/storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionbadparametersexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionbadparametershtml">trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionblockedhtml">trunk/LayoutTests/storage/indexeddb/intversion-blocked.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionclosebetweeneventshtml">trunk/LayoutTests/storage/indexeddb/intversion-close-between-events.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversioncloseinoncompleteexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversioncloseinoncompletehtml">trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversioncloseinupgradeneededexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversioncloseinupgradeneededhtml">trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionencodinghtml">trunk/LayoutTests/storage/indexeddb/intversion-encoding.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversiongatedondeletehtml">trunk/LayoutTests/storage/indexeddb/intversion-gated-on-delete.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionlongqueueexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionlongqueuehtml">trunk/LayoutTests/storage/indexeddb/intversion-long-queue.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionomitparameterhtml">trunk/LayoutTests/storage/indexeddb/intversion-omit-parameter.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionopeninupgradeneededhtml">trunk/LayoutTests/storage/indexeddb/intversion-open-in-upgradeneeded.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionopenwithversionhtml">trunk/LayoutTests/storage/indexeddb/intversion-open-with-version.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionpersistencehtml">trunk/LayoutTests/storage/indexeddb/intversion-persistence.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionrevertonaborthtml">trunk/LayoutTests/storage/indexeddb/intversion-revert-on-abort.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversiontwoopensnoversionshtml">trunk/LayoutTests/storage/indexeddb/intversion-two-opens-no-versions.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionupgradesexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-upgrades-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionupgradeshtml">trunk/LayoutTests/storage/indexeddb/intversion-upgrades.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbinvalidkeysexpectedtxt">trunk/LayoutTests/storage/indexeddb/invalid-keys-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbinvalidkeyshtml">trunk/LayoutTests/storage/indexeddb/invalid-keys.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeygeneratorhtml">trunk/LayoutTests/storage/indexeddb/key-generator.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeysortorderacrosstypeshtml">trunk/LayoutTests/storage/indexeddb/key-sort-order-across-types.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeysortorderdatehtml">trunk/LayoutTests/storage/indexeddb/key-sort-order-date.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeytypearrayexpectedtxt">trunk/LayoutTests/storage/indexeddb/key-type-array-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeytypearrayhtml">trunk/LayoutTests/storage/indexeddb/key-type-array.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeytypeinfinityhtml">trunk/LayoutTests/storage/indexeddb/key-type-infinity.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypatharraysexpectedtxt">trunk/LayoutTests/storage/indexeddb/keypath-arrays-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypatharrayshtml">trunk/LayoutTests/storage/indexeddb/keypath-arrays.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypathbasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypathbasicshtml">trunk/LayoutTests/storage/indexeddb/keypath-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypathedgesexpectedtxt">trunk/LayoutTests/storage/indexeddb/keypath-edges-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypathedgeshtml">trunk/LayoutTests/storage/indexeddb/keypath-edges.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypathfetchkeyhtml">trunk/LayoutTests/storage/indexeddb/keypath-fetch-key.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeypathintrinsicpropertieshtml">trunk/LayoutTests/storage/indexeddb/keypath-intrinsic-properties.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeyrangeexpectedtxt">trunk/LayoutTests/storage/indexeddb/keyrange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeyrangerequiredargumentsexpectedtxt">trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeyrangerequiredargumentshtml">trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeyrangehtml">trunk/LayoutTests/storage/indexeddb/keyrange.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddblazyindexpopulationexpectedtxt">trunk/LayoutTests/storage/indexeddb/lazy-index-population-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddblazyindexpopulationhtml">trunk/LayoutTests/storage/indexeddb/lazy-index-population.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddblazyindextypeshtml">trunk/LayoutTests/storage/indexeddb/lazy-index-types.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddblegacyconstantshtml">trunk/LayoutTests/storage/indexeddb/legacy-constants.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddblistorderinghtml">trunk/LayoutTests/storage/indexeddb/list-ordering.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmetadatahtml">trunk/LayoutTests/storage/indexeddb/metadata.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaaddtwicefailurehtml">trunk/LayoutTests/storage/indexeddb/mozilla/add-twice-failure.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaautoincrementindexeshtml">trunk/LayoutTests/storage/indexeddb/mozilla/autoincrement-indexes.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillabadkeypathexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillabadkeypathhtml">trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaclearexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/clear-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaclearhtml">trunk/LayoutTests/storage/indexeddb/mozilla/clear.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacreateindexuniquehtml">trunk/LayoutTests/storage/indexeddb/mozilla/create-index-unique.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacreateindexwithintegerkeyshtml">trunk/LayoutTests/storage/indexeddb/mozilla/create-index-with-integer-keys.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacreateobjectstorebasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacreateobjectstorebasicshtml">trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacreateobjectstorenullnamehtml">trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-null-name.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacursormutationobjectstoreonlyhtml">trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation-objectstore-only.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacursormutationhtml">trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacursorupdateupdatesindexeshtml">trunk/LayoutTests/storage/indexeddb/mozilla/cursor-update-updates-indexes.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacursorsexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/cursors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillacursorshtml">trunk/LayoutTests/storage/indexeddb/mozilla/cursors.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozilladeleteresulthtml">trunk/LayoutTests/storage/indexeddb/mozilla/delete-result.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaeventsourcehtml">trunk/LayoutTests/storage/indexeddb/mozilla/event-source.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaglobaldatahtml">trunk/LayoutTests/storage/indexeddb/mozilla/global-data.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaindexprevnoduplicatehtml">trunk/LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaindexeshtml">trunk/LayoutTests/storage/indexeddb/mozilla/indexes.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsdeletenullkeyexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsdeletenullkeyhtml">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsinlineandpassedexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsinlineandpassedhtml">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnokeyexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnokeyhtml">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnullkeyexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnullkeyhtml">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillakeyrequirementshtml">trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaobjectcursorshtml">trunk/LayoutTests/storage/indexeddb/mozilla/object-cursors.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaobjectidentityhtml">trunk/LayoutTests/storage/indexeddb/mozilla/object-identity.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaobjectstoreinlineautoincrementkeyaddedonputhtml">trunk/LayoutTests/storage/indexeddb/mozilla/object-store-inline-autoincrement-key-added-on-put.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaobjectstoreremovevalueshtml">trunk/LayoutTests/storage/indexeddb/mozilla/object-store-remove-values.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaobjectstorenameshtml">trunk/LayoutTests/storage/indexeddb/mozilla/objectstorenames.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaoddresultorderhtml">trunk/LayoutTests/storage/indexeddb/mozilla/odd-result-order.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaopendatabasenullnamehtml">trunk/LayoutTests/storage/indexeddb/mozilla/open-database-null-name.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaputgetvalueshtml">trunk/LayoutTests/storage/indexeddb/mozilla/put-get-values.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillareadonlytransactionsexpectedtxt">trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillareadonlytransactionshtml">trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillareadwritetransactionshtml">trunk/LayoutTests/storage/indexeddb/mozilla/readwrite-transactions.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillareadyStatehtml">trunk/LayoutTests/storage/indexeddb/mozilla/readyState.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaremoveindexhtml">trunk/LayoutTests/storage/indexeddb/mozilla/remove-index.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaremoveobjectstorehtml">trunk/LayoutTests/storage/indexeddb/mozilla/remove-objectstore.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesaddtwicefailurejs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/add-twice-failure.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesautoincrementindexesjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/autoincrement-indexes.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesbadkeypathjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/bad-keypath.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesclearjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/clear.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescreateindexuniquejs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-unique.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescreateindexwithintegerkeysjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-with-integer-keys.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescreateobjectstorebasicsjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescreateobjectstorenullnamejs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-null-name.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescursormutationobjectstoreonlyjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation-objectstore-only.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescursormutationjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescursorupdateupdatesindexesjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-update-updates-indexes.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcescursorsjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursors.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesdeleteresultjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/delete-result.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourceseventsourcejs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/event-source.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesglobaldatajs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/global-data.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesindexesjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/indexes.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsdeletenullkeyjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-delete-null-key.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsinlineandpassedjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-inline-and-passed.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsputnokeyjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-no-key.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsputnullkeyjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-null-key.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesobjectcursorsjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-cursors.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesobjectidentityjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-identity.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesobjectstoreinlineautoincrementkeyaddedonputjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-inline-autoincrement-key-added-on-put.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesobjectstoreremovevaluesjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-remove-values.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesobjectstorenamesjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/objectstorenames.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesoddresultorderjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/odd-result-order.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesopendatabasenullnamejs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/open-database-null-name.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesputgetvaluesjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/put-get-values.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesreadonlytransactionsjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/readonly-transactions.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesreadwritetransactionsjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/readwrite-transactions.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesreadyStatejs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/readyState.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesremoveindexjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-index.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesremoveobjectstorejs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-objectstore.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaresourcesversionchangeabortjs">trunk/LayoutTests/storage/indexeddb/mozilla/resources/versionchange-abort.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmozillaversionchangeaborthtml">trunk/LayoutTests/storage/indexeddb/mozilla/versionchange-abort.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmutatingcursorhtml">trunk/LayoutTests/storage/indexeddb/mutating-cursor.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbnoblobsexpectedtxt">trunk/LayoutTests/storage/indexeddb/noblobs-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbnoblobshtml">trunk/LayoutTests/storage/indexeddb/noblobs.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectlookupsinversionchangeexpectedtxt">trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectlookupsinversionchangehtml">trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectStorerequiredargumentsexpectedtxt">trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectStorerequiredargumentshtml">trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstoreautoincrementexpectedtxt">trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstoreautoincrementhtml">trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorebasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorebasicsworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorebasicsworkershtml">trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorebasicshtml">trunk/LayoutTests/storage/indexeddb/objectstore-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstoreclearhtml">trunk/LayoutTests/storage/indexeddb/objectstore-clear.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorecountexpectedtxt">trunk/LayoutTests/storage/indexeddb/objectstore-count-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorecounthtml">trunk/LayoutTests/storage/indexeddb/objectstore-count.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorecursorexpectedtxt">trunk/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorecursorhtml">trunk/LayoutTests/storage/indexeddb/objectstore-cursor.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstoreremoveobjectstorehtml">trunk/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddboddstringshtml">trunk/LayoutTests/storage/indexeddb/odd-strings.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbopenbadversionshtml">trunk/LayoutTests/storage/indexeddb/open-bad-versions.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbopencursorexpectedtxt">trunk/LayoutTests/storage/indexeddb/open-cursor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbopencursorhtml">trunk/LayoutTests/storage/indexeddb/open-cursor.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbopenduringtransactionhtml">trunk/LayoutTests/storage/indexeddb/open-during-transaction.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbopenorderinghtml">trunk/LayoutTests/storage/indexeddb/open-ordering.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbopentwiceworkershtml">trunk/LayoutTests/storage/indexeddb/open-twice-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbopencursorkeyhtml">trunk/LayoutTests/storage/indexeddb/opencursor-key.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingactivityworkershtml">trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingactivityhtml">trunk/LayoutTests/storage/indexeddb/pending-activity.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingversionchangeonexithtml">trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingversionchangestuckworkswithterminatehtml">trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingversionchangestuckhtml">trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpersistencehtml">trunk/LayoutTests/storage/indexeddb/persistence.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbprefetchbugfix108071expectedtxt">trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbprefetchbugfix108071html">trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbqueuedcommandshtml">trunk/LayoutTests/storage/indexeddb/queued-commands.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbreadonlypropertieshtml">trunk/LayoutTests/storage/indexeddb/readonly-properties.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbreadonlyhtml">trunk/LayoutTests/storage/indexeddb/readonly.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbremovedexpectedtxt">trunk/LayoutTests/storage/indexeddb/removed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbremovedhtml">trunk/LayoutTests/storage/indexeddb/removed.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbrequestcontinueaborthtml">trunk/LayoutTests/storage/indexeddb/request-continue-abort.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbrequesteventpropagationhtml">trunk/LayoutTests/storage/indexeddb/request-event-propagation.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesabortedversionchangeclosesjs">trunk/LayoutTests/storage/indexeddb/resources/aborted-versionchange-closes.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesbasicsjs">trunk/LayoutTests/storage/indexeddb/resources/basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescreateandremoveobjectstorejs">trunk/LayoutTests/storage/indexeddb/resources/create-and-remove-object-store.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescreateobjectstoreoptionsjs">trunk/LayoutTests/storage/indexeddb/resources/create-object-store-options.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescreateIndexafterfailurejs">trunk/LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescreateObjectStorenameargumentrequiredjs">trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-name-argument-required.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescreateObjectStorenullnamejs">trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-null-name.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursoraddedbugjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursoradvancejs">trunk/LayoutTests/storage/indexeddb/resources/cursor-advance.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorcontinuedirjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-dir.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorcontinuevalidityjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-validity.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorcontinuejs">trunk/LayoutTests/storage/indexeddb/resources/cursor-continue.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursordeletejs">trunk/LayoutTests/storage/indexeddb/resources/cursor-delete.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorinconsistencyjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-inconsistency.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorindexdeletejs">trunk/LayoutTests/storage/indexeddb/resources/cursor-index-delete.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorkeyorderjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-key-order.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorprevnoduplicatejs">trunk/LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorprimarykeyorderjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-primary-key-order.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorpropertiesjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-properties.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorreversebugjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-reverse-bug.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorskipdeletedjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-skip-deleted.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorupdatevalueargumentrequiredjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-update-value-argument-required.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorupdatejs">trunk/LayoutTests/storage/indexeddb/resources/cursor-update.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorvaluejs">trunk/LayoutTests/storage/indexeddb/resources/cursor-value.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatacorruptionjs">trunk/LayoutTests/storage/indexeddb/resources/data-corruption.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabasebasicsjs">trunk/LayoutTests/storage/indexeddb/resources/database-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabaseclosejs">trunk/LayoutTests/storage/indexeddb/resources/database-close.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabaseclosependingflagjs">trunk/LayoutTests/storage/indexeddb/resources/database-closepending-flag.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabasedeletependingflagjs">trunk/LayoutTests/storage/indexeddb/resources/database-deletepending-flag.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabasenameundefinedjs">trunk/LayoutTests/storage/indexeddb/resources/database-name-undefined.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabaseoddnamesjs">trunk/LayoutTests/storage/indexeddb/resources/database-odd-names.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabasequotajs">trunk/LayoutTests/storage/indexeddb/resources/database-quota.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdatabasewrapperjs">trunk/LayoutTests/storage/indexeddb/resources/database-wrapper.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeletecloseddatabaseobjectjs">trunk/LayoutTests/storage/indexeddb/resources/delete-closed-database-object.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeleteinupgradeneededcloseinopensuccessjs">trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeleteinupgradeneededcloseinversionchangejs">trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeleterangejs">trunk/LayoutTests/storage/indexeddb/resources/delete-range.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeleteIndexjs">trunk/LayoutTests/storage/indexeddb/resources/deleteIndex.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeleteObjectStorenameargumentrequiredjs">trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-name-argument-required.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeleteObjectStorenullnamejs">trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-null-name.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeletedobjectsjs">trunk/LayoutTests/storage/indexeddb/resources/deleted-objects.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeletedatabaseblockedjs">trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-blocked.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeletedatabasedelayedbyopenandversionchangejs">trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeletedatabasedelayedbyversionchangejs">trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdeletedatabasenotblockedjs">trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdontcommitonblockedworkerjs">trunk/LayoutTests/storage/indexeddb/resources/dont-commit-on-blocked-worker.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesdontwedgejs">trunk/LayoutTests/storage/indexeddb/resources/dont-wedge.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesduplicatesjs">trunk/LayoutTests/storage/indexeddb/resources/duplicates.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceserrorcausesabortbydefaultjs">trunk/LayoutTests/storage/indexeddb/resources/error-causes-abort-by-default.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceseventsjs">trunk/LayoutTests/storage/indexeddb/resources/events.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesexceptionineventabortsjs">trunk/LayoutTests/storage/indexeddb/resources/exception-in-event-aborts.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesexceptionsjs">trunk/LayoutTests/storage/indexeddb/resources/exceptions.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesfactorybasicsjs">trunk/LayoutTests/storage/indexeddb/resources/factory-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesfactorycmpjs">trunk/LayoutTests/storage/indexeddb/resources/factory-cmp.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesfactorydeletedatabasejs">trunk/LayoutTests/storage/indexeddb/resources/factory-deletedatabase.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesgetkeyrangejs">trunk/LayoutTests/storage/indexeddb/resources/get-keyrange.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexbasicsjs">trunk/LayoutTests/storage/indexeddb/resources/index-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexcountjs">trunk/LayoutTests/storage/indexeddb/resources/index-count.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexcursorjs">trunk/LayoutTests/storage/indexeddb/resources/index-cursor.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexduplicatekeypathsjs">trunk/LayoutTests/storage/indexeddb/resources/index-duplicate-keypaths.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexgetkeyargumentrequiredjs">trunk/LayoutTests/storage/indexeddb/resources/index-get-key-argument-required.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexmultientryjs">trunk/LayoutTests/storage/indexeddb/resources/index-multientry.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexpopulationjs">trunk/LayoutTests/storage/indexeddb/resources/index-population.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesindexuniquejs">trunk/LayoutTests/storage/indexeddb/resources/index-unique.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesinterfacesjs">trunk/LayoutTests/storage/indexeddb/resources/interfaces.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionabortininitialupgradeneededjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionbadparametersjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-bad-parameters.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionblockedjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-blocked.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionclosebetweeneventsjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-close-between-events.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversioncloseinoncompletejs">trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-oncomplete.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversioncloseinupgradeneededjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-upgradeneeded.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionencodingjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-encoding.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversiongatedondeletejs">trunk/LayoutTests/storage/indexeddb/resources/intversion-gated-on-delete.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionlongqueuejs">trunk/LayoutTests/storage/indexeddb/resources/intversion-long-queue.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionomitparameterjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-omit-parameter.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionopeninupgradeneededjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-open-in-upgradeneeded.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionopenwithversionjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-open-with-version.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionpersistencejs">trunk/LayoutTests/storage/indexeddb/resources/intversion-persistence.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionrevertonabortjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-revert-on-abort.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversiontwoopensnoversionsjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-two-opens-no-versions.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionupgradesjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-upgrades.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesinvalidkeysjs">trunk/LayoutTests/storage/indexeddb/resources/invalid-keys.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeygeneratorjs">trunk/LayoutTests/storage/indexeddb/resources/key-generator.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeysortorderacrosstypesjs">trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-across-types.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeysortorderdatejs">trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-date.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeytypearrayjs">trunk/LayoutTests/storage/indexeddb/resources/key-type-array.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeytypeinfinityjs">trunk/LayoutTests/storage/indexeddb/resources/key-type-infinity.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeypatharraysjs">trunk/LayoutTests/storage/indexeddb/resources/keypath-arrays.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeypathbasicsjs">trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeypathedgesjs">trunk/LayoutTests/storage/indexeddb/resources/keypath-edges.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeypathfetchkeyjs">trunk/LayoutTests/storage/indexeddb/resources/keypath-fetch-key.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeypathintrinsicpropertiesjs">trunk/LayoutTests/storage/indexeddb/resources/keypath-intrinsic-properties.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeyrangerequiredargumentsjs">trunk/LayoutTests/storage/indexeddb/resources/keyrange-required-arguments.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeyrangejs">trunk/LayoutTests/storage/indexeddb/resources/keyrange.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceslazyindextypesjs">trunk/LayoutTests/storage/indexeddb/resources/lazy-index-types.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceslegacyconstantsjs">trunk/LayoutTests/storage/indexeddb/resources/legacy-constants.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceslistorderingjs">trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesmetadatajs">trunk/LayoutTests/storage/indexeddb/resources/metadata.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesmutatingcursorjs">trunk/LayoutTests/storage/indexeddb/resources/mutating-cursor.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectStorerequiredargumentsjs">trunk/LayoutTests/storage/indexeddb/resources/objectStore-required-arguments.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectstoreautoincrementjs">trunk/LayoutTests/storage/indexeddb/resources/objectstore-autoincrement.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectstorebasicsjs">trunk/LayoutTests/storage/indexeddb/resources/objectstore-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectstoreclearjs">trunk/LayoutTests/storage/indexeddb/resources/objectstore-clear.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectstorecountjs">trunk/LayoutTests/storage/indexeddb/resources/objectstore-count.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectstorecursorjs">trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectstoreremoveobjectstorejs">trunk/LayoutTests/storage/indexeddb/resources/objectstore-removeobjectstore.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesoddstringsjs">trunk/LayoutTests/storage/indexeddb/resources/odd-strings.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesopencursorjs">trunk/LayoutTests/storage/indexeddb/resources/open-cursor.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesopenduringtransactionjs">trunk/LayoutTests/storage/indexeddb/resources/open-during-transaction.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesopenorderingjs">trunk/LayoutTests/storage/indexeddb/resources/open-ordering.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesopentwicejs">trunk/LayoutTests/storage/indexeddb/resources/open-twice.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesopencursorkeyjs">trunk/LayoutTests/storage/indexeddb/resources/opencursor-key.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcespendingactivityjs">trunk/LayoutTests/storage/indexeddb/resources/pending-activity.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcespendingversionchangeonexitjs">trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-on-exit.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcespendingversionchangestuckjs">trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-stuck.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcespersistencejs">trunk/LayoutTests/storage/indexeddb/resources/persistence.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesprefetchbugfix108071js">trunk/LayoutTests/storage/indexeddb/resources/prefetch-bugfix-108071.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesqueuedcommandsjs">trunk/LayoutTests/storage/indexeddb/resources/queued-commands.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesreadonlypropertiesjs">trunk/LayoutTests/storage/indexeddb/resources/readonly-properties.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesreadonlyjs">trunk/LayoutTests/storage/indexeddb/resources/readonly.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesremovedjs">trunk/LayoutTests/storage/indexeddb/resources/removed.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesrequestcontinueabortjs">trunk/LayoutTests/storage/indexeddb/resources/request-continue-abort.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesrequesteventpropagationjs">trunk/LayoutTests/storage/indexeddb/resources/request-event-propagation.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesset_version_blockedjs">trunk/LayoutTests/storage/indexeddb/resources/set_version_blocked.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcessetversionblockedbyversionchangeclosejs">trunk/LayoutTests/storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcessetversionnotblockedjs">trunk/LayoutTests/storage/indexeddb/resources/setversion-not-blocked.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcessharedjs">trunk/LayoutTests/storage/indexeddb/resources/shared.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionabortjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-abort.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionactiveflagjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-active-flag.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionafterclosejs">trunk/LayoutTests/storage/indexeddb/resources/transaction-after-close.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionandobjectstorecallsjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-and-objectstore-calls.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionbasicsjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactioncompleteworkersjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-complete-workers.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactioncoordinationacrossdatabasesjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactioncoordinationwithindatabasejs">trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-within-database.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactioncrashonabortjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-crash-on-abort.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionerrorjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-error.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactioneventpropagationjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-event-propagation.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionreadonlyjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-read-only.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionreadwriteexclusivejs">trunk/LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionrollbackjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-rollback.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionscopesequencingjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-scope-sequencing.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionstarvationjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-starvation.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcestransactionstoreNamesrequiredjs">trunk/LayoutTests/storage/indexeddb/resources/transaction-storeNames-required.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesunblockedversionchangesjs">trunk/LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesunprefixjs">trunk/LayoutTests/storage/indexeddb/resources/unprefix.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesvalueundefinedjs">trunk/LayoutTests/storage/indexeddb/resources/value-undefined.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesvaluesoddtypesjs">trunk/LayoutTests/storage/indexeddb/resources/values-odd-types.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesversionchangeabortjs">trunk/LayoutTests/storage/indexeddb/resources/version-change-abort.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesversionchangeexclusivejs">trunk/LayoutTests/storage/indexeddb/resources/version-change-exclusive.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesversionchangerequestactivedomobjectjs">trunk/LayoutTests/storage/indexeddb/resources/versionchangerequest-activedomobject.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbset_version_blockedhtml">trunk/LayoutTests/storage/indexeddb/set_version_blocked.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbsetversionblockedbyversionchangecloseexpectedtxt">trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbsetversionblockedbyversionchangeclosehtml">trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbsetversionnotblockedhtml">trunk/LayoutTests/storage/indexeddb/setversion-not-blocked.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbstructuredcloneexpectedtxt">trunk/LayoutTests/storage/indexeddb/structured-clone-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbstructuredclonehtml">trunk/LayoutTests/storage/indexeddb/structured-clone.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionabortexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-abort-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionaborthtml">trunk/LayoutTests/storage/indexeddb/transaction-abort.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionactiveflagexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-active-flag-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionactiveflaghtml">trunk/LayoutTests/storage/indexeddb/transaction-active-flag.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionaftercloseexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-after-close-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionafterclosehtml">trunk/LayoutTests/storage/indexeddb/transaction-after-close.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionandobjectstorecallsexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionandobjectstorecallshtml">trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionbasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionbasicshtml">trunk/LayoutTests/storage/indexeddb/transaction-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncompletewithjsrecursioncrossframehtml">trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncompletewithjsrecursionhtml">trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncompleteworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncompleteworkershtml">trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncoordinationacrossdatabaseshtml">trunk/LayoutTests/storage/indexeddb/transaction-coordination-across-databases.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncoordinationwithindatabasehtml">trunk/LayoutTests/storage/indexeddb/transaction-coordination-within-database.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncrashintaskshtml">trunk/LayoutTests/storage/indexeddb/transaction-crash-in-tasks.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncrashonaborthtml">trunk/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionerrorexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-error-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionerrorhtml">trunk/LayoutTests/storage/indexeddb/transaction-error.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioneventpropagationhtml">trunk/LayoutTests/storage/indexeddb/transaction-event-propagation.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionreadonlyexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-read-only-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionreadonlyhtml">trunk/LayoutTests/storage/indexeddb/transaction-read-only.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionreadwriteexclusivehtml">trunk/LayoutTests/storage/indexeddb/transaction-readwrite-exclusive.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionrollbackhtml">trunk/LayoutTests/storage/indexeddb/transaction-rollback.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionscopesequencinghtml">trunk/LayoutTests/storage/indexeddb/transaction-scope-sequencing.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionstarvationhtml">trunk/LayoutTests/storage/indexeddb/transaction-starvation.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionstoreNamesrequiredexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionstoreNamesrequiredhtml">trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbunblockedversionchangesexpectedtxt">trunk/LayoutTests/storage/indexeddb/unblocked-version-changes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbunblockedversionchangeshtml">trunk/LayoutTests/storage/indexeddb/unblocked-version-changes.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbunprefixworkershtml">trunk/LayoutTests/storage/indexeddb/unprefix-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbunprefixhtml">trunk/LayoutTests/storage/indexeddb/unprefix.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbvalueundefinedhtml">trunk/LayoutTests/storage/indexeddb/value-undefined.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbvaluesoddtypeshtml">trunk/LayoutTests/storage/indexeddb/values-odd-types.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbversionchangeabortexpectedtxt">trunk/LayoutTests/storage/indexeddb/version-change-abort-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbversionchangeaborthtml">trunk/LayoutTests/storage/indexeddb/version-change-abort.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbversionchangeexclusiveexpectedtxt">trunk/LayoutTests/storage/indexeddb/version-change-exclusive-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbversionchangeexclusivehtml">trunk/LayoutTests/storage/indexeddb/version-change-exclusive.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbversionchangerequestactivedomobjecthtml">trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsresourcesjstestjs">trunk/LayoutTests/resources/js-test.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbclosedcursorexpectedtxt">trunk/LayoutTests/storage/indexeddb/closed-cursor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbclosedcursorhtml">trunk/LayoutTests/storage/indexeddb/closed-cursor.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbconnectionleakexpectedtxt">trunk/LayoutTests/storage/indexeddb/connection-leak-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbconnectionleakhtml">trunk/LayoutTests/storage/indexeddb/connection-leak.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorbasicsexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-basics-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorbasicshtml">trunk/LayoutTests/storage/indexeddb/cursor-basics.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcastexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-cast-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcasthtml">trunk/LayoutTests/storage/indexeddb/cursor-cast.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinueprimarykeyexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorcontinueprimarykeyhtml">trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorleakexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-leak-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorleakhtml">trunk/LayoutTests/storage/indexeddb/cursor-leak.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorrequestcycleexpectedtxt">trunk/LayoutTests/storage/indexeddb/cursor-request-cycle-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbcursorrequestcyclehtml">trunk/LayoutTests/storage/indexeddb/cursor-request-cycle.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionpendingversionchangesascendingexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionpendingversionchangesascendinghtml">trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionpendingversionchangesdescendingexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionpendingversionchangesdescendinghtml">trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionpendingversionchangessameexpectedtxt">trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbintversionpendingversionchangessamehtml">trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeytypebinaryexpectedtxt">trunk/LayoutTests/storage/indexeddb/key-type-binary-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbkeytypebinaryhtml">trunk/LayoutTests/storage/indexeddb/key-type-binary.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmetadataraceexpectedtxt">trunk/LayoutTests/storage/indexeddb/metadata-race-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbmetadataracehtml">trunk/LayoutTests/storage/indexeddb/metadata-race.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorekeycursorexpectedtxt">trunk/LayoutTests/storage/indexeddb/objectstore-keycursor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbobjectstorekeycursorhtml">trunk/LayoutTests/storage/indexeddb/objectstore-keycursor.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddboptionalargumentsexpectedtxt">trunk/LayoutTests/storage/indexeddb/optional-arguments-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddboptionalargumentshtml">trunk/LayoutTests/storage/indexeddb/optional-arguments.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbprefetchinvalidationexpectedtxt">trunk/LayoutTests/storage/indexeddb/prefetch-invalidation-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbprefetchinvalidationhtml">trunk/LayoutTests/storage/indexeddb/prefetch-invalidation.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbprefetchraceexpectedtxt">trunk/LayoutTests/storage/indexeddb/prefetch-race-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbprefetchracehtml">trunk/LayoutTests/storage/indexeddb/prefetch-race.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbrequestleakexpectedtxt">trunk/LayoutTests/storage/indexeddb/request-leak-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbrequestleakhtml">trunk/LayoutTests/storage/indexeddb/request-leak.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbrequestresultcacheexpectedtxt">trunk/LayoutTests/storage/indexeddb/request-result-cache-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbrequestresultcachehtml">trunk/LayoutTests/storage/indexeddb/request-result-cache.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorbasicsjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-basics.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcescursorcontinueprimarykeyjs">trunk/LayoutTests/storage/indexeddb/resources/cursor-continueprimarykey.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionpendingversionchangesascendingjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-ascending.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionpendingversionchangesdescendingjs">trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-descending.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesintversionpendingversionchangessamejs">trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-same.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourceskeytypebinaryjs">trunk/LayoutTests/storage/indexeddb/resources/key-type-binary.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbresourcesobjectstorekeycursorjs">trunk/LayoutTests/storage/indexeddb/resources/objectstore-keycursor.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionorderingexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-ordering-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactionorderinghtml">trunk/LayoutTests/storage/indexeddb/transaction-ordering.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/ChangeLog        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,3 +1,548 @@
</span><ins>+2014-02-12  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        IDB: Reimport storage/indexeddb tests from Blink
+        https://bugs.webkit.org/show_bug.cgi?id=128636
+
+        Rubberstamped by Jer Noble.
+
+        Take two.
+
+        When I did this last night in r163923 the Mozilla tests outputted different results
+        because one of the logging functions they made had become more verbose.
+
+        This time we include the new test expectations for those tests, and update them to
+        reflect the different exception message outputted in WebKit vs Blink.
+
+        * resources/js-test.js: Added.
+        * storage/indexeddb/aborted-versionchange-closes-expected.txt:
+        * storage/indexeddb/aborted-versionchange-closes.html:
+        * storage/indexeddb/basics-expected.txt:
+        * storage/indexeddb/basics-shared-workers-expected.txt:
+        * storage/indexeddb/basics-shared-workers.html:
+        * storage/indexeddb/basics-workers-expected.txt:
+        * storage/indexeddb/basics-workers.html:
+        * storage/indexeddb/basics.html:
+        * storage/indexeddb/clone-exception-expected.txt:
+        * storage/indexeddb/clone-exception.html:
+        * storage/indexeddb/closed-cursor-expected.txt: Added.
+        * storage/indexeddb/closed-cursor.html: Added.
+        * storage/indexeddb/connection-leak-expected.txt: Added.
+        * storage/indexeddb/connection-leak.html: Added.
+        * storage/indexeddb/create-and-remove-object-store-expected.txt:
+        * storage/indexeddb/create-and-remove-object-store.html:
+        * storage/indexeddb/create-object-store-options-expected.txt:
+        * storage/indexeddb/create-object-store-options.html:
+        * storage/indexeddb/createIndex-after-failure-expected.txt:
+        * storage/indexeddb/createIndex-after-failure.html:
+        * storage/indexeddb/createObjectStore-name-argument-required-expected.txt:
+        * storage/indexeddb/createObjectStore-name-argument-required.html:
+        * storage/indexeddb/createObjectStore-null-name.html:
+        * storage/indexeddb/cursor-added-bug.html:
+        * storage/indexeddb/cursor-advance-expected.txt:
+        * storage/indexeddb/cursor-advance-workers-expected.txt:
+        * storage/indexeddb/cursor-advance-workers.html:
+        * storage/indexeddb/cursor-advance.html:
+        * storage/indexeddb/cursor-basics-expected.txt: Added.
+        * storage/indexeddb/cursor-basics.html: Added.
+        * storage/indexeddb/cursor-cast-expected.txt: Added.
+        * storage/indexeddb/cursor-cast.html: Added.
+        * storage/indexeddb/cursor-continue-dir-expected.txt:
+        * storage/indexeddb/cursor-continue-dir.html:
+        * storage/indexeddb/cursor-continue-expected.txt:
+        * storage/indexeddb/cursor-continue-validity-expected.txt:
+        * storage/indexeddb/cursor-continue-validity.html:
+        * storage/indexeddb/cursor-continue.html:
+        * storage/indexeddb/cursor-continueprimarykey-expected.txt: Added.
+        * storage/indexeddb/cursor-continueprimarykey.html: Added.
+        * storage/indexeddb/cursor-delete.html:
+        * storage/indexeddb/cursor-finished-expected.txt:
+        * storage/indexeddb/cursor-finished.html:
+        * storage/indexeddb/cursor-inconsistency.html:
+        * storage/indexeddb/cursor-index-delete.html:
+        * storage/indexeddb/cursor-key-order.html:
+        * storage/indexeddb/cursor-leak-expected.txt: 
+        * storage/indexeddb/cursor-leak.html: Added.
+        * storage/indexeddb/cursor-overloads-expected.txt:
+        * storage/indexeddb/cursor-overloads.html:
+        * storage/indexeddb/cursor-prev-no-duplicate.html:
+        * storage/indexeddb/cursor-primary-key-order.html:
+        * storage/indexeddb/cursor-properties.html:
+        * storage/indexeddb/cursor-request-cycle-expected.txt: Added.
+        * storage/indexeddb/cursor-request-cycle.html: Added.
+        * storage/indexeddb/cursor-reverse-bug.html:
+        * storage/indexeddb/cursor-skip-deleted.html:
+        * storage/indexeddb/cursor-update-expected.txt:
+        * storage/indexeddb/cursor-update-value-argument-required-expected.txt:
+        * storage/indexeddb/cursor-update-value-argument-required.html:
+        * storage/indexeddb/cursor-update.html:
+        * storage/indexeddb/cursor-value.html:
+        * storage/indexeddb/data-corruption-expected.txt:
+        * storage/indexeddb/data-corruption.html:
+        * storage/indexeddb/database-basics-expected.txt:
+        * storage/indexeddb/database-basics.html:
+        * storage/indexeddb/database-close-expected.txt:
+        * storage/indexeddb/database-close.html:
+        * storage/indexeddb/database-closepending-flag-expected.txt:
+        * storage/indexeddb/database-closepending-flag.html:
+        * storage/indexeddb/database-deletepending-flag.html:
+        * storage/indexeddb/database-name-undefined-expected.txt:
+        * storage/indexeddb/database-name-undefined.html:
+        * storage/indexeddb/database-odd-names.html:
+        * storage/indexeddb/database-wrapper-expected.txt:
+        * storage/indexeddb/database-wrapper.html:
+        * storage/indexeddb/delete-closed-database-object-expected.txt:
+        * storage/indexeddb/delete-closed-database-object.html:
+        * storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html:
+        * storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt:
+        * storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html:
+        * storage/indexeddb/delete-range.html:
+        * storage/indexeddb/deleteIndex-bug110792-expected.txt:
+        * storage/indexeddb/deleteIndex-bug110792.html:
+        * storage/indexeddb/deleteIndex-expected.txt:
+        * storage/indexeddb/deleteIndex.html:
+        * storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt:
+        * storage/indexeddb/deleteObjectStore-name-argument-required.html:
+        * storage/indexeddb/deleteObjectStore-null-name.html:
+        * storage/indexeddb/deleted-objects-expected.txt:
+        * storage/indexeddb/deleted-objects.html:
+        * storage/indexeddb/deletedatabase-blocked.html:
+        * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html:
+        * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html:
+        * storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt:
+        * storage/indexeddb/deletedatabase-delayed-by-versionchange.html:
+        * storage/indexeddb/deletedatabase-not-blocked.html:
+        * storage/indexeddb/deletedatabase-transaction.html:
+        * storage/indexeddb/dont-commit-on-blocked.html:
+        * storage/indexeddb/dont-wedge.html:
+        * storage/indexeddb/duplicates.html:
+        * storage/indexeddb/error-causes-abort-by-default.html:
+        * storage/indexeddb/events-expected.txt:
+        * storage/indexeddb/events.html:
+        * storage/indexeddb/exception-in-event-aborts-expected.txt:
+        * storage/indexeddb/exception-in-event-aborts.html:
+        * storage/indexeddb/exceptions-expected.txt:
+        * storage/indexeddb/exceptions.html:
+        * storage/indexeddb/factory-basics-expected.txt:
+        * storage/indexeddb/factory-basics-workers-expected.txt:
+        * storage/indexeddb/factory-basics-workers.html:
+        * storage/indexeddb/factory-basics.html:
+        * storage/indexeddb/factory-cmp-expected.txt:
+        * storage/indexeddb/factory-cmp.html:
+        * storage/indexeddb/factory-deletedatabase.html:
+        * storage/indexeddb/get-keyrange-expected.txt:
+        * storage/indexeddb/get-keyrange.html:
+        * storage/indexeddb/index-basics-expected.txt:
+        * storage/indexeddb/index-basics-workers-expected.txt:
+        * storage/indexeddb/index-basics-workers.html:
+        * storage/indexeddb/index-basics.html:
+        * storage/indexeddb/index-count-expected.txt:
+        * storage/indexeddb/index-count.html:
+        * storage/indexeddb/index-cursor.html:
+        * storage/indexeddb/index-duplicate-keypaths.html:
+        * storage/indexeddb/index-get-key-argument-required-expected.txt:
+        * storage/indexeddb/index-get-key-argument-required.html:
+        * storage/indexeddb/index-multientry.html:
+        * storage/indexeddb/index-population.html:
+        * storage/indexeddb/index-unique.html:
+        * storage/indexeddb/interfaces.html:
+        * storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html:
+        * storage/indexeddb/intversion-bad-parameters-expected.txt:
+        * storage/indexeddb/intversion-bad-parameters.html:
+        * storage/indexeddb/intversion-blocked.html:
+        * storage/indexeddb/intversion-close-between-events.html:
+        * storage/indexeddb/intversion-close-in-oncomplete-expected.txt:
+        * storage/indexeddb/intversion-close-in-oncomplete.html:
+        * storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt:
+        * storage/indexeddb/intversion-close-in-upgradeneeded.html:
+        * storage/indexeddb/intversion-encoding.html:
+        * storage/indexeddb/intversion-gated-on-delete.html:
+        * storage/indexeddb/intversion-long-queue-expected.txt:
+        * storage/indexeddb/intversion-long-queue.html:
+        * storage/indexeddb/intversion-omit-parameter.html:
+        * storage/indexeddb/intversion-open-in-upgradeneeded.html:
+        * storage/indexeddb/intversion-open-with-version.html:
+        * storage/indexeddb/intversion-pending-version-changes-ascending-expected.txt: Added.
+        * storage/indexeddb/intversion-pending-version-changes-ascending.html: Added.
+        * storage/indexeddb/intversion-pending-version-changes-descending-expected.txt: Added.
+        * storage/indexeddb/intversion-pending-version-changes-descending.html: Added.
+        * storage/indexeddb/intversion-pending-version-changes-same-expected.txt: Added.
+        * storage/indexeddb/intversion-pending-version-changes-same.html: Added.
+        * storage/indexeddb/intversion-persistence.html:
+        * storage/indexeddb/intversion-revert-on-abort.html:
+        * storage/indexeddb/intversion-two-opens-no-versions.html:
+        * storage/indexeddb/intversion-upgrades-expected.txt:
+        * storage/indexeddb/intversion-upgrades.html:
+        * storage/indexeddb/invalid-keys-expected.txt:
+        * storage/indexeddb/invalid-keys.html:
+        * storage/indexeddb/key-generator.html:
+        * storage/indexeddb/key-sort-order-across-types.html:
+        * storage/indexeddb/key-sort-order-date.html:
+        * storage/indexeddb/key-type-array-expected.txt:
+        * storage/indexeddb/key-type-array.html:
+        * storage/indexeddb/key-type-binary-expected.txt: Added.
+        * storage/indexeddb/key-type-binary.html: Added.
+        * storage/indexeddb/key-type-infinity.html:
+        * storage/indexeddb/keypath-arrays-expected.txt:
+        * storage/indexeddb/keypath-arrays.html:
+        * storage/indexeddb/keypath-basics-expected.txt:
+        * storage/indexeddb/keypath-basics.html:
+        * storage/indexeddb/keypath-edges-expected.txt:
+        * storage/indexeddb/keypath-edges.html:
+        * storage/indexeddb/keypath-fetch-key.html:
+        * storage/indexeddb/keypath-intrinsic-properties.html:
+        * storage/indexeddb/keyrange-expected.txt:
+        * storage/indexeddb/keyrange-required-arguments-expected.txt:
+        * storage/indexeddb/keyrange-required-arguments.html:
+        * storage/indexeddb/keyrange.html:
+        * storage/indexeddb/lazy-index-population-expected.txt:
+        * storage/indexeddb/lazy-index-population.html:
+        * storage/indexeddb/lazy-index-types.html:
+        * storage/indexeddb/legacy-constants.html:
+        * storage/indexeddb/list-ordering.html:
+        * storage/indexeddb/metadata-race-expected.txt: Added.
+        * storage/indexeddb/metadata-race.html: Added.
+        * storage/indexeddb/metadata.html:
+        * storage/indexeddb/mozilla/add-twice-failure.html:
+        * storage/indexeddb/mozilla/autoincrement-indexes.html:
+        * storage/indexeddb/mozilla/bad-keypath-expected.txt:
+        * storage/indexeddb/mozilla/bad-keypath.html:
+        * storage/indexeddb/mozilla/clear-expected.txt:
+        * storage/indexeddb/mozilla/clear.html:
+        * storage/indexeddb/mozilla/create-index-unique.html:
+        * storage/indexeddb/mozilla/create-index-with-integer-keys.html:
+        * storage/indexeddb/mozilla/create-objectstore-basics-expected.txt:
+        * storage/indexeddb/mozilla/create-objectstore-basics.html:
+        * storage/indexeddb/mozilla/create-objectstore-null-name.html:
+        * storage/indexeddb/mozilla/cursor-mutation-objectstore-only.html:
+        * storage/indexeddb/mozilla/cursor-mutation.html:
+        * storage/indexeddb/mozilla/cursor-update-updates-indexes.html:
+        * storage/indexeddb/mozilla/cursors-expected.txt:
+        * storage/indexeddb/mozilla/cursors.html:
+        * storage/indexeddb/mozilla/delete-result.html:
+        * storage/indexeddb/mozilla/event-source.html:
+        * storage/indexeddb/mozilla/global-data.html:
+        * storage/indexeddb/mozilla/index-prev-no-duplicate.html:
+        * storage/indexeddb/mozilla/indexes.html:
+        * storage/indexeddb/mozilla/key-requirements-delete-null-key-expected.txt:
+        * storage/indexeddb/mozilla/key-requirements-delete-null-key.html:
+        * storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt:
+        * storage/indexeddb/mozilla/key-requirements-inline-and-passed.html:
+        * storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt:
+        * storage/indexeddb/mozilla/key-requirements-put-no-key.html:
+        * storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt:
+        * storage/indexeddb/mozilla/key-requirements-put-null-key.html:
+        * storage/indexeddb/mozilla/key-requirements.html:
+        * storage/indexeddb/mozilla/object-cursors.html:
+        * storage/indexeddb/mozilla/object-identity.html:
+        * storage/indexeddb/mozilla/object-store-inline-autoincrement-key-added-on-put.html:
+        * storage/indexeddb/mozilla/object-store-remove-values.html:
+        * storage/indexeddb/mozilla/objectstorenames.html:
+        * storage/indexeddb/mozilla/odd-result-order.html:
+        * storage/indexeddb/mozilla/open-database-null-name.html:
+        * storage/indexeddb/mozilla/put-get-values.html:
+        * storage/indexeddb/mozilla/readonly-transactions-expected.txt:
+        * storage/indexeddb/mozilla/readonly-transactions.html:
+        * storage/indexeddb/mozilla/readwrite-transactions.html:
+        * storage/indexeddb/mozilla/readyState.html:
+        * storage/indexeddb/mozilla/remove-index.html:
+        * storage/indexeddb/mozilla/remove-objectstore.html:
+        * storage/indexeddb/mozilla/resources/add-twice-failure.js:
+        * storage/indexeddb/mozilla/resources/autoincrement-indexes.js:
+        * storage/indexeddb/mozilla/resources/bad-keypath.js:
+        * storage/indexeddb/mozilla/resources/clear.js:
+        * storage/indexeddb/mozilla/resources/create-index-unique.js:
+        * storage/indexeddb/mozilla/resources/create-index-with-integer-keys.js:
+        * storage/indexeddb/mozilla/resources/create-objectstore-basics.js:
+        * storage/indexeddb/mozilla/resources/create-objectstore-null-name.js:
+        * storage/indexeddb/mozilla/resources/cursor-mutation-objectstore-only.js:
+        * storage/indexeddb/mozilla/resources/cursor-mutation.js:
+        * storage/indexeddb/mozilla/resources/cursor-update-updates-indexes.js:
+        * storage/indexeddb/mozilla/resources/cursors.js:
+        * storage/indexeddb/mozilla/resources/delete-result.js:
+        * storage/indexeddb/mozilla/resources/event-source.js:
+        * storage/indexeddb/mozilla/resources/global-data.js:
+        * storage/indexeddb/mozilla/resources/indexes.js:
+        * storage/indexeddb/mozilla/resources/key-requirements-delete-null-key.js:
+        * storage/indexeddb/mozilla/resources/key-requirements-inline-and-passed.js:
+        * storage/indexeddb/mozilla/resources/key-requirements-put-no-key.js:
+        * storage/indexeddb/mozilla/resources/key-requirements-put-null-key.js:
+        * storage/indexeddb/mozilla/resources/key-requirements.js:
+        * storage/indexeddb/mozilla/resources/object-cursors.js:
+        * storage/indexeddb/mozilla/resources/object-identity.js:
+        * storage/indexeddb/mozilla/resources/object-store-inline-autoincrement-key-added-on-put.js:
+        * storage/indexeddb/mozilla/resources/object-store-remove-values.js:
+        * storage/indexeddb/mozilla/resources/objectstorenames.js:
+        * storage/indexeddb/mozilla/resources/odd-result-order.js:
+        * storage/indexeddb/mozilla/resources/open-database-null-name.js:
+        * storage/indexeddb/mozilla/resources/put-get-values.js:
+        * storage/indexeddb/mozilla/resources/readonly-transactions.js:
+        * storage/indexeddb/mozilla/resources/readwrite-transactions.js:
+        * storage/indexeddb/mozilla/resources/readyState.js:
+        * storage/indexeddb/mozilla/resources/remove-index.js:
+        * storage/indexeddb/mozilla/resources/remove-objectstore.js:
+        * storage/indexeddb/mozilla/resources/versionchange-abort.js:
+        * storage/indexeddb/mozilla/versionchange-abort.html:
+        * storage/indexeddb/mutating-cursor.html:
+        * storage/indexeddb/noblobs-expected.txt:
+        * storage/indexeddb/noblobs.html:
+        * storage/indexeddb/object-lookups-in-versionchange-expected.txt:
+        * storage/indexeddb/object-lookups-in-versionchange.html:
+        * storage/indexeddb/objectStore-required-arguments-expected.txt:
+        * storage/indexeddb/objectStore-required-arguments.html:
+        * storage/indexeddb/objectstore-autoincrement-expected.txt:
+        * storage/indexeddb/objectstore-autoincrement.html:
+        * storage/indexeddb/objectstore-basics-expected.txt:
+        * storage/indexeddb/objectstore-basics-workers-expected.txt:
+        * storage/indexeddb/objectstore-basics-workers.html:
+        * storage/indexeddb/objectstore-basics.html:
+        * storage/indexeddb/objectstore-clear.html:
+        * storage/indexeddb/objectstore-count-expected.txt:
+        * storage/indexeddb/objectstore-count.html:
+        * storage/indexeddb/objectstore-cursor-expected.txt:
+        * storage/indexeddb/objectstore-cursor.html:
+        * storage/indexeddb/objectstore-keycursor-expected.txt: Added.
+        * storage/indexeddb/objectstore-keycursor.html: Added.
+        * storage/indexeddb/objectstore-removeobjectstore.html:
+        * storage/indexeddb/odd-strings.html:
+        * storage/indexeddb/open-bad-versions.html:
+        * storage/indexeddb/open-cursor-expected.txt:
+        * storage/indexeddb/open-cursor.html:
+        * storage/indexeddb/open-during-transaction.html:
+        * storage/indexeddb/open-ordering.html:
+        * storage/indexeddb/open-twice-workers.html:
+        * storage/indexeddb/opencursor-key.html:
+        * storage/indexeddb/optional-arguments-expected.txt: Added.
+        * storage/indexeddb/optional-arguments.html: Added.
+        * storage/indexeddb/pending-activity-workers.html:
+        * storage/indexeddb/pending-activity.html:
+        * storage/indexeddb/pending-version-change-on-exit.html:
+        * storage/indexeddb/pending-version-change-stuck-works-with-terminate.html:
+        * storage/indexeddb/pending-version-change-stuck.html:
+        * storage/indexeddb/persistence.html:
+        * storage/indexeddb/prefetch-bugfix-108071-expected.txt:
+        * storage/indexeddb/prefetch-bugfix-108071.html:
+        * storage/indexeddb/prefetch-invalidation-expected.txt: Added.
+        * storage/indexeddb/prefetch-invalidation.html: Added.
+        * storage/indexeddb/prefetch-race-expected.txt: Added.
+        * storage/indexeddb/prefetch-race.html: Added.
+        * storage/indexeddb/queued-commands.html:
+        * storage/indexeddb/readonly-properties.html:
+        * storage/indexeddb/readonly.html:
+        * storage/indexeddb/removed-expected.txt:
+        * storage/indexeddb/removed.html:
+        * storage/indexeddb/request-continue-abort.html:
+        * storage/indexeddb/request-event-propagation.html:
+        * storage/indexeddb/request-leak-expected.txt: Added.
+        * storage/indexeddb/request-leak.html: Added.
+        * storage/indexeddb/request-result-cache-expected.txt: Added.
+        * storage/indexeddb/request-result-cache.html: Added.
+        * storage/indexeddb/resources/aborted-versionchange-closes.js:
+        * storage/indexeddb/resources/basics.js:
+        * storage/indexeddb/resources/create-and-remove-object-store.js:
+        * storage/indexeddb/resources/create-object-store-options.js:
+        * storage/indexeddb/resources/createIndex-after-failure.js:
+        * storage/indexeddb/resources/createObjectStore-name-argument-required.js:
+        * storage/indexeddb/resources/createObjectStore-null-name.js:
+        * storage/indexeddb/resources/cursor-added-bug.js:
+        * storage/indexeddb/resources/cursor-advance.js:
+        * storage/indexeddb/resources/cursor-basics.js: Added.
+        * storage/indexeddb/resources/cursor-continue-dir.js:
+        * storage/indexeddb/resources/cursor-continue-validity.js:
+        * storage/indexeddb/resources/cursor-continue.js:
+        * storage/indexeddb/resources/cursor-continueprimarykey.js: Added.
+        * storage/indexeddb/resources/cursor-delete.js:
+        * storage/indexeddb/resources/cursor-inconsistency.js:
+        * storage/indexeddb/resources/cursor-index-delete.js:
+        * storage/indexeddb/resources/cursor-key-order.js:
+        * storage/indexeddb/resources/cursor-prev-no-duplicate.js:
+        * storage/indexeddb/resources/cursor-primary-key-order.js:
+        * storage/indexeddb/resources/cursor-properties.js:
+        * storage/indexeddb/resources/cursor-reverse-bug.js:
+        * storage/indexeddb/resources/cursor-skip-deleted.js:
+        * storage/indexeddb/resources/cursor-update-value-argument-required.js:
+        * storage/indexeddb/resources/cursor-update.js:
+        * storage/indexeddb/resources/cursor-value.js:
+        * storage/indexeddb/resources/data-corruption.js:
+        * storage/indexeddb/resources/database-basics.js:
+        * storage/indexeddb/resources/database-close.js:
+        * storage/indexeddb/resources/database-closepending-flag.js:
+        * storage/indexeddb/resources/database-deletepending-flag.js:
+        * storage/indexeddb/resources/database-name-undefined.js:
+        * storage/indexeddb/resources/database-odd-names.js:
+        * storage/indexeddb/resources/database-quota.js:
+        * storage/indexeddb/resources/database-wrapper.js:
+        * storage/indexeddb/resources/delete-closed-database-object.js:
+        * storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js:
+        * storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js:
+        * storage/indexeddb/resources/delete-range.js:
+        * storage/indexeddb/resources/deleteIndex.js:
+        * storage/indexeddb/resources/deleteObjectStore-name-argument-required.js:
+        * storage/indexeddb/resources/deleteObjectStore-null-name.js:
+        * storage/indexeddb/resources/deleted-objects.js:
+        * storage/indexeddb/resources/deletedatabase-blocked.js:
+        * storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js:
+        * storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js:
+        * storage/indexeddb/resources/deletedatabase-not-blocked.js:
+        * storage/indexeddb/resources/dont-commit-on-blocked-worker.js:
+        * storage/indexeddb/resources/dont-wedge.js:
+        * storage/indexeddb/resources/duplicates.js:
+        * storage/indexeddb/resources/error-causes-abort-by-default.js:
+        * storage/indexeddb/resources/events.js:
+        * storage/indexeddb/resources/exception-in-event-aborts.js:
+        * storage/indexeddb/resources/exceptions.js:
+        * storage/indexeddb/resources/factory-basics.js:
+        * storage/indexeddb/resources/factory-cmp.js:
+        * storage/indexeddb/resources/factory-deletedatabase.js:
+        * storage/indexeddb/resources/get-keyrange.js:
+        * storage/indexeddb/resources/index-basics.js:
+        * storage/indexeddb/resources/index-count.js:
+        * storage/indexeddb/resources/index-cursor.js:
+        * storage/indexeddb/resources/index-duplicate-keypaths.js:
+        * storage/indexeddb/resources/index-get-key-argument-required.js:
+        * storage/indexeddb/resources/index-multientry.js:
+        * storage/indexeddb/resources/index-population.js:
+        * storage/indexeddb/resources/index-unique.js:
+        * storage/indexeddb/resources/interfaces.js:
+        * storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js:
+        * storage/indexeddb/resources/intversion-bad-parameters.js:
+        * storage/indexeddb/resources/intversion-blocked.js:
+        * storage/indexeddb/resources/intversion-close-between-events.js:
+        * storage/indexeddb/resources/intversion-close-in-oncomplete.js:
+        * storage/indexeddb/resources/intversion-close-in-upgradeneeded.js:
+        * storage/indexeddb/resources/intversion-encoding.js:
+        * storage/indexeddb/resources/intversion-gated-on-delete.js:
+        * storage/indexeddb/resources/intversion-long-queue.js:
+        * storage/indexeddb/resources/intversion-omit-parameter.js:
+        * storage/indexeddb/resources/intversion-open-in-upgradeneeded.js:
+        * storage/indexeddb/resources/intversion-open-with-version.js:
+        * storage/indexeddb/resources/intversion-pending-version-changes-ascending.js: Added.
+        * storage/indexeddb/resources/intversion-pending-version-changes-descending.js: Added.
+        * storage/indexeddb/resources/intversion-pending-version-changes-same.js: Added.
+        * storage/indexeddb/resources/intversion-persistence.js:
+        * storage/indexeddb/resources/intversion-revert-on-abort.js:
+        * storage/indexeddb/resources/intversion-two-opens-no-versions.js:
+        * storage/indexeddb/resources/intversion-upgrades.js:
+        * storage/indexeddb/resources/invalid-keys.js:
+        * storage/indexeddb/resources/key-generator.js:
+        * storage/indexeddb/resources/key-sort-order-across-types.js:
+        * storage/indexeddb/resources/key-sort-order-date.js:
+        * storage/indexeddb/resources/key-type-array.js:
+        * storage/indexeddb/resources/key-type-binary.js: Added.
+        * storage/indexeddb/resources/key-type-infinity.js:
+        * storage/indexeddb/resources/keypath-arrays.js:
+        * storage/indexeddb/resources/keypath-basics.js:
+        * storage/indexeddb/resources/keypath-edges.js:
+        * storage/indexeddb/resources/keypath-fetch-key.js:
+        * storage/indexeddb/resources/keypath-intrinsic-properties.js:
+        * storage/indexeddb/resources/keyrange-required-arguments.js:
+        * storage/indexeddb/resources/keyrange.js:
+        * storage/indexeddb/resources/lazy-index-types.js:
+        * storage/indexeddb/resources/legacy-constants.js:
+        * storage/indexeddb/resources/list-ordering.js:
+        * storage/indexeddb/resources/metadata.js:
+        * storage/indexeddb/resources/mutating-cursor.js:
+        * storage/indexeddb/resources/objectStore-required-arguments.js:
+        * storage/indexeddb/resources/objectstore-autoincrement.js:
+        * storage/indexeddb/resources/objectstore-basics.js:
+        * storage/indexeddb/resources/objectstore-clear.js:
+        * storage/indexeddb/resources/objectstore-count.js:
+        * storage/indexeddb/resources/objectstore-cursor.js:
+        * storage/indexeddb/resources/objectstore-keycursor.js: 
+        * storage/indexeddb/resources/objectstore-removeobjectstore.js:
+        * storage/indexeddb/resources/odd-strings.js:
+        * storage/indexeddb/resources/open-cursor.js:
+        * storage/indexeddb/resources/open-during-transaction.js:
+        * storage/indexeddb/resources/open-ordering.js:
+        * storage/indexeddb/resources/open-twice.js:
+        * storage/indexeddb/resources/opencursor-key.js:
+        * storage/indexeddb/resources/pending-activity.js:
+        * storage/indexeddb/resources/pending-version-change-on-exit.js:
+        * storage/indexeddb/resources/pending-version-change-stuck.js:
+        * storage/indexeddb/resources/persistence.js:
+        * storage/indexeddb/resources/prefetch-bugfix-108071.js:
+        * storage/indexeddb/resources/queued-commands.js:
+        * storage/indexeddb/resources/readonly-properties.js:
+        * storage/indexeddb/resources/readonly.js:
+        * storage/indexeddb/resources/removed.js:
+        * storage/indexeddb/resources/request-continue-abort.js:
+        * storage/indexeddb/resources/request-event-propagation.js:
+        * storage/indexeddb/resources/set_version_blocked.js:
+        * storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js:
+        * storage/indexeddb/resources/setversion-not-blocked.js:
+        * storage/indexeddb/resources/shared.js:
+        * storage/indexeddb/resources/transaction-abort.js:
+        * storage/indexeddb/resources/transaction-active-flag.js:
+        * storage/indexeddb/resources/transaction-after-close.js:
+        * storage/indexeddb/resources/transaction-and-objectstore-calls.js:
+        * storage/indexeddb/resources/transaction-basics.js:
+        * storage/indexeddb/resources/transaction-complete-workers.js:
+        * storage/indexeddb/resources/transaction-coordination-across-databases.js:
+        * storage/indexeddb/resources/transaction-coordination-within-database.js:
+        * storage/indexeddb/resources/transaction-crash-on-abort.js:
+        * storage/indexeddb/resources/transaction-error.js:
+        * storage/indexeddb/resources/transaction-event-propagation.js:
+        * storage/indexeddb/resources/transaction-read-only.js:
+        * storage/indexeddb/resources/transaction-readwrite-exclusive.js:
+        * storage/indexeddb/resources/transaction-rollback.js:
+        * storage/indexeddb/resources/transaction-scope-sequencing.js:
+        * storage/indexeddb/resources/transaction-starvation.js:
+        * storage/indexeddb/resources/transaction-storeNames-required.js:
+        * storage/indexeddb/resources/unblocked-version-changes.js:
+        * storage/indexeddb/resources/unprefix.js:
+        * storage/indexeddb/resources/value-undefined.js:
+        * storage/indexeddb/resources/values-odd-types.js:
+        * storage/indexeddb/resources/version-change-abort.js:
+        * storage/indexeddb/resources/version-change-exclusive.js:
+        * storage/indexeddb/resources/versionchangerequest-activedomobject.js:
+        * storage/indexeddb/set_version_blocked.html:
+        * storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt:
+        * storage/indexeddb/setversion-blocked-by-versionchange-close.html:
+        * storage/indexeddb/setversion-not-blocked.html:
+        * storage/indexeddb/structured-clone-expected.txt:
+        * storage/indexeddb/structured-clone.html:
+        * storage/indexeddb/transaction-abort-expected.txt:
+        * storage/indexeddb/transaction-abort.html:
+        * storage/indexeddb/transaction-active-flag-expected.txt:
+        * storage/indexeddb/transaction-active-flag.html:
+        * storage/indexeddb/transaction-after-close-expected.txt:
+        * storage/indexeddb/transaction-after-close.html:
+        * storage/indexeddb/transaction-and-objectstore-calls-expected.txt:
+        * storage/indexeddb/transaction-and-objectstore-calls.html:
+        * storage/indexeddb/transaction-basics-expected.txt:
+        * storage/indexeddb/transaction-basics.html:
+        * storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html:
+        * storage/indexeddb/transaction-complete-with-js-recursion.html:
+        * storage/indexeddb/transaction-complete-workers-expected.txt:
+        * storage/indexeddb/transaction-complete-workers.html:
+        * storage/indexeddb/transaction-coordination-across-databases.html:
+        * storage/indexeddb/transaction-coordination-within-database.html:
+        * storage/indexeddb/transaction-crash-in-tasks.html:
+        * storage/indexeddb/transaction-crash-on-abort.html:
+        * storage/indexeddb/transaction-error-expected.txt:
+        * storage/indexeddb/transaction-error.html:
+        * storage/indexeddb/transaction-event-propagation.html:
+        * storage/indexeddb/transaction-ordering-expected.txt: Added.
+        * storage/indexeddb/transaction-ordering.html: Added.
+        * storage/indexeddb/transaction-read-only-expected.txt:
+        * storage/indexeddb/transaction-read-only.html:
+        * storage/indexeddb/transaction-readwrite-exclusive.html:
+        * storage/indexeddb/transaction-rollback.html:
+        * storage/indexeddb/transaction-scope-sequencing.html:
+        * storage/indexeddb/transaction-starvation.html:
+        * storage/indexeddb/transaction-storeNames-required-expected.txt:
+        * storage/indexeddb/transaction-storeNames-required.html:
+        * storage/indexeddb/unblocked-version-changes-expected.txt:
+        * storage/indexeddb/unblocked-version-changes.html:
+        * storage/indexeddb/unprefix-workers.html:
+        * storage/indexeddb/unprefix.html:
+        * storage/indexeddb/value-undefined.html:
+        * storage/indexeddb/values-odd-types.html:
+        * storage/indexeddb/version-change-abort-expected.txt:
+        * storage/indexeddb/version-change-abort.html:
+        * storage/indexeddb/version-change-exclusive-expected.txt:
+        * storage/indexeddb/version-change-exclusive.html:
+        * storage/indexeddb/versionchangerequest-activedomobject.html:
+
</ins><span class="cx"> 2014-02-11  Oliver Hunt  &lt;oliver@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Make it possible to implement JS builtins in JS
</span></span></pre></div>
<a id="trunkLayoutTestsresourcesjstestjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/resources/js-test.js (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/resources/js-test.js                                (rev 0)
+++ trunk/LayoutTests/resources/js-test.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,774 @@
</span><ins>+// svg/dynamic-updates tests set enablePixelTesting=true, as we want to dump text + pixel results
+if (self.testRunner) {
+    if (self.enablePixelTesting)
+        testRunner.dumpAsTextWithPixelResults();
+    else
+        testRunner.dumpAsText();
+}
+
+var description, debug, successfullyParsed;
+
+var expectingError; // set by shouldHaveError()
+var expectedErrorMessage; // set by onerror when expectingError is true
+var unexpectedErrorMessage; // set by onerror when expectingError is not true
+
+(function() {
+
+    function getOrCreate(id, tagName)
+    {
+        var element = document.getElementById(id);
+        if (element)
+            return element;
+
+        element = document.createElement(tagName);
+        element.id = id;
+        var refNode;
+        var parent = document.body || document.documentElement;
+        if (id == &quot;description&quot;)
+            refNode = getOrCreate(&quot;console&quot;, &quot;div&quot;);
+        else
+            refNode = parent.firstChild;
+
+        parent.insertBefore(element, refNode);
+        return element;
+    }
+
+    description = function description(msg, quiet)
+    {
+        // For MSIE 6 compatibility
+        var span = document.createElement(&quot;span&quot;);
+        if (quiet)
+            span.innerHTML = '&lt;p&gt;' + msg + '&lt;/p&gt;&lt;p&gt;On success, you will see no &quot;&lt;span class=&quot;fail&quot;&gt;FAIL&lt;/span&gt;&quot; messages, followed by &quot;&lt;span class=&quot;pass&quot;&gt;TEST COMPLETE&lt;/span&gt;&quot;.&lt;/p&gt;';
+        else
+            span.innerHTML = '&lt;p&gt;' + msg + '&lt;/p&gt;&lt;p&gt;On success, you will see a series of &quot;&lt;span class=&quot;pass&quot;&gt;PASS&lt;/span&gt;&quot; messages, followed by &quot;&lt;span class=&quot;pass&quot;&gt;TEST COMPLETE&lt;/span&gt;&quot;.&lt;/p&gt;';
+
+        var description = getOrCreate(&quot;description&quot;, &quot;p&quot;);
+        if (description.firstChild)
+            description.replaceChild(span, description.firstChild);
+        else
+            description.appendChild(span);
+    };
+
+    debug = function debug(msg)
+    {
+        var span = document.createElement(&quot;span&quot;);
+        getOrCreate(&quot;console&quot;, &quot;div&quot;).appendChild(span); // insert it first so XHTML knows the namespace
+        span.innerHTML = msg + '&lt;br /&gt;';
+    };
+
+    var css =
+        &quot;.pass {&quot; +
+            &quot;font-weight: bold;&quot; +
+            &quot;color: green;&quot; +
+        &quot;}&quot; +
+        &quot;.fail {&quot; +
+            &quot;font-weight: bold;&quot; +
+            &quot;color: red;&quot; +
+        &quot;}&quot; +
+        &quot;#console {&quot; +
+            &quot;white-space: pre-wrap;&quot; +
+            &quot;font-family: monospace;&quot; +
+        &quot;}&quot;;
+
+    function insertStyleSheet()
+    {
+        var styleElement = document.createElement(&quot;style&quot;);
+        styleElement.textContent = css;
+        (document.head || document.documentElement).appendChild(styleElement);
+    }
+
+    function handleTestFinished()
+    {
+        // FIXME: Get rid of this boolean.
+        wasPostTestScriptParsed = true;
+        if (window.jsTestIsAsync) {
+            if (window.testRunner)
+                testRunner.waitUntilDone();
+            if (window.wasFinishJSTestCalled)
+                finishJSTest();
+        } else
+            finishJSTest();
+    }
+
+    if (!isWorker()) {
+        window.addEventListener('DOMContentLoaded', handleTestFinished, false);
+        insertStyleSheet();
+    }
+
+    if (!self.isOnErrorTest) {
+        self.onerror = function(message)
+        {
+            if (self.expectingError) {
+                self.expectedErrorMessage = message;
+                self.expectingError = false;
+                return;
+            }
+            self.unexpectedErrorMessage = message;
+            if (self.jsTestIsAsync) {
+                self.testFailed(&quot;Unexpected error: &quot; + message);
+                finishJSTest();
+            }
+        };
+    }
+})();
+
+function isWorker()
+{
+    // It's conceivable that someone would stub out 'document' in a worker so
+    // also check for childNodes, an arbitrary DOM-related object that is
+    // meaningless in a WorkerContext.
+    return (typeof document === 'undefined' || typeof document.childNodes === 'undefined') &amp;&amp; !!self.importScripts;
+}
+
+function descriptionQuiet(msg) { description(msg, true); }
+
+function escapeHTML(text)
+{
+    return text.replace(/&amp;/g, &quot;&amp;amp;&quot;).replace(/&lt;/g, &quot;&amp;lt;&quot;).replace(/\0/g, &quot;\\0&quot;);
+}
+
+function testPassed(msg)
+{
+    debug('&lt;span&gt;&lt;span class=&quot;pass&quot;&gt;PASS&lt;/span&gt; ' + escapeHTML(msg) + '&lt;/span&gt;');
+}
+
+function testFailed(msg)
+{
+    debug('&lt;span&gt;&lt;span class=&quot;fail&quot;&gt;FAIL&lt;/span&gt; ' + escapeHTML(msg) + '&lt;/span&gt;');
+}
+
+function areArraysEqual(a, b)
+{
+    try {
+        if (a.length !== b.length)
+            return false;
+        for (var i = 0; i &lt; a.length; i++)
+            if (a[i] !== b[i])
+                return false;
+    } catch (ex) {
+        return false;
+    }
+    return true;
+}
+
+function isMinusZero(n)
+{
+    // the only way to tell 0 from -0 in JS is the fact that 1/-0 is
+    // -Infinity instead of Infinity
+    return n === 0 &amp;&amp; 1/n &lt; 0;
+}
+
+function isNewSVGTearOffType(v)
+{
+    return ['[object SVGLength]', '[object SVGLengthList]', '[object SVGPoint]', '[object SVGPointList]', '[object SVGNumber]'].indexOf(&quot;&quot;+v) != -1;
+}
+
+function isResultCorrect(actual, expected)
+{
+    if (expected === 0)
+        return actual === expected &amp;&amp; (1/actual) === (1/expected);
+    if (actual === expected)
+        return true;
+    // http://crbug.com/308818 : The new implementation of SVGListProperties do not necessary return the same wrapper object, so === operator would not work. We compare for their string representation instead.
+    if (isNewSVGTearOffType(expected) &amp;&amp; typeof(expected) == typeof(actual) &amp;&amp; actual.valueAsString == expected.valueAsString)
+        return true;
+    if (typeof(expected) == &quot;number&quot; &amp;&amp; isNaN(expected))
+        return typeof(actual) == &quot;number&quot; &amp;&amp; isNaN(actual);
+    if (expected &amp;&amp; (Object.prototype.toString.call(expected) == Object.prototype.toString.call([])))
+        return areArraysEqual(actual, expected);
+    return false;
+}
+
+function stringify(v)
+{
+    if (isNewSVGTearOffType(v))
+        return v.valueAsString;
+    if (v === 0 &amp;&amp; 1/v &lt; 0)
+        return &quot;-0&quot;;
+    else return &quot;&quot; + v;
+}
+
+function evalAndLog(_a, _quiet)
+{
+  if (typeof _a != &quot;string&quot;)
+    debug(&quot;WARN: tryAndLog() expects a string argument&quot;);
+
+  // Log first in case things go horribly wrong or this causes a sync event.
+  if (!_quiet)
+    debug(_a);
+
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+    testFailed(_a + &quot; threw exception &quot; + e);
+  }
+  return _av;
+}
+
+function shouldBe(_a, _b, quiet)
+{
+  if (typeof _a != &quot;string&quot; || typeof _b != &quot;string&quot;)
+    debug(&quot;WARN: shouldBe() expects string arguments&quot;);
+  var _exception;
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+     _exception = e;
+  }
+  var _bv = eval(_b);
+
+  if (_exception)
+    testFailed(_a + &quot; should be &quot; + _bv + &quot;. Threw exception &quot; + _exception);
+  else if (isResultCorrect(_av, _bv)) {
+    if (!quiet) {
+        testPassed(_a + &quot; is &quot; + _b);
+    }
+  } else if (typeof(_av) == typeof(_bv))
+    testFailed(_a + &quot; should be &quot; + _bv + &quot;. Was &quot; + stringify(_av) + &quot;.&quot;);
+  else
+    testFailed(_a + &quot; should be &quot; + _bv + &quot; (of type &quot; + typeof _bv + &quot;). Was &quot; + _av + &quot; (of type &quot; + typeof _av + &quot;).&quot;);
+}
+
+// Execute condition every 5 milliseconds until it succeed or failureTime is reached.
+// completionHandler is executed on success, failureHandler is executed on timeout.
+function _waitForCondition(condition, failureTime, completionHandler, failureHandler)
+{
+  if (condition()) {
+    completionHandler();
+  } else if (Date.now() &gt; failureTime) {
+    failureHandler();
+  } else {
+    setTimeout(_waitForCondition, 5, condition, failureTime, completionHandler, failureHandler);
+  }
+}
+
+function shouldBecomeEqual(_a, _b, _completionHandler, _timeout)
+{
+  if (typeof _a != &quot;string&quot; || typeof _b != &quot;string&quot;)
+    debug(&quot;WARN: shouldBecomeEqual() expects string arguments&quot;);
+
+  if (_timeout === undefined)
+    _timeout = 500;
+
+  var _bv;
+  var _condition = function() {
+    var _exception;
+    var _av;
+    try {
+      _av = eval(_a);
+    } catch (e) {
+        _exception = e;
+    }
+    _bv = eval(_b);
+    if (_exception)
+      testFailed(_a + &quot; should become &quot; + _bv + &quot;. Threw exception &quot; + _exception);
+    if (isResultCorrect(_av, _bv)) {
+      testPassed(_a + &quot; became &quot; + _b);
+      return true;
+    }
+    return false;
+  };
+  var _failureTime = Date.now() + _timeout;
+  var _failureHandler = function () {
+    testFailed(_a + &quot; failed to change to &quot; + _bv + &quot; in &quot; + (_timeout / 1000) + &quot; seconds.&quot;);
+    _completionHandler();
+  };
+  _waitForCondition(_condition, _failureTime, _completionHandler, _failureHandler);
+}
+
+function shouldBecomeEqualToString(value, reference, completionHandler, timeout)
+{
+  if (typeof value !== &quot;string&quot; || typeof reference !== &quot;string&quot;)
+    debug(&quot;WARN: shouldBecomeEqualToString() expects string arguments&quot;);
+  var unevaledString = JSON.stringify(reference);
+  shouldBecomeEqual(value, unevaledString, completionHandler, timeout);
+}
+
+function shouldBeType(_a, _type) {
+  var _exception;
+  var _av;
+  try {
+    _av = eval(_a);
+  } catch (e) {
+    _exception = e;
+  }
+
+  var _typev = eval(_type);
+  if (_av instanceof _typev) {
+    testPassed(_a + &quot; is an instance of &quot; + _type);
+  } else {
+    testFailed(_a + &quot; is not an instance of &quot; + _type);
+  }
+}
+
+// Variant of shouldBe()--confirms that result of eval(_to_eval) is within
+// numeric _tolerance of numeric _target.
+function shouldBeCloseTo(_to_eval, _target, _tolerance, _quiet)
+{
+  if (typeof _to_eval != &quot;string&quot;) {
+    testFailed(&quot;shouldBeCloseTo() requires string argument _to_eval. was type &quot; + typeof _to_eval);
+    return;
+  }
+  if (typeof _target != &quot;number&quot;) {
+    testFailed(&quot;shouldBeCloseTo() requires numeric argument _target. was type &quot; + typeof _target);
+    return;
+  }
+  if (typeof _tolerance != &quot;number&quot;) {
+    testFailed(&quot;shouldBeCloseTo() requires numeric argument _tolerance. was type &quot; + typeof _tolerance);
+    return;
+  }
+
+  var _result;
+  try {
+     _result = eval(_to_eval);
+  } catch (e) {
+    testFailed(_to_eval + &quot; should be within &quot; + _tolerance + &quot; of &quot;
+               + _target + &quot;. Threw exception &quot; + e);
+    return;
+  }
+
+  if (typeof(_result) != typeof(_target)) {
+    testFailed(_to_eval + &quot; should be of type &quot; + typeof _target
+               + &quot; but was of type &quot; + typeof _result);
+  } else if (Math.abs(_result - _target) &lt;= _tolerance) {
+    if (!_quiet) {
+        testPassed(_to_eval + &quot; is within &quot; + _tolerance + &quot; of &quot; + _target);
+    }
+  } else {
+    testFailed(_to_eval + &quot; should be within &quot; + _tolerance + &quot; of &quot; + _target
+               + &quot;. Was &quot; + _result + &quot;.&quot;);
+  }
+}
+
+function shouldNotBe(_a, _b, _quiet)
+{
+  if (typeof _a != &quot;string&quot; || typeof _b != &quot;string&quot;)
+    debug(&quot;WARN: shouldNotBe() expects string arguments&quot;);
+  var _exception;
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+     _exception = e;
+  }
+  var _bv = eval(_b);
+
+  if (_exception)
+    testFailed(_a + &quot; should not be &quot; + _bv + &quot;. Threw exception &quot; + _exception);
+  else if (!isResultCorrect(_av, _bv)) {
+    if (!_quiet) {
+        testPassed(_a + &quot; is not &quot; + _b);
+    }
+  } else
+    testFailed(_a + &quot; should not be &quot; + _bv + &quot;.&quot;);
+}
+
+function shouldBecomeDifferent(_a, _b, _completionHandler, _timeout)
+{
+  if (typeof _a != &quot;string&quot; || typeof _b != &quot;string&quot;)
+    debug(&quot;WARN: shouldBecomeDifferent() expects string arguments&quot;);
+  if (_timeout === undefined)
+    _timeout = 500;
+
+  var _bv;
+  var _condition = function() {
+    var _exception;
+    var _av;
+    try {
+      _av = eval(_a);
+    } catch (e) {
+      _exception = e;
+    }
+    _bv = eval(_b);
+    if (_exception)
+      testFailed(_a + &quot; should became not equal to &quot; + _bv + &quot;. Threw exception &quot; + _exception);
+    if (!isResultCorrect(_av, _bv)) {
+      testPassed(_a + &quot; became different from &quot; + _b);
+      return true;
+    }
+    return false;
+  };
+  var _failureTime = Date.now() + _timeout;
+  var _failureHandler = function () {
+    testFailed(_a + &quot; did not become different from &quot; + _bv + &quot; in &quot; + (_timeout / 1000) + &quot; seconds.&quot;);
+    _completionHandler();
+  };
+  _waitForCondition(_condition, _failureTime, _completionHandler, _failureHandler);
+}
+
+function shouldBeTrue(a, quiet) { shouldBe(a, &quot;true&quot;, quiet); }
+function shouldBeTrueQuiet(a) { shouldBe(a, &quot;true&quot;, true); }
+function shouldBeFalse(a, quiet) { shouldBe(a, &quot;false&quot;, quiet); }
+function shouldBeNaN(a, quiet) { shouldBe(a, &quot;NaN&quot;, quiet); }
+function shouldBeNull(a, quiet) { shouldBe(a, &quot;null&quot;, quiet); }
+function shouldBeZero(a, quiet) { shouldBe(a, &quot;0&quot;, quiet); }
+
+function shouldBeEqualToString(a, b)
+{
+  if (typeof a !== &quot;string&quot; || typeof b !== &quot;string&quot;)
+    debug(&quot;WARN: shouldBeEqualToString() expects string arguments&quot;);
+  var unevaledString = JSON.stringify(b);
+  shouldBe(a, unevaledString);
+}
+
+function shouldBeEmptyString(a) { shouldBeEqualToString(a, &quot;&quot;); }
+
+function shouldEvaluateTo(actual, expected) {
+  // A general-purpose comparator.  'actual' should be a string to be
+  // evaluated, as for shouldBe(). 'expected' may be any type and will be
+  // used without being eval'ed.
+  if (expected == null) {
+    // Do this before the object test, since null is of type 'object'.
+    shouldBeNull(actual);
+  } else if (typeof expected == &quot;undefined&quot;) {
+    shouldBeUndefined(actual);
+  } else if (typeof expected == &quot;function&quot;) {
+    // All this fuss is to avoid the string-arg warning from shouldBe().
+    try {
+      var actualValue = eval(actual);
+    } catch (e) {
+      testFailed(&quot;Evaluating &quot; + actual + &quot;: Threw exception &quot; + e);
+      return;
+    }
+    shouldBe(&quot;'&quot; + actualValue.toString().replace(/\n/g, &quot;&quot;) + &quot;'&quot;,
+             &quot;'&quot; + expected.toString().replace(/\n/g, &quot;&quot;) + &quot;'&quot;);
+  } else if (typeof expected == &quot;object&quot;) {
+    shouldBeTrue(actual + &quot; == '&quot; + expected + &quot;'&quot;);
+  } else if (typeof expected == &quot;string&quot;) {
+    shouldBe(actual, expected);
+  } else if (typeof expected == &quot;boolean&quot;) {
+    shouldBe(&quot;typeof &quot; + actual, &quot;'boolean'&quot;);
+    if (expected)
+      shouldBeTrue(actual);
+    else
+      shouldBeFalse(actual);
+  } else if (typeof expected == &quot;number&quot;) {
+    shouldBe(actual, stringify(expected));
+  } else {
+    debug(expected + &quot; is unknown type &quot; + typeof expected);
+    shouldBeTrue(actual, &quot;'&quot;  +expected.toString() + &quot;'&quot;);
+  }
+}
+
+function shouldBeNonZero(_a)
+{
+  var _exception;
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+     _exception = e;
+  }
+
+  if (_exception)
+    testFailed(_a + &quot; should be non-zero. Threw exception &quot; + _exception);
+  else if (_av != 0)
+    testPassed(_a + &quot; is non-zero.&quot;);
+  else
+    testFailed(_a + &quot; should be non-zero. Was &quot; + _av);
+}
+
+function shouldBeNonNull(_a)
+{
+  var _exception;
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+     _exception = e;
+  }
+
+  if (_exception)
+    testFailed(_a + &quot; should be non-null. Threw exception &quot; + _exception);
+  else if (_av != null)
+    testPassed(_a + &quot; is non-null.&quot;);
+  else
+    testFailed(_a + &quot; should be non-null. Was &quot; + _av);
+}
+
+function shouldBeUndefined(_a)
+{
+  var _exception;
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+      _exception = e;
+  }
+
+  if (_exception)
+    testFailed(_a + &quot; should be undefined. Threw exception &quot; + _exception);
+  else if (typeof _av == &quot;undefined&quot;)
+    testPassed(_a + &quot; is undefined.&quot;);
+  else
+    testFailed(_a + &quot; should be undefined. Was &quot; + _av);
+}
+
+function shouldBeDefined(_a)
+{
+  var _exception;
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+     _exception = e;
+  }
+
+  if (_exception)
+    testFailed(_a + &quot; should be defined. Threw exception &quot; + _exception);
+  else if (_av !== undefined)
+    testPassed(_a + &quot; is defined.&quot;);
+  else
+    testFailed(_a + &quot; should be defined. Was &quot; + _av);
+}
+
+function shouldBeGreaterThanOrEqual(_a, _b) {
+    if (typeof _a != &quot;string&quot; || typeof _b != &quot;string&quot;)
+        debug(&quot;WARN: shouldBeGreaterThanOrEqual expects string arguments&quot;);
+
+    var _exception;
+    var _av;
+    try {
+        _av = eval(_a);
+    } catch (e) {
+        _exception = e;
+    }
+    var _bv = eval(_b);
+
+    if (_exception)
+        testFailed(_a + &quot; should be &gt;= &quot; + _b + &quot;. Threw exception &quot; + _exception);
+    else if (typeof _av == &quot;undefined&quot; || _av &lt; _bv)
+        testFailed(_a + &quot; should be &gt;= &quot; + _b + &quot;. Was &quot; + _av + &quot; (of type &quot; + typeof _av + &quot;).&quot;);
+    else
+        testPassed(_a + &quot; is &gt;= &quot; + _b);
+}
+
+function shouldNotThrow(_a) {
+    try {
+        eval(_a);
+        testPassed(_a + &quot; did not throw exception.&quot;);
+    } catch (e) {
+        testFailed(_a + &quot; should not throw exception. Threw exception &quot; + e + &quot;.&quot;);
+    }
+}
+
+function shouldThrow(_a, _e)
+{
+  var _exception;
+  var _av;
+  try {
+     _av = eval(_a);
+  } catch (e) {
+     _exception = e;
+  }
+
+  var _ev;
+  if (_e)
+      _ev = eval(_e);
+
+  if (_exception) {
+    if (typeof _e == &quot;undefined&quot; || _exception == _ev)
+      testPassed(_a + &quot; threw exception &quot; + _exception + &quot;.&quot;);
+    else
+      testFailed(_a + &quot; should throw &quot; + (typeof _e == &quot;undefined&quot; ? &quot;an exception&quot; : _ev) + &quot;. Threw exception &quot; + _exception + &quot;.&quot;);
+  } else if (typeof _av == &quot;undefined&quot;)
+    testFailed(_a + &quot; should throw &quot; + (typeof _e == &quot;undefined&quot; ? &quot;an exception&quot; : _ev) + &quot;. Was undefined.&quot;);
+  else
+    testFailed(_a + &quot; should throw &quot; + (typeof _e == &quot;undefined&quot; ? &quot;an exception&quot; : _ev) + &quot;. Was &quot; + _av + &quot;.&quot;);
+}
+
+function shouldBeNow(a, delta)
+{
+    // Right now, V8 and Chromium / Blink use two different clock
+    // implementations. On Windows, the implementations are non-trivial and can
+    // be slightly out of sync. The delta is intended to compensate for that.
+    //
+    // FIXME: reconsider this when the V8 and Blink clocks get unified, see http://crbug.com/324110
+    if (delta === undefined)
+        delta = 1000;
+
+    for (var i = 0; i &lt; 1000; ++i) {
+        var startDate = Date.now();
+        var av = eval(a);
+        var date = av.valueOf();
+        var endDate = Date.now();
+
+        // On some occasions such as NTP updates, the current time can go
+        // backwards. This should only happen rarely, so we can get away with
+        // retrying the test a few times if we detect the time going backwards.
+        if (startDate &gt; endDate)
+            continue;
+
+        if (typeof date !== &quot;number&quot;) {
+            testFailed(a + &quot; is not a number or a Date. Got &quot; + av);
+            return;
+        }
+        if (date &lt; startDate - delta) {
+            testFailed(a + &quot; is not the curent time. Got &quot; + av + &quot; which is &quot; + (startDate - date) / 1000 + &quot; seconds in the past.&quot;);
+            return;
+        }
+        if (date &gt; endDate + delta) {
+            testFailed(a + &quot; is not the current time. Got &quot; + av + &quot; which is &quot; + (date - endDate) / 1000 + &quot; seconds in the future.&quot;);
+            return;
+        }
+
+        testPassed(a + &quot; is equivalent to Date.now().&quot;);
+        return;
+    }
+    testFailed(a + &quot; cannot be tested against the current time. The clock is going backwards too often.&quot;);
+}
+
+function expectError()
+{
+    if (expectingError) {
+        testFailed(&quot;shouldHaveError() called twice before an error occurred!&quot;);
+    }
+    expectingError = true;
+}
+
+function shouldHaveHadError(message)
+{
+    if (expectingError) {
+        testFailed(&quot;No error thrown between expectError() and shouldHaveHadError()&quot;);
+        return;
+    }
+
+    if (expectedErrorMessage) {
+        if (!message)
+            testPassed(&quot;Got expected error&quot;);
+        else if (expectedErrorMessage.indexOf(message) !== -1)
+            testPassed(&quot;Got expected error: '&quot; + message + &quot;'&quot;);
+        else
+            testFailed(&quot;Unexpected error '&quot; + message + &quot;'&quot;);
+        expectedErrorMessage = undefined;
+        return;
+    }
+
+    testFailed(&quot;expectError() not called before shouldHaveHadError()&quot;);
+}
+
+function gc() {
+    if (typeof GCController !== &quot;undefined&quot;)
+        GCController.collect();
+    else {
+        var gcRec = function (n) {
+            if (n &lt; 1)
+                return {};
+            var temp = {i: &quot;ab&quot; + i + (i / 100000)};
+            temp += &quot;foo&quot;;
+            gcRec(n-1);
+        };
+        for (var i = 0; i &lt; 1000; i++)
+            gcRec(10);
+    }
+}
+
+function minorGC() {
+    if (typeof GCController !== &quot;undefined&quot;)
+        GCController.minorCollect();
+    else
+        testFailed(&quot;Minor GC is available only when you enable the --expose-gc option in V8.&quot;);
+}
+
+function isSuccessfullyParsed()
+{
+    // FIXME: Remove this and only report unexpected syntax errors.
+    successfullyParsed = !unexpectedErrorMessage;
+    shouldBeTrue(&quot;successfullyParsed&quot;);
+    debug('&lt;br /&gt;&lt;span class=&quot;pass&quot;&gt;TEST COMPLETE&lt;/span&gt;');
+}
+
+// It's possible for an async test to call finishJSTest() before js-test-post.js
+// has been parsed.
+function finishJSTest()
+{
+    wasFinishJSTestCalled = true;
+    if (!self.wasPostTestScriptParsed)
+        return;
+    isSuccessfullyParsed();
+    if (self.jsTestIsAsync &amp;&amp; self.testRunner)
+        testRunner.notifyDone();
+}
+
+function startWorker(testScriptURL, shared)
+{
+    self.jsTestIsAsync = true;
+    debug('Starting worker: ' + testScriptURL);
+    var worker = shared ? new SharedWorker(testScriptURL, &quot;Shared Worker&quot;) : new Worker(testScriptURL);
+    worker.onmessage = function(event)
+    {
+        var workerPrefix = &quot;[Worker] &quot;;
+        if (event.data.length &lt; 5 || event.data.charAt(4) != ':') {
+          debug(workerPrefix + event.data);
+          return;
+        }
+        var code = event.data.substring(0, 4);
+        var payload = workerPrefix + event.data.substring(5);
+        if (code == &quot;PASS&quot;)
+            testPassed(payload);
+        else if (code == &quot;FAIL&quot;)
+            testFailed(payload);
+        else if (code == &quot;DESC&quot;)
+            description(payload);
+        else if (code == &quot;DONE&quot;)
+            finishJSTest();
+        else
+            debug(workerPrefix + event.data);
+    };
+
+    worker.onerror = function(event)
+    {
+        debug('Got error from worker: ' + event.message);
+        finishJSTest();
+    };
+
+    if (shared) {
+        worker.port.onmessage = function(event) { worker.onmessage(event); };
+        worker.port.start();
+    }
+    return worker;
+}
+
+if (isWorker()) {
+    var workerPort = self;
+    if (self.name == &quot;Shared Worker&quot;) {
+        self.onconnect = function(e) {
+            workerPort = e.ports[0];
+            workerPort.onmessage = function(event)
+            {
+                var colon = event.data.indexOf(&quot;:&quot;);
+                if (colon == -1) {
+                    testFailed(&quot;Unrecognized message to shared worker: &quot; + event.data);
+                    return;
+                }
+                var code = event.data.substring(0, colon);
+                var payload = event.data.substring(colon + 1);
+                try {
+                    if (code == &quot;IMPORT&quot;)
+                        importScripts(payload);
+                    else
+                        testFailed(&quot;Unrecognized message to shared worker: &quot; + event.data);
+                } catch (ex) {
+                    testFailed(&quot;Caught exception in shared worker onmessage: &quot; + ex);
+                }
+            };
+        };
+    }
+    description = function(msg, quiet) {
+        workerPort.postMessage('DESC:' + msg);
+    };
+    testFailed = function(msg) {
+        workerPort.postMessage('FAIL:' + msg);
+    };
+    testPassed = function(msg) {
+        workerPort.postMessage('PASS:' + msg);
+    };
+    finishJSTest = function() {
+        workerPort.postMessage('DONE:');
+    };
+    debug = function(msg) {
+        workerPort.postMessage(msg);
+    };
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbabortedversionchangeclosesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> 
</span><span class="cx"> onOpenError():
</span><span class="cx"> PASS sawTransactionAbort is true
</span><span class="lines">@@ -40,6 +41,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbabortedversionchangecloseshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/aborted-versionchange-closes.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbbasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -11,15 +11,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><del>-PASS 'webkitErrorMessage' in request is true
-Expecting exception from request.webkitErrorMessage
-PASS Exception was thrown.
-PASS code is DOMException.INVALID_STATE_ERR
-PASS ename is 'InvalidStateError'
</del><ins>+Exception message: Failed to read the 'result' property from 'IDBRequest': The request has not finished.
+PASS 'error' in request is true
</ins><span class="cx"> Expecting exception from request.error
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to read the 'error' property from 'IDBRequest': The request has not finished.
</ins><span class="cx"> PASS 'source' in request is true
</span><span class="cx"> PASS request.source is null
</span><span class="cx"> PASS 'transaction' in request is true
</span><span class="lines">@@ -32,8 +30,6 @@
</span><span class="cx"> PASS request.onerror is null
</span><span class="cx"> PASS 'result' in event.target is true
</span><span class="cx"> PASS !!event.target.result is true
</span><del>-PASS 'webkitErrorMessage' in event.target is true
-PASS event.target.webkitErrorMessage is undefined.
</del><span class="cx"> PASS 'error' in event.target is true
</span><span class="cx"> PASS event.target.error is null
</span><span class="cx"> PASS 'source' in event.target is true
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbbasicssharedworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -12,15 +12,13 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS [Worker] ename is 'InvalidStateError'
</span><del>-PASS [Worker] 'webkitErrorMessage' in request is true
-[Worker] Expecting exception from request.webkitErrorMessage
-PASS [Worker] Exception was thrown.
-PASS [Worker] code is DOMException.INVALID_STATE_ERR
-PASS [Worker] ename is 'InvalidStateError'
</del><ins>+[Worker] Exception message: Failed to read the 'result' property from 'IDBRequest': The request has not finished.
+PASS [Worker] 'error' in request is true
</ins><span class="cx"> [Worker] Expecting exception from request.error
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS [Worker] ename is 'InvalidStateError'
</span><ins>+[Worker] Exception message: Failed to read the 'error' property from 'IDBRequest': The request has not finished.
</ins><span class="cx"> PASS [Worker] 'source' in request is true
</span><span class="cx"> PASS [Worker] request.source is null
</span><span class="cx"> PASS [Worker] 'transaction' in request is true
</span><span class="lines">@@ -33,8 +31,6 @@
</span><span class="cx"> PASS [Worker] request.onerror is null
</span><span class="cx"> PASS [Worker] 'result' in event.target is true
</span><span class="cx"> PASS [Worker] !!event.target.result is true
</span><del>-PASS [Worker] 'webkitErrorMessage' in event.target is true
-PASS [Worker] event.target.webkitErrorMessage is undefined.
</del><span class="cx"> PASS [Worker] 'error' in event.target is true
</span><span class="cx"> PASS [Worker] event.target.error is null
</span><span class="cx"> PASS [Worker] 'source' in event.target is true
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbbasicssharedworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/basics.js', true /*shared*/);&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/basics.js', true /*shared*/);&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbbasicsworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/basics-workers-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-workers-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/basics-workers-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -12,15 +12,13 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS [Worker] ename is 'InvalidStateError'
</span><del>-PASS [Worker] 'webkitErrorMessage' in request is true
-[Worker] Expecting exception from request.webkitErrorMessage
-PASS [Worker] Exception was thrown.
-PASS [Worker] code is DOMException.INVALID_STATE_ERR
-PASS [Worker] ename is 'InvalidStateError'
</del><ins>+[Worker] Exception message: Failed to read the 'result' property from 'IDBRequest': The request has not finished.
+PASS [Worker] 'error' in request is true
</ins><span class="cx"> [Worker] Expecting exception from request.error
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS [Worker] ename is 'InvalidStateError'
</span><ins>+[Worker] Exception message: Failed to read the 'error' property from 'IDBRequest': The request has not finished.
</ins><span class="cx"> PASS [Worker] 'source' in request is true
</span><span class="cx"> PASS [Worker] request.source is null
</span><span class="cx"> PASS [Worker] 'transaction' in request is true
</span><span class="lines">@@ -33,8 +31,6 @@
</span><span class="cx"> PASS [Worker] request.onerror is null
</span><span class="cx"> PASS [Worker] 'result' in event.target is true
</span><span class="cx"> PASS [Worker] !!event.target.result is true
</span><del>-PASS [Worker] 'webkitErrorMessage' in event.target is true
-PASS [Worker] event.target.webkitErrorMessage is undefined.
</del><span class="cx"> PASS [Worker] 'error' in event.target is true
</span><span class="cx"> PASS [Worker] event.target.error is null
</span><span class="cx"> PASS [Worker] 'source' in event.target is true
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbbasicsworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/basics-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/basics-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/basics.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/basics.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbbasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcloneexceptionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/clone-exception-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/clone-exception-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/clone-exception-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 25
</span><span class="cx"> PASS ename is 'DataCloneError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> 
</span><span class="cx"> doSecondOpen():
</span><span class="cx"> indexedDB.open(dbname + '2')
</span><span class="lines">@@ -22,6 +23,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 25
</span><span class="cx"> PASS ename is 'DataCloneError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> 
</span><span class="cx"> doThirdOpen():
</span><span class="cx"> indexedDB.open(dbname + '3')
</span><span class="lines">@@ -31,6 +33,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 25
</span><span class="cx"> PASS ename is 'DataCloneError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcloneexceptionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/clone-exception.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/clone-exception.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/clone-exception.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -48,4 +48,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbclosedcursorexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/closed-cursor-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/closed-cursor-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/closed-cursor-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+Verify that that cursors accessed after being closed are well behaved
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;closed-cursor.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+store.put({value: 'value'}, ['key'])
+
+onOpen():
+db = event.target.result
+tx = db.transaction('store')
+store = tx.objectStore('store')
+cursorRequest = store.openCursor()
+
+openCursorSuccess():
+cursor = cursorRequest.result
+Don't continue the cursor, so it retains its key/primaryKey/value
+
+transactionComplete():
+PASS JSON.stringify(cursor.key) is &quot;[\&quot;key\&quot;]&quot;
+PASS JSON.stringify(cursor.primaryKey) is &quot;[\&quot;key\&quot;]&quot;
+PASS JSON.stringify(cursor.value) is &quot;{\&quot;value\&quot;:\&quot;value\&quot;}&quot;
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbclosedcursorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/closed-cursor.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/closed-cursor.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/closed-cursor.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Verify that that cursors accessed after being closed are well behaved&quot;);
+
+indexedDBTest(prepareDatabase, onOpen);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    evalAndLog(&quot;store.put({value: 'value'}, ['key'])&quot;);
+}
+
+function onOpen(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;tx = db.transaction('store')&quot;);
+    evalAndLog(&quot;store = tx.objectStore('store')&quot;);
+    evalAndLog(&quot;cursorRequest = store.openCursor()&quot;);
+    cursorRequest.onsuccess = function openCursorSuccess(evt) {
+        preamble(evt);
+        evalAndLog(&quot;cursor = cursorRequest.result&quot;);
+        debug(&quot;Don't continue the cursor, so it retains its key/primaryKey/value&quot;);
+    };
+    tx.oncomplete = function transactionComplete(evt) {
+        preamble(evt);
+        shouldBeEqualToString(&quot;JSON.stringify(cursor.key)&quot;, '[&quot;key&quot;]');
+        shouldBeEqualToString(&quot;JSON.stringify(cursor.primaryKey)&quot;, '[&quot;key&quot;]');
+        shouldBeEqualToString(&quot;JSON.stringify(cursor.value)&quot;, '{&quot;value&quot;:&quot;value&quot;}');
+        finishJSTest();
+    };
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbconnectionleakexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/connection-leak-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/connection-leak-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/connection-leak-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+Regression test to ensure that IndexedDB connections don't leak
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+dbname = &quot;connection-leak.html&quot;
+
+doFirstOpen():
+request = indexedDB.open(dbname, 1)
+sawUpgradeNeeded1 = false
+
+onUpgradeNeeded1():
+sawUpgradeNeeded1 = true
+
+onOpenSuccess1():
+PASS sawUpgradeNeeded1 is true
+db = request.result
+db.close()
+
+doSecondOpen():
+request = indexedDB.open(dbname, 1)
+
+onOpenSuccess2():
+db = request.result
+db = null
+request = null
+Run GC outside of request's callback via setTimeout()
+window.gc()
+
+doThirdOpen():
+request = indexedDB.open(dbname, 2)
+sawUpgradeNeeded3 = false
+
+onUpgradeNeeded2():
+sawUpgradeNeeded3 = true
+
+onOpenSuccess3():
+PASS sawUpgradeNeeded3 is true
+db = request.result
+db.close()
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbconnectionleakhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/connection-leak.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/connection-leak.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/connection-leak.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Regression test to ensure that IndexedDB connections don't leak&quot;);
+
+setDBNameFromPath();
+doFirstOpen();
+
+function doFirstOpen()
+{
+    preamble();
+
+    evalAndLog(&quot;request = indexedDB.open(dbname, 1)&quot;);
+    evalAndLog(&quot;sawUpgradeNeeded1 = false&quot;);
+    request.onerror = unexpectedErrorCallback;
+    request.onblocked = unexpectedBlockedCallback;
+    request.onupgradeneeded = function onUpgradeNeeded1() {
+        preamble();
+        evalAndLog(&quot;sawUpgradeNeeded1 = true&quot;);
+    };
+    request.onsuccess = function onOpenSuccess1() {
+        preamble();
+        shouldBeTrue(&quot;sawUpgradeNeeded1&quot;);
+        evalAndLog(&quot;db = request.result&quot;);
+        evalAndLog(&quot;db.close()&quot;);
+
+        doSecondOpen();
+    };
+}
+
+function doSecondOpen()
+{
+    preamble();
+
+    evalAndLog(&quot;request = indexedDB.open(dbname, 1)&quot;);
+    request.onerror = unexpectedErrorCallback;
+    request.onblocked = unexpectedBlockedCallback;
+    request.onupgradeneeded = unexpectedUpgradeNeededCallback;
+    request.onsuccess = function onOpenSuccess2() {
+        preamble();
+        evalAndLog(&quot;db = request.result&quot;);
+
+        evalAndLog(&quot;db = null&quot;);
+        evalAndLog(&quot;request = null&quot;);
+
+        debug(&quot;Run GC outside of request's callback via setTimeout()&quot;);
+        setTimeout( function() {
+            evalAndLog(&quot;window.gc()&quot;);
+            doThirdOpen();
+        }, 0);
+    };
+}
+
+function doThirdOpen()
+{
+    preamble();
+
+    evalAndLog(&quot;request = indexedDB.open(dbname, 2)&quot;);
+    evalAndLog(&quot;sawUpgradeNeeded3 = false&quot;);
+    request.onerror = unexpectedErrorCallback;
+    request.onblocked = unexpectedBlockedCallback;
+    request.onupgradeneeded = function onUpgradeNeeded2() {
+        preamble();
+        evalAndLog(&quot;sawUpgradeNeeded3 = true&quot;);
+    };
+    request.onsuccess = function onOpenSuccess3() {
+        preamble();
+        shouldBeTrue(&quot;sawUpgradeNeeded3&quot;);
+        evalAndLog(&quot;db = request.result&quot;);
+        evalAndLog(&quot;db.close()&quot;);
+
+        finishJSTest();
+    };
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateandremoveobjectstoreexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ConstraintError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': An object store with the specified name already exists.
</ins><span class="cx"> trans = db.transaction(['tmp'])
</span><span class="cx"> trans.objectStore('tmp').get(0)
</span><span class="cx"> PASS event.target.result is undefined.
</span><span class="lines">@@ -21,21 +22,25 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The database is not running a version change transaction.
</ins><span class="cx"> Trying remove
</span><span class="cx"> Expecting exception from db.deleteObjectStore(&quot;some os&quot;)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'deleteObjectStore' on 'IDBDatabase': The database is not running a version change transaction.
</ins><span class="cx"> Trying create with store that already exists
</span><span class="cx"> Expecting exception from db.createObjectStore('tmp')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The database is not running a version change transaction.
</ins><span class="cx"> Trying remove with store that already exists
</span><span class="cx"> Expecting exception from db.deleteObjectStore('tmp')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'deleteObjectStore' on 'IDBDatabase': The database is not running a version change transaction.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateandremoveobjectstorehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/create-and-remove-object-store.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateobjectstoreoptionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -16,10 +16,10 @@
</span><span class="cx"> trans.objectStore('a').put({'a': 0})
</span><span class="cx"> Expecting TypeError exception from db.createObjectStore('d', 'bar');
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS db.createObjectStore('d', 'bar'); threw TypeError: Not an object.
</del><ins>+PASS db.createObjectStore('d', 'bar'); threw TypeError: Failed to execute 'createObjectStore' on 'IDBDatabase': parameter 2 ('options') is not an object.
</ins><span class="cx"> Expecting TypeError exception from db.createObjectStore('e', false);
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS db.createObjectStore('e', false); threw TypeError: Not an object.
</del><ins>+PASS db.createObjectStore('e', false); threw TypeError: Failed to execute 'createObjectStore' on 'IDBDatabase': parameter 2 ('options') is not an object.
</ins><span class="cx"> trans.objectStore('b').put({'a': 0}, 0)
</span><span class="cx"> trans.objectStore('a').get(0)
</span><span class="cx"> PASS event.target.result.a is {a: 0}
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateobjectstoreoptionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/create-object-store-options.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-object-store-options.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/create-object-store-options.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/create-object-store-options.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateIndexafterfailureexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/createIndex-after-failure-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createIndex-after-failure-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/createIndex-after-failure-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -14,6 +14,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> Now requesting object2
</span><span class="cx"> now we wait.
</span><span class="cx"> deleteIndexAfterGet()
</span><span class="lines">@@ -21,10 +22,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> Expecting exception from objectStore.deleteIndex('index')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateIndexafterfailurehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/createIndex-after-failure.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createIndex-after-failure.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/createIndex-after-failure.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/createIndex-after-failure.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateObjectStorenameargumentrequiredexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -9,7 +9,7 @@
</span><span class="cx"> indexedDB.deleteDatabase(dbname)
</span><span class="cx"> indexedDB.open(dbname)
</span><span class="cx"> db = event.target.result
</span><del>-PASS db.createObjectStore(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS db.createObjectStore(); threw exception TypeError: Failed to execute 'createObjectStore' on 'IDBDatabase': 1 argument required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateObjectStorenameargumentrequiredhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/createObjectStore-name-argument-required.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcreateObjectStorenullnamehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/createObjectStore-null-name.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createObjectStore-null-name.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/createObjectStore-null-name.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/createObjectStore-null-name.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoraddedbughtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-added-bug.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoradvanceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-advance-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -178,16 +178,16 @@
</span><span class="cx"> advanceBadly():
</span><span class="cx"> Expecting TypeError exception from cursor.advance(0)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS cursor.advance(0) threw TypeError: Type error
</del><ins>+PASS cursor.advance(0) threw TypeError: Failed to execute 'advance' on 'IDBCursor': A count argument with value 0 (zero) was supplied, must be greater than 0.
</ins><span class="cx"> Expecting TypeError exception from cursor.advance(-1)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS cursor.advance(-1) threw TypeError: Type error
</del><ins>+PASS cursor.advance(-1) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</ins><span class="cx"> Expecting TypeError exception from cursor.advance(0x100000000)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS cursor.advance(0x100000000) threw TypeError: Type error
</del><ins>+PASS cursor.advance(0x100000000) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</ins><span class="cx"> Expecting TypeError exception from cursor.advance(0x20000000000000)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS cursor.advance(0x20000000000000) threw TypeError: Type error
</del><ins>+PASS cursor.advance(0x20000000000000) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</ins><span class="cx"> 
</span><span class="cx"> testEdges():
</span><span class="cx"> trans = db.transaction(objectStoreName, 'readonly')
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoradvanceworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -179,16 +179,16 @@
</span><span class="cx"> [Worker] advanceBadly():
</span><span class="cx"> [Worker] Expecting TypeError exception from cursor.advance(0)
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] cursor.advance(0) threw TypeError: Type error
</del><ins>+PASS [Worker] cursor.advance(0) threw TypeError: Failed to execute 'advance' on 'IDBCursor': A count argument with value 0 (zero) was supplied, must be greater than 0.
</ins><span class="cx"> [Worker] Expecting TypeError exception from cursor.advance(-1)
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] cursor.advance(-1) threw TypeError: Type error
</del><ins>+PASS [Worker] cursor.advance(-1) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</ins><span class="cx"> [Worker] Expecting TypeError exception from cursor.advance(0x100000000)
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] cursor.advance(0x100000000) threw TypeError: Type error
</del><ins>+PASS [Worker] cursor.advance(0x100000000) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</ins><span class="cx"> [Worker] Expecting TypeError exception from cursor.advance(0x20000000000000)
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] cursor.advance(0x20000000000000) threw TypeError: Type error
</del><ins>+PASS [Worker] cursor.advance(0x20000000000000) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] testEdges():
</span><span class="cx"> [Worker] trans = db.transaction(objectStoreName, 'readonly')
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoradvanceworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/cursor-advance.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/cursor-advance.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoradvancehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-advance.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-advance.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorbasicsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-basics-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-basics-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,111 @@
</span><ins>+Test the basics of IndexedDB's IDBCursor objects.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;cursor-basics.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+store = db.createObjectStore('storeName')
+index = store.createIndex('indexName', 'indexOn')
+store.put({indexOn: 'a'}, 0)
+store.openCursor()
+store.openKeyCursor()
+index.openCursor()
+index.openKeyCursor()
+
+onStoreOpenCursor():
+cursor = event.target.result
+PASS cursor is non-null.
+PASS cursor instanceof IDBCursor is true
+PASS 'key' in cursor is true
+PASS 'primaryKey' in cursor is true
+PASS 'continue' in cursor is true
+PASS typeof cursor.continue is &quot;function&quot;
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is &quot;function&quot;
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is &quot;function&quot;
+PASS 'update' in cursor is true
+PASS typeof cursor.update is &quot;function&quot;
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is &quot;function&quot;
+PASS cursor.key is 0
+PASS cursor.primaryKey is 0
+PASS cursor instanceof IDBCursorWithValue is true
+PASS 'value' in cursor is true
+PASS JSON.stringify(cursor.value) is &quot;{\&quot;indexOn\&quot;:\&quot;a\&quot;}&quot;
+
+onStoreOpenKeyCursor():
+cursor = event.target.result
+PASS cursor is non-null.
+PASS cursor instanceof IDBCursor is true
+PASS 'key' in cursor is true
+PASS 'primaryKey' in cursor is true
+PASS 'continue' in cursor is true
+PASS typeof cursor.continue is &quot;function&quot;
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is &quot;function&quot;
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is &quot;function&quot;
+PASS 'update' in cursor is true
+PASS typeof cursor.update is &quot;function&quot;
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is &quot;function&quot;
+PASS cursor.key is 0
+PASS 'primaryKey' in cursor is true
+PASS cursor.primaryKey is 0
+PASS cursor instanceof IDBCursorWithValue is false
+PASS 'value' in cursor is false
+
+onIndexOpenCursor():
+cursor = event.target.result
+PASS cursor is non-null.
+PASS cursor instanceof IDBCursor is true
+PASS 'key' in cursor is true
+PASS 'primaryKey' in cursor is true
+PASS 'continue' in cursor is true
+PASS typeof cursor.continue is &quot;function&quot;
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is &quot;function&quot;
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is &quot;function&quot;
+PASS 'update' in cursor is true
+PASS typeof cursor.update is &quot;function&quot;
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is &quot;function&quot;
+PASS cursor.key is &quot;a&quot;
+PASS cursor.primaryKey is 0
+PASS cursor instanceof IDBCursorWithValue is true
+PASS 'value' in cursor is true
+PASS JSON.stringify(cursor.value) is &quot;{\&quot;indexOn\&quot;:\&quot;a\&quot;}&quot;
+
+onIndexOpenKeyCursor():
+cursor = event.target.result
+PASS cursor is non-null.
+PASS cursor instanceof IDBCursor is true
+PASS 'key' in cursor is true
+PASS 'primaryKey' in cursor is true
+PASS 'continue' in cursor is true
+PASS typeof cursor.continue is &quot;function&quot;
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is &quot;function&quot;
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is &quot;function&quot;
+PASS 'update' in cursor is true
+PASS typeof cursor.update is &quot;function&quot;
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is &quot;function&quot;
+PASS cursor.key is &quot;a&quot;
+PASS cursor.primaryKey is 0
+PASS cursor instanceof IDBCursorWithValue is false
+PASS cursor.primaryKey is 0
+PASS 'value' in cursor is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorbasicshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-basics.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-basics.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/cursor-basics.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcastexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-cast-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-cast-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-cast-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+Ensure cursor wrappers are created correctly.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;cursor-cast.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+store.put(0, 0)
+
+verifyWrappers():
+db = event.target.result
+tx = db.transaction('store', 'readwrite')
+request = tx.objectStore('store').openCursor()
+
+onOpenCursorSuccess():
+cursor = event.target.result
+request = cursor.update(1)
+
+onUpdateSuccess():
+cursor = null
+PASS request.source.toString() is &quot;[object IDBCursorWithValue]&quot;
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcasthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-cast.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-cast.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-cast.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Ensure cursor wrappers are created correctly.&quot;);
+
+indexedDBTest(prepareDatabase, verifyWrappers);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    evalAndLog(&quot;store.put(0, 0)&quot;);
+}
+
+function verifyWrappers(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;tx = db.transaction('store', 'readwrite')&quot;);
+    evalAndLog(&quot;request = tx.objectStore('store').openCursor()&quot;);
+
+    request.onsuccess = function onOpenCursorSuccess(evt) {
+        preamble(evt);
+        evalAndLog(&quot;cursor = event.target.result&quot;);
+        evalAndLog(&quot;request = cursor.update(1)&quot;);
+
+        request.onsuccess = function onUpdateSuccess(evt) {
+            preamble(evt);
+            evalAndLog(&quot;cursor = null&quot;);
+            gc();
+            gc(); // FIXME: Shouldn't need to call twice. http://crbug.com/288072
+            setTimeout(checkCursorType, 0);
+        };
+    };
+}
+
+function checkCursorType() {
+    shouldBeEqualToString(&quot;request.source.toString()&quot;, &quot;[object IDBCursorWithValue]&quot;);
+    finishJSTest();
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinuedirexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-continue-dir-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-dir-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-dir-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is less than or equal to this cursor's position.
</ins><span class="cx"> request = store.openCursor(IDBKeyRange.bound(-Infinity, Infinity), 'prev')
</span><span class="cx"> cursor = request.result
</span><span class="cx"> PASS cursor is non-null.
</span><span class="lines">@@ -39,6 +40,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is greater than or equal to this cursor's position.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinuedirhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-continue-dir.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-dir.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-dir.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-continue-dir.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinueexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-continue-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -81,6 +81,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is less than or equal to this cursor's position.
</ins><span class="cx"> 
</span><span class="cx"> indexObject.openKeyCursor(null, 'next')
</span><span class="cx"> PASS event.target.result.primaryKey is 0
</span><span class="lines">@@ -90,6 +91,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is less than or equal to this cursor's position.
</ins><span class="cx"> 
</span><span class="cx"> indexObject.openKeyCursor(null, 'prev')
</span><span class="cx"> PASS event.target.result.primaryKey is 17
</span><span class="lines">@@ -99,6 +101,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is greater than or equal to this cursor's position.
</ins><span class="cx"> 
</span><span class="cx"> indexObject.openKeyCursor(null, 'prev')
</span><span class="cx"> PASS event.target.result.primaryKey is 17
</span><span class="lines">@@ -109,10 +112,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is greater than or equal to this cursor's position.
</ins><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The transaction has finished.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinuevalidityexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-continue-validity-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-validity-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-validity-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -54,6 +54,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 0
</span><span class="cx"> PASS cursor.value.x is 0
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -68,6 +69,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 1
</span><span class="cx"> PASS cursor.value.x is 1
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -82,6 +84,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 2
</span><span class="cx"> PASS cursor.value.x is 2
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -96,6 +99,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 3
</span><span class="cx"> PASS cursor.value.x is 3
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -110,6 +114,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 4
</span><span class="cx"> PASS cursor.value.x is 4
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -124,6 +129,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 5
</span><span class="cx"> PASS cursor.value.x is 5
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -138,6 +144,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 6
</span><span class="cx"> PASS cursor.value.x is 6
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -152,6 +159,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 7
</span><span class="cx"> PASS cursor.value.x is 7
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -166,6 +174,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 8
</span><span class="cx"> PASS cursor.value.x is 8
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -180,6 +189,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 9
</span><span class="cx"> PASS cursor.value.x is 9
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -194,6 +204,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 10
</span><span class="cx"> PASS cursor.value.x is 10
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -208,6 +219,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 11
</span><span class="cx"> PASS cursor.value.x is 11
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -222,6 +234,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 12
</span><span class="cx"> PASS cursor.value.x is 12
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -236,6 +249,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 13
</span><span class="cx"> PASS cursor.value.x is 13
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -250,6 +264,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 14
</span><span class="cx"> PASS cursor.value.x is 14
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -264,6 +279,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 15
</span><span class="cx"> PASS cursor.value.x is 15
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -278,6 +294,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 16
</span><span class="cx"> PASS cursor.value.x is 16
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -292,6 +309,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 17
</span><span class="cx"> PASS cursor.value.x is 17
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -306,6 +324,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 18
</span><span class="cx"> PASS cursor.value.x is 18
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -320,6 +339,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 19
</span><span class="cx"> PASS cursor.value.x is 19
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -334,6 +354,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 20
</span><span class="cx"> PASS cursor.value.x is 20
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -348,6 +369,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 21
</span><span class="cx"> PASS cursor.value.x is 21
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -362,6 +384,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 22
</span><span class="cx"> PASS cursor.value.x is 22
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -376,6 +399,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 23
</span><span class="cx"> PASS cursor.value.x is 23
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -390,6 +414,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 24
</span><span class="cx"> PASS cursor.value.x is 24
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -411,6 +436,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 0
</span><span class="cx"> PASS cursor.value.x is 0
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -424,6 +450,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 1
</span><span class="cx"> PASS cursor.value.x is 1
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -437,6 +464,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 2
</span><span class="cx"> PASS cursor.value.x is 2
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -450,6 +478,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 3
</span><span class="cx"> PASS cursor.value.x is 3
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -463,6 +492,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 4
</span><span class="cx"> PASS cursor.value.x is 4
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -476,6 +506,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 5
</span><span class="cx"> PASS cursor.value.x is 5
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -489,6 +520,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 6
</span><span class="cx"> PASS cursor.value.x is 6
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -502,6 +534,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 7
</span><span class="cx"> PASS cursor.value.x is 7
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -515,6 +548,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 8
</span><span class="cx"> PASS cursor.value.x is 8
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -528,6 +562,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 9
</span><span class="cx"> PASS cursor.value.x is 9
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -541,6 +576,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 10
</span><span class="cx"> PASS cursor.value.x is 10
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -554,6 +590,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 11
</span><span class="cx"> PASS cursor.value.x is 11
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -567,6 +604,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 12
</span><span class="cx"> PASS cursor.value.x is 12
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -580,6 +618,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 13
</span><span class="cx"> PASS cursor.value.x is 13
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -593,6 +632,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 14
</span><span class="cx"> PASS cursor.value.x is 14
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -606,6 +646,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 15
</span><span class="cx"> PASS cursor.value.x is 15
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -619,6 +660,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 16
</span><span class="cx"> PASS cursor.value.x is 16
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -632,6 +674,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 17
</span><span class="cx"> PASS cursor.value.x is 17
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -645,6 +688,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 18
</span><span class="cx"> PASS cursor.value.x is 18
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -658,6 +702,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 19
</span><span class="cx"> PASS cursor.value.x is 19
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -671,6 +716,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 20
</span><span class="cx"> PASS cursor.value.x is 20
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -684,6 +730,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 21
</span><span class="cx"> PASS cursor.value.x is 21
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -697,6 +744,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 22
</span><span class="cx"> PASS cursor.value.x is 22
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -710,6 +758,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 23
</span><span class="cx"> PASS cursor.value.x is 23
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -723,6 +772,7 @@
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> PASS cursor.key is 24
</span><span class="cx"> PASS cursor.value.x is 24
</span><span class="cx"> self.continueValue++;
</span><span class="lines">@@ -749,6 +799,7 @@
</span><span class="cx"> Expecting exception from cursor.update({ x: 100 + self.continueValue})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> cursor = event.target.result
</span><span class="cx"> cursor.update({ x: 100 + self.continueValue })
</span><span class="cx"> cursor.continue()
</span><span class="lines">@@ -757,6 +808,7 @@
</span><span class="cx"> Expecting exception from cursor.delete()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> cursor = event.target.result
</span><span class="cx"> cursor.update({ x: 100 + self.continueValue })
</span><span class="cx"> cursor.continue()
</span><span class="lines">@@ -808,6 +860,7 @@
</span><span class="cx"> Expecting exception from cursor.update({ x: 100 + self.continueValue})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> cursor = event.target.result
</span><span class="cx"> cursor.update({ x: 100 + self.continueValue })
</span><span class="cx"> cursor.continue()
</span><span class="lines">@@ -838,6 +891,7 @@
</span><span class="cx"> Expecting exception from cursor.update({ x: 100 + self.continueValue})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> cursor = event.target.result
</span><span class="cx"> cursor.update({ x: 100 + self.continueValue })
</span><span class="cx"> cursor.continue()
</span><span class="lines">@@ -878,6 +932,7 @@
</span><span class="cx"> Expecting exception from cursor.delete()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> cursor = event.target.result
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinuevalidityhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-continue-validity.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-validity.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-validity.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-continue-validity.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinuehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-continue.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-continue.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinueprimarykeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,174 @@
</span><ins>+Test IndexedDB's IDBCursor.continue() with a primary key parameter.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;cursor-continueprimarykey.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+index = store.createIndex('index', 'indexKey', {multiEntry: true})
+store.put({indexKey: ['a', 'b']}, 1)
+store.put({indexKey: ['a', 'b']}, 2)
+store.put({indexKey: ['a', 'b']}, 3)
+store.put({indexKey: ['b']}, 4)
+checking index structure...
+
+index key  primary key
+=========  ===========
+a          1
+a          2
+a          3
+b          1
+b          2
+b          3
+b          4
+
+Test case: cursor.continue()
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continue()
+PASS cursor.key is &quot;a&quot;
+PASS cursor.primaryKey is 2
+
+Test case: cursor.continue('a')
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+Expecting exception from cursor.continue('a')
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is less than or equal to this cursor's position.
+
+Test case: cursor.continue('b')
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continue('b')
+PASS cursor.key is &quot;b&quot;
+PASS cursor.primaryKey is 1
+
+Test case: cursor.continue('c')
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continue('c')
+PASS cursor is null
+
+Test case: cursor.continuePrimaryKey('a', 3)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continuePrimaryKey('a', 3)
+PASS cursor.key is &quot;a&quot;
+PASS cursor.primaryKey is 3
+
+Test case: cursor.continuePrimaryKey('a', 4)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continuePrimaryKey('a', 4)
+PASS cursor.key is &quot;b&quot;
+PASS cursor.primaryKey is 1
+
+Test case: cursor.continuePrimaryKey('b', 1)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continuePrimaryKey('b', 1)
+PASS cursor.key is &quot;b&quot;
+PASS cursor.primaryKey is 1
+
+Test case: cursor.continuePrimaryKey('b', 4)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continuePrimaryKey('b', 4)
+PASS cursor.key is &quot;b&quot;
+PASS cursor.primaryKey is 4
+
+Test case: cursor.continuePrimaryKey('b', 5)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continuePrimaryKey('b', 5)
+PASS cursor is null
+
+Test case: cursor.continuePrimaryKey('c', 1)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+cursor.continuePrimaryKey('c', 1)
+PASS cursor is null
+
+Test case: cursor.continuePrimaryKey(null, 1)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+Expecting exception from cursor.continuePrimaryKey(null, 1)
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'continuePrimaryKey' on 'IDBCursor': The parameter is not a valid key.
+
+Test case: cursor.continuePrimaryKey(null, 2)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+Expecting exception from cursor.continuePrimaryKey(null, 2)
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'continuePrimaryKey' on 'IDBCursor': The parameter is not a valid key.
+
+Test case: cursor.continuePrimaryKey(null, 3)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+Expecting exception from cursor.continuePrimaryKey(null, 3)
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'continuePrimaryKey' on 'IDBCursor': The parameter is not a valid key.
+
+Test case: cursor.continuePrimaryKey(null, 4)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+Expecting exception from cursor.continuePrimaryKey(null, 4)
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'continuePrimaryKey' on 'IDBCursor': The parameter is not a valid key.
+
+Test case: cursor.continuePrimaryKey(null, 5)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+Expecting exception from cursor.continuePrimaryKey(null, 5)
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'continuePrimaryKey' on 'IDBCursor': The parameter is not a valid key.
+
+Test case: cursor.continuePrimaryKey('a', null)
+
+tx = db.transaction('store')
+request = tx.objectStore('store').index('index').openCursor()
+Expecting exception from cursor.continuePrimaryKey('a', null)
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'continuePrimaryKey' on 'IDBCursor': The parameter is not a valid key.
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorcontinueprimarykeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continueprimarykey.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/cursor-continueprimarykey.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursordeletehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-delete.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-delete.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-delete.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-delete.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorfinishedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-finished-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-finished-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-finished-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -49,22 +49,27 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> Expecting exception from savedCursor.advance(1)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> Expecting exception from savedCursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> Expecting exception from savedCursor.continue('key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> Expecting exception from savedCursor.delete()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorfinishedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-finished.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-finished.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-finished.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,12 +1,11 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-finished.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorinconsistencyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-inconsistency.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-inconsistency.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-inconsistency.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-inconsistency.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorindexdeletehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-index-delete.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-index-delete.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-index-delete.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-index-delete.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorkeyorderhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-key-order.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-key-order.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-key-order.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-key-order.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorleakexpectedtxtfromrev163962trunkLayoutTestsstorageindexeddbtransactionstoreNamesrequiredexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/storage/indexeddb/cursor-leak-expected.txt (from rev 163962, trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt) (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-leak-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-leak-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+Verify that that cursors weakly hold script value properties
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;cursor-leak.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+PASS cursorObserver.wasCollected is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorleakhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-leak.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-leak.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-leak.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Verify that that cursors weakly hold script value properties&quot;);
+
+if (window.internals) {
+    indexedDBTest(prepareDatabase, onOpen);
+} else {
+    testFailed('This test requires access to the Internals object');
+    finishJSTest();
+}
+
+function prepareDatabase(evt)
+{
+    db = event.target.result;
+    store = db.createObjectStore('store');
+    store.put({value: 'value'}, ['key']);
+}
+
+function onOpen(evt)
+{
+    // evalAndLog() is not used as that generates new DOM nodes.
+
+    db = evt.target.result;
+    tx = db.transaction('store');
+    store = tx.objectStore('store');
+    cursorRequest = store.openCursor();
+    cursorRequest.onsuccess = function() {
+        cursor = cursorRequest.result;
+    };
+    tx.oncomplete = function() {
+        db.close();
+
+        // Try and induce a leak by a reference cycle from DOM to V8 and back.
+        // If the v8 value of cursor.key (etc) is only held by the cursor's
+        // V8 wrapper then there will be no leak.
+        cursor.key.cursor = cursor;
+        cursor.primaryKey.cursor = cursor;
+        cursor.value.cursor = cursor;
+
+        cursorObserver = internals.observeGC(cursor);
+
+        cursorRequest = null;
+        cursor = null;
+
+        gc();
+
+        shouldBeTrue(&quot;cursorObserver.wasCollected&quot;);
+        finishJSTest();
+    };
+}
+
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoroverloadsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-overloads-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-overloads-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-overloads-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -49,6 +49,39 @@
</span><span class="cx"> store.openCursor(IDBKeyRange.only(0), 'prevunique')
</span><span class="cx"> PASS event.target.result is non-null.
</span><span class="cx"> PASS event.target.result.direction is &quot;prevunique&quot;
</span><ins>+store.openKeyCursor()
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;next&quot;
+store.openKeyCursor(0)
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;next&quot;
+store.openKeyCursor(0, 'next')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;next&quot;
+store.openKeyCursor(0, 'nextunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;nextunique&quot;
+store.openKeyCursor(0, 'prev')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;prev&quot;
+store.openKeyCursor(0, 'prevunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;prevunique&quot;
+store.openKeyCursor(IDBKeyRange.only(0))
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;next&quot;
+store.openKeyCursor(IDBKeyRange.only(0), 'next')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;next&quot;
+store.openKeyCursor(IDBKeyRange.only(0), 'nextunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;nextunique&quot;
+store.openKeyCursor(IDBKeyRange.only(0), 'prev')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;prev&quot;
+store.openKeyCursor(IDBKeyRange.only(0), 'prevunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is &quot;prevunique&quot;
</ins><span class="cx"> index.openCursor()
</span><span class="cx"> PASS event.target.result is non-null.
</span><span class="cx"> PASS event.target.result.direction is &quot;next&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoroverloadshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-overloads.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-overloads.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-overloads.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> description(&quot;Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor().&quot;);
</span><span class="lines">@@ -35,6 +35,19 @@
</span><span class="cx">     checkCursorDirection(&quot;store.openCursor(IDBKeyRange.only(0), 'prev')&quot;, &quot;prev&quot;);
</span><span class="cx">     checkCursorDirection(&quot;store.openCursor(IDBKeyRange.only(0), 'prevunique')&quot;, &quot;prevunique&quot;);
</span><span class="cx"> 
</span><ins>+    checkCursorDirection(&quot;store.openKeyCursor()&quot;, &quot;next&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(0)&quot;, &quot;next&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(0, 'next')&quot;, &quot;next&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(0, 'nextunique')&quot;, &quot;nextunique&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(0, 'prev')&quot;, &quot;prev&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(0, 'prevunique')&quot;, &quot;prevunique&quot;);
+
+    checkCursorDirection(&quot;store.openKeyCursor(IDBKeyRange.only(0))&quot;, &quot;next&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;next&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(IDBKeyRange.only(0), 'nextunique')&quot;, &quot;nextunique&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(IDBKeyRange.only(0), 'prev')&quot;, &quot;prev&quot;);
+    checkCursorDirection(&quot;store.openKeyCursor(IDBKeyRange.only(0), 'prevunique')&quot;, &quot;prevunique&quot;);
+
</ins><span class="cx">     checkCursorDirection(&quot;index.openCursor()&quot;, &quot;next&quot;);
</span><span class="cx">     checkCursorDirection(&quot;index.openCursor(0)&quot;, &quot;next&quot;);
</span><span class="cx">     checkCursorDirection(&quot;index.openCursor(0, 'next')&quot;, &quot;next&quot;);
</span><span class="lines">@@ -76,4 +89,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorprevnoduplicatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-prev-no-duplicate.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-prev-no-duplicate.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-prev-no-duplicate.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-prev-no-duplicate.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorprimarykeyorderhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-primary-key-order.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-primary-key-order.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-primary-key-order.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-primary-key-order.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorpropertieshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-properties.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-properties.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-properties.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-properties.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorrequestcycleexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-request-cycle-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-request-cycle-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-request-cycle-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+Verify that that cursors weakly hold request, and work if request is GC'd
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;cursor-request-cycle.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+
+onOpen():
+db = event.target.result
+tx = db.transaction('store')
+store = tx.objectStore('store')
+cursorRequest = store.openCursor()
+otherRequest = store.get(0)
+
+openCursorRequestSuccess():
+Result will be checked later, to ensure that lazy access is safe
+
+otherRequestSuccess():
+Verify that the request's result can be accessed lazily:
+gc()
+cursor = cursorRequest.result
+PASS cursor is non-null.
+PASS cursor.key is &quot;key1&quot;
+PASS cursor.value is &quot;value1&quot;
+cursorRequest.extra = 123
+cursor.extra = 456
+Ensure request is not released if cursor is still around.
+cursorRequest = null
+gc()
+PASS cursorRequestObservation.wasCollected is false
+cursor.continue()
+cursor = null
+gc()
+PASS cursorObservation.wasCollected is false
+finalRequest = store.get(0)
+
+cursorContinueSuccess():
+cursor = event.target.result
+PASS cursor is non-null.
+PASS cursor.key is &quot;key2&quot;
+PASS cursor.value is &quot;value2&quot;
+PASS event.target.extra is 123
+PASS cursor.extra is 456
+
+finalRequestSuccess():
+PASS cursor.key is &quot;key2&quot;
+PASS cursor.value is &quot;value2&quot;
+cursor = null
+gc()
+PASS cursorRequestObservation.wasCollected is true
+PASS cursorObservation.wasCollected is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorrequestcyclehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/cursor-request-cycle.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-request-cycle.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/cursor-request-cycle.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Verify that that cursors weakly hold request, and work if request is GC'd&quot;);
+
+indexedDBTest(prepareDatabase, onOpen);
+
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    store.put(&quot;value1&quot;, &quot;key1&quot;);
+    store.put(&quot;value2&quot;, &quot;key2&quot;);
+}
+
+function onOpen(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;tx = db.transaction('store')&quot;);
+    evalAndLog(&quot;store = tx.objectStore('store')&quot;);
+
+    evalAndLog(&quot;cursorRequest = store.openCursor()&quot;);
+    cursorRequest.onsuccess = function openCursorRequestSuccess(evt) {
+        preamble(evt);
+        debug(&quot;Result will be checked later, to ensure that lazy access is safe&quot;);
+    };
+
+    evalAndLog(&quot;otherRequest = store.get(0)&quot;);
+    otherRequest.onsuccess = function otherRequestSuccess(evt) {
+        preamble(evt);
+
+        debug(&quot;Verify that the request's result can be accessed lazily:&quot;);
+        evalAndLog(&quot;gc()&quot;);
+
+        evalAndLog(&quot;cursor = cursorRequest.result&quot;);
+        shouldBeNonNull(&quot;cursor&quot;);
+        shouldBeEqualToString(&quot;cursor.key&quot;, &quot;key1&quot;);
+        shouldBeEqualToString(&quot;cursor.value&quot;, &quot;value1&quot;);
+        evalAndLog(&quot;cursorRequest.extra = 123&quot;);
+        evalAndLog(&quot;cursor.extra = 456&quot;);
+
+        // Assign a new handler to inspect the request and cursor indirectly.
+        cursorRequest.onsuccess = function cursorContinueSuccess(evt) {
+            preamble(evt);
+            evalAndLog(&quot;cursor = event.target.result&quot;);
+            shouldBeNonNull(&quot;cursor&quot;);
+            shouldBeEqualToString(&quot;cursor.key&quot;, &quot;key2&quot;);
+            shouldBeEqualToString(&quot;cursor.value&quot;, &quot;value2&quot;);
+            shouldBe(&quot;event.target.extra&quot;, &quot;123&quot;);
+            shouldBe(&quot;cursor.extra&quot;, &quot;456&quot;);
+        };
+
+        debug(&quot;Ensure request is not released if cursor is still around.&quot;);
+        cursorRequestObservation = internals.observeGC(cursorRequest);
+        evalAndLog(&quot;cursorRequest = null&quot;);
+        evalAndLog(&quot;gc()&quot;);
+        shouldBeFalse(&quot;cursorRequestObservation.wasCollected&quot;);
+
+        evalAndLog(&quot;cursor.continue()&quot;);
+
+        cursorObservation = internals.observeGC(cursor);
+        evalAndLog(&quot;cursor = null&quot;);
+        evalAndLog(&quot;gc()&quot;);
+        shouldBeFalse(&quot;cursorObservation.wasCollected&quot;);
+
+        evalAndLog(&quot;finalRequest = store.get(0)&quot;);
+        finalRequest.onsuccess = function finalRequestSuccess(evt) {
+            preamble(evt);
+            shouldBeEqualToString(&quot;cursor.key&quot;, &quot;key2&quot;);
+            shouldBeEqualToString(&quot;cursor.value&quot;, &quot;value2&quot;);
+
+            cursorObservation = internals.observeGC(cursor);
+            evalAndLog(&quot;cursor = null&quot;);
+            evalAndLog(&quot;gc()&quot;);
+            shouldBeTrue(&quot;cursorRequestObservation.wasCollected&quot;);
+            shouldBeTrue(&quot;cursorObservation.wasCollected&quot;);
+        };
+    };
+
+    tx.oncomplete = finishJSTest;
+}
+
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorreversebughtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-reverse-bug.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-reverse-bug.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-reverse-bug.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-reverse-bug.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorskipdeletedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-skip-deleted.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-skip-deleted.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-skip-deleted.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-skip-deleted.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorupdateexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-update-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -110,6 +110,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The effective object store of this cursor uses in-line keys and evaluating the key path of the value parameter results in a different value than the cursor's effective key.
</ins><span class="cx"> event.target.result.update({id: counter, number: 100 + counter++})
</span><span class="cx"> event.target.source.continue()
</span><span class="cx"> keyPathUpdateCursor()
</span><span class="lines">@@ -117,6 +118,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The effective object store of this cursor uses in-line keys and evaluating the key path of the value parameter results in a different value than the cursor's effective key.
</ins><span class="cx"> event.target.result.update({id: counter, number: 100 + counter++})
</span><span class="cx"> event.target.source.continue()
</span><span class="cx"> keyPathUpdateCursor()
</span><span class="lines">@@ -124,6 +126,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The effective object store of this cursor uses in-line keys and evaluating the key path of the value parameter results in a different value than the cursor's effective key.
</ins><span class="cx"> event.target.result.update({id: counter, number: 100 + counter++})
</span><span class="cx"> event.target.source.continue()
</span><span class="cx"> keyPathUpdateCursor()
</span><span class="lines">@@ -131,6 +134,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The effective object store of this cursor uses in-line keys and evaluating the key path of the value parameter results in a different value than the cursor's effective key.
</ins><span class="cx"> event.target.result.update({id: counter, number: 100 + counter++})
</span><span class="cx"> event.target.source.continue()
</span><span class="cx"> keyPathUpdateCursor()
</span><span class="lines">@@ -166,6 +170,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is a key cursor.
</ins><span class="cx"> event.target.result.continue();
</span><span class="cx"> keyCursor()
</span><span class="cx"> PASS event.target.result.key is counter + 100
</span><span class="lines">@@ -174,6 +179,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is a key cursor.
</ins><span class="cx"> event.target.result.continue();
</span><span class="cx"> keyCursor()
</span><span class="cx"> PASS event.target.result.key is counter + 100
</span><span class="lines">@@ -182,6 +188,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is a key cursor.
</ins><span class="cx"> event.target.result.continue();
</span><span class="cx"> keyCursor()
</span><span class="cx"> PASS event.target.result.key is counter + 100
</span><span class="lines">@@ -190,6 +197,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is a key cursor.
</ins><span class="cx"> event.target.result.continue();
</span><span class="cx"> keyCursor()
</span><span class="cx"> PASS counter is 5
</span><span class="lines">@@ -202,24 +210,28 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The record may not be updated inside a read-only transaction.
</ins><span class="cx"> cursor.continue()
</span><span class="cx"> attemptUpdate()
</span><span class="cx"> Expecting exception from cursor.update('myUpdatedValue')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The record may not be updated inside a read-only transaction.
</ins><span class="cx"> cursor.continue()
</span><span class="cx"> attemptUpdate()
</span><span class="cx"> Expecting exception from cursor.update('myUpdatedValue')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The record may not be updated inside a read-only transaction.
</ins><span class="cx"> cursor.continue()
</span><span class="cx"> attemptUpdate()
</span><span class="cx"> Expecting exception from cursor.update('myUpdatedValue')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The record may not be updated inside a read-only transaction.
</ins><span class="cx"> cursor.continue()
</span><span class="cx"> attemptUpdate()
</span><span class="cx"> transactionComplete()
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorupdatevalueargumentrequiredexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx"> request = objectStore.add('foo', keys[i]);
</span><span class="cx"> request = objectStore.openCursor();
</span><span class="cx"> cursor = event.target.result;
</span><del>-PASS cursor.update(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS cursor.update(); threw exception TypeError: Failed to execute 'update' on 'IDBCursor': 1 argument required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorupdatevalueargumentrequiredhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-update-value-argument-required.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorupdatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-update.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-update.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursorvaluehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-value.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-value.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/cursor-value.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-value.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatacorruptionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/data-corruption-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/data-corruption-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/data-corruption-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -9,6 +9,7 @@
</span><span class="cx"> indexedDB.deleteDatabase(dbname)
</span><span class="cx"> indexedDB.open(dbname)
</span><span class="cx"> setVersionSuccess():
</span><ins>+PASS event.dataLoss is &quot;none&quot;
</ins><span class="cx"> trans = event.target.transaction
</span><span class="cx"> PASS trans is non-null.
</span><span class="cx"> db.createObjectStore('storeName')
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatacorruptionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/data-corruption.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/data-corruption.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/data-corruption.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/data-corruption.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasebasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': A version change transaction is running.
</ins><span class="cx"> PASS db.version is 1
</span><span class="cx"> PASS db.name is &quot;database-basics.html&quot;
</span><span class="cx"> PASS db.objectStoreNames is []
</span><span class="lines">@@ -52,6 +53,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> Call twice, make sure it's harmless
</span><span class="cx"> db.close()
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasebasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/database-basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasecloseexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-close-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-close-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-close-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> 
</span><span class="cx"> NOTE: Once the connection is closed, this can unblock the steps for deleting a database, which waits for connections to a given database to be closed before continuing.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabaseclosehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-close.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-close.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-close.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/database-close.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabaseclosependingflagexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-closepending-flag-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-closepending-flag-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-closepending-flag-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -20,6 +20,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> &quot;2. Wait for all transactions created using connection to complete. Once they are complete, connection is closed.&quot;
</span><span class="cx"> transaction.oncomplete = testIDBDatabaseName
</span><span class="cx"> 
</span><span class="lines">@@ -42,6 +43,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> 
</span><span class="cx"> &quot;versionchange&quot; transaction steps:
</span><span class="cx"> &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.&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabaseclosependingflaghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-closepending-flag.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-closepending-flag.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-closepending-flag.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/database-closepending-flag.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasedeletependingflaghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-deletepending-flag.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-deletepending-flag.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-deletepending-flag.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/database-deletepending-flag.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasenameundefinedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-name-undefined-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-name-undefined-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-name-undefined-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> 
</span><span class="cx"> indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
</span><span class="cx"> 
</span><del>-PASS indexedDB.open(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS indexedDB.open(); threw exception TypeError: Failed to execute 'open' on 'IDBFactory': 1 argument required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasenameundefinedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-name-undefined.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-name-undefined.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-name-undefined.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/database-name-undefined.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabaseoddnameshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-odd-names.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-odd-names.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-odd-names.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/database-odd-names.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasewrapperexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-wrapper-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-wrapper-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-wrapper-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> sawVersionChangeEvent = true
</span><span class="cx"> 
</span><span class="cx"> onBlocked():
</span><del>-FIXME: Blocked event shouldn't fire. http://wkbug.com/71130
</del><ins>+FIXME: Blocked event shouldn't fire. http://crbug.com/100123
</ins><span class="cx"> 
</span><span class="cx"> openAgainSuccess():
</span><span class="cx"> PASS sawVersionChangeEvent is true
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdatabasewrapperhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/database-wrapper.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-wrapper.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/database-wrapper.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/database-wrapper.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletecloseddatabaseobjectexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/delete-closed-database-object-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-closed-database-object-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/delete-closed-database-object-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -9,7 +9,6 @@
</span><span class="cx"> indexedDB.deleteDatabase(dbname)
</span><span class="cx"> indexedDB.open(dbname)
</span><span class="cx"> db.close()
</span><del>-We can't specify a version here due to http://wkbug.com/102716
</del><span class="cx"> indexedDB.open(dbname)
</span><span class="cx"> Dropping references to new connection.
</span><span class="cx"> gc()
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletecloseddatabaseobjecthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/delete-closed-database-object.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-closed-database-object.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/delete-closed-database-object.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/delete-closed-database-object.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteinupgradeneededcloseinopensuccesshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/delete-in-upgradeneeded-close-in-open-success.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteinupgradeneededcloseinversionchangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> 
</span><span class="cx"> deleteSuccessCallback():
</span><span class="cx"> PASS sawVersionChange is true
</span><del>-FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://wkbug.com/71130
</del><ins>+FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://crbug.com/100123
</ins><span class="cx"> FAIL sawDeleteBlocked should be false. Was true.
</span><span class="cx"> PASS sawUpgradeNeeded is true
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteinupgradeneededcloseinversionchangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/delete-in-upgradeneeded-close-in-versionchange.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleterangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/delete-range.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-range.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/delete-range.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/delete-range.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteIndexbug110792expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteIndexbug110792html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -39,4 +39,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=../../resources/js-test-post.js&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteIndexexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleteIndex-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,12 +13,14 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><del>-PASS objectStore.deleteIndex() threw exception TypeError: Not enough arguments.
</del><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The specified index was not found.
+PASS objectStore.deleteIndex() threw exception TypeError: Failed to execute 'deleteIndex' on 'IDBObjectStore': 1 argument required, but only 0 present..
</ins><span class="cx"> index = objectStore.createIndex('first', 'first');
</span><span class="cx"> Expecting exception from objectStore.deleteIndex('FIRST')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> index = objectStore.createIndex('second', 'second');
</span><span class="cx"> returnValue = objectStore.deleteIndex('first');
</span><span class="cx"> PASS returnValue is undefined
</span><span class="lines">@@ -26,10 +28,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The database is not running a version change transaction.
</ins><span class="cx"> Expecting exception from objectStore.deleteIndex('second')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteIndexhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleteIndex.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deleteIndex.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteObjectStorenameargumentrequiredexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> dbname = &quot;deleteObjectStore-name-argument-required.html&quot;
</span><span class="cx"> indexedDB.deleteDatabase(dbname)
</span><span class="cx"> indexedDB.open(dbname)
</span><del>-PASS db.deleteObjectStore(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS db.deleteObjectStore(); threw exception TypeError: Failed to execute 'deleteObjectStore' on 'IDBDatabase': 1 argument required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteObjectStorenameargumentrequiredhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deleteObjectStore-name-argument-required.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeleteObjectStorenullnamehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleteObjectStore-null-name.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteObjectStore-null-name.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleteObjectStore-null-name.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deleteObjectStore-null-name.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedobjectsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -9,154 +9,395 @@
</span><span class="cx"> indexedDB.deleteDatabase(dbname)
</span><span class="cx"> indexedDB.open(dbname)
</span><span class="cx"> 
</span><ins>+testStore():
</ins><span class="cx"> deletedStore = connection.createObjectStore('deletedStore')
</span><del>-store = connection.createObjectStore('store')
-deletedIndex = store.createIndex('deletedIndex', 'path')
-
</del><span class="cx"> connection.deleteObjectStore('deletedStore')
</span><del>-store.deleteIndex('deletedIndex')
</del><span class="cx"> 
</span><span class="cx"> Expecting exception from deletedStore.put(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.add(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.delete(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.delete(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.get(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.clear()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'clear' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.openCursor(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.openCursor(0, 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.openCursor(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.openCursor(IDBKeyRange.only(0), 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted.
+Expecting exception from deletedStore.openKeyCursor()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The object store has been deleted.
+Expecting exception from deletedStore.openKeyCursor(0)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The object store has been deleted.
+Expecting exception from deletedStore.openKeyCursor(0, 'next')
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The object store has been deleted.
+Expecting exception from deletedStore.openKeyCursor(IDBKeyRange.only(0))
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The object store has been deleted.
+Expecting exception from deletedStore.openKeyCursor(IDBKeyRange.only(0), 'next')
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.createIndex('name', 'path')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.index('name')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.deleteIndex('name')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.count(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedStore.count(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> 
</span><ins>+testIndex():
+store = connection.createObjectStore('store')
+deletedIndex = store.createIndex('deletedIndex', 'path')
+store.deleteIndex('deletedIndex')
+
</ins><span class="cx"> Expecting exception from deletedIndex.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openCursor(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openCursor(0, 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openCursor(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openCursor(IDBKeyRange.only(0), 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openKeyCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openKeyCursor(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openKeyCursor(0, 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openKeyCursor(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.openKeyCursor(IDBKeyRange.only(0), 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.get(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.getKey(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.getKey(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.count(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted.
</ins><span class="cx"> Expecting exception from deletedIndex.count(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted.
+
+testTransitiveDeletion():
+deletedStore = connection.createObjectStore('deletedStore')
+indexOfDeletedStore = deletedStore.createIndex('index', 'path')
+connection.deleteObjectStore('deletedStore')
+
+Expecting exception from indexOfDeletedStore.openCursor()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openCursor(0)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openCursor(0, 'next')
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openCursor(IDBKeyRange.only(0))
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openCursor(IDBKeyRange.only(0), 'next')
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openKeyCursor()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openKeyCursor(0)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openKeyCursor(0, 'next')
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0))
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0), 'next')
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.get(0)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.get(IDBKeyRange.only(0))
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.getKey(0)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.getKey(IDBKeyRange.only(0))
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.count()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.count(0)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted.
+Expecting exception from indexOfDeletedStore.count(IDBKeyRange.only(0))
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted.
+
+testObjectStoreCursor():
+deletedStore = connection.createObjectStore('deletedStore')
+deletedStore.put(0, 0)
+deletedStore.openCursor()
+cursor = request.result
+PASS cursor.key is 0
+PASS cursor.value is 0
+connection.deleteObjectStore('deletedStore')
+Expecting exception from cursor.delete()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.update(1)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.continue()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.advance(1)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+
+testIndexCursor():
+store.put({id: 123}, 0)
+deletedIndex = store.createIndex('deletedIndex', 'id')
+deletedIndex.openCursor()
+cursor = request.result
+PASS cursor.key is 123
+PASS cursor.primaryKey is 0
+store.deleteIndex('deletedIndex')
+Expecting exception from cursor.delete()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.update(1)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.continue()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.advance(1)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+
+testIndexOfDeletedStoreCursor():
+deletedStore = connection.createObjectStore('deletedStore')
+deletedStore.put({id: 123}, 0)
+index = deletedStore.createIndex('index', 'id')
+index.openCursor()
+cursor = request.result
+PASS cursor.key is 123
+PASS cursor.primaryKey is 0
+connection.deleteObjectStore('deletedStore')
+Expecting exception from cursor.delete()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.update(1)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.continue()
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor's source or effective object store has been deleted.
+Expecting exception from cursor.advance(1)
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor's source or effective object store has been deleted.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedobjectshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deleted-objects.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleted-objects.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deleted-objects.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deleted-objects.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedatabaseblockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-blocked.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-blocked.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-blocked.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deletedatabase-blocked.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyopenandversionchangeworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/deletedatabase-delayed-by-open-and-versionchange.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/deletedatabase-delayed-by-open-and-versionchange.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyopenandversionchangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deletedatabase-delayed-by-open-and-versionchange.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyversionchangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -48,16 +48,17 @@
</span><span class="cx"> deleteDatabaseBlockedEventFired = true
</span><span class="cx"> h1.close()
</span><span class="cx"> 
</span><del>-deleteDatabaseOnSuccess():
-deleteDatabaseComplete = true
-
</del><span class="cx"> h3OnUpgradeneeded():
</span><span class="cx"> 
</span><span class="cx"> transactionOnComplete():
</span><span class="cx"> versionChangeComplete = true
</span><span class="cx"> 
</span><span class="cx"> h3OpenSuccess():
</span><ins>+h3.close()
</ins><span class="cx"> 
</span><ins>+deleteDatabaseOnSuccess():
+deleteDatabaseComplete = true
+
</ins><span class="cx"> h4OpenSuccess():
</span><span class="cx"> PASS setVersionBlockedEventFired is true
</span><span class="cx"> PASS versionChangeComplete is true
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyversionchangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deletedatabase-delayed-by-versionchange.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedatabasenotblockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/deletedatabase-not-blocked.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdeletedatabasetransactionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-transaction.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-transaction.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-transaction.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> description(&quot;Ensure deleteDatabase() can run concurrently with transactions in other databases&quot;);
</span><span class="lines">@@ -31,4 +31,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdontcommitonblockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx">     debug(&quot;holdConnection():&quot;);
</span><span class="cx">     debug(&quot;holding connection until versionchange event&quot;);
</span><span class="cx">     debug(&quot;&quot;);
</span><del>-    startWorker(&quot;resources/dont-commit-on-blocked-worker.js&quot;);
</del><ins>+    worker = startWorker(&quot;resources/dont-commit-on-blocked-worker.js&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function onVersionChange(e)
</span><span class="lines">@@ -32,6 +32,5 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdontwedgehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/dont-wedge.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/dont-wedge.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/dont-wedge.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/dont-wedge.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbduplicateshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/duplicates.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/duplicates.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/duplicates.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/duplicates.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddberrorcausesabortbydefaulthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/error-causes-abort-by-default.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/error-causes-abort-by-default.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/error-causes-abort-by-default.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/error-causes-abort-by-default.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbeventsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/events-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/events-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/events-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx"> PASS 'IDBVersionChangeEvent' in self is true
</span><span class="cx"> PASS 'oldVersion' in document.createEvent('IDBVersionChangeEvent') is true
</span><span class="cx"> PASS 'newVersion' in document.createEvent('IDBVersionChangeEvent') is true
</span><ins>+PASS 'dataLoss' in document.createEvent('IDBVersionChangeEvent') is true
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbeventshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/events.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/events.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/events.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/events.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbexceptionineventabortsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><del>-CONSOLE MESSAGE: line 35: this exception is expected
-CONSOLE MESSAGE: line 35: this exception is expected
</del><ins>+CONSOLE ERROR: line 36: Uncaught this exception is expected
+CONSOLE ERROR: line 36: Uncaught this exception is expected
</ins><span class="cx"> Test exceptions in IDBRequest handlers cause aborts.
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbexceptionineventabortshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/exception-in-event-aborts.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbexceptionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/exceptions-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exceptions-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/exceptions-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to read the 'error' property from 'IDBRequest': The request has not finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBRequest.result
</span><span class="cx"> When the done flag is false, getting this property must throw a DOMException of type InvalidStateError.
</span><span class="lines">@@ -40,6 +41,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to read the 'result' property from 'IDBRequest': The request has not finished.
</ins><span class="cx"> 
</span><span class="cx"> 3.2.3 Opening a database
</span><span class="cx"> 
</span><span class="lines">@@ -49,6 +51,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> db.close()
</span><span class="cx"> 
</span><span class="cx"> 3.2.4 Database
</span><span class="lines">@@ -60,20 +63,24 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ConstraintError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': An object store with the specified name already exists.
</ins><span class="cx"> If keyPath is not a valid key path then a DOMException of type SyntaxError must be thrown.
</span><span class="cx"> Expecting exception from db.createObjectStore('fail', {keyPath: '-invalid-'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><span class="cx"> PASS ename is 'SyntaxError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> If the optionalParameters parameter is specified, and autoIncrement is set to true, and the keyPath parameter is specified to the empty string, or specified to an Array, this function must throw a InvalidAccessError exception.
</span><span class="cx"> Expecting exception from db.createObjectStore('fail', {autoIncrement: true, keyPath: ''})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><span class="cx"> PASS ename is 'InvalidAccessError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
</ins><span class="cx"> Expecting exception from db.createObjectStore('fail', {autoIncrement: true, keyPath: ['a']})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><span class="cx"> PASS ename is 'InvalidAccessError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
</ins><span class="cx"> 
</span><span class="cx"> IDBDatabase.deleteObjectStore()
</span><span class="cx"> There is no object store with the given name, compared in a case-sensitive manner, in the connected database.
</span><span class="lines">@@ -81,6 +88,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'deleteObjectStore' on 'IDBDatabase': The specified object store was not found.
</ins><span class="cx"> 
</span><span class="cx"> IDBDatabase.transaction()
</span><span class="cx"> If this method is called on IDBDatabase object for which a &quot;versionchange&quot; transaction is still running, a InvalidStateError exception must be thrown.
</span><span class="lines">@@ -88,20 +96,23 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': A version change transaction is running.
</ins><span class="cx"> One of the names provided in the storeNames argument doesn't exist in this database.
</span><span class="cx"> Expecting exception from db.transaction('no-such-store')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> The value for the mode parameter is invalid.
</span><span class="cx"> Expecting TypeError exception from db.transaction('store', 'invalid-mode')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS db.transaction('store', 'invalid-mode') threw TypeError: Type error
</del><ins>+PASS db.transaction('store', 'invalid-mode') threw TypeError: Failed to execute 'transaction' on 'IDBDatabase': The mode provided ('invalid-mode') is not one of 'readonly' or 'readwrite'.
</ins><span class="cx"> The function was called with an empty list of store names
</span><span class="cx"> Expecting exception from db.transaction([])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><span class="cx"> PASS ename is 'InvalidAccessError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The storeNames parameter was empty.
</ins><span class="cx"> 
</span><span class="cx"> One more IDBDatabase.createObjectStore() test:
</span><span class="cx"> If this function is called from outside a &quot;versionchange&quot; transaction callback ... the implementation must throw a DOMException of type InvalidStateError.
</span><span class="lines">@@ -109,6 +120,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The database is not running a version change transaction.
</ins><span class="cx"> 
</span><span class="cx"> One more IDBDatabase.deleteObjectStore() test:
</span><span class="cx"> If this function is called from outside a &quot;versionchange&quot; transaction callback ... the implementation must throw a DOMException of type InvalidStateError.
</span><span class="lines">@@ -116,6 +128,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'deleteObjectStore' on 'IDBDatabase': The database is not running a version change transaction.
</ins><span class="cx"> 
</span><span class="cx"> Prepare an object store and index from an inactive transaction for later use.
</span><span class="cx"> finishedTransaction = inactiveTransaction = db.transaction('store')
</span><span class="lines">@@ -136,15 +149,18 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction is read-only.
</ins><span class="cx"> The transaction this IDBObjectStore belongs to is not active.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.add(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> The data being stored could not be cloned by the internal structured cloning algorithm.
</span><span class="cx"> Expecting exception from store.add(self, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.clear()
</span><span class="cx"> This method throws a DOMException of type ReadOnlyError if the transaction which this IDBObjectStore belongs to is has its mode set to &quot;readonly&quot;.
</span><span class="lines">@@ -152,11 +168,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'clear' on 'IDBObjectStore': The transaction is read-only.
</ins><span class="cx"> The transaction this IDBObjectStore belongs to is not active.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.clear()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'clear' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.count()
</span><span class="cx"> If the optional key parameter is not a valid key or a key range, this method throws a DOMException of type DataError.
</span><span class="lines">@@ -164,11 +182,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBObjectStore belongs to is not active.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.delete()
</span><span class="cx"> This method throws a DOMException of type ReadOnlyError if the transaction which this IDBObjectStore belongs to is has its mode set to &quot;readonly&quot;.
</span><span class="lines">@@ -176,16 +196,19 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The transaction is read-only.
</ins><span class="cx"> If the key parameter is not a valid key or a key range this method throws a DOMException of type DataError.
</span><span class="cx"> Expecting exception from store.delete({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBObjectStore belongs to is not active.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.add(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.get()
</span><span class="cx"> If the key parameter is not a valid key or a key range, this method throws a DOMException of type DataError.
</span><span class="lines">@@ -193,11 +216,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBObjectStore belongs to is not active.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.index()
</span><span class="cx"> There is no index with the given name, compared in a case-sensitive manner, in the connected database.
</span><span class="lines">@@ -205,11 +230,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> Occurs if a request is made on a source object that has been deleted or removed, or if the transaction the object store belongs to has finished.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.index('index')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.openCursor()
</span><span class="cx"> If the range parameter is specified but is not a valid key or a key range, this method throws a DOMException of type DataError.
</span><span class="lines">@@ -217,31 +244,54 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBObjectStore belongs to is not active.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> The value for the direction parameter is invalid.
</span><span class="cx"> Expecting TypeError exception from store.openCursor(0, 'invalid-direction')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS store.openCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS store.openCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openCursor' on 'IDBObjectStore': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> 
</span><ins>+IDBObjectStore.openKeyCursor()
+If the range parameter is specified but is not a valid key or a key range, this method throws a DOMException of type DataError.
+Expecting exception from store.openKeyCursor({})
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The parameter is not a valid key.
+The transaction this IDBObjectStore belongs to is not active.
+Expecting exception from storeFromInactiveTransaction.openKeyCursor()
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'TransactionInactiveError'
+Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The transaction has finished.
+The value for the direction parameter is invalid.
+Expecting TypeError exception from store.openKeyCursor(0, 'invalid-direction')
+PASS Exception was thrown.
+PASS store.openKeyCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
+
</ins><span class="cx"> IDBObjectStore.put()
</span><span class="cx"> This method throws a DOMException of type ReadOnlyError if the transaction which this IDBObjectStore belongs to is has its mode set to &quot;readonly&quot;.
</span><span class="cx"> Expecting exception from storeFromReadOnlyTransaction.put(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The transaction is read-only.
</ins><span class="cx"> The transaction this IDBObjectStore belongs to is not active.
</span><span class="cx"> Expecting exception from storeFromInactiveTransaction.put(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> The data being stored could not be cloned by the internal structured cloning algorithm.
</span><span class="cx"> Expecting exception from store.put(self, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> db.close()
</span><span class="cx"> ro_transaction.oncomplete = transactionComplete
</span><span class="cx"> rw_transaction.oncomplete = transactionComplete
</span><span class="lines">@@ -259,16 +309,19 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ConstraintError'
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': An index with the specified name already exists.
</ins><span class="cx"> If keyPath is not a valid key path then a DOMException of type SyntaxError must be thrown.
</span><span class="cx"> Expecting exception from store.createIndex('fail', '-invalid-')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><span class="cx"> PASS ename is 'SyntaxError'
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> If keyPath is an Array and the multiEntry property in the optionalParameters is true, then a DOMException of type InvalidAccessError must be thrown.
</span><span class="cx"> Expecting exception from store.createIndex('fail', ['a'], {multiEntry: true})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><span class="cx"> PASS ename is 'InvalidAccessError'
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument was an array and the multiEntry option is true.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.deleteIndex()
</span><span class="cx"> There is no index with the given name, compared in a case-sensitive manner, in the connected database.
</span><span class="lines">@@ -276,6 +329,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> 
</span><span class="cx"> One more IDBObjectStore.createIndex() test:
</span><span class="cx"> If this function is called from outside a &quot;versionchange&quot; transaction callback ... the implementation must throw a DOMException of type InvalidStateError.
</span><span class="lines">@@ -283,6 +337,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The database is not running a version change transaction.
</ins><span class="cx"> 
</span><span class="cx"> One more IDBObjectStore.deleteIndex() test:
</span><span class="cx"> If this function is called from outside a &quot;versionchange&quot; transaction callback ... the implementation must throw a DOMException of type InvalidStateError.
</span><span class="lines">@@ -290,6 +345,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The database is not running a version change transaction.
</ins><span class="cx"> 
</span><span class="cx"> 3.2.6 Index
</span><span class="cx"> indexFromReadOnlyTransaction = db.transaction('store', 'readonly').objectStore('store').index('index')
</span><span class="lines">@@ -301,11 +357,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBIndex belongs to is not active.
</span><span class="cx"> Expecting exception from indexFromInactiveTransaction.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBIndex.get()
</span><span class="cx"> If the key parameter is not a valid key or a key range, this method throws a DOMException of type DataError.
</span><span class="lines">@@ -313,11 +371,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBIndex belongs to is not active.
</span><span class="cx"> Expecting exception from indexFromInactiveTransaction.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBIndex.getKey()
</span><span class="cx"> If the key parameter is not a valid key or a key range, this method throws a DOMException of type DataError.
</span><span class="lines">@@ -325,11 +385,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBIndex belongs to is not active.
</span><span class="cx"> Expecting exception from indexFromInactiveTransaction.getKey(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBIndex.openCursor()
</span><span class="cx"> If the range parameter is specified but is not a valid key or a key range, this method throws a DOMException of type DataError.
</span><span class="lines">@@ -337,15 +399,17 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBIndex belongs to is not active.
</span><span class="cx"> Expecting exception from indexFromInactiveTransaction.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> The value for the direction parameter is invalid.
</span><span class="cx"> Expecting TypeError exception from index.openCursor(0, 'invalid-direction')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS index.openCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS index.openCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openCursor' on 'IDBIndex': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> 
</span><span class="cx"> IDBIndex.openKeyCursor()
</span><span class="cx"> If the range parameter is specified but is not a valid key or a key range, this method throws a DOMException of type DataError.
</span><span class="lines">@@ -353,15 +417,17 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> The transaction this IDBIndex belongs to is not active.
</span><span class="cx"> Expecting exception from indexFromInactiveTransaction.openKeyCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> The value for the direction parameter is invalid.
</span><span class="cx"> Expecting TypeError exception from index.openKeyCursor(0, 'invalid-direction')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS index.openKeyCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS index.openKeyCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openKeyCursor' on 'IDBIndex': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> 
</span><span class="cx"> 3.2.7 Cursor
</span><span class="cx"> transaction = db.transaction(['store', 'inlineKeyStore'], 'readwrite')
</span><span class="lines">@@ -379,17 +445,19 @@
</span><span class="cx"> If the value for count is 0 (zero) or a negative number, this method must throw a JavaScript TypeError exception.
</span><span class="cx"> Expecting TypeError exception from cursor.advance(0)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS cursor.advance(0) threw TypeError: Type error
</del><ins>+PASS cursor.advance(0) threw TypeError: Failed to execute 'advance' on 'IDBCursor': A count argument with value 0 (zero) was supplied, must be greater than 0.
</ins><span class="cx"> cursor.advance(1)
</span><span class="cx"> Expecting exception from cursor.advance(1)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> The transaction this IDBCursor belongs to is not active.
</span><span class="cx"> Expecting exception from cursorFromInactiveTransaction.advance(1)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'advance' on 'IDBCursor': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBCursor.continue()
</span><span class="cx"> The parameter is not a valid key.
</span><span class="lines">@@ -397,27 +465,32 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is not a valid key.
</ins><span class="cx"> The parameter is less than or equal to this cursor's position and this cursor's direction is &quot;next&quot; or &quot;nextunique&quot;.
</span><span class="cx"> Expecting exception from cursor.continue(-Infinity)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is less than or equal to this cursor's position.
</ins><span class="cx"> The parameter is greater than or equal to this cursor's position and this cursor's direction is &quot;prev&quot; or &quot;prevunique&quot;.
</span><span class="cx"> Expecting exception from reverseCursor.continue(100)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is greater than or equal to this cursor's position.
</ins><span class="cx"> 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.
</span><span class="cx"> cursor.continue()
</span><span class="cx"> Expecting exception from cursor.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.
</ins><span class="cx"> The transaction this IDBCursor belongs to is not active.
</span><span class="cx"> Expecting exception from cursorFromInactiveTransaction.continue()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBCursor.delete()
</span><span class="cx"> If this cursor's got value flag is false, or if this cursor was created using openKeyCursor a DOMException of type InvalidStateError is thrown.
</span><span class="lines">@@ -425,11 +498,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor is a key cursor.
</ins><span class="cx"> The transaction this IDBCursor belongs to is not active.
</span><span class="cx"> Expecting exception from cursorFromInactiveTransaction.delete()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBCursor': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> IDBCursor.update()
</span><span class="cx"> If this cursor's got value flag is false or if this cursor was created using openKeyCursor. This method throws a DOMException of type InvalidStateError.
</span><span class="lines">@@ -437,20 +512,24 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The cursor is a key cursor.
</ins><span class="cx"> If the effective object store of this cursor uses in-line keys and evaluating the key path of the value parameter results in a different value than the cursor's effective key, this method throws a DOMException of type DataError.
</span><span class="cx"> Expecting exception from inlineCursor.update({id: 1})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The effective object store of this cursor uses in-line keys and evaluating the key path of the value parameter results in a different value than the cursor's effective key.
</ins><span class="cx"> If the structured clone algorithm throws an exception, that exception is rethrown.
</span><span class="cx"> Expecting exception from cursor.update(self)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': An object could not be cloned.
</ins><span class="cx"> The transaction this IDBCursor belongs to is not active.
</span><span class="cx"> Expecting exception from cursorFromInactiveTransaction.update({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The transaction has finished.
</ins><span class="cx"> readOnlyTransaction = db.transaction('store', 'readonly')
</span><span class="cx"> request = readOnlyTransaction.objectStore('store').openCursor()
</span><span class="cx"> cursorFromReadOnlyTransaction = request.result
</span><span class="lines">@@ -461,6 +540,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBCursor': The record may not be deleted inside a read-only transaction.
</ins><span class="cx"> 
</span><span class="cx"> One more IDBCursor.update() test:
</span><span class="cx"> This method throws a DOMException of type ReadOnlyError if the transaction which this IDBCursor belongs to has its mode set to &quot;readonly&quot;.
</span><span class="lines">@@ -468,6 +548,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The record may not be updated inside a read-only transaction.
</ins><span class="cx"> 
</span><span class="cx"> 3.2.8 Transaction
</span><span class="cx"> 
</span><span class="lines">@@ -477,11 +558,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'abort' on 'IDBTransaction': The transaction has finished.
</ins><span class="cx"> If the requested object store is not in this transaction's scope.
</span><span class="cx"> Expecting exception from db.transaction('store').objectStore('otherStore')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbexceptionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/exceptions.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exceptions.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/exceptions.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/exceptions.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorybasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -10,17 +10,20 @@
</span><span class="cx"> PASS typeof indexedDB.deleteDatabase is &quot;function&quot;
</span><span class="cx"> PASS typeof indexedDB.webkitGetDatabaseNames is &quot;function&quot;
</span><span class="cx"> PASS typeof indexedDB.getDatabaseNames is &quot;undefined&quot;
</span><del>-indexedDB.webkitGetDatabaseNames()
</del><ins>+request = indexedDB.webkitGetDatabaseNames()
+PASS request.source is null
</ins><span class="cx"> databaseNames = event.target.result
</span><span class="cx"> PASS databaseNames.contains('storage/indexeddb/factory-basics') is false
</span><span class="cx"> PASS databaseNames.contains('DATABASE THAT DOES NOT EXIST') is false
</span><del>-indexedDB.open(name)
</del><ins>+request = indexedDB.open(name)
+PASS request.source is null
</ins><span class="cx"> event.target.result.close()
</span><span class="cx"> indexedDB.webkitGetDatabaseNames()
</span><span class="cx"> databaseNames = event.target.result
</span><span class="cx"> PASS databaseNames.contains('storage/indexeddb/factory-basics') is true
</span><span class="cx"> PASS databaseNames.contains('DATABASE THAT DOES NOT EXIST') is false
</span><del>-indexedDB.deleteDatabase('storage/indexeddb/factory-basics')
</del><ins>+request = indexedDB.deleteDatabase('storage/indexeddb/factory-basics')
+PASS request.source is null
</ins><span class="cx"> indexedDB.webkitGetDatabaseNames()
</span><span class="cx"> databaseNames = event.target.result
</span><span class="cx"> PASS databaseNames.contains('storage/indexeddb/factory-basics') is false
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorybasicsworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-basics-workers-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics-workers-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics-workers-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -11,17 +11,20 @@
</span><span class="cx"> PASS [Worker] typeof indexedDB.deleteDatabase is &quot;function&quot;
</span><span class="cx"> PASS [Worker] typeof indexedDB.webkitGetDatabaseNames is &quot;function&quot;
</span><span class="cx"> PASS [Worker] typeof indexedDB.getDatabaseNames is &quot;undefined&quot;
</span><del>-[Worker] indexedDB.webkitGetDatabaseNames()
</del><ins>+[Worker] request = indexedDB.webkitGetDatabaseNames()
+PASS [Worker] request.source is null
</ins><span class="cx"> [Worker] databaseNames = event.target.result
</span><span class="cx"> PASS [Worker] databaseNames.contains('storage/indexeddb/factory-basics') is false
</span><span class="cx"> PASS [Worker] databaseNames.contains('DATABASE THAT DOES NOT EXIST') is false
</span><del>-[Worker] indexedDB.open(name)
</del><ins>+[Worker] request = indexedDB.open(name)
+PASS [Worker] request.source is null
</ins><span class="cx"> [Worker] event.target.result.close()
</span><span class="cx"> [Worker] indexedDB.webkitGetDatabaseNames()
</span><span class="cx"> [Worker] databaseNames = event.target.result
</span><span class="cx"> PASS [Worker] databaseNames.contains('storage/indexeddb/factory-basics') is true
</span><span class="cx"> PASS [Worker] databaseNames.contains('DATABASE THAT DOES NOT EXIST') is false
</span><del>-[Worker] indexedDB.deleteDatabase('storage/indexeddb/factory-basics')
</del><ins>+[Worker] request = indexedDB.deleteDatabase('storage/indexeddb/factory-basics')
+PASS [Worker] request.source is null
</ins><span class="cx"> [Worker] indexedDB.webkitGetDatabaseNames()
</span><span class="cx"> [Worker] databaseNames = event.target.result
</span><span class="cx"> PASS [Worker] databaseNames.contains('storage/indexeddb/factory-basics') is false
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorybasicsworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/factory-basics.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/factory-basics.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorybasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/factory-basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorycmpexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-cmp-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-cmp-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/factory-cmp-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -92,9 +92,41 @@
</span><span class="cx"> PASS indexedDB.cmp('�','𝄞') is 1
</span><span class="cx"> PASS indexedDB.cmp('𝄞','𝄞') is 0
</span><span class="cx"> PASS indexedDB.cmp('�','�') is 0
</span><del>-PASS indexedDB.cmp('�',[]) is -1
-PASS indexedDB.cmp([],'�') is 1
</del><ins>+PASS indexedDB.cmp('�',new Uint8Array()) is -1
+PASS indexedDB.cmp(new Uint8Array(),'�') is 1
</ins><span class="cx"> PASS indexedDB.cmp('�','�') is 0
</span><ins>+PASS indexedDB.cmp(new Uint8Array(),new Uint8Array()) is 0
+PASS indexedDB.cmp(new Uint8Array(),new Uint8Array([0])) is -1
+PASS indexedDB.cmp(new Uint8Array([0]),new Uint8Array()) is 1
+PASS indexedDB.cmp(new Uint8Array(),new Uint8Array()) is 0
+PASS indexedDB.cmp(new Uint8Array([0]),new Uint8Array([0])) is 0
+PASS indexedDB.cmp(new Uint8Array([0]),new Uint8Array([0, 0])) is -1
+PASS indexedDB.cmp(new Uint8Array([0, 0]),new Uint8Array([0])) is 1
+PASS indexedDB.cmp(new Uint8Array([0]),new Uint8Array([0])) is 0
+PASS indexedDB.cmp(new Uint8Array([0, 0]),new Uint8Array([0, 0])) is 0
+PASS indexedDB.cmp(new Uint8Array([0, 0]),new Uint8Array([0, 1])) is -1
+PASS indexedDB.cmp(new Uint8Array([0, 1]),new Uint8Array([0, 0])) is 1
+PASS indexedDB.cmp(new Uint8Array([0, 0]),new Uint8Array([0, 0])) is 0
+PASS indexedDB.cmp(new Uint8Array([0, 1]),new Uint8Array([0, 1])) is 0
+PASS indexedDB.cmp(new Uint8Array([0, 1]),new Uint8Array([1])) is -1
+PASS indexedDB.cmp(new Uint8Array([1]),new Uint8Array([0, 1])) is 1
+PASS indexedDB.cmp(new Uint8Array([0, 1]),new Uint8Array([0, 1])) is 0
+PASS indexedDB.cmp(new Uint8Array([1]),new Uint8Array([1])) is 0
+PASS indexedDB.cmp(new Uint8Array([1]),new Uint8Array([1, 0])) is -1
+PASS indexedDB.cmp(new Uint8Array([1, 0]),new Uint8Array([1])) is 1
+PASS indexedDB.cmp(new Uint8Array([1]),new Uint8Array([1])) is 0
+PASS indexedDB.cmp(new Uint8Array([1, 0]),new Uint8Array([1, 0])) is 0
+PASS indexedDB.cmp(new Uint8Array([1, 0]),new Uint8Array([1, 1])) is -1
+PASS indexedDB.cmp(new Uint8Array([1, 1]),new Uint8Array([1, 0])) is 1
+PASS indexedDB.cmp(new Uint8Array([1, 0]),new Uint8Array([1, 0])) is 0
+PASS indexedDB.cmp(new Uint8Array([1, 1]),new Uint8Array([1, 1])) is 0
+PASS indexedDB.cmp(new Uint8Array([1, 1]),new Uint8Array([255])) is -1
+PASS indexedDB.cmp(new Uint8Array([255]),new Uint8Array([1, 1])) is 1
+PASS indexedDB.cmp(new Uint8Array([1, 1]),new Uint8Array([1, 1])) is 0
+PASS indexedDB.cmp(new Uint8Array([255]),new Uint8Array([255])) is 0
+PASS indexedDB.cmp(new Uint8Array([255]),[]) is -1
+PASS indexedDB.cmp([],new Uint8Array([255])) is 1
+PASS indexedDB.cmp(new Uint8Array([255]),new Uint8Array([255])) is 0
</ins><span class="cx"> PASS indexedDB.cmp([],[]) is 0
</span><span class="cx"> PASS indexedDB.cmp([],[-Infinity]) is -1
</span><span class="cx"> PASS indexedDB.cmp([-Infinity],[]) is 1
</span><span class="lines">@@ -184,9 +216,41 @@
</span><span class="cx"> PASS indexedDB.cmp(['�'],['𝄞']) is 1
</span><span class="cx"> PASS indexedDB.cmp(['𝄞'],['𝄞']) is 0
</span><span class="cx"> PASS indexedDB.cmp(['�'],['�']) is 0
</span><del>-PASS indexedDB.cmp(['�'],[[]]) is -1
-PASS indexedDB.cmp([[]],['�']) is 1
</del><ins>+PASS indexedDB.cmp(['�'],[new Uint8Array()]) is -1
+PASS indexedDB.cmp([new Uint8Array()],['�']) is 1
</ins><span class="cx"> PASS indexedDB.cmp(['�'],['�']) is 0
</span><ins>+PASS indexedDB.cmp([new Uint8Array()],[new Uint8Array()]) is 0
+PASS indexedDB.cmp([new Uint8Array()],[new Uint8Array([0])]) is -1
+PASS indexedDB.cmp([new Uint8Array([0])],[new Uint8Array()]) is 1
+PASS indexedDB.cmp([new Uint8Array()],[new Uint8Array()]) is 0
+PASS indexedDB.cmp([new Uint8Array([0])],[new Uint8Array([0])]) is 0
+PASS indexedDB.cmp([new Uint8Array([0])],[new Uint8Array([0, 0])]) is -1
+PASS indexedDB.cmp([new Uint8Array([0, 0])],[new Uint8Array([0])]) is 1
+PASS indexedDB.cmp([new Uint8Array([0])],[new Uint8Array([0])]) is 0
+PASS indexedDB.cmp([new Uint8Array([0, 0])],[new Uint8Array([0, 0])]) is 0
+PASS indexedDB.cmp([new Uint8Array([0, 0])],[new Uint8Array([0, 1])]) is -1
+PASS indexedDB.cmp([new Uint8Array([0, 1])],[new Uint8Array([0, 0])]) is 1
+PASS indexedDB.cmp([new Uint8Array([0, 0])],[new Uint8Array([0, 0])]) is 0
+PASS indexedDB.cmp([new Uint8Array([0, 1])],[new Uint8Array([0, 1])]) is 0
+PASS indexedDB.cmp([new Uint8Array([0, 1])],[new Uint8Array([1])]) is -1
+PASS indexedDB.cmp([new Uint8Array([1])],[new Uint8Array([0, 1])]) is 1
+PASS indexedDB.cmp([new Uint8Array([0, 1])],[new Uint8Array([0, 1])]) is 0
+PASS indexedDB.cmp([new Uint8Array([1])],[new Uint8Array([1])]) is 0
+PASS indexedDB.cmp([new Uint8Array([1])],[new Uint8Array([1, 0])]) is -1
+PASS indexedDB.cmp([new Uint8Array([1, 0])],[new Uint8Array([1])]) is 1
+PASS indexedDB.cmp([new Uint8Array([1])],[new Uint8Array([1])]) is 0
+PASS indexedDB.cmp([new Uint8Array([1, 0])],[new Uint8Array([1, 0])]) is 0
+PASS indexedDB.cmp([new Uint8Array([1, 0])],[new Uint8Array([1, 1])]) is -1
+PASS indexedDB.cmp([new Uint8Array([1, 1])],[new Uint8Array([1, 0])]) is 1
+PASS indexedDB.cmp([new Uint8Array([1, 0])],[new Uint8Array([1, 0])]) is 0
+PASS indexedDB.cmp([new Uint8Array([1, 1])],[new Uint8Array([1, 1])]) is 0
+PASS indexedDB.cmp([new Uint8Array([1, 1])],[new Uint8Array([255])]) is -1
+PASS indexedDB.cmp([new Uint8Array([255])],[new Uint8Array([1, 1])]) is 1
+PASS indexedDB.cmp([new Uint8Array([1, 1])],[new Uint8Array([1, 1])]) is 0
+PASS indexedDB.cmp([new Uint8Array([255])],[new Uint8Array([255])]) is 0
+PASS indexedDB.cmp([new Uint8Array([255])],[[]]) is -1
+PASS indexedDB.cmp([[]],[new Uint8Array([255])]) is 1
+PASS indexedDB.cmp([new Uint8Array([255])],[new Uint8Array([255])]) is 0
</ins><span class="cx"> PASS indexedDB.cmp([[]],[[]]) is 0
</span><span class="cx"> PASS indexedDB.cmp([[]],[[], []]) is -1
</span><span class="cx"> PASS indexedDB.cmp([[], []],[[]]) is 1
</span><span class="lines">@@ -210,266 +274,332 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(true, void 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(void 0, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', void 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(true, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', true)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(true, false)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(false, true)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(true, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', true)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(false, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', false)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(false, NaN)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(NaN, false)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(false, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', false)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(NaN, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', NaN)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(NaN, new Date(NaN))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(new Date(NaN), NaN)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(NaN, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', NaN)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(new Date(NaN), 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', new Date(NaN))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(new Date(NaN), null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(null, new Date(NaN))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(new Date(NaN), 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', new Date(NaN))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(null, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(null, {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp({}, null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(null, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp({}, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp({}, function () {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(function () {}, {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp({}, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(function () {}, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', function () {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(function () {}, /regex/)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(/regex/, function () {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(function () {}, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', function () {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(/regex/, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', /regex/)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(/regex/, self)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self, /regex/)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(/regex/, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', /regex/)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', self)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self, self.document)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self.document, self)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', self)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self.document, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', self.document)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self.document, self.document.body)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self.document.body, self.document)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self.document, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', self.document)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp(self.document.body, 'valid')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from indexedDB.cmp('valid', self.document.body)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> compare identical keys
</span><span class="cx"> PASS indexedDB.cmp(0, -0) is 0
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorycmphtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-cmp.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-cmp.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/factory-cmp.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/factory-cmp.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorydeletedatabasehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-deletedatabase.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-deletedatabase.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/factory-deletedatabase.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/factory-deletedatabase.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbgetkeyrangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/get-keyrange-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/get-keyrange-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/get-keyrange-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': No key or key range specified.
</ins><span class="cx"> runIndexStoreTests()
</span><span class="cx"> index.get(IDBKeyRange.only(3))
</span><span class="cx"> PASS result.x is 3
</span><span class="lines">@@ -62,6 +63,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': No key or key range specified.
</ins><span class="cx"> runIndexKeyTests()
</span><span class="cx"> index.getKey(IDBKeyRange.only(3))
</span><span class="cx"> PASS result is 3
</span><span class="lines">@@ -83,6 +85,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': No key or key range specified.
</ins><span class="cx"> finishJSTest()
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbgetkeyrangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/get-keyrange.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/get-keyrange.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/get-keyrange.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/get-keyrange.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexbasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -14,14 +14,15 @@
</span><span class="cx"> store.createIndex('indexName', 'x')
</span><span class="cx"> store.createIndex('indexName2', 'y', {unique: false})
</span><span class="cx"> store.createIndex('zIndex', 'z', {unique: true})
</span><ins>+PASS store.createIndex('index4', 'path', undefined) did not throw exception.
</ins><span class="cx"> PASS indexObject2.unique is false
</span><span class="cx"> PASS indexObject3.unique is true
</span><span class="cx"> Expecting TypeError exception from store.createIndex('failureIndex', 'zzz', true)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS store.createIndex('failureIndex', 'zzz', true) threw TypeError: Not an object.
</del><ins>+PASS store.createIndex('failureIndex', 'zzz', true) threw TypeError: Failed to execute 'createIndex' on 'IDBObjectStore': No function was found that matched the signature provided.
</ins><span class="cx"> Expecting TypeError exception from store.createIndex('failureIndex', 'zzz', 'string')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS store.createIndex('failureIndex', 'zzz', 'string') threw TypeError: Not an object.
</del><ins>+PASS store.createIndex('failureIndex', 'zzz', 'string') threw TypeError: Failed to execute 'createIndex' on 'IDBObjectStore': No function was found that matched the signature provided.
</ins><span class="cx"> PASS 'name' in indexObject is true
</span><span class="cx"> PASS indexObject.name is &quot;indexName&quot;
</span><span class="cx"> PASS 'objectStore' in indexObject is true
</span><span class="lines">@@ -69,7 +70,7 @@
</span><span class="cx"> Verify that specifying an invalid direction raises an exception:
</span><span class="cx"> Expecting TypeError exception from indexObject.openKeyCursor(0, 'invalid-direction')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexObject.openKeyCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS indexObject.openKeyCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openKeyCursor' on 'IDBIndex': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> 
</span><span class="cx"> indexObject.openKeyCursor()
</span><span class="cx"> PASS event.target.source is indexObject
</span><span class="lines">@@ -94,7 +95,7 @@
</span><span class="cx"> Verify that specifying an invalid direction raises an exception:
</span><span class="cx"> Expecting TypeError exception from indexObject.openCursor(0, 'invalid-direction')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexObject.openCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS indexObject.openCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openCursor' on 'IDBIndex': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> 
</span><span class="cx"> indexObject.openCursor()
</span><span class="cx"> PASS event.target.source is indexObject
</span><span class="lines">@@ -130,11 +131,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into indexObject.getKey({}).
</span><span class="cx"> Expecting exception from indexObject.getKey({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexbasicsworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -15,14 +15,15 @@
</span><span class="cx"> [Worker] store.createIndex('indexName', 'x')
</span><span class="cx"> [Worker] store.createIndex('indexName2', 'y', {unique: false})
</span><span class="cx"> [Worker] store.createIndex('zIndex', 'z', {unique: true})
</span><ins>+PASS [Worker] store.createIndex('index4', 'path', undefined) did not throw exception.
</ins><span class="cx"> PASS [Worker] indexObject2.unique is false
</span><span class="cx"> PASS [Worker] indexObject3.unique is true
</span><span class="cx"> [Worker] Expecting TypeError exception from store.createIndex('failureIndex', 'zzz', true)
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] store.createIndex('failureIndex', 'zzz', true) threw TypeError: Not an object.
</del><ins>+PASS [Worker] store.createIndex('failureIndex', 'zzz', true) threw TypeError: Failed to execute 'createIndex' on 'IDBObjectStore': No function was found that matched the signature provided.
</ins><span class="cx"> [Worker] Expecting TypeError exception from store.createIndex('failureIndex', 'zzz', 'string')
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] store.createIndex('failureIndex', 'zzz', 'string') threw TypeError: Not an object.
</del><ins>+PASS [Worker] store.createIndex('failureIndex', 'zzz', 'string') threw TypeError: Failed to execute 'createIndex' on 'IDBObjectStore': No function was found that matched the signature provided.
</ins><span class="cx"> PASS [Worker] 'name' in indexObject is true
</span><span class="cx"> PASS [Worker] indexObject.name is &quot;indexName&quot;
</span><span class="cx"> PASS [Worker] 'objectStore' in indexObject is true
</span><span class="lines">@@ -70,7 +71,7 @@
</span><span class="cx"> [Worker] Verify that specifying an invalid direction raises an exception:
</span><span class="cx"> [Worker] Expecting TypeError exception from indexObject.openKeyCursor(0, 'invalid-direction')
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] indexObject.openKeyCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS [Worker] indexObject.openKeyCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openKeyCursor' on 'IDBIndex': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] indexObject.openKeyCursor()
</span><span class="cx"> PASS [Worker] event.target.source is indexObject
</span><span class="lines">@@ -95,7 +96,7 @@
</span><span class="cx"> [Worker] Verify that specifying an invalid direction raises an exception:
</span><span class="cx"> [Worker] Expecting TypeError exception from indexObject.openCursor(0, 'invalid-direction')
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><del>-PASS [Worker] indexObject.openCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS [Worker] indexObject.openCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openCursor' on 'IDBIndex': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] indexObject.openCursor()
</span><span class="cx"> PASS [Worker] event.target.source is indexObject
</span><span class="lines">@@ -131,11 +132,13 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> [Worker] Passing an invalid key into indexObject.getKey({}).
</span><span class="cx"> [Worker] Expecting exception from indexObject.getKey({})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'getKey' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexbasicsworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-basics-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/index-basics.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/index-basics.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexbasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexcountexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-count-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-count-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-count-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -88,14 +88,17 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from index.count({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from index.count(/regex/)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> test = {&quot;key&quot;:0,&quot;expected&quot;:1}
</span><span class="cx"> request = index.count(test.key)
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexcounthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-count.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-count.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-count.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-count.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexcursorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-cursor.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-cursor.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-cursor.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-cursor.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexduplicatekeypathshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-duplicate-keypaths.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-duplicate-keypaths.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-duplicate-keypaths.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-duplicate-keypaths.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexgetkeyargumentrequiredexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -10,8 +10,8 @@
</span><span class="cx"> indexedDB.open(dbname)
</span><span class="cx"> objectStore = db.createObjectStore('foo', { keyPath: 'id', autoIncrement: true });
</span><span class="cx"> index = objectStore.createIndex('first', 'first');
</span><del>-PASS index.get(); threw exception TypeError: Not enough arguments.
-PASS index.getKey(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS index.get(); threw exception TypeError: Failed to execute 'get' on 'IDBIndex': 1 argument required, but only 0 present..
+PASS index.getKey(); threw exception TypeError: Failed to execute 'getKey' on 'IDBIndex': 1 argument required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexgetkeyargumentrequiredhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-get-key-argument-required.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexmultientryhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-multientry.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-multientry.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-multientry.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-multientry.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexpopulationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-population.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-population.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-population.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-population.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexuniquehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-unique.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-unique.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/index-unique.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/index-unique.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbinterfaceshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/interfaces.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/interfaces.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/interfaces.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/interfaces.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionabortininitialupgradeneededhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-abort-in-initial-upgradeneeded.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionbadparametersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -11,34 +11,34 @@
</span><span class="cx"> deleteSuccess():
</span><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, 'stringversion')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, 'stringversion') threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, 'stringversion') threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is not of type 'unsigned long long'.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, 0) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, 0) threw TypeError: Failed to execute 'open' on 'IDBFactory': The version provided must not be 0.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, -5)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, -5) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, -5) threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is outside the 'unsigned long long' value range.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, Infinity)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, Infinity) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, Infinity) threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is infinite and not of type 'unsigned long long'.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, -Infinity)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, -Infinity) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, -Infinity) threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is infinite and not of type 'unsigned long long'.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, NaN)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, NaN) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, NaN) threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is not of type 'unsigned long long'.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, -1)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, -1) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, -1) threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is outside the 'unsigned long long' value range.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, 0x20000000000000)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, 0x20000000000000) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, 0x20000000000000) threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is outside the 'unsigned long long' value range.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, null)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, null) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, null) threw TypeError: Failed to execute 'open' on 'IDBFactory': The version provided must not be 0.
</ins><span class="cx"> Expecting TypeError exception from indexedDB.open(dbname, undefined)
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS indexedDB.open(dbname, undefined) threw TypeError: Type error
</del><ins>+PASS indexedDB.open(dbname, undefined) threw TypeError: Failed to execute 'open' on 'IDBFactory': Value is not of type 'unsigned long long'.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionbadparametershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-bad-parameters.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionblockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-blocked.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-blocked.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-blocked.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-blocked.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionclosebetweeneventshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-close-between-events.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-between-events.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-between-events.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-close-between-events.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversioncloseinoncompleteexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversioncloseinoncompletehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-close-in-oncomplete.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversioncloseinupgradeneededexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversioncloseinupgradeneededhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-close-in-upgradeneeded.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionencodinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-encoding.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-encoding.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-encoding.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-encoding.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversiongatedondeletehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-gated-on-delete.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-gated-on-delete.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-gated-on-delete.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-gated-on-delete.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionlongqueueexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -39,12 +39,8 @@
</span><span class="cx"> PASS event.oldVersion is 1
</span><span class="cx"> PASS event.newVersion is null
</span><span class="cx"> 
</span><del>-deleteDatabaseSuccessCallback():
-PASS event.target.result is undefined.
-PASS event.type is &quot;success&quot;
-
</del><span class="cx"> connection2UpgradeNeeded():
</span><del>-PASS event.oldVersion is 0
</del><ins>+PASS event.oldVersion is 1
</ins><span class="cx"> PASS event.newVersion is 2
</span><span class="cx"> db = event.target.result
</span><span class="cx"> PASS db.objectStoreNames.length is 0
</span><span class="lines">@@ -57,22 +53,20 @@
</span><span class="cx"> 
</span><span class="cx"> connection2Success():
</span><span class="cx"> connection2 = event.target.result
</span><del>-connection2.onversionchange = connection2VersionChangeEvent
-
-connection2VersionChangeEvent():
-PASS event.type is &quot;versionchange&quot;
-PASS event.oldVersion is 2
-PASS event.newVersion is 3
</del><span class="cx"> connection2.close()
</span><span class="cx"> 
</span><ins>+deleteDatabaseSuccessCallback():
+PASS event.target.result is undefined.
+PASS event.type is &quot;success&quot;
+
</ins><span class="cx"> connection3UpgradeNeeded():
</span><span class="cx"> gotUpgradeNeededEvent = true
</span><span class="cx"> PASS event.newVersion is 3
</span><del>-PASS event.oldVersion is 2
</del><ins>+PASS event.oldVersion is 0
</ins><span class="cx"> 
</span><span class="cx"> connection3Success():
</span><span class="cx"> PASS gotUpgradeNeededEvent is true
</span><del>-PASS event.target.result.objectStoreNames.length is 1
</del><ins>+PASS event.target.result.objectStoreNames.length is 0
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionlongqueuehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-long-queue.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-long-queue.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-long-queue.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-long-queue.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionomitparameterhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-omit-parameter.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-omit-parameter.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-omit-parameter.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-omit-parameter.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionopeninupgradeneededhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-open-in-upgradeneeded.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-open-in-upgradeneeded.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-open-in-upgradeneeded.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-open-in-upgradeneeded.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionopenwithversionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-open-with-version.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-open-with-version.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-open-with-version.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-open-with-version.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionpendingversionchangesascendingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+Check processing of pending version change requests - increasing versions.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;intversion-pending-version-changes-ascending.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+onConnection1Open():
+indexedDB.open(dbname, 2)
+indexedDB.open(dbname, 3)
+
+FIXME: The open call with higher version should execute first.
+
+connection2Blocked():
+db.close()
+
+connection2UpgradeNeeded():
+PASS event.oldVersion is 1
+PASS event.newVersion is 2
+
+connection2OpenSuccess():
+db2 = event.target.result
+PASS db2.version is 2
+
+connection3Blocked():
+db2.close()
+
+connection3UpgradeNeeded():
+PASS event.oldVersion is 2
+PASS event.newVersion is 3
+
+connection3OpenSuccess():
+db3 = event.target.result
+PASS db3.version is 3
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionpendingversionchangesascendinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-ascending.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/intversion-pending-version-changes-ascending.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionpendingversionchangesdescendingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+Check processing of pending version change requests - descending versions.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;intversion-pending-version-changes-descending.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+onConnection1Open():
+indexedDB.open(dbname, 3)
+indexedDB.open(dbname, 2)
+
+connection2Blocked():
+db.close()
+
+connection2UpgradeNeeded():
+PASS event.oldVersion is 1
+PASS event.newVersion is 3
+
+connection2OpenSuccess():
+event.target.result.close()
+db2 = event.target.result
+PASS db2.version is 3
+
+connection3Error():
+PASS event.target.error.name is &quot;VersionError&quot;
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionpendingversionchangesdescendinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-descending.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/intversion-pending-version-changes-descending.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionpendingversionchangessameexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+Check processing of pending version change requests - same versions.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;intversion-pending-version-changes-same.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+onConnection1Open():
+indexedDB.open(dbname, 2)
+indexedDB.open(dbname, 2)
+
+connection2Blocked():
+db.close()
+
+connection2UpgradeNeeded():
+PASS event.oldVersion is 1
+PASS event.newVersion is 2
+
+connection2OpenSuccess():
+db2 = event.target.result
+PASS db2.version is 2
+
+connection3OpenSuccess():
+db3 = event.target.result
+PASS db3.version is 2
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionpendingversionchangessamehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/intversion-pending-version-changes-same.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/intversion-pending-version-changes-same.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionpersistencehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-persistence.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-persistence.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-persistence.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-persistence.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionrevertonaborthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-revert-on-abort.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-revert-on-abort.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-revert-on-abort.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-revert-on-abort.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversiontwoopensnoversionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-two-opens-no-versions.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-two-opens-no-versions.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-two-opens-no-versions.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-two-opens-no-versions.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionupgradesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-upgrades-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-upgrades-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-upgrades-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx"> connection1.close()
</span><span class="cx"> 
</span><span class="cx"> connection2BlockedCallback():
</span><del>-This should not be called: http://wkbug.com/71130
</del><ins>+This should not be called: http://crbug.com/100123
</ins><span class="cx"> 
</span><span class="cx"> connection2UpgradeNeeded():
</span><span class="cx"> connection2 = event.target.result
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> request.onerror = errorWhenTryingLowVersion
</span><span class="cx"> 
</span><span class="cx"> errorWhenTryingLowVersion():
</span><del>-request.webkitErrorMessage = The requested version (1) is less than the existing version (2).
</del><ins>+request.error.message = The requested version (1) is less than the existing version (2).
</ins><span class="cx"> request = indexedDB.open(dbname, 4)
</span><span class="cx"> request.onupgradeneeded = connection4UpgradeNeeded
</span><span class="cx"> request.onsuccess = connection4Success
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbintversionupgradeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/intversion-upgrades.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-upgrades.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/intversion-upgrades.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/intversion-upgrades.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbinvalidkeysexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/invalid-keys-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/invalid-keys-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/invalid-keys-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,66 +13,82 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', (function() { return arguments; }()))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', true)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', false)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', new Error)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', function () {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', JSON)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', Math)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', NaN)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', new Date(NaN))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', /regex/)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', self)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', self.document)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from request = objectStore.put('value', self.document.body)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbinvalidkeyshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/invalid-keys.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/invalid-keys.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/invalid-keys.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/invalid-keys.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeygeneratorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/key-generator.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-generator.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/key-generator.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-generator.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeysortorderacrosstypeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/key-sort-order-across-types.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-sort-order-across-types.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/key-sort-order-across-types.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-sort-order-across-types.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeysortorderdatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/key-sort-order-date.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-sort-order-date.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/key-sort-order-date.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-sort-order-date.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeytypearrayexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/key-type-array-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-array-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/key-type-array-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -170,96 +170,112 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ true ]
</span><span class="cx"> Expecting exception from store.put('value', [ true ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ false ]
</span><span class="cx"> Expecting exception from store.put('value', [ false ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ NaN ]
</span><span class="cx"> Expecting exception from store.put('value', [ NaN ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ null ]
</span><span class="cx"> Expecting exception from store.put('value', [ null ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ {} ]
</span><span class="cx"> Expecting exception from store.put('value', [ {} ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ function () {} ]
</span><span class="cx"> Expecting exception from store.put('value', [ function () {} ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ /regex/ ]
</span><span class="cx"> Expecting exception from store.put('value', [ /regex/ ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ self ]
</span><span class="cx"> Expecting exception from store.put('value', [ self ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ self.document ]
</span><span class="cx"> Expecting exception from store.put('value', [ self.document ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: [ self.document.body ]
</span><span class="cx"> Expecting exception from store.put('value', [ self.document.body ]);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: cyclic_array
</span><span class="cx"> Expecting exception from store.put('value', cyclic_array);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: cyclic_array2
</span><span class="cx"> Expecting exception from store.put('value', cyclic_array2);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: cyclic_array3
</span><span class="cx"> Expecting exception from store.put('value', cyclic_array3);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: cyclic_array4
</span><span class="cx"> Expecting exception from store.put('value', cyclic_array4);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testing invalid array key: Array(1000)
</span><span class="cx"> Expecting exception from store.put('value', Array(1000));
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> PASS indexedDB.cmp(makeArrayOfDepth(25), 0) is 1
</span><span class="cx"> PASS indexedDB.cmp(makeArrayOfDepth(250), 0) is 1
</span><span class="lines">@@ -267,6 +283,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeytypearrayhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/key-type-array.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-array.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/key-type-array.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-type-array.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeytypebinaryexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/key-type-binary-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-binary-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/key-type-binary-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,132 @@
</span><ins>+Test IndexedDB binary keys
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;key-type-binary.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+db.createObjectStore('store');
+
+
+testValidBinaryKeys():
+trans = db.transaction('store', 'readwrite')
+store = trans.objectStore('store')
+
+store.put(0, new Uint8Array([]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [].toString()
+store.get(new Uint8Array([]));
+PASS request.result is 0
+
+store.put(1, new Uint8Array([0]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [0].toString()
+store.get(new Uint8Array([0]));
+PASS request.result is 1
+
+store.put(2, new Uint8Array([0, 0]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [0, 0].toString()
+store.get(new Uint8Array([0, 0]));
+PASS request.result is 2
+
+store.put(3, new Uint8Array([0, 1]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [0, 1].toString()
+store.get(new Uint8Array([0, 1]));
+PASS request.result is 3
+
+store.put(4, new Uint8Array([1]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [1].toString()
+store.get(new Uint8Array([1]));
+PASS request.result is 4
+
+store.put(5, new Uint8Array([1, 0]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [1, 0].toString()
+store.get(new Uint8Array([1, 0]));
+PASS request.result is 5
+
+store.put(6, new Uint8Array([1, 1]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [1, 1].toString()
+store.get(new Uint8Array([1, 1]));
+PASS request.result is 6
+
+store.put(7, new Uint8Array([255]));
+PASS request.result.toString() is &quot;[object Uint8Array]&quot;
+PASS [].slice.call(request.result).toString() is [255].toString()
+store.get(new Uint8Array([255]));
+PASS request.result is 7
+
+testInvalidBinaryKeys():
+trans = db.transaction('store', 'readwrite')
+store = trans.objectStore('store')
+
+Expecting exception from store.put('value', new Uint8ClampedArray([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Uint16Array([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Uint32Array([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Int8Array([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Int16Array([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Int32Array([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Float32Array([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Float64Array([1,2,3]))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new Uint8Array([1,2,3]).buffer)
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+
+Expecting exception from store.put('value', new DataView(new Uint8Array([1,2,3]).buffer))
+PASS Exception was thrown.
+PASS code is 0
+PASS ename is 'DataError'
+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeytypebinaryhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/key-type-binary.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-binary.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/key-type-binary.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/key-type-binary.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeytypeinfinityhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/key-type-infinity.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-infinity.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/key-type-infinity.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-type-infinity.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypatharraysexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-arrays-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-arrays-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-arrays-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,17 +13,21 @@
</span><span class="cx"> Expecting exception from db.createObjectStore('store-with-generator', {keyPath: ['a', 'b'], autoIncrement: true})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
</ins><span class="cx"> Expecting exception from store.createIndex('index-multientry', ['e', 'f'], {multiEntry: true})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument was an array and the multiEntry option is true.
</ins><span class="cx"> 
</span><span class="cx"> Empty arrays are not valid key paths:
</span><span class="cx"> Expecting exception from db.createObjectStore('store-keypath-empty-array', {keyPath: []})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from store.createIndex('index-keypath-empty-array', [])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> 
</span><span class="cx"> testKeyPaths():
</span><span class="cx"> transaction = db.transaction(['store'], 'readwrite')
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypatharrayshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-arrays.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-arrays.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-arrays.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/keypath-arrays.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypathbasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -154,401 +154,514 @@
</span><span class="cx"> Expecting exception from store = db.createObjectStore('storeName', {autoIncrement: true, keyPath: ''})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from store = db.createObjectStore('storeName', {autoIncrement: true, keyPath: ['a']})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from store = db.createObjectStore('storeName', {autoIncrement: true, keyPath: ['']})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> 
</span><span class="cx"> Key paths which are never valid:
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: ' '})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', ' ')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: 'foo '})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', 'foo ')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: 'foo bar'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', 'foo bar')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: 'foo. bar'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', 'foo. bar')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: 'foo .bar'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', 'foo .bar')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: 'foo..bar'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', 'foo..bar')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '+foo'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '+foo')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: 'foo%'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', 'foo%')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '1'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '1')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '1.0'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '1.0')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: []})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', [])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u0300'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u0300')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u0903'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u0903')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u0300'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u0300')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u203F'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u203F')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u200C'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u200C')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u200D'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u200D')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u002D'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u002D')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u0028'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u0028')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u0029'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u0029')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u00AB'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u00AB')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u00BB'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u00BB')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u0021'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u0021')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u002B'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u002B')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u00A2'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u00A2')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u005E'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u005E')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u00A6'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u00A6')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u00A0'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u00A0')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u2028'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u2028')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u2029'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u2029')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u0000'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u0000')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\u00AD'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\u00AD')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\uD800'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\uD800')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\uE000'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\uE000')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\uFFFE'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\uFFFE')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '\uFFFF'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '\uFFFF')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u002D'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u002D')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u0028'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0028')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u0029'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0029')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u00AB'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00AB')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u00BB'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00BB')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u0021'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0021')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u002B'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u002B')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u00A2'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00A2')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u005E'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u005E')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u00A6'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00A6')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u00A0'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00A0')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u2028'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u2028')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u2029'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u2029')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u0000'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0000')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\u00AD'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00AD')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\uD800'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\uD800')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\uE000'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\uE000')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\uFFFE'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\uFFFE')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> Expecting exception from db.createObjectStore('name', {keyPath: '_\uFFFF'})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
</ins><span class="cx"> Expecting exception from db.createObjectStore('name').createIndex('name', '_\uFFFF')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.SYNTAX_ERR
</span><ins>+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
</ins><span class="cx"> Deleted all object stores.
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypathbasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/keypath-basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypathedgesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-edges-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-edges-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-edges-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -20,18 +20,21 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</ins><span class="cx"> 
</span><span class="cx"> Key path doesn't resolve to a value; should yield null, should throw DATA_ERR
</span><span class="cx"> Expecting exception from store.put({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</ins><span class="cx"> 
</span><span class="cx"> Key path resolves to a value that is invalid key; should yield 'invalid' key, should throw DATA_ERR
</span><span class="cx"> Expecting exception from store.put({foo: null})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path yielded a value that is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> Key path resolves to a value that is valid key; should yield 'string' key, should succeed
</span><span class="cx"> store.put({foo: 'zoo'})
</span><span class="lines">@@ -46,12 +49,14 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': A generated key could not be inserted into the value.
</ins><span class="cx"> 
</span><span class="cx"> Key path doesn't resolve to a value; should yield null but insertion would fail, so put request should raise exception
</span><span class="cx"> Expecting exception from store.put('string')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': A generated key could not be inserted into the value.
</ins><span class="cx"> 
</span><span class="cx"> Key path doesn't resolve to a value; should yield null, key should be generated, put request should succeed
</span><span class="cx"> store.put({})
</span><span class="lines">@@ -62,6 +67,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path yielded a value that is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> Key path resolves to a value that is valid key; should yield 'string' key, should succeed
</span><span class="cx"> store.put({foo: 'zoo'})
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypathedgeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-edges.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-edges.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-edges.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/keypath-edges.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypathfetchkeyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-fetch-key.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-fetch-key.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-fetch-key.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/keypath-fetch-key.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeypathintrinsicpropertieshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keypath-intrinsic-properties.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-intrinsic-properties.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keypath-intrinsic-properties.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/keypath-intrinsic-properties.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeyrangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keyrange-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keyrange-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -214,51 +214,61 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into upperBound({})
</span><span class="cx"> Expecting exception from IDBKeyRange.upperBound({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'upperBound' on 'IDBKeyRange': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into lowerBound({})
</span><span class="cx"> Expecting exception from IDBKeyRange.lowerBound({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'lowerBound' on 'IDBKeyRange': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into bound(null, {})
</span><span class="cx"> Expecting exception from IDBKeyRange.bound(null, {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'bound' on 'IDBKeyRange': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into bound({},null)
</span><span class="cx"> Expecting exception from IDBKeyRange.bound({}, null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'bound' on 'IDBKeyRange': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into bound({}, {})
</span><span class="cx"> Expecting exception from IDBKeyRange.bound({}, {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'bound' on 'IDBKeyRange': The parameter is not a valid key.
</ins><span class="cx"> Lower key greater than higher key, bound(4, 3)
</span><span class="cx"> Expecting exception from IDBKeyRange.bound(4, 3)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key is greater than the upper key.
</ins><span class="cx"> Equal keys, either of the bounds is open, bound(4, 4, true, false)
</span><span class="cx"> Expecting exception from IDBKeyRange.bound(4, 4, true, false)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key and upper key are equal and one of the bounds is open.
</ins><span class="cx"> Equal keys, either of the bounds is open, bound(4, 4, false, true)
</span><span class="cx"> Expecting exception from IDBKeyRange.bound(4, 4, false, true)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key and upper key are equal and one of the bounds is open.
</ins><span class="cx"> Equal keys, either of the bounds is open, bound(4, 4, true, true)
</span><span class="cx"> Expecting exception from IDBKeyRange.bound(4, 4, true, true)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key and upper key are equal and one of the bounds is open.
</ins><span class="cx"> Equal keys, none of the bounds is open, bound(4, 4, false, false)
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeyrangerequiredargumentsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,11 +5,11 @@
</span><span class="cx"> 
</span><span class="cx"> indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
</span><span class="cx"> 
</span><del>-PASS IDBKeyRange.only(); threw exception TypeError: Not enough arguments.
-PASS IDBKeyRange.lowerBound(); threw exception TypeError: Not enough arguments.
-PASS IDBKeyRange.upperBound(); threw exception TypeError: Not enough arguments.
-PASS IDBKeyRange.bound(1); threw exception TypeError: Not enough arguments.
-PASS IDBKeyRange.bound(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS IDBKeyRange.only(); threw exception TypeError: Failed to execute 'only' on 'IDBKeyRange': 1 argument required, but only 0 present..
+PASS IDBKeyRange.lowerBound(); threw exception TypeError: Failed to execute 'lowerBound' on 'IDBKeyRange': 1 argument required, but only 0 present..
+PASS IDBKeyRange.upperBound(); threw exception TypeError: Failed to execute 'upperBound' on 'IDBKeyRange': 1 argument required, but only 0 present..
+PASS IDBKeyRange.bound(1); threw exception TypeError: Failed to execute 'bound' on 'IDBKeyRange': 2 arguments required, but only 1 present..
+PASS IDBKeyRange.bound(); threw exception TypeError: Failed to execute 'bound' on 'IDBKeyRange': 2 arguments required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeyrangerequiredargumentshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/keyrange-required-arguments.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbkeyrangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/keyrange.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/keyrange.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/keyrange.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddblazyindexpopulationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/lazy-index-population-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/lazy-index-population-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/lazy-index-population-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -61,8 +61,6 @@
</span><span class="cx"> PASS trans.error.name is 'ConstraintError'
</span><span class="cx"> 
</span><span class="cx"> Verify that uniqueness constraints are enforced when index is created between puts:
</span><del>-FIXME: Script shouldn't have to explicitly close connection after it failed to open. http://wkbug.com/102298
-connection.close()
</del><span class="cx"> indexedDB.open(dbname, 4)
</span><span class="cx"> deleteAllObjectStores(connection)
</span><span class="cx"> Deleted all object stores.
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddblazyindexpopulationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/lazy-index-population.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/lazy-index-population.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/lazy-index-population.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -134,8 +134,6 @@
</span><span class="cx">     debug(&quot;&quot;);
</span><span class="cx">     debug(&quot;Verify that uniqueness constraints are enforced when index is created between puts:&quot;);
</span><span class="cx"> 
</span><del>-    debug(&quot;FIXME: Script shouldn't have to explicitly close connection after it failed to open. http://wkbug.com/102298&quot;);
-    evalAndLog(&quot;connection.close()&quot;);
</del><span class="cx">     request = evalAndLog(&quot;indexedDB.open(dbname, 4)&quot;);
</span><span class="cx">     request.onerror = finishJSTest;
</span><span class="cx">     request.onblocked = unexpectedBlockedCallback;
</span><span class="lines">@@ -174,4 +172,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddblazyindextypeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/lazy-index-types.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/lazy-index-types.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/lazy-index-types.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/lazy-index-types.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddblegacyconstantshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/legacy-constants.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/legacy-constants.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/legacy-constants.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/legacy-constants.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddblistorderinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/list-ordering.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/list-ordering.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/list-ordering.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/list-ordering.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmetadataraceexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/metadata-race-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/metadata-race-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/metadata-race-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+Ensure IndexedDB transactions created before open onsuccess have correct metadata
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;metadata-race.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+store.createIndex('index', 'keyPath')
+transaction = event.target.transaction
+PASS index = transaction.objectStore('store').index('index') did not throw exception.
+
+onTransactionComplete():
+In multiprocess mode, 'complete' event may be dispatched before
+the 'success' arrives with updated metadata. Ensure the new metadata
+is still used for transactions.
+store = db.transaction('store').objectStore('store')
+PASS index = store.index('index') did not throw exception.
+
+onOpenSuccess():
+db = event.target.result
+store = db.transaction('store').objectStore('store')
+PASS index = store.index('index') did not throw exception.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmetadataracehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/metadata-race.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/metadata-race.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/metadata-race.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Ensure IndexedDB transactions created before open onsuccess have correct metadata&quot;);
+
+indexedDBTest(prepareDatabase, onOpenSuccess);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    evalAndLog(&quot;store.createIndex('index', 'keyPath')&quot;);
+    evalAndLog(&quot;transaction = event.target.transaction&quot;);
+    shouldNotThrow(&quot;index = transaction.objectStore('store').index('index')&quot;);
+    transaction.oncomplete = onTransactionComplete;
+}
+
+function onTransactionComplete(evt)
+{
+    preamble(evt);
+    debug(&quot;In multiprocess mode, 'complete' event may be dispatched before\n&quot; +
+          &quot;the 'success' arrives with updated metadata. Ensure the new metadata\n&quot; +
+          &quot;is still used for transactions.&quot;);
+    evalAndLog(&quot;store = db.transaction('store').objectStore('store')&quot;);
+    shouldNotThrow(&quot;index = store.index('index')&quot;);
+}
+
+function onOpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.transaction('store').objectStore('store')&quot;);
+    shouldNotThrow(&quot;index = store.index('index')&quot;);
+    finishJSTest();
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmetadatahtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/metadata.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/metadata.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/metadata.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/metadata.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaaddtwicefailurehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/add-twice-failure.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/add-twice-failure.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/add-twice-failure.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/add-twice-failure.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaautoincrementindexeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/autoincrement-indexes.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/autoincrement-indexes.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/autoincrement-indexes.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/autoincrement-indexes.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillabadkeypathexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -14,6 +14,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: DataError: DOM IDBDatabase Exception 0
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillabadkeypathhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/bad-keypath.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/bad-keypath.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaclearexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/clear-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/clear-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/clear-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -14,6 +14,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> db.transaction('foo', 'readwrite')
</span><span class="cx"> transaction.objectStore('foo').clear();
</span><span class="cx"> request = db.transaction('foo').objectStore('foo').openCursor();
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaclearhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/clear.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/clear.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/clear.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/clear.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacreateindexuniquehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/create-index-unique.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/create-index-unique.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/create-index-unique.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/create-index-unique.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacreateindexwithintegerkeyshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/create-index-with-integer-keys.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/create-index-with-integer-keys.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/create-index-with-integer-keys.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/create-index-with-integer-keys.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacreateobjectstorebasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> Expecting exception from objectStore = db.createObjectStore(info.name, info.options)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><ins>+Exception message: InvalidAccessError: DOM IDBDatabase Exception 15
</ins><span class="cx"> objectStore = db.createObjectStore(info.name, info.options);
</span><span class="cx"> PASS objectStore.name is info.name
</span><span class="cx"> PASS objectStore.indexNames.length is 0
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacreateobjectstorebasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/create-objectstore-basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacreateobjectstorenullnamehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-null-name.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-null-name.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/create-objectstore-null-name.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/create-objectstore-null-name.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacursormutationobjectstoreonlyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation-objectstore-only.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation-objectstore-only.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation-objectstore-only.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-mutation-objectstore-only.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacursormutationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/cursor-mutation.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-mutation.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacursorupdateupdatesindexeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/cursor-update-updates-indexes.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/cursor-update-updates-indexes.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/cursor-update-updates-indexes.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursor-update-updates-indexes.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacursorsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/cursors-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/cursors-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/cursors-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -54,6 +55,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -66,6 +68,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -78,6 +81,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -90,6 +94,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -102,6 +107,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -114,6 +120,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -126,6 +133,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -138,6 +146,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span><span class="lines">@@ -150,6 +159,7 @@
</span><span class="cx"> Expecting exception from cursor.continue();
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><ins>+Exception message: InvalidStateError: DOM IDBDatabase Exception 11
</ins><span class="cx"> PASS cursor.key is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.primaryKey is sortedKeys[keyIndex]
</span><span class="cx"> PASS cursor.value is 'foo'
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillacursorshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/cursors.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/cursors.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/cursors.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/cursors.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozilladeleteresulthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/delete-result.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/delete-result.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/delete-result.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/delete-result.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaeventsourcehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/event-source.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/event-source.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/event-source.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/event-source.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaglobaldatahtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/global-data.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/global-data.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/global-data.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/global-data.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaindexprevnoduplicatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> --&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -153,6 +153,5 @@
</span><span class="cx"> var successfullyParsed = true;
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaindexeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/indexes.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/indexes.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/indexes.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/indexes.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsdeletenullkeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: DataError: DOM IDBDatabase Exception 0
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsdeletenullkeyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-delete-null-key.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-requirements-delete-null-key.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsinlineandpassedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: DataError: DOM IDBDatabase Exception 0
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsinlineandpassedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-requirements-inline-and-passed.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnokeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: DataError: DOM IDBDatabase Exception 0
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnokeyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-requirements-put-no-key.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnullkeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: DataError: DOM IDBDatabase Exception 0
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementsputnullkeyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-requirements-put-null-key.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillakeyrequirementshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/key-requirements.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/key-requirements.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaobjectcursorshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/object-cursors.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/object-cursors.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/object-cursors.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/object-cursors.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaobjectidentityhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/object-identity.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/object-identity.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/object-identity.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/object-identity.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaobjectstoreinlineautoincrementkeyaddedonputhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/object-store-inline-autoincrement-key-added-on-put.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/object-store-inline-autoincrement-key-added-on-put.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/object-store-inline-autoincrement-key-added-on-put.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/object-store-inline-autoincrement-key-added-on-put.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaobjectstoreremovevalueshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/object-store-remove-values.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/object-store-remove-values.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/object-store-remove-values.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/object-store-remove-values.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaobjectstorenameshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/objectstorenames.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/objectstorenames.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/objectstorenames.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectstorenames.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaoddresultorderhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/odd-result-order.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/odd-result-order.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/odd-result-order.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/odd-result-order.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaopendatabasenullnamehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/open-database-null-name.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/open-database-null-name.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/open-database-null-name.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/open-database-null-name.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaputgetvalueshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/put-get-values.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/put-get-values.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/put-get-values.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/put-get-values.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillareadonlytransactionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,36 +13,44 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> Expecting exception from db.transaction(osName).objectStore(osName).add({});
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> key1 = 1;
</span><span class="cx"> key2 = 2;
</span><span class="cx"> Expecting exception from db.transaction([osName]).objectStore(osName).put({}, key1);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> Expecting exception from db.transaction(osName).objectStore(osName).put({}, key2);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> Expecting exception from db.transaction([osName]).objectStore(osName).put({}, key1);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> Expecting exception from db.transaction(osName).objectStore(osName).put({}, key1);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> Expecting exception from db.transaction([osName]).objectStore(osName).delete(key1);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> Expecting exception from db.transaction(osName).objectStore(osName).delete(key2);
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: ReadOnlyError: DOM IDBDatabase Exception 0
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillareadonlytransactionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/readonly-transactions.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/readonly-transactions.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillareadwritetransactionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/readwrite-transactions.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/readwrite-transactions.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/readwrite-transactions.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/readwrite-transactions.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillareadyStatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/readyState.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/readyState.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/readyState.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/readyState.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaremoveindexhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/remove-index.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/remove-index.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/remove-index.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/remove-index.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaremoveobjectstorehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/remove-objectstore.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/remove-objectstore.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/remove-objectstore.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/remove-objectstore.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesaddtwicefailurejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/add-twice-failure.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/add-twice-failure.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/add-twice-failure.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesautoincrementindexesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/autoincrement-indexes.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/autoincrement-indexes.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/autoincrement-indexes.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesbadkeypathjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/bad-keypath.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/bad-keypath.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/bad-keypath.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesclearjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/clear.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/clear.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/clear.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescreateindexuniquejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-unique.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-unique.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-unique.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescreateindexwithintegerkeysjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-with-integer-keys.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-with-integer-keys.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-index-with-integer-keys.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescreateobjectstorebasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescreateobjectstorenullnamejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-null-name.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-null-name.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/create-objectstore-null-name.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescursormutationobjectstoreonlyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation-objectstore-only.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation-objectstore-only.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation-objectstore-only.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescursormutationjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-mutation.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescursorupdateupdatesindexesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-update-updates-indexes.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-update-updates-indexes.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursor-update-updates-indexes.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcescursorsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursors.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursors.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/cursors.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesdeleteresultjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/delete-result.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/delete-result.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/delete-result.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourceseventsourcejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/event-source.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/event-source.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/event-source.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesglobaldatajs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/global-data.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/global-data.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/global-data.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesindexesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/indexes.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/indexes.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/indexes.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsdeletenullkeyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-delete-null-key.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-delete-null-key.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-delete-null-key.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsinlineandpassedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-inline-and-passed.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-inline-and-passed.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-inline-and-passed.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsputnokeyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-no-key.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-no-key.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-no-key.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsputnullkeyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-null-key.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-null-key.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements-put-null-key.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourceskeyrequirementsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/key-requirements.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesobjectcursorsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-cursors.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-cursors.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-cursors.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesobjectidentityjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-identity.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-identity.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-identity.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesobjectstoreinlineautoincrementkeyaddedonputjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-inline-autoincrement-key-added-on-put.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-inline-autoincrement-key-added-on-put.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-inline-autoincrement-key-added-on-put.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesobjectstoreremovevaluesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-remove-values.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-remove-values.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/object-store-remove-values.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesobjectstorenamesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/objectstorenames.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/objectstorenames.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/objectstorenames.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesoddresultorderjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/odd-result-order.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/odd-result-order.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/odd-result-order.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesopendatabasenullnamejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/open-database-null-name.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/open-database-null-name.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/open-database-null-name.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesputgetvaluesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/put-get-values.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/put-get-values.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/put-get-values.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesreadonlytransactionsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/readonly-transactions.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/readonly-transactions.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/readonly-transactions.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesreadwritetransactionsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/readwrite-transactions.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/readwrite-transactions.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/readwrite-transactions.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesreadyStatejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/readyState.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/readyState.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/readyState.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesremoveindexjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-index.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-index.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-index.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesremoveobjectstorejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-objectstore.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-objectstore.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/remove-objectstore.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaresourcesversionchangeabortjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/resources/versionchange-abort.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/resources/versionchange-abort.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/resources/versionchange-abort.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //   http://creativecommons.org/publicdomain/zero/1.0/ &quot;
</span><span class="cx"> 
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../../resources/js-test.js');
</ins><span class="cx">     importScripts('../../resources/shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmozillaversionchangeaborthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mozilla/versionchange-abort.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mozilla/versionchange-abort.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mozilla/versionchange-abort.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;../resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/versionchange-abort.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmutatingcursorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mutating-cursor.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mutating-cursor.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/mutating-cursor.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/mutating-cursor.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbnoblobsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/noblobs-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/noblobs-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/noblobs-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -22,14 +22,17 @@
</span><span class="cx"> Expecting exception from store.put(blob, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store currently does not support blob values.
</ins><span class="cx"> Expecting exception from store.add(blob, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store currently does not support blob values.
</ins><span class="cx"> request = store.openCursor()
</span><span class="cx"> cursor = request.result
</span><span class="cx"> Expecting exception from cursor.update(blob)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The object store currently does not support blob values.
</ins><span class="cx"> 
</span><span class="cx"> testFile():
</span><span class="cx"> file = fileInput.files[0]
</span><span class="lines">@@ -40,14 +43,17 @@
</span><span class="cx"> Expecting exception from store.put(file, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store currently does not support blob values.
</ins><span class="cx"> Expecting exception from store.add(file, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store currently does not support blob values.
</ins><span class="cx"> request = store.openCursor()
</span><span class="cx"> cursor = request.result
</span><span class="cx"> Expecting exception from cursor.update(file)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The object store currently does not support blob values.
</ins><span class="cx"> 
</span><span class="cx"> testFileList():
</span><span class="cx"> filelist = fileInput.files
</span><span class="lines">@@ -58,14 +64,17 @@
</span><span class="cx"> Expecting exception from store.put(filelist, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store currently does not support blob values.
</ins><span class="cx"> Expecting exception from store.add(filelist, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store currently does not support blob values.
</ins><span class="cx"> request = store.openCursor()
</span><span class="cx"> cursor = request.result
</span><span class="cx"> Expecting exception from cursor.update(filelist)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'update' on 'IDBCursor': The object store currently does not support blob values.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbnoblobshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/noblobs.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/noblobs.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/noblobs.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -82,6 +82,5 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectlookupsinversionchangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -16,11 +16,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> 
</span><span class="cx"> Expecting exception from store.index('no-such-index')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectlookupsinversionchangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -18,4 +18,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=../../resources/js-test-post.js&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectStorerequiredargumentsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -9,14 +9,14 @@
</span><span class="cx"> indexedDB.deleteDatabase(dbname)
</span><span class="cx"> indexedDB.open(dbname)
</span><span class="cx"> objectStore = db.createObjectStore('foo');
</span><del>-PASS objectStore.put(); threw exception TypeError: Not enough arguments.
-PASS objectStore.add(); threw exception TypeError: Not enough arguments.
-PASS objectStore.delete(); threw exception TypeError: Not enough arguments.
-PASS objectStore.get(); threw exception TypeError: Not enough arguments.
-PASS objectStore.createIndex(); threw exception TypeError: Not enough arguments.
-PASS objectStore.createIndex('foo'); threw exception TypeError: Not enough arguments.
-PASS objectStore.index(); threw exception TypeError: Not enough arguments.
-PASS objectStore.deleteIndex(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS objectStore.put(); threw exception TypeError: Failed to execute 'put' on 'IDBObjectStore': 1 argument required, but only 0 present..
+PASS objectStore.add(); threw exception TypeError: Failed to execute 'add' on 'IDBObjectStore': 1 argument required, but only 0 present..
+PASS objectStore.delete(); threw exception TypeError: Failed to execute 'delete' on 'IDBObjectStore': 1 argument required, but only 0 present..
+PASS objectStore.get(); threw exception TypeError: Failed to execute 'get' on 'IDBObjectStore': 1 argument required, but only 0 present..
+PASS objectStore.createIndex(); threw exception TypeError: Failed to execute 'createIndex' on 'IDBObjectStore': 2 arguments required, but only 0 present..
+PASS objectStore.createIndex('foo'); threw exception TypeError: Failed to execute 'createIndex' on 'IDBObjectStore': 2 arguments required, but only 1 present..
+PASS objectStore.index(); threw exception TypeError: Failed to execute 'index' on 'IDBObjectStore': 1 argument required, but only 0 present..
+PASS objectStore.deleteIndex(); threw exception TypeError: Failed to execute 'deleteIndex' on 'IDBObjectStore': 1 argument required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectStorerequiredargumentshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectStore-required-arguments.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstoreautoincrementexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -58,6 +58,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</ins><span class="cx"> store.add({name: 'Adam'}, 1)
</span><span class="cx"> addAdamSuccess():
</span><span class="cx"> PASS event.target.result is 1
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstoreautoincrementhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectstore-autoincrement.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorebasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -29,6 +29,8 @@
</span><span class="cx"> PASS typeof store.clear is &quot;function&quot;
</span><span class="cx"> PASS 'openCursor' in store is true
</span><span class="cx"> PASS typeof store.openCursor is &quot;function&quot;
</span><ins>+PASS 'openKeyCursor' in store is true
+PASS typeof store.openKeyCursor is &quot;function&quot;
</ins><span class="cx"> PASS 'createIndex' in store is true
</span><span class="cx"> PASS typeof store.createIndex is &quot;function&quot;
</span><span class="cx"> PASS 'index' in store is true
</span><span class="lines">@@ -49,6 +51,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> createIndex():
</span><span class="cx"> index = store.createIndex('indexName', 'x', {unique: true})
</span><span class="cx"> PASS index is non-null.
</span><span class="lines">@@ -60,6 +63,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> indexedDB.open(dbname, 2)
</span><span class="cx"> db.close()
</span><span class="cx"> PASS db.version is 2
</span><span class="lines">@@ -93,6 +97,7 @@
</span><span class="cx"> Expecting exception from store.add({x: 'bar', y: self}, 'bar')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> Try to insert data where key path yields a Date key:
</span><span class="cx"> store.add({x: testDateB, y: 'value'}, 'key')
</span><span class="cx"> addSuccess():
</span><span class="lines">@@ -108,6 +113,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> db.transaction(['storeName'], 'readwrite')
</span><span class="cx"> store = transaction.objectStore('storeName')
</span><span class="cx"> Ensure invalid key pointed at by index keyPath is ignored
</span><span class="lines">@@ -133,21 +139,25 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into store.delete().
</span><span class="cx"> Expecting exception from store.delete({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into store.add().
</span><span class="cx"> Expecting exception from store.add(null, {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Passing an invalid key into store.put().
</span><span class="cx"> Expecting exception from store.put(null, {})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> testPreConditions():
</span><span class="cx"> indexedDB.open(dbname, 3)
</span><span class="lines">@@ -164,26 +174,31 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store uses in-line keys and the key parameter was provided.
</ins><span class="cx"> The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</span><span class="cx"> Expecting exception from storeWithOutOfLineKeys.put({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</ins><span class="cx"> The object store uses in-line keys and the result of evaluating the object store's key path yields a value and that value is not a valid key.
</span><span class="cx"> Expecting exception from storeWithInLineKeys.put({key: null})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path yielded a value that is not a valid key.
</ins><span class="cx"> The object store uses in-line keys but no key generator and the result of evaluating the object store's key path does not yield a value.
</span><span class="cx"> Expecting exception from storeWithInLineKeys.put({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</ins><span class="cx"> The key parameter was provided but does not contain a valid key.
</span><span class="cx"> Expecting exception from storeWithOutOfLineKeys.put({}, null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> IDBObjectStore.add()
</span><span class="cx"> The object store uses in-line keys and the key parameter was provided.
</span><span class="lines">@@ -191,26 +206,31 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store uses in-line keys and the key parameter was provided.
</ins><span class="cx"> The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</span><span class="cx"> Expecting exception from storeWithOutOfLineKeys.add({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</ins><span class="cx"> The object store uses in-line keys and the result of evaluating the object store's key path yields a value and that value is not a valid key.
</span><span class="cx"> Expecting exception from storeWithInLineKeys.add({key: null})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': Evaluating the object store's key path yielded a value that is not a valid key.
</ins><span class="cx"> The object store uses in-line keys but no key generator and the result of evaluating the object store's key path does not yield a value.
</span><span class="cx"> Expecting exception from storeWithInLineKeys.add({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</ins><span class="cx"> The key parameter was provided but does not contain a valid key.
</span><span class="cx"> Expecting exception from storeWithOutOfLineKeys.add({}, null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorebasicsworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -30,6 +30,8 @@
</span><span class="cx"> PASS [Worker] typeof store.clear is &quot;function&quot;
</span><span class="cx"> PASS [Worker] 'openCursor' in store is true
</span><span class="cx"> PASS [Worker] typeof store.openCursor is &quot;function&quot;
</span><ins>+PASS [Worker] 'openKeyCursor' in store is true
+PASS [Worker] typeof store.openKeyCursor is &quot;function&quot;
</ins><span class="cx"> PASS [Worker] 'createIndex' in store is true
</span><span class="cx"> PASS [Worker] typeof store.createIndex is &quot;function&quot;
</span><span class="cx"> PASS [Worker] 'index' in store is true
</span><span class="lines">@@ -50,6 +52,7 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS [Worker] ename is 'NotFoundError'
</span><ins>+[Worker] Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> [Worker] createIndex():
</span><span class="cx"> [Worker] index = store.createIndex('indexName', 'x', {unique: true})
</span><span class="cx"> PASS [Worker] index is non-null.
</span><span class="lines">@@ -61,6 +64,7 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS [Worker] ename is 'NotFoundError'
</span><ins>+[Worker] Exception message: Failed to execute 'index' on 'IDBObjectStore': The specified index was not found.
</ins><span class="cx"> [Worker] indexedDB.open(dbname, 2)
</span><span class="cx"> [Worker] db.close()
</span><span class="cx"> PASS [Worker] db.version is 2
</span><span class="lines">@@ -94,6 +98,7 @@
</span><span class="cx"> [Worker] Expecting exception from store.add({x: 'bar', y: self}, 'bar')
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is DOMException.DATA_CLONE_ERR
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> [Worker] Try to insert data where key path yields a Date key:
</span><span class="cx"> [Worker] store.add({x: testDateB, y: 'value'}, 'key')
</span><span class="cx"> [Worker] addSuccess():
</span><span class="lines">@@ -109,6 +114,7 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> [Worker] db.transaction(['storeName'], 'readwrite')
</span><span class="cx"> [Worker] store = transaction.objectStore('storeName')
</span><span class="cx"> [Worker] Ensure invalid key pointed at by index keyPath is ignored
</span><span class="lines">@@ -134,21 +140,25 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> [Worker] Passing an invalid key into store.delete().
</span><span class="cx"> [Worker] Expecting exception from store.delete({})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'delete' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> [Worker] Passing an invalid key into store.add().
</span><span class="cx"> [Worker] Expecting exception from store.add(null, {})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> [Worker] Passing an invalid key into store.put().
</span><span class="cx"> [Worker] Expecting exception from store.put(null, {})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] testPreConditions():
</span><span class="cx"> [Worker] indexedDB.open(dbname, 3)
</span><span class="lines">@@ -165,26 +175,31 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store uses in-line keys and the key parameter was provided.
</ins><span class="cx"> [Worker] The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</span><span class="cx"> [Worker] Expecting exception from storeWithOutOfLineKeys.put({})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</ins><span class="cx"> [Worker] The object store uses in-line keys and the result of evaluating the object store's key path yields a value and that value is not a valid key.
</span><span class="cx"> [Worker] Expecting exception from storeWithInLineKeys.put({key: null})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path yielded a value that is not a valid key.
</ins><span class="cx"> [Worker] The object store uses in-line keys but no key generator and the result of evaluating the object store's key path does not yield a value.
</span><span class="cx"> [Worker] Expecting exception from storeWithInLineKeys.put({})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</ins><span class="cx"> [Worker] The key parameter was provided but does not contain a valid key.
</span><span class="cx"> [Worker] Expecting exception from storeWithOutOfLineKeys.put({}, null)
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] IDBObjectStore.add()
</span><span class="cx"> [Worker] The object store uses in-line keys and the key parameter was provided.
</span><span class="lines">@@ -192,26 +207,31 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store uses in-line keys and the key parameter was provided.
</ins><span class="cx"> [Worker] The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</span><span class="cx"> [Worker] Expecting exception from storeWithOutOfLineKeys.add({})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
</ins><span class="cx"> [Worker] The object store uses in-line keys and the result of evaluating the object store's key path yields a value and that value is not a valid key.
</span><span class="cx"> [Worker] Expecting exception from storeWithInLineKeys.add({key: null})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': Evaluating the object store's key path yielded a value that is not a valid key.
</ins><span class="cx"> [Worker] The object store uses in-line keys but no key generator and the result of evaluating the object store's key path does not yield a value.
</span><span class="cx"> [Worker] Expecting exception from storeWithInLineKeys.add({})
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</ins><span class="cx"> [Worker] The key parameter was provided but does not contain a valid key.
</span><span class="cx"> [Worker] Expecting exception from storeWithOutOfLineKeys.add({}, null)
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'DataError'
</span><ins>+[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorebasicsworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/objectstore-basics.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/objectstore-basics.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorebasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectstore-basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstoreclearhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-clear.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-clear.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-clear.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectstore-clear.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorecountexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-count-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-count-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-count-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -80,14 +80,17 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from store.count({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> Expecting exception from store.count(/regex/)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> test = {&quot;key&quot;:0,&quot;expected&quot;:1}
</span><span class="cx"> request = store.count(test.key)
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorecounthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-count.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-count.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-count.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectstore-count.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorecursorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> Verify that specifying an invalid direction raises an exception:
</span><span class="cx"> Expecting TypeError exception from objectStore.openCursor(0, 'invalid-direction')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS objectStore.openCursor(0, 'invalid-direction') threw TypeError: Type error
</del><ins>+PASS objectStore.openCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openCursor' on 'IDBObjectStore': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
</ins><span class="cx"> 
</span><span class="cx"> objectStore.add('', testData[nextToAdd])
</span><span class="cx"> objectStore.add('', testData[nextToAdd])
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorecursorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-cursor.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-cursor.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-cursor.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectstore-cursor.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorekeycursorexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/objectstore-keycursor-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-keycursor-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-keycursor-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,335 @@
</span><ins>+Test IndexedDB's objectStore.openKeyCursor + the cursor it produces in depth.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;objectstore-keycursor.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+objectStore = db.createObjectStore('someObjectStore')
+
+Verify that specifying an invalid direction raises an exception:
+Expecting TypeError exception from objectStore.openKeyCursor(0, 'invalid-direction')
+PASS Exception was thrown.
+PASS objectStore.openKeyCursor(0, 'invalid-direction') threw TypeError: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The direction provided ('invalid-direction') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.
+
+objectStore.add('', testData[nextToAdd])
+objectStore.add('', testData[nextToAdd])
+objectStore.add('', testData[nextToAdd])
+objectStore.add('', testData[nextToAdd])
+objectStore.add('', testData[nextToAdd])
+objectStore.add('', testData[nextToAdd])
+Scheduling tests...
+Running tests...
+
+Next test: lower open bound is 0; sorted ascending.
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: lower bound is 0; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: upper open bound is 0; sorted ascending.
+PASS event.target.result is null
+
+Next test: upper bound is 0; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: lower open bound is 0; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result is null
+
+Next test: lower bound is 0; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: upper open bound is 0; sorted descending.
+PASS event.target.result is null
+
+Next test: upper bound is 0; sorted descending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: lower open bound is 1; sorted ascending.
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: lower bound is 1; sorted ascending.
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: upper open bound is 1; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: upper bound is 1; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result is null
+
+Next test: lower open bound is 1; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result is null
+
+Next test: lower bound is 1; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result is null
+
+Next test: upper open bound is 1; sorted descending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: upper bound is 1; sorted descending.
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: lower open bound is 2; sorted ascending.
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: lower bound is 2; sorted ascending.
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: upper open bound is 2; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result is null
+
+Next test: upper bound is 2; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result is null
+
+Next test: lower open bound is 2; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result is null
+
+Next test: lower bound is 2; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result is null
+
+Next test: upper open bound is 2; sorted descending.
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: upper bound is 2; sorted descending.
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: lower open bound is 3; sorted ascending.
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: lower bound is 3; sorted ascending.
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: upper open bound is 3; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result is null
+
+Next test: upper bound is 3; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result is null
+
+Next test: lower open bound is 3; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result is null
+
+Next test: lower bound is 3; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result is null
+
+Next test: upper open bound is 3; sorted descending.
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: upper bound is 3; sorted descending.
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: lower open bound is 4; sorted ascending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: lower bound is 4; sorted ascending.
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: upper open bound is 4; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result is null
+
+Next test: upper bound is 4; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result is null
+
+Next test: lower open bound is 4; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: lower bound is 4; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result is null
+
+Next test: upper open bound is 4; sorted descending.
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: upper bound is 4; sorted descending.
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: lower open bound is 5; sorted ascending.
+PASS event.target.result is null
+
+Next test: lower bound is 5; sorted ascending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: upper open bound is 5; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result is null
+
+Next test: upper bound is 5; sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: lower open bound is 5; sorted descending.
+PASS event.target.result is null
+
+Next test: lower bound is 5; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: upper open bound is 5; sorted descending.
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: upper bound is 5; sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+
+Next test: null key path sorted ascending.
+PASS event.target.result.key is testData[0]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[5]
+PASS event.target.result is null
+
+Next test: null key path sorted descending.
+PASS event.target.result.key is testData[5]
+PASS event.target.result.key is testData[4]
+PASS event.target.result.key is testData[3]
+PASS event.target.result.key is testData[2]
+PASS event.target.result.key is testData[1]
+PASS event.target.result.key is testData[0]
+PASS event.target.result is null
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorekeycursorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/objectstore-keycursor.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-keycursor.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-keycursor.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/objectstore-keycursor.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstoreremoveobjectstorehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/objectstore-removeobjectstore.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddboddstringshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/odd-strings.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/odd-strings.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/odd-strings.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/odd-strings.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbopenbadversionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/open-bad-versions.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-bad-versions.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/open-bad-versions.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -29,6 +29,5 @@
</span><span class="cx"> test();
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbopencursorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/open-cursor-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-cursor-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/open-cursor-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -22,6 +22,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> Opening an empty cursor.
</span><span class="cx"> objectStore.openCursor(keyRange)
</span><span class="lines">@@ -39,6 +40,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'DataError'
</span><ins>+Exception message: Failed to execute 'continue' on 'IDBCursor': The parameter is not a valid key.
</ins><span class="cx"> 
</span><span class="cx"> Opening an empty cursor.
</span><span class="cx"> objectStore.openCursor(&quot;InexistentKey&quot;)
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbopencursorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/open-cursor.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-cursor.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/open-cursor.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/open-cursor.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbopenduringtransactionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/open-during-transaction.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-during-transaction.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/open-during-transaction.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/open-during-transaction.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbopenorderinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/open-ordering.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-ordering.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/open-ordering.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/open-ordering.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbopentwiceworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/open-twice-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-twice-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/open-twice-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/open-twice.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/open-twice.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbopencursorkeyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/opencursor-key.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/opencursor-key.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/opencursor-key.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/opencursor-key.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddboptionalargumentsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/optional-arguments-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/optional-arguments-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/optional-arguments-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,161 @@
</span><ins>+Exercise optional arguments with missing vs. undefined in IndexedDB methods.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;optional-arguments.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store', {keyPath: 'id'})
+store.createIndex('by_name', 'name', {unique: true})
+store.put({id: 1, name: 'a'})
+tx = db.transaction('store', 'readwrite')
+store = tx.objectStore('store')
+index = store.index('by_name')
+PASS IDBKeyRange.lowerBound(0).lowerOpen is false
+PASS IDBKeyRange.upperBound(0).upperOpen is false
+PASS IDBKeyRange.bound(0, 1).lowerOpen is false
+PASS IDBKeyRange.bound(0, 1).upperOpen is false
+PASS IDBKeyRange.lowerBound(0, undefined).lowerOpen is false
+PASS IDBKeyRange.upperBound(0, undefined).upperOpen is false
+PASS IDBKeyRange.bound(0, 1, undefined, undefined).lowerOpen is false
+PASS IDBKeyRange.bound(0, 1, undefined, undefined).upperOpen is false
+PASS store.add({id: 2, name: 'b'}) did not throw exception.
+PASS store.put({id: 3, name: 'c'}) did not throw exception.
+PASS store.add({id: 4, name: 'd'}, undefined) did not throw exception.
+PASS store.put({id: 5, name: 'e'}, undefined) did not throw exception.
+
+verifyCursor():
+request = store.openCursor()
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = store.openCursor(null)
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = store.openCursor(IDBKeyRange.lowerBound(4))
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 2
+
+verifyCursor():
+request = store.openCursor(3)
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 1
+
+verifyCursor():
+request = store.openKeyCursor()
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = store.openKeyCursor(null)
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = store.openKeyCursor(IDBKeyRange.lowerBound(4))
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 2
+
+verifyCursor():
+request = store.openKeyCursor(3)
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 1
+
+verifyCursor():
+request = index.openCursor()
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = index.openCursor(null)
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = index.openCursor(IDBKeyRange.lowerBound('b'))
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 4
+
+verifyCursor():
+request = index.openCursor('c')
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 1
+
+verifyCursor():
+request = index.openKeyCursor()
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = index.openKeyCursor(null)
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 5
+
+verifyCursor():
+request = index.openKeyCursor(IDBKeyRange.lowerBound('b'))
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 4
+
+verifyCursor():
+request = index.openKeyCursor('c')
+cursor = request.result
+PASS cursor.direction is &quot;next&quot;
+PASS continues is 1
+
+verifyCount():
+request = store.count()
+PASS request.result is 5
+
+verifyCount():
+request = store.count(null)
+PASS request.result is 5
+
+verifyCount():
+request = store.count(IDBKeyRange.lowerBound(2))
+PASS request.result is 4
+
+verifyCount():
+request = index.count()
+PASS request.result is 5
+
+verifyCount():
+request = index.count(null)
+PASS request.result is 5
+
+verifyCount():
+request = index.count(IDBKeyRange.lowerBound('b'))
+PASS request.result is 4
+
+continueUndefined():
+request = store.openCursor()
+cursor = request.result
+PASS request.result is non-null.
+PASS cursor.continue(undefined) did not throw exception.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddboptionalargumentshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/optional-arguments.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/optional-arguments.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/optional-arguments.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,136 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Exercise optional arguments with missing vs. undefined in IndexedDB methods.&quot;);
+
+indexedDBTest(prepareDatabase, checkOptionalArguments);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store', {keyPath: 'id'})&quot;);
+    evalAndLog(&quot;store.createIndex('by_name', 'name', {unique: true})&quot;);
+
+    evalAndLog(&quot;store.put({id: 1, name: 'a'})&quot;);
+}
+
+function checkOptionalArguments(event)
+{
+    evalAndLog(&quot;tx = db.transaction('store', 'readwrite')&quot;);
+    tx.oncomplete = finishJSTest;
+
+    evalAndLog(&quot;store = tx.objectStore('store')&quot;);
+    evalAndLog(&quot;index = store.index('by_name')&quot;);
+
+    shouldBe(&quot;IDBKeyRange.lowerBound(0).lowerOpen&quot;, &quot;false&quot;);
+    shouldBe(&quot;IDBKeyRange.upperBound(0).upperOpen&quot;, &quot;false&quot;);
+    shouldBe(&quot;IDBKeyRange.bound(0, 1).lowerOpen&quot;, &quot;false&quot;);
+    shouldBe(&quot;IDBKeyRange.bound(0, 1).upperOpen&quot;, &quot;false&quot;);
+
+    shouldBe(&quot;IDBKeyRange.lowerBound(0, undefined).lowerOpen&quot;, &quot;false&quot;);
+    shouldBe(&quot;IDBKeyRange.upperBound(0, undefined).upperOpen&quot;, &quot;false&quot;);
+    shouldBe(&quot;IDBKeyRange.bound(0, 1, undefined, undefined).lowerOpen&quot;, &quot;false&quot;);
+    shouldBe(&quot;IDBKeyRange.bound(0, 1, undefined, undefined).upperOpen&quot;, &quot;false&quot;);
+
+    shouldNotThrow(&quot;store.add({id: 2, name: 'b'})&quot;);
+    shouldNotThrow(&quot;store.put({id: 3, name: 'c'})&quot;);
+    shouldNotThrow(&quot;store.add({id: 4, name: 'd'}, undefined)&quot;);
+    shouldNotThrow(&quot;store.put({id: 5, name: 'e'}, undefined)&quot;);
+
+    tasks = [
+        function(callback) { verifyCursor(&quot;store.openCursor()&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;store.openCursor(null)&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;store.openCursor(IDBKeyRange.lowerBound(4))&quot;, &quot;next&quot;, 2, callback); },
+        function(callback) { verifyCursor(&quot;store.openCursor(3)&quot;, &quot;next&quot;, 1, callback); },
+
+        function(callback) { verifyCursor(&quot;store.openKeyCursor()&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;store.openKeyCursor(null)&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;store.openKeyCursor(IDBKeyRange.lowerBound(4))&quot;, &quot;next&quot;, 2, callback); },
+        function(callback) { verifyCursor(&quot;store.openKeyCursor(3)&quot;, &quot;next&quot;, 1, callback); },
+
+        function(callback) { verifyCursor(&quot;index.openCursor()&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;index.openCursor(null)&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;index.openCursor(IDBKeyRange.lowerBound('b'))&quot;, &quot;next&quot;, 4, callback); },
+        function(callback) { verifyCursor(&quot;index.openCursor('c')&quot;, &quot;next&quot;, 1, callback); },
+
+        function(callback) { verifyCursor(&quot;index.openKeyCursor()&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;index.openKeyCursor(null)&quot;, &quot;next&quot;, 5, callback); },
+        function(callback) { verifyCursor(&quot;index.openKeyCursor(IDBKeyRange.lowerBound('b'))&quot;, &quot;next&quot;, 4, callback); },
+        function(callback) { verifyCursor(&quot;index.openKeyCursor('c')&quot;, &quot;next&quot;, 1, callback); },
+
+        function(callback) { verifyCount(&quot;store.count()&quot;, 5, callback); },
+        function(callback) { verifyCount(&quot;store.count(null)&quot;, 5, callback); },
+        function(callback) { verifyCount(&quot;store.count(IDBKeyRange.lowerBound(2))&quot;, 4, callback); },
+
+        function(callback) { verifyCount(&quot;index.count()&quot;, 5, callback); },
+        function(callback) { verifyCount(&quot;index.count(null)&quot;, 5, callback); },
+        function(callback) { verifyCount(&quot;index.count(IDBKeyRange.lowerBound('b'))&quot;, 4, callback); },
+
+        continueUndefined,
+
+    ];
+    function doNextTask() {
+        var task = tasks.shift();
+        if (task) {
+            task(doNextTask);
+        }
+    }
+    doNextTask();
+}
+
+function verifyCursor(expr, direction, expected, callback)
+{
+    preamble();
+    cursor = null;
+    continues = 0;
+    evalAndLog(&quot;request = &quot; + expr);
+    request.onerror = unexpectedErrorCallback;
+
+    request.onsuccess = function() {
+        if (request.result) {
+            if (!cursor) {
+                evalAndLog(&quot;cursor = request.result&quot;);
+                shouldBeEqualToString(&quot;cursor.direction&quot;, direction);
+            }
+            ++continues;
+            cursor.continue();
+        } else {
+            shouldBe(&quot;continues&quot;, JSON.stringify(expected));
+            callback();
+        }
+    };
+}
+
+function verifyCount(expr, expected, callback)
+{
+    preamble();
+    evalAndLog(&quot;request = &quot; + expr);
+    request.onerror = unexpectedErrorCallback;
+
+    request.onsuccess = function() {
+        shouldBe(&quot;request.result&quot;, JSON.stringify(expected));
+        callback();
+    };
+}
+
+function continueUndefined(callback)
+{
+    preamble();
+    first = true;
+    evalAndLog(&quot;request = store.openCursor()&quot;);
+    request.onerror = unexpectedErrorCallback;
+
+    request.onsuccess = function() {
+        if (first) {
+            first = false;
+            evalAndLog(&quot;cursor = request.result&quot;);
+            shouldBeNonNull(&quot;request.result&quot;);
+            shouldNotThrow(&quot;cursor.continue(undefined)&quot;);
+            callback();
+        }
+    };
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingactivityworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,7 +1,6 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/pending-activity.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/pending-activity.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingactivityhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-activity.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-activity.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/pending-activity.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,4 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;resources/pending-activity.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangeonexithtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> function startTheWorker()
</span><span class="cx"> {
</span><del>-  var worker = startWorker(&quot;resources/pending-version-change-on-exit.js?&quot; + encodeURIComponent(dbname));
</del><ins>+  worker = startWorker(&quot;resources/pending-version-change-on-exit.js?&quot; + encodeURIComponent(dbname));
</ins><span class="cx">   realFinishJSTest = finishJSTest;
</span><span class="cx">   worker.onerror = function(e) {
</span><span class="cx">     testFailed(e.message);
</span><span class="lines">@@ -52,6 +52,5 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangestuckworkswithterminatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> 
</span><span class="cx"> function startTheWorker()
</span><span class="cx"> {
</span><del>-    var worker = startWorker(&quot;resources/pending-version-change-stuck.js?&quot; + encodeURIComponent(dbname));
</del><ins>+    worker = startWorker(&quot;resources/pending-version-change-stuck.js?&quot; + encodeURIComponent(dbname));
</ins><span class="cx">     worker.onerror = function(e) {
</span><span class="cx">         testFailed(e.message);
</span><span class="cx">         finishJSTest();
</span><span class="lines">@@ -64,6 +64,5 @@
</span><span class="cx"> test();
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangestuckhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> function startTheWorker()
</span><span class="cx"> {
</span><del>-    var worker = startWorker(&quot;resources/pending-version-change-stuck.js?&quot; + encodeURI(dbname));
</del><ins>+    worker = startWorker(&quot;resources/pending-version-change-stuck.js?&quot; + encodeURI(dbname));
</ins><span class="cx">     worker.onerror = function(e) {
</span><span class="cx">         testFailed(e.message);
</span><span class="cx">         finishJSTest();
</span><span class="lines">@@ -44,6 +44,5 @@
</span><span class="cx"> test();
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpersistencehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/persistence.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/persistence.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/persistence.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/persistence.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbprefetchbugfix108071expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-Test for crbug.com/108071
</del><ins>+Regression test for http://crbug.com/108071
</ins><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbprefetchbugfix108071html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/prefetch-bugfix-108071.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbprefetchinvalidationexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/prefetch-invalidation-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-invalidation-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-invalidation-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+Ensure IndexedDB's write operations invalidate cursor prefetch caches
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;prefetch-invalidation.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+
+onOpenSuccess():
+db = event.target.result
+
+-------------------------------------------
+
+doPrefetchInvalidationTest():
+store = db.transaction('store', 'readwrite').objectStore('store')
+Populate the store with 200 records.
+cursorRequest = store.openCursor()
+
+continue100Times():
+PASS cursorRequest.result is non-null.
+
+doOperationAndContinue():
+store.delete(IDBKeyRange.bound(-Infinity, +Infinity))
+cursor = cursorRequest.result
+cursor.continue()
+
+onContinueSuccess():
+PASS cursorRequest.result is null
+
+-------------------------------------------
+
+doPrefetchInvalidationTest():
+store = db.transaction('store', 'readwrite').objectStore('store')
+Populate the store with 200 records.
+cursorRequest = store.openCursor()
+
+continue100Times():
+PASS cursorRequest.result is non-null.
+
+doOperationAndContinue():
+store.clear()
+cursor = cursorRequest.result
+cursor.continue()
+
+onContinueSuccess():
+PASS cursorRequest.result is null
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbprefetchinvalidationhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/prefetch-invalidation.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-invalidation.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-invalidation.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,90 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Ensure IndexedDB's write operations invalidate cursor prefetch caches&quot;);
+
+indexedDBTest(prepareDatabase, onOpenSuccess);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+}
+
+function onOpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+
+    var steps = [
+        deleteRange,
+        clearStore
+    ];
+
+    (function nextStep() {
+        var step = steps.shift();
+        if (step) {
+            doPrefetchInvalidationTest(step, nextStep);
+        } else {
+            finishJSTest();
+            return;
+        }
+    }());
+}
+
+function doPrefetchInvalidationTest(operation, callback)
+{
+    debug(&quot;&quot;);
+    debug(&quot;-------------------------------------------&quot;);
+    preamble();
+    evalAndLog(&quot;store = db.transaction('store', 'readwrite').objectStore('store')&quot;);
+    debug(&quot;Populate the store with 200 records.&quot;);
+    for (var i = 0; i &lt; 200; ++i)
+        store.put(i, i);
+    evalAndLog(&quot;cursorRequest = store.openCursor()&quot;);
+    continue100Times(operation, callback);
+}
+
+function continue100Times(operation, callback)
+{
+    preamble();
+    var count = 0;
+
+    cursorRequest.onsuccess = function() {
+        var cursor = cursorRequest.result;
+        ++count;
+        if (count &lt; 100) {
+            cursor.continue();
+            return;
+        }
+        shouldBeNonNull(&quot;cursorRequest.result&quot;);
+        doOperationAndContinue(operation, callback);
+    }
+}
+
+function doOperationAndContinue(operation, callback)
+{
+    preamble();
+    operation();
+    evalAndLog(&quot;cursor = cursorRequest.result&quot;);
+    evalAndLog(&quot;cursor.continue()&quot;)
+    cursorRequest.onsuccess = function onContinueSuccess() {
+        preamble();
+        shouldBeNull(&quot;cursorRequest.result&quot;);
+        callback();
+    };
+}
+
+function deleteRange()
+{
+    return evalAndLog(&quot;store.delete(IDBKeyRange.bound(-Infinity, +Infinity))&quot;);
+}
+
+function clearStore()
+{
+    return evalAndLog(&quot;store.clear()&quot;);
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbprefetchraceexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/prefetch-race-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-race-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-race-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+Ensure IndexedDB's cursor prefetch cache requests are invalidated
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;prefetch-race.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+Populate with even records...
+
+onOpenSuccess():
+db = event.target.result
+tx = db.transaction('store', 'readwrite')
+store = tx.objectStore('store')
+request = store.openCursor()
+
+cursorSuccess():
+PASS cursor.key is 0
+cursor.continue()
+
+cursorSuccess():
+PASS cursor.key is 2
+cursor.continue()
+
+cursorSuccess():
+PASS cursor.key is 4
+cursor.continue()
+
+That should have triggered a prefetch, injecting odd records...
+
+cursorSuccess():
+PASS cursor.key is 6
+cursor.continue()
+
+cursorSuccess():
+PASS cursor.key is 7
+cursor.continue()
+
+cursorSuccess():
+PASS cursor.key is 8
+cursor.continue()
+
+cursorSuccess():
+PASS cursor.key is 9
+cursor.continue()
+
+cursorSuccess():
+PASS continueCount is 7
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbprefetchracehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/prefetch-race.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-race.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-race.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Ensure IndexedDB's cursor prefetch cache requests are invalidated&quot;);
+
+indexedDBTest(prepareDatabase, onOpenSuccess);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    debug(&quot;Populate with even records...&quot;);
+    for (var i = 0; i &lt; 10; i += 2)
+        store.put(i, i);
+}
+
+function onOpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+
+    evalAndLog(&quot;tx = db.transaction('store', 'readwrite')&quot;);
+    evalAndLog(&quot;store = tx.objectStore('store')&quot;);
+    evalAndLog(&quot;request = store.openCursor()&quot;);
+
+    kPrefetchThreshold = 3;
+
+    expected = [&quot;0&quot;, &quot;2&quot;, &quot;4&quot;, &quot;6&quot;, &quot;7&quot;, &quot;8&quot;, &quot;9&quot;];
+    continueCount = 0;
+    request.onsuccess = function cursorSuccess() {
+        preamble();
+        cursor = request.result;
+        if (!cursor)
+            return;
+        ++continueCount;
+
+        expect = expected.shift();
+        shouldBe(&quot;cursor.key&quot;, expect);
+        evalAndLog(&quot;cursor.continue()&quot;);
+
+        if (continueCount === kPrefetchThreshold) {
+            debug(&quot;\nThat should have triggered a prefetch, injecting odd records...&quot;);
+            for (var i = 1; i &lt; 10; i += 2)
+                store.put(i, i);
+        }
+    };
+
+    tx.oncomplete = function() {
+        shouldBe(&quot;continueCount&quot;, &quot;7&quot;);
+        finishJSTest();
+    };
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbqueuedcommandshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/queued-commands.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/queued-commands.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/queued-commands.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/queued-commands.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbreadonlypropertieshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/readonly-properties.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/readonly-properties.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/readonly-properties.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/readonly-properties.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbreadonlyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/readonly.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/readonly.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/readonly.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/readonly.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbremovedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/removed-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/removed-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/removed-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> PASS 'IDBDatabaseException' in self is false
</span><span class="cx"> PASS 'errorCode' in indexedDB.open(dbname) is false
</span><span class="cx"> PASS 'setVersion' in IDBDatabase.prototype is false
</span><del>-PASS document.createEvent('IDBUpgradeNeededEvent') threw exception Error: NotSupportedError: DOM Exception 9.
</del><ins>+PASS document.createEvent('IDBUpgradeNeededEvent') threw exception NotSupportedError: Failed to execute 'createEvent' on 'Document': The provided event type ('IDBUpgradeNeededEvent') is invalid..
</ins><span class="cx"> PASS 'version' in document.createEvent('IDBVersionChangeEvent') is false
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbremovedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/removed.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/removed.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/removed.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/removed.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbrequestcontinueaborthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/request-continue-abort.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-continue-abort.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/request-continue-abort.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/request-continue-abort.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbrequesteventpropagationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/request-event-propagation.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-event-propagation.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/request-event-propagation.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/request-event-propagation.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbrequestleakexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/request-leak-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-leak-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/request-leak-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+Verify that that requests weakly hold script value properties
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;request-leak.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+store.put({value: 'value'}, 'key')
+
+onOpen():
+db = event.target.result
+tx = db.transaction('store')
+store = tx.objectStore('store')
+request = store.get('key')
+
+onTransactionComplete():
+db.close()
+PASS typeof request.result is &quot;object&quot;
+request.result.x = 123
+PASS request.result.x is 123
+request.result.leak = request
+observer = internals.observeGC(request)
+request = null
+gc()
+PASS observer.wasCollected is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbrequestleakhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/request-leak.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-leak.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/request-leak.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Verify that that requests weakly hold script value properties&quot;);
+
+if (window.internals) {
+    indexedDBTest(prepareDatabase, onOpen);
+} else {
+    testFailed('This test requires access to the Internals object');
+    finishJSTest();
+}
+
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    evalAndLog(&quot;store.put({value: 'value'}, 'key')&quot;);
+}
+
+function onOpen(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;tx = db.transaction('store')&quot;);
+    evalAndLog(&quot;store = tx.objectStore('store')&quot;);
+    evalAndLog(&quot;request = store.get('key')&quot;);
+    tx.oncomplete = function onTransactionComplete() {
+        preamble();
+        evalAndLog(&quot;db.close()&quot;);
+        shouldBeEqualToString(&quot;typeof request.result&quot;, &quot;object&quot;);
+
+        // Verify that the same object is returned on each access to request.result.
+        evalAndLog(&quot;request.result.x = 123&quot;);
+        shouldBe(&quot;request.result.x&quot;, &quot;123&quot;);
+
+        // Try and induce a leak by a reference cycle from DOM to V8 and back.
+        // If the v8 value of request.result (etc) is only held by the requests's
+        // V8 wrapper then there will be no leak.
+        evalAndLog(&quot;request.result.leak = request&quot;);
+        evalAndLog(&quot;observer = internals.observeGC(request)&quot;);
+        evalAndLog(&quot;request = null&quot;);
+        evalAndLog(&quot;gc()&quot;);
+        shouldBeTrue(&quot;observer.wasCollected&quot;);
+        finishJSTest();
+    };
+}
+
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbrequestresultcacheexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/request-result-cache-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-result-cache-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/request-result-cache-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+Verify that a request's result is dirtied when a cursor is continued
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;request-result-cache.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+
+onOpen():
+db = event.target.result
+tx = db.transaction('store')
+store = tx.objectStore('store')
+cursorRequest = store.openCursor()
+
+cursorRequestSuccess():
+cursor = cursorRequest.result
+cursor.continue()
+Expecting exception from cursorRequest.result
+PASS Exception was thrown.
+PASS code is DOMException.INVALID_STATE_ERR
+PASS ename is 'InvalidStateError'
+Exception message: Failed to read the 'result' property from 'IDBRequest': The request has not finished.
+
+cursorRequestSuccess():
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbrequestresultcachehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/request-result-cache.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-result-cache.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/request-result-cache.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Verify that a request's result is dirtied when a cursor is continued&quot;);
+
+indexedDBTest(prepareDatabase, onOpen);
+
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    store.put(&quot;value&quot;, &quot;key&quot;);
+}
+
+function onOpen(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;tx = db.transaction('store')&quot;);
+    evalAndLog(&quot;store = tx.objectStore('store')&quot;);
+
+    evalAndLog(&quot;cursorRequest = store.openCursor()&quot;);
+    cursorRequest.onsuccess = function cursorRequestSuccess(evt) {
+        preamble(evt);
+        if (!cursorRequest.result)
+            return;
+
+        evalAndLog(&quot;cursor = cursorRequest.result&quot;);
+        evalAndLog(&quot;cursor.continue()&quot;);
+        evalAndExpectException(&quot;cursorRequest.result&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);    };
+
+    tx.oncomplete = finishJSTest;
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesabortedversionchangeclosesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/aborted-versionchange-closes.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/aborted-versionchange-closes.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/aborted-versionchange-closes.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesbasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -11,8 +11,7 @@
</span><span class="cx">     request = evalAndLog(&quot;indexedDB.open('basics')&quot;);
</span><span class="cx">     shouldBeTrue(&quot;'result' in request&quot;);
</span><span class="cx">     evalAndExpectException(&quot;request.result&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><del>-    shouldBeTrue(&quot;'webkitErrorMessage' in request&quot;);
-    evalAndExpectException(&quot;request.webkitErrorMessage&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</del><ins>+    shouldBeTrue(&quot;'error' in request&quot;);
</ins><span class="cx">     evalAndExpectException(&quot;request.error&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     shouldBeTrue(&quot;'source' in request&quot;);
</span><span class="cx">     shouldBeNull(&quot;request.source&quot;);
</span><span class="lines">@@ -33,8 +32,6 @@
</span><span class="cx">     event = evt;
</span><span class="cx">     shouldBeTrue(&quot;'result' in event.target&quot;);
</span><span class="cx">     shouldBeTrue(&quot;!!event.target.result&quot;);
</span><del>-    shouldBeTrue(&quot;'webkitErrorMessage' in event.target&quot;);
-    shouldBeUndefined(&quot;event.target.webkitErrorMessage&quot;);
</del><span class="cx">     shouldBeTrue(&quot;'error' in event.target&quot;);
</span><span class="cx">     shouldBeNull(&quot;event.target.error&quot;);
</span><span class="cx">     shouldBeTrue(&quot;'source' in event.target&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescreateandremoveobjectstorejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/create-and-remove-object-store.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/create-and-remove-object-store.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/create-and-remove-object-store.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescreateobjectstoreoptionsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/create-object-store-options.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/create-object-store-options.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/create-object-store-options.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescreateIndexafterfailurejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescreateObjectStorenameargumentrequiredjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-name-argument-required.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-name-argument-required.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-name-argument-required.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescreateObjectStorenullnamejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-null-name.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-null-name.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-null-name.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursoraddedbugjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursoradvancejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-advance.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-advance.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-advance.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorbasicsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/resources/cursor-basics.js (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-basics.js                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,109 @@
</span><ins>+if (this.importScripts) {
+    importScripts('../../../resources/js-test.js');
+    importScripts('shared.js');
+}
+
+description(&quot;Test the basics of IndexedDB's IDBCursor objects.&quot;);
+
+indexedDBTest(prepareDatabase);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    db = event.target.result;
+
+    evalAndLog(&quot;store = db.createObjectStore('storeName')&quot;);
+    evalAndLog(&quot;index = store.createIndex('indexName', 'indexOn')&quot;);
+    evalAndLog(&quot;store.put({indexOn: 'a'}, 0)&quot;);
+
+    request = evalAndLog(&quot;store.openCursor()&quot;);
+    request.onsuccess = onStoreOpenCursor;
+    request.onerror = unexpectedErrorCallback;
+
+    request = evalAndLog(&quot;store.openKeyCursor()&quot;);
+    request.onsuccess = onStoreOpenKeyCursor;
+    request.onerror = unexpectedErrorCallback;
+
+    request = evalAndLog(&quot;index.openCursor()&quot;);
+    request.onsuccess = onIndexOpenCursor;
+    request.onerror = unexpectedErrorCallback;
+
+    request = evalAndLog(&quot;index.openKeyCursor()&quot;);
+    request.onsuccess = onIndexOpenKeyCursor;
+    request.onerror = unexpectedErrorCallback;
+
+    event.target.transaction.oncomplete = finishJSTest;
+}
+
+function checkCursorProperties() {
+    shouldBeTrue(&quot;cursor instanceof IDBCursor&quot;);
+    shouldBeTrue(&quot;'key' in cursor&quot;);
+    shouldBeTrue(&quot;'primaryKey' in cursor&quot;);
+
+    shouldBeTrue(&quot;'continue' in cursor&quot;);
+    shouldBeEqualToString(&quot;typeof cursor.continue&quot;, &quot;function&quot;);
+    shouldBeTrue(&quot;'continuePrimaryKey' in cursor&quot;);
+    shouldBeEqualToString(&quot;typeof cursor.continuePrimaryKey&quot;, &quot;function&quot;);
+    shouldBeTrue(&quot;'advance' in cursor&quot;);
+    shouldBeEqualToString(&quot;typeof cursor.advance&quot;, &quot;function&quot;);
+    shouldBeTrue(&quot;'update' in cursor&quot;);
+    shouldBeEqualToString(&quot;typeof cursor.update&quot;, &quot;function&quot;);
+    shouldBeTrue(&quot;'delete' in cursor&quot;);
+    shouldBeEqualToString(&quot;typeof cursor.delete&quot;, &quot;function&quot;);
+}
+
+function onStoreOpenCursor(evt) {
+    preamble(evt);
+    evalAndLog(&quot;cursor = event.target.result&quot;);
+    shouldBeNonNull(&quot;cursor&quot;);
+    checkCursorProperties();
+
+    shouldBe(&quot;cursor.key&quot;, &quot;0&quot;);
+    shouldBe(&quot;cursor.primaryKey&quot;, &quot;0&quot;);
+
+    shouldBeTrue(&quot;cursor instanceof IDBCursorWithValue&quot;);
+    shouldBeTrue(&quot;'value' in cursor&quot;);
+    shouldBeEqualToString(&quot;JSON.stringify(cursor.value)&quot;, '{&quot;indexOn&quot;:&quot;a&quot;}');
+}
+
+function onStoreOpenKeyCursor(evt) {
+    preamble(evt);
+    evalAndLog(&quot;cursor = event.target.result&quot;);
+    shouldBeNonNull(&quot;cursor&quot;);
+    checkCursorProperties();
+
+    shouldBe(&quot;cursor.key&quot;, &quot;0&quot;);
+    shouldBeTrue(&quot;'primaryKey' in cursor&quot;);
+    shouldBe(&quot;cursor.primaryKey&quot;, &quot;0&quot;);
+
+    shouldBeFalse(&quot;cursor instanceof IDBCursorWithValue&quot;);
+    shouldBeFalse(&quot;'value' in cursor&quot;);
+}
+
+function onIndexOpenCursor(evt) {
+    preamble(evt);
+    evalAndLog(&quot;cursor = event.target.result&quot;);
+    shouldBeNonNull(&quot;cursor&quot;);
+    checkCursorProperties();
+
+    shouldBeEqualToString(&quot;cursor.key&quot;, &quot;a&quot;);
+    shouldBe(&quot;cursor.primaryKey&quot;, &quot;0&quot;);
+
+    shouldBeTrue(&quot;cursor instanceof IDBCursorWithValue&quot;);
+    shouldBeTrue(&quot;'value' in cursor&quot;);
+    shouldBeEqualToString(&quot;JSON.stringify(cursor.value)&quot;, '{&quot;indexOn&quot;:&quot;a&quot;}');
+}
+
+function onIndexOpenKeyCursor(evt) {
+    preamble(evt);
+    evalAndLog(&quot;cursor = event.target.result&quot;);
+    shouldBeNonNull(&quot;cursor&quot;);
+    checkCursorProperties();
+
+    shouldBeEqualToString(&quot;cursor.key&quot;, &quot;a&quot;);
+    shouldBe(&quot;cursor.primaryKey&quot;, &quot;0&quot;);
+
+    shouldBeFalse(&quot;cursor instanceof IDBCursorWithValue&quot;);
+    shouldBe(&quot;cursor.primaryKey&quot;, &quot;0&quot;);
+    shouldBeFalse(&quot;'value' in cursor&quot;);
+}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorcontinuedirjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-dir.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-dir.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-dir.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorcontinuevalidityjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-validity.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-validity.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-validity.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorcontinuejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-continue.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-continue.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-continue.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorcontinueprimarykeyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/resources/cursor-continueprimarykey.js (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-continueprimarykey.js                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-continueprimarykey.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+if (this.importScripts) {
+    importScripts('../../../fast/js/resources/js-test-pre.js');
+    importScripts('shared.js');
+}
+
+description(&quot;Test IndexedDB's IDBCursor.continue() with a primary key parameter.&quot;);
+
+indexedDBTest(prepareDatabase, verifyContinueCalls);
+function prepareDatabase(evt)
+{
+    preamble(evt);
+
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+    evalAndLog(&quot;index = store.createIndex('index', 'indexKey', {multiEntry: true})&quot;);
+
+    evalAndLog(&quot;store.put({indexKey: ['a', 'b']}, 1)&quot;);
+    evalAndLog(&quot;store.put({indexKey: ['a', 'b']}, 2)&quot;);
+    evalAndLog(&quot;store.put({indexKey: ['a', 'b']}, 3)&quot;);
+    evalAndLog(&quot;store.put({indexKey: ['b']}, 4)&quot;);
+
+    var indexExpected = [
+        {key: &quot;a&quot;, primaryKey: 1},
+        {key: &quot;a&quot;, primaryKey: 2},
+        {key: &quot;a&quot;, primaryKey: 3},
+        {key: &quot;b&quot;, primaryKey: 1},
+        {key: &quot;b&quot;, primaryKey: 2},
+        {key: &quot;b&quot;, primaryKey: 3},
+        {key: &quot;b&quot;, primaryKey: 4}
+    ];
+    debug(&quot;checking index structure...&quot;);
+    debug(&quot;&quot;);
+    debug(&quot;index key  primary key&quot;);
+    debug(&quot;=========  ===========&quot;);
+    var quiet = true;
+    evalAndLog(&quot;request = index.openCursor()&quot;, quiet);
+    request.onerror = unexpectedErrorCallback;
+    request.onsuccess = function onCursorSuccess() {
+        evalAndLog(&quot;cursor = request.result&quot;, quiet);
+        var expectedEntry = indexExpected.shift();
+        if (expectedEntry) {
+            shouldBe(&quot;cursor.key&quot;, JSON.stringify(expectedEntry.key), quiet);
+            shouldBe(&quot;cursor.primaryKey&quot;, JSON.stringify(expectedEntry.primaryKey), quiet);
+            debug(cursor.key + &quot;          &quot; + cursor.primaryKey);
+            evalAndLog(&quot;cursor.continue()&quot;, quiet);
+        } else {
+            shouldBeNull(&quot;cursor&quot;, quiet);
+        }
+    };
+}
+
+var testCases = [
+    // Continuing index key
+    { call: &quot;cursor.continue()&quot;, result: { key: &quot;a&quot;, primaryKey: 2 } },
+    { call: &quot;cursor.continue('a')&quot;, exception: 'DataError' },
+    { call: &quot;cursor.continue('b')&quot;, result: { key: &quot;b&quot;, primaryKey: 1 } },
+    { call: &quot;cursor.continue('c')&quot;, result: null },
+
+    // Called w/ index key and primary key:
+    { call: &quot;cursor.continuePrimaryKey('a', 3)&quot;, result: {key: 'a', primaryKey: 3} },
+    { call: &quot;cursor.continuePrimaryKey('a', 4)&quot;, result: {key: 'b', primaryKey: 1} },
+    { call: &quot;cursor.continuePrimaryKey('b', 1)&quot;, result: {key: 'b', primaryKey: 1} },
+    { call: &quot;cursor.continuePrimaryKey('b', 4)&quot;, result: {key: 'b', primaryKey: 4} },
+    { call: &quot;cursor.continuePrimaryKey('b', 5)&quot;, result: null },
+    { call: &quot;cursor.continuePrimaryKey('c', 1)&quot;, result: null },
+
+    // Called w/ primary key but w/o index key
+    { call: &quot;cursor.continuePrimaryKey(null, 1)&quot;, exception: 'DataError' },
+    { call: &quot;cursor.continuePrimaryKey(null, 2)&quot;, exception: 'DataError' },
+    { call: &quot;cursor.continuePrimaryKey(null, 3)&quot;, exception: 'DataError' },
+    { call: &quot;cursor.continuePrimaryKey(null, 4)&quot;, exception: 'DataError' },
+    { call: &quot;cursor.continuePrimaryKey(null, 5)&quot;, exception: 'DataError' },
+
+    // Called w/ index key but w/o primary key
+    { call: &quot;cursor.continuePrimaryKey('a', null)&quot;, exception: 'DataError' },
+ ];
+
+function verifyContinueCalls() {
+    debug(&quot;&quot;);
+    if (!testCases.length) {
+        finishJSTest();
+        return;
+    }
+
+    var quiet = true;
+    testCase = testCases.shift();
+    debug(&quot;Test case: &quot; + testCase.call);
+    debug(&quot;&quot;);
+    evalAndLog(&quot;tx = db.transaction('store')&quot;);
+    evalAndLog(&quot;request = tx.objectStore('store').index('index').openCursor()&quot;);
+    var i = 0;
+    request.onsuccess = function() {
+        ++i;
+        evalAndLog(&quot;cursor = request.result&quot;, true);
+        if (i === 1) {
+            if ('exception' in testCase) {
+                evalAndExpectException(testCase.call, &quot;0&quot;, &quot;'DataError'&quot;);
+            } else {
+                evalAndLog(testCase.call);
+            }
+            return;
+        }
+
+        if (i === 2) {
+            if (testCase.result) {
+                shouldBe(&quot;cursor.key&quot;, JSON.stringify(testCase.result.key));
+                shouldBe(&quot;cursor.primaryKey&quot;, JSON.stringify(testCase.result.primaryKey));
+            } else {
+                shouldBeNull(&quot;cursor&quot;);
+            }
+        }
+    };
+
+    tx.oncomplete = verifyContinueCalls;
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursordeletejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-delete.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-delete.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-delete.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorinconsistencyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-inconsistency.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-inconsistency.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-inconsistency.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorindexdeletejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-index-delete.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-index-delete.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-index-delete.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorkeyorderjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-key-order.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-key-order.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-key-order.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorprevnoduplicatejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorprimarykeyorderjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-primary-key-order.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-primary-key-order.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-primary-key-order.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorpropertiesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-properties.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-properties.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-properties.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorreversebugjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-reverse-bug.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-reverse-bug.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-reverse-bug.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorskipdeletedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-skip-deleted.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-skip-deleted.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-skip-deleted.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorupdatevalueargumentrequiredjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-update-value-argument-required.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-update-value-argument-required.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-update-value-argument-required.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorupdatejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-update.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-update.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-update.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcescursorvaluejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/cursor-value.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-value.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-value.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatacorruptionjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/data-corruption.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/data-corruption.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/data-corruption.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -10,6 +10,7 @@
</span><span class="cx"> {
</span><span class="cx">     db = event.target.result;
</span><span class="cx">     debug(&quot;setVersionSuccess():&quot;);
</span><ins>+    shouldBeEqualToString(&quot;event.dataLoss&quot;, &quot;none&quot;);
</ins><span class="cx">     self.trans = evalAndLog(&quot;trans = event.target.transaction&quot;);
</span><span class="cx">     shouldBeNonNull(&quot;trans&quot;);
</span><span class="cx">     trans.onabort = unexpectedAbortCallback;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabasebasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabaseclosejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-close.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-close.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-close.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabaseclosependingflagjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-closepending-flag.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-closepending-flag.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-closepending-flag.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabasedeletependingflagjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-deletepending-flag.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-deletepending-flag.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-deletepending-flag.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabasenameundefinedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-name-undefined.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-name-undefined.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-name-undefined.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabaseoddnamesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-odd-names.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-odd-names.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-odd-names.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabasequotajs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-quota.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-quota.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-quota.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> 
</span><span class="cx"> function logError()
</span><span class="cx"> {
</span><del>-    debug(&quot;Error function called: (&quot; + event.target.error.name + &quot;) &quot; + event.target.webkitErrorMessage);
</del><ins>+    debug(&quot;Error function called: (&quot; + event.target.error.name + &quot;) &quot; + event.target.error.message);
</ins><span class="cx">     evalAndLog(&quot;event.preventDefault()&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdatabasewrapperjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/database-wrapper.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-wrapper.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-wrapper.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> function onBlocked()
</span><span class="cx"> {
</span><span class="cx">     preamble();
</span><del>-    debug(&quot;FIXME: Blocked event shouldn't fire. http://wkbug.com/71130&quot;);
</del><ins>+    debug(&quot;FIXME: Blocked event shouldn't fire. http://crbug.com/100123&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function openAgainSuccess(evt)
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeletecloseddatabaseobjectjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/delete-closed-database-object.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-closed-database-object.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-closed-database-object.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -15,8 +15,7 @@
</span><span class="cx">     db = event.target.result;
</span><span class="cx">     evalAndLog(&quot;db.close()&quot;);
</span><span class="cx"> 
</span><del>-    debug(&quot;We can't specify a version here due to http://wkbug.com/102716&quot;);
-    var openRequest = evalAndLog(&quot;indexedDB.open(dbname)&quot;); // NOTE: No version specified.
</del><ins>+    var openRequest = evalAndLog(&quot;indexedDB.open(dbname)&quot;);
</ins><span class="cx">     openRequest.onblocked = unexpectedBlockedCallback;
</span><span class="cx">     openRequest.onupgradeneeded = unexpectedUpgradeNeededCallback;
</span><span class="cx">     openRequest.onerror = unexpectedErrorCallback;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeleteinupgradeneededcloseinopensuccessjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeleteinupgradeneededcloseinversionchangejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> {
</span><span class="cx">     preamble(evt);
</span><span class="cx">     shouldBeTrue(&quot;sawVersionChange&quot;);
</span><del>-    debug(&quot;FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://wkbug.com/71130&quot;);
</del><ins>+    debug(&quot;FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://crbug.com/100123&quot;);
</ins><span class="cx">     shouldBeFalse(&quot;sawDeleteBlocked&quot;);
</span><span class="cx">     shouldBeTrue(&quot;sawUpgradeNeeded&quot;);
</span><span class="cx">     finishJSTest();
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeleterangejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/delete-range.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-range.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-range.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeleteIndexjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deleteIndex.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleteIndex.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleteIndex.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeleteObjectStorenameargumentrequiredjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-name-argument-required.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-name-argument-required.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-name-argument-required.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeleteObjectStorenullnamejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-null-name.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-null-name.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-null-name.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeletedobjectsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deleted-objects.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleted-objects.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleted-objects.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -11,16 +11,18 @@
</span><span class="cx">     trans = event.target.transaction;
</span><span class="cx">     connection = event.target.result;
</span><span class="cx"> 
</span><del>-    debug(&quot;&quot;);
</del><ins>+    testStore();
+}
+
+function testStore()
+{
+    preamble();
+
</ins><span class="cx">     evalAndLog(&quot;deletedStore = connection.createObjectStore('deletedStore')&quot;);
</span><del>-    evalAndLog(&quot;store = connection.createObjectStore('store')&quot;);
-    evalAndLog(&quot;deletedIndex = store.createIndex('deletedIndex', 'path')&quot;);
</del><ins>+    evalAndLog(&quot;connection.deleteObjectStore('deletedStore')&quot;);
</ins><span class="cx"> 
</span><span class="cx">     debug(&quot;&quot;);
</span><del>-    evalAndLog(&quot;connection.deleteObjectStore('deletedStore')&quot;);
-    evalAndLog(&quot;store.deleteIndex('deletedIndex')&quot;);
</del><span class="cx"> 
</span><del>-    debug(&quot;&quot;);
</del><span class="cx">     evalAndExpectException(&quot;deletedStore.put(0, 0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.add(0, 0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.delete(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="lines">@@ -33,6 +35,11 @@
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.openCursor(0, 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.openCursor(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.openCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><ins>+    evalAndExpectException(&quot;deletedStore.openKeyCursor()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;deletedStore.openKeyCursor(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;deletedStore.openKeyCursor(0, 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;deletedStore.openKeyCursor(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;deletedStore.openKeyCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</ins><span class="cx">     evalAndExpectException(&quot;deletedStore.createIndex('name', 'path')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.index('name')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.deleteIndex('name')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="lines">@@ -40,7 +47,19 @@
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.count(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedStore.count(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx"> 
</span><ins>+    testIndex();
+}
+
+function testIndex()
+{
+    preamble();
+
+    evalAndLog(&quot;store = connection.createObjectStore('store')&quot;);
+    evalAndLog(&quot;deletedIndex = store.createIndex('deletedIndex', 'path')&quot;);
+    evalAndLog(&quot;store.deleteIndex('deletedIndex')&quot;);
+
</ins><span class="cx">     debug(&quot;&quot;);
</span><ins>+
</ins><span class="cx">     evalAndExpectException(&quot;deletedIndex.openCursor()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedIndex.openCursor(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedIndex.openCursor(0, 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="lines">@@ -59,6 +78,111 @@
</span><span class="cx">     evalAndExpectException(&quot;deletedIndex.count(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx">     evalAndExpectException(&quot;deletedIndex.count(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
</span><span class="cx"> 
</span><del>-    trans.onabort = unexpectedAbortCallback;
-    trans.oncomplete = finishJSTest;
</del><ins>+    testTransitiveDeletion();
</ins><span class="cx"> }
</span><ins>+
+function testTransitiveDeletion()
+{
+    preamble();
+
+    evalAndLog(&quot;deletedStore = connection.createObjectStore('deletedStore')&quot;);
+    evalAndLog(&quot;indexOfDeletedStore = deletedStore.createIndex('index', 'path')&quot;);
+    evalAndLog(&quot;connection.deleteObjectStore('deletedStore')&quot;);
+
+    debug(&quot;&quot;);
+
+    evalAndExpectException(&quot;indexOfDeletedStore.openCursor()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openCursor(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openCursor(0, 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openCursor(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openKeyCursor()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openKeyCursor(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openKeyCursor(0, 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0), 'next')&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.get(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.get(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.getKey(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.getKey(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.count()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.count(0)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+    evalAndExpectException(&quot;indexOfDeletedStore.count(IDBKeyRange.only(0))&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+
+    testObjectStoreCursor();
+}
+
+function testObjectStoreCursor()
+{
+    preamble();
+
+    evalAndLog(&quot;deletedStore = connection.createObjectStore('deletedStore')&quot;);
+    evalAndLog(&quot;deletedStore.put(0, 0)&quot;);
+
+    request = evalAndLog(&quot;deletedStore.openCursor()&quot;);
+    request.onerror = unexpectedErrorCallback;
+    request.onsuccess = function() {
+        evalAndLog(&quot;cursor = request.result&quot;);
+        shouldBe(&quot;cursor.key&quot;, &quot;0&quot;);
+        shouldBe(&quot;cursor.value&quot;, &quot;0&quot;);
+
+        evalAndLog(&quot;connection.deleteObjectStore('deletedStore')&quot;);
+        evalAndExpectException(&quot;cursor.delete()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.update(1)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.continue()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.advance(1)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+
+        testIndexCursor();
+    };
+}
+
+
+function testIndexCursor()
+{
+    preamble();
+
+    evalAndLog(&quot;store.put({id: 123}, 0)&quot;);
+    evalAndLog(&quot;deletedIndex = store.createIndex('deletedIndex', 'id')&quot;);
+
+    request = evalAndLog(&quot;deletedIndex.openCursor()&quot;);
+    request.onerror = unexpectedErrorCallback;
+    request.onsuccess = function() {
+        evalAndLog(&quot;cursor = request.result&quot;);
+        shouldBe(&quot;cursor.key&quot;, &quot;123&quot;);
+        shouldBe(&quot;cursor.primaryKey&quot;, &quot;0&quot;);
+
+        evalAndLog(&quot;store.deleteIndex('deletedIndex')&quot;);
+        evalAndExpectException(&quot;cursor.delete()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.update(1)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.continue()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.advance(1)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+
+        testIndexOfDeletedStoreCursor();
+    };
+}
+
+function testIndexOfDeletedStoreCursor()
+{
+    preamble();
+
+    evalAndLog(&quot;deletedStore = connection.createObjectStore('deletedStore')&quot;);
+    evalAndLog(&quot;deletedStore.put({id: 123}, 0)&quot;);
+    evalAndLog(&quot;index = deletedStore.createIndex('index', 'id')&quot;);
+
+    request = evalAndLog(&quot;index.openCursor()&quot;);
+    request.onerror = unexpectedErrorCallback;
+    request.onsuccess = function() {
+        evalAndLog(&quot;cursor = request.result&quot;);
+        shouldBe(&quot;cursor.key&quot;, &quot;123&quot;);
+        shouldBe(&quot;cursor.primaryKey&quot;, &quot;0&quot;);
+
+        evalAndLog(&quot;connection.deleteObjectStore('deletedStore')&quot;);
+        evalAndExpectException(&quot;cursor.delete()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.update(1)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.continue()&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+        evalAndExpectException(&quot;cursor.advance(1)&quot;, &quot;DOMException.INVALID_STATE_ERR&quot;, &quot;'InvalidStateError'&quot;);
+
+        trans.onabort = unexpectedAbortCallback;
+        trans.oncomplete = finishJSTest;
+    };
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeletedatabaseblockedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-blocked.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-blocked.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-blocked.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeletedatabasedelayedbyopenandversionchangejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeletedatabasedelayedbyversionchangejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -50,7 +50,9 @@
</span><span class="cx">         request.onerror = unexpectedErrorCallback;
</span><span class="cx">         request.onsuccess = function h3OpenSuccess(evt) {
</span><span class="cx">             preamble(evt);
</span><del>-        }
</del><ins>+            h3 = event.target.result;
+            evalAndLog(&quot;h3.close()&quot;);
+        };
</ins><span class="cx">         request.onblocked = function h3Blocked(evt) {
</span><span class="cx">             preamble(evt);
</span><span class="cx">             evalAndLog(&quot;setVersionBlockedEventFired = true&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdeletedatabasenotblockedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdontcommitonblockedworkerjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/dont-commit-on-blocked-worker.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/dont-commit-on-blocked-worker.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/dont-commit-on-blocked-worker.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-importScripts('../../../resources/js-test-pre.js');
</del><ins>+importScripts('../../../resources/js-test.js');
</ins><span class="cx"> importScripts('shared.js');
</span><span class="cx"> 
</span><span class="cx"> removeVendorPrefixes();
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesdontwedgejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/dont-wedge.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/dont-wedge.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/dont-wedge.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesduplicatesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/duplicates.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/duplicates.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/duplicates.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceserrorcausesabortbydefaultjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/error-causes-abort-by-default.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/error-causes-abort-by-default.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/error-causes-abort-by-default.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceseventsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/events.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/events.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/events.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx">     if ('document' in self) {
</span><span class="cx">         shouldBeTrue(&quot;'oldVersion' in document.createEvent('IDBVersionChangeEvent')&quot;);
</span><span class="cx">         shouldBeTrue(&quot;'newVersion' in document.createEvent('IDBVersionChangeEvent')&quot;);
</span><ins>+        shouldBeTrue(&quot;'dataLoss' in document.createEvent('IDBVersionChangeEvent')&quot;);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     finishJSTest();
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesexceptionineventabortsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/exception-in-event-aborts.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/exception-in-event-aborts.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/exception-in-event-aborts.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx">     debug(&quot;&quot;);
</span><span class="cx">     evalAndLog(&quot;event.preventDefault()&quot;);
</span><span class="cx">     debug(&quot;Throwing&quot;);
</span><ins>+    expectError();
</ins><span class="cx">     throw &quot;this exception is expected&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesexceptionsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/exceptions.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/exceptions.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/exceptions.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -199,6 +199,16 @@
</span><span class="cx">     // &quot;Occurs if a request is made on a source object that has been deleted or removed.&quot; - covered in deleted-objects.html
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;&quot;);
</span><ins>+    debug(&quot;IDBObjectStore.openKeyCursor()&quot;);
+    debug(&quot;If the range parameter is specified but is not a valid key or a key range, this method throws a DOMException of type DataError.&quot;);
+    evalAndExpectException(&quot;store.openKeyCursor({})&quot;, &quot;0&quot;, &quot;'DataError'&quot;);
+    debug(&quot;The transaction this IDBObjectStore belongs to is not active.&quot;);
+    evalAndExpectException(&quot;storeFromInactiveTransaction.openKeyCursor()&quot;, &quot;0&quot;, &quot;'TransactionInactiveError'&quot;);
+    debug(&quot;The value for the direction parameter is invalid.&quot;);
+    evalAndExpectExceptionClass(&quot;store.openKeyCursor(0, 'invalid-direction')&quot;, &quot;TypeError&quot;);
+    // &quot;Occurs if a request is made on a source object that has been deleted or removed.&quot; - covered in deleted-objects.html
+
+    debug(&quot;&quot;);
</ins><span class="cx">     debug(&quot;IDBObjectStore.put()&quot;);
</span><span class="cx">     debug('This method throws a DOMException of type ReadOnlyError if the transaction which this IDBObjectStore belongs to is has its mode set to &quot;readonly&quot;.');
</span><span class="cx">     evalAndExpectException(&quot;storeFromReadOnlyTransaction.put(0, 0)&quot;, &quot;0&quot;, &quot;'ReadOnlyError'&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesfactorybasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/factory-basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/factory-basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/factory-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -17,10 +17,10 @@
</span><span class="cx">     shouldBeEqualToString(&quot;typeof indexedDB.webkitGetDatabaseNames&quot;, &quot;function&quot;);
</span><span class="cx">     shouldBeEqualToString(&quot;typeof indexedDB.getDatabaseNames&quot;, &quot;undefined&quot;);
</span><span class="cx"> 
</span><del>-
</del><span class="cx">     name = 'storage/indexeddb/factory-basics';
</span><span class="cx"> 
</span><del>-    request = evalAndLog(&quot;indexedDB.webkitGetDatabaseNames()&quot;);
</del><ins>+    evalAndLog(&quot;request = indexedDB.webkitGetDatabaseNames()&quot;);
+    shouldBeNull(&quot;request.source&quot;);
</ins><span class="cx">     request.onsuccess = getDatabaseNamesSuccess1;
</span><span class="cx">     request.onerror = unexpectedErrorCallback;
</span><span class="cx"> }
</span><span class="lines">@@ -33,7 +33,8 @@
</span><span class="cx">     shouldBeFalse(&quot;databaseNames.contains('&quot; + name + &quot;')&quot;);
</span><span class="cx">     shouldBeFalse(&quot;databaseNames.contains('DATABASE THAT DOES NOT EXIST')&quot;);
</span><span class="cx"> 
</span><del>-    request = evalAndLog(&quot;indexedDB.open(name)&quot;);
</del><ins>+    evalAndLog(&quot;request = indexedDB.open(name)&quot;);
+    shouldBeNull(&quot;request.source&quot;);
</ins><span class="cx">     request.onsuccess = openSuccess;
</span><span class="cx">     request.onerror = unexpectedErrorCallback;
</span><span class="cx"> }
</span><span class="lines">@@ -55,7 +56,8 @@
</span><span class="cx">     shouldBeTrue(&quot;databaseNames.contains('&quot; + name + &quot;')&quot;);
</span><span class="cx">     shouldBeFalse(&quot;databaseNames.contains('DATABASE THAT DOES NOT EXIST')&quot;);
</span><span class="cx"> 
</span><del>-    request = evalAndLog(&quot;indexedDB.deleteDatabase('&quot; + name + &quot;')&quot;);
</del><ins>+    evalAndLog(&quot;request = indexedDB.deleteDatabase('&quot; + name + &quot;')&quot;);
+    shouldBeNull(&quot;request.source&quot;);
</ins><span class="cx">     request.onsuccess = deleteDatabaseSuccess;
</span><span class="cx">     request.onerror = unexpectedErrorCallback;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesfactorycmpjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/factory-cmp.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/factory-cmp.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/factory-cmp.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -49,6 +49,15 @@
</span><span class="cx">         &quot;'\uD834\uDD1E'&quot;, // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair)
</span><span class="cx">         &quot;'\uFFFD'&quot;, // U+FFFD REPLACEMENT CHARACTER
</span><span class="cx"> 
</span><ins>+        &quot;new Uint8Array()&quot;,
+        &quot;new Uint8Array([0])&quot;,
+        &quot;new Uint8Array([0, 0])&quot;,
+        &quot;new Uint8Array([0, 1])&quot;,
+        &quot;new Uint8Array([1])&quot;,
+        &quot;new Uint8Array([1, 0])&quot;,
+        &quot;new Uint8Array([1, 1])&quot;,
+        &quot;new Uint8Array([255])&quot;,
+
</ins><span class="cx">         &quot;[]&quot;,
</span><span class="cx"> 
</span><span class="cx">         &quot;[-Infinity]&quot;,
</span><span class="lines">@@ -77,6 +86,15 @@
</span><span class="cx">         &quot;['\uD834\uDD1E']&quot;, // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair)
</span><span class="cx">         &quot;['\uFFFD']&quot;, // U+FFFD REPLACEMENT CHARACTER
</span><span class="cx"> 
</span><ins>+        &quot;[new Uint8Array()]&quot;,
+        &quot;[new Uint8Array([0])]&quot;,
+        &quot;[new Uint8Array([0, 0])]&quot;,
+        &quot;[new Uint8Array([0, 1])]&quot;,
+        &quot;[new Uint8Array([1])]&quot;,
+        &quot;[new Uint8Array([1, 0])]&quot;,
+        &quot;[new Uint8Array([1, 1])]&quot;,
+        &quot;[new Uint8Array([255])]&quot;,
+
</ins><span class="cx">         &quot;[[]]&quot;,
</span><span class="cx"> 
</span><span class="cx">         &quot;[[], []]&quot;,
</span><span class="lines">@@ -138,4 +156,4 @@
</span><span class="cx">     shouldBe(&quot;indexedDB.cmp(0, -0)&quot;, &quot;0&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-test();
</del><span class="cx">\ No newline at end of file
</span><ins>+test();
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesfactorydeletedatabasejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/factory-deletedatabase.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/factory-deletedatabase.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/factory-deletedatabase.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesgetkeyrangejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/get-keyrange.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/get-keyrange.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/get-keyrange.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexbasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -15,6 +15,7 @@
</span><span class="cx">     self.indexObject = evalAndLog(&quot;store.createIndex('indexName', 'x')&quot;);
</span><span class="cx">     self.indexObject2 = evalAndLog(&quot;store.createIndex('indexName2', 'y', {unique: false})&quot;);
</span><span class="cx">     self.indexObject3 = evalAndLog(&quot;store.createIndex('zIndex', 'z', {unique: true})&quot;);
</span><ins>+    shouldNotThrow(&quot;store.createIndex('index4', 'path', undefined)&quot;);
</ins><span class="cx">     shouldBeFalse(&quot;indexObject2.unique&quot;);
</span><span class="cx">     shouldBeTrue(&quot;indexObject3.unique&quot;);
</span><span class="cx">     evalAndExpectExceptionClass(&quot;store.createIndex('failureIndex', 'zzz', true)&quot;, &quot;TypeError&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexcountjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-count.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-count.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-count.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexcursorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-cursor.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-cursor.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-cursor.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexduplicatekeypathsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-duplicate-keypaths.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-duplicate-keypaths.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-duplicate-keypaths.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexgetkeyargumentrequiredjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-get-key-argument-required.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-get-key-argument-required.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-get-key-argument-required.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexmultientryjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-multientry.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-multientry.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-multientry.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexpopulationjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-population.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-population.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-population.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesindexuniquejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/index-unique.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-unique.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-unique.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesinterfacesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/interfaces.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/interfaces.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/interfaces.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionabortininitialupgradeneededjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionbadparametersjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-bad-parameters.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-bad-parameters.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-bad-parameters.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionblockedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-blocked.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-blocked.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-blocked.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionclosebetweeneventsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-close-between-events.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-close-between-events.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-close-between-events.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversioncloseinoncompletejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-oncomplete.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-oncomplete.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-oncomplete.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversioncloseinupgradeneededjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-upgradeneeded.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-upgradeneeded.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-upgradeneeded.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionencodingjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-encoding.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-encoding.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-encoding.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversiongatedondeletejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-gated-on-delete.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-gated-on-delete.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-gated-on-delete.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionlongqueuejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-long-queue.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-long-queue.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-long-queue.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> function connection2UpgradeNeeded(evt)
</span><span class="cx"> {
</span><span class="cx">     preamble(evt);
</span><del>-    shouldBe(&quot;event.oldVersion&quot;, &quot;0&quot;);
</del><ins>+    shouldBe(&quot;event.oldVersion&quot;, &quot;1&quot;);
</ins><span class="cx">     shouldBe(&quot;event.newVersion&quot;, &quot;2&quot;);
</span><span class="cx">     evalAndLog(&quot;db = event.target.result&quot;);
</span><span class="cx">     shouldBe(&quot;db.objectStoreNames.length&quot;, &quot;0&quot;);
</span><span class="lines">@@ -78,7 +78,8 @@
</span><span class="cx"> {
</span><span class="cx">     preamble(evt);
</span><span class="cx">     evalAndLog(&quot;connection2 = event.target.result&quot;);
</span><del>-    evalAndLog(&quot;connection2.onversionchange = connection2VersionChangeEvent&quot;);
</del><ins>+    connection2.onversionchange = unexpectedVersionChangeCallback;
+    evalAndLog(&quot;connection2.close()&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function connection2TransactionComplete(evt)
</span><span class="lines">@@ -87,28 +88,19 @@
</span><span class="cx">     shouldBe(&quot;db.version&quot;, &quot;2&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-function connection2VersionChangeEvent(evt)
-{
-    preamble(evt);
-    shouldBeEqualToString(&quot;event.type&quot;, &quot;versionchange&quot;);
-    shouldBe(&quot;event.oldVersion&quot;, &quot;2&quot;);
-    shouldBe(&quot;event.newVersion&quot;, &quot;3&quot;);
-    evalAndLog(&quot;connection2.close()&quot;);
-}
-
</del><span class="cx"> var gotUpgradeNeededEvent = false;
</span><span class="cx"> function connection3UpgradeNeeded(evt)
</span><span class="cx"> {
</span><span class="cx">     preamble(evt);
</span><span class="cx">     evalAndLog(&quot;gotUpgradeNeededEvent = true&quot;);
</span><span class="cx">     shouldBe(&quot;event.newVersion&quot;, &quot;3&quot;);
</span><del>-    shouldBe(&quot;event.oldVersion&quot;, &quot;2&quot;);
</del><ins>+    shouldBe(&quot;event.oldVersion&quot;, &quot;0&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function connection3Success(evt)
</span><span class="cx"> {
</span><span class="cx">     preamble(evt);
</span><span class="cx">     shouldBeTrue(&quot;gotUpgradeNeededEvent&quot;);
</span><del>-    shouldBe(&quot;event.target.result.objectStoreNames.length&quot;, &quot;1&quot;);
</del><ins>+    shouldBe(&quot;event.target.result.objectStoreNames.length&quot;, &quot;0&quot;);
</ins><span class="cx">     finishJSTest();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionomitparameterjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-omit-parameter.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-omit-parameter.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-omit-parameter.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionopeninupgradeneededjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-open-in-upgradeneeded.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-open-in-upgradeneeded.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-open-in-upgradeneeded.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionopenwithversionjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-open-with-version.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-open-with-version.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-open-with-version.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionpendingversionchangesascendingjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-ascending.js (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-ascending.js                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-ascending.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+if (this.importScripts) {
+    importScripts('../../../resources/js-test.js');
+    importScripts('shared.js');
+}
+
+description(&quot;Check processing of pending version change requests - increasing versions.&quot;);
+
+indexedDBTest(null, function onConnection1Open(evt) {
+    preamble(evt);
+    db = event.target.result;
+
+    request = evalAndLog(&quot;indexedDB.open(dbname, 2)&quot;);
+    request.onblocked = connection2Blocked;
+    request.onupgradeneeded = connection2UpgradeNeeded;
+    request.onsuccess = connection2OpenSuccess;
+    request.onerror = unexpectedErrorCallback;
+
+    request = evalAndLog(&quot;indexedDB.open(dbname, 3)&quot;);
+    request.onblocked = connection3Blocked;
+    request.onupgradeneeded = connection3UpgradeNeeded;
+    request.onsuccess = connection3OpenSuccess;
+    request.onerror = unexpectedErrorCallback;
+
+    debug(&quot;&quot;);
+    debug(&quot;FIXME: The open call with higher version should execute first.&quot;);
+});
+
+function connection2Blocked(evt)
+{
+    preamble(evt);
+    // Attempt to delay this until the third open has been processed;
+    // not strictly necessary but will exercise IPC/event timing.
+    setTimeout(function() {
+        evalAndLog(&quot;db.close()&quot;);
+    }, 0);
+}
+
+function connection2UpgradeNeeded(evt)
+{
+    preamble(evt);
+    shouldBe(&quot;event.oldVersion&quot;, &quot;1&quot;);
+    shouldBe(&quot;event.newVersion&quot;, &quot;2&quot;);
+}
+
+function connection2OpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db2 = event.target.result&quot;);
+    shouldBe(&quot;db2.version&quot;, &quot;2&quot;);
+}
+
+function connection3Blocked(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db2.close()&quot;);
+}
+
+function connection3UpgradeNeeded(evt)
+{
+    preamble(evt);
+    shouldBe(&quot;event.oldVersion&quot;, &quot;2&quot;);
+    shouldBe(&quot;event.newVersion&quot;, &quot;3&quot;);
+}
+
+function connection3OpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db3 = event.target.result&quot;);
+    shouldBe(&quot;db3.version&quot;, &quot;3&quot;);
+    finishJSTest();
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionpendingversionchangesdescendingjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-descending.js (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-descending.js                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-descending.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+if (this.importScripts) {
+    importScripts('../../../resources/js-test.js');
+    importScripts('shared.js');
+}
+
+description(&quot;Check processing of pending version change requests - descending versions.&quot;);
+
+indexedDBTest(null, function onConnection1Open(evt) {
+    preamble(evt);
+    db = event.target.result;
+
+    request = evalAndLog(&quot;indexedDB.open(dbname, 3)&quot;);
+    request.onblocked = connection2Blocked;
+    request.onupgradeneeded = connection2UpgradeNeeded;
+    request.onsuccess = connection2OpenSuccess;
+    request.onerror = unexpectedErrorCallback;
+
+    request = evalAndLog(&quot;indexedDB.open(dbname, 2)&quot;);
+    request.onblocked = connection3Blocked;
+    request.onupgradeneeded = unexpectedUpgradeNeededCallback;
+    request.onsuccess = unexpectedErrorCallback;
+    request.onerror = connection3Error;
+});
+
+function connection2Blocked(evt)
+{
+    preamble(evt);
+    // Attempt to delay this until the third open has been processed;
+    // not strictly necessary but will exercise IPC/event timing.
+    setTimeout(function() {
+        evalAndLog(&quot;db.close()&quot;);
+    }, 0);
+}
+
+function connection3Blocked(evt)
+{
+    preamble(evt);
+}
+
+function connection2UpgradeNeeded(evt)
+{
+    preamble(evt);
+    shouldBe(&quot;event.oldVersion&quot;, &quot;1&quot;);
+    shouldBe(&quot;event.newVersion&quot;, &quot;3&quot;);
+}
+
+function connection2OpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;event.target.result.close()&quot;);
+    evalAndLog(&quot;db2 = event.target.result&quot;);
+    shouldBe(&quot;db2.version&quot;, &quot;3&quot;);
+}
+
+function connection3Error(evt)
+{
+    preamble(evt);
+    shouldBeEqualToString(&quot;event.target.error.name&quot;, &quot;VersionError&quot;);
+    finishJSTest();
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionpendingversionchangessamejs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-same.js (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-same.js                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-pending-version-changes-same.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+if (this.importScripts) {
+    importScripts('../../../resources/js-test.js');
+    importScripts('shared.js');
+}
+
+description(&quot;Check processing of pending version change requests - same versions.&quot;);
+
+indexedDBTest(null, function onConnection1Open(evt) {
+    preamble(evt);
+    db = event.target.result;
+
+    request = evalAndLog(&quot;indexedDB.open(dbname, 2)&quot;);
+    request.onblocked = connection2Blocked;
+    request.onupgradeneeded = connection2UpgradeNeeded;
+    request.onsuccess = connection2OpenSuccess;
+    request.onerror = unexpectedErrorCallback;
+
+    request = evalAndLog(&quot;indexedDB.open(dbname, 2)&quot;);
+    request.onblocked = unexpectedBlockedCallback;
+    request.onupgradeneeded = unexpectedUpgradeNeededCallback;
+    request.onsuccess = connection3OpenSuccess;
+    request.onerror = unexpectedErrorCallback;
+});
+
+function connection2Blocked(evt)
+{
+    preamble(evt);
+    // Attempt to delay this until the third open has been processed;
+    // not strictly necessary but will exercise IPC/event timing.
+    setTimeout(function() {
+        evalAndLog(&quot;db.close()&quot;);
+    }, 0);
+}
+
+function connection2UpgradeNeeded(evt)
+{
+    preamble(evt);
+    shouldBe(&quot;event.oldVersion&quot;, &quot;1&quot;);
+    shouldBe(&quot;event.newVersion&quot;, &quot;2&quot;);
+}
+
+function connection2OpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db2 = event.target.result&quot;);
+    shouldBe(&quot;db2.version&quot;, &quot;2&quot;);
+}
+
+function connection3OpenSuccess(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db3 = event.target.result&quot;);
+    shouldBe(&quot;db3.version&quot;, &quot;2&quot;);
+    finishJSTest();
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionpersistencejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-persistence.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-persistence.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-persistence.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionrevertonabortjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-revert-on-abort.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-revert-on-abort.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-revert-on-abort.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversiontwoopensnoversionsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-two-opens-no-versions.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-two-opens-no-versions.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-two-opens-no-versions.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesintversionupgradesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/intversion-upgrades.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-upgrades.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-upgrades.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> function connection2BlockedCallback(evt)
</span><span class="cx"> {
</span><span class="cx">     preamble(evt);
</span><del>-    debug(&quot;This should not be called: http://wkbug.com/71130&quot;);
</del><ins>+    debug(&quot;This should not be called: http://crbug.com/100123&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function connection2UpgradeNeeded(evt)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> function errorWhenTryingLowVersion(evt)
</span><span class="cx"> {
</span><span class="cx">     preamble(evt);
</span><del>-    debug(&quot;request.webkitErrorMessage = &quot; + request.webkitErrorMessage);
</del><ins>+    debug(&quot;request.error.message = &quot; + request.error.message);
</ins><span class="cx">     evalAndLog(&quot;request = indexedDB.open(dbname, 4)&quot;);
</span><span class="cx">     request.onblocked = unexpectedBlockedCallback;
</span><span class="cx">     request.onerror = unexpectedErrorCallback;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesinvalidkeysjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/invalid-keys.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/invalid-keys.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/invalid-keys.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeygeneratorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/key-generator.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-generator.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-generator.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeysortorderacrosstypesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-across-types.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-across-types.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-across-types.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeysortorderdatejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-date.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-date.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-date.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeytypearrayjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/key-type-array.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-type-array.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-type-array.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeytypebinaryjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/resources/key-type-binary.js (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-type-binary.js                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-type-binary.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+if (this.importScripts) {
+    importScripts('../../../fast/js/resources/js-test-pre.js');
+    importScripts('shared.js');
+}
+
+description(&quot;Test IndexedDB binary keys&quot;);
+
+indexedDBTest(prepareDatabase, testValidBinaryKeys);
+function prepareDatabase()
+{
+    db = event.target.result;
+    event.target.transaction.onabort = unexpectedAbortCallback;
+    objectStore = evalAndLog(&quot;db.createObjectStore('store');&quot;);
+    debug(&quot;&quot;);
+}
+
+function testValidBinaryKeys()
+{
+    preamble();
+    evalAndLog(&quot;trans = db.transaction('store', 'readwrite')&quot;);
+    evalAndLog(&quot;store = trans.objectStore('store')&quot;);
+
+    var n = 0, cases = [
+        &quot;[]&quot;,
+        &quot;[0]&quot;,
+        &quot;[0, 0]&quot;,
+        &quot;[0, 1]&quot;,
+        &quot;[1]&quot;,
+        &quot;[1, 0]&quot;,
+        &quot;[1, 1]&quot;,
+        &quot;[255]&quot;,
+    ];
+
+    (function testCase() {
+        if (!cases.length)
+            return;
+
+        key = cases.shift();
+        value = n++;
+
+        debug(&quot;&quot;);
+        request = evalAndLog(&quot;store.put(&quot; + JSON.stringify(value) + &quot;, new Uint8Array(&quot; + key + &quot;));&quot;);
+        request.onerror = unexpectedErrorCallback;
+        request.onsuccess = function() {
+            shouldBeEqualToString(&quot;request.result.toString()&quot;, &quot;[object Uint8Array]&quot;);
+            shouldBe(&quot;[].slice.call(request.result).toString()&quot;, key + &quot;.toString()&quot;);
+
+            request = evalAndLog(&quot;store.get(new Uint8Array(&quot; + key + &quot;));&quot;);
+            request.onerror = unexpectedErrorCallback;
+            request.onsuccess = function() {
+                shouldBe(&quot;request.result&quot;, JSON.stringify(value));
+                testCase();
+            };
+        };
+    }());
+
+    trans.oncomplete = testInvalidBinaryKeys;
+}
+
+function testInvalidBinaryKeys()
+{
+    preamble();
+    evalAndLog(&quot;trans = db.transaction('store', 'readwrite')&quot;);
+    evalAndLog(&quot;store = trans.objectStore('store')&quot;);
+
+    var cases = [
+        &quot;new Uint8ClampedArray([1,2,3])&quot;,
+        &quot;new Uint16Array([1,2,3])&quot;,
+        &quot;new Uint32Array([1,2,3])&quot;,
+        &quot;new Int8Array([1,2,3])&quot;,
+        &quot;new Int16Array([1,2,3])&quot;,
+        &quot;new Int32Array([1,2,3])&quot;,
+        &quot;new Float32Array([1,2,3])&quot;,
+        &quot;new Float64Array([1,2,3])&quot;,
+        &quot;new Uint8Array([1,2,3]).buffer&quot;,
+        &quot;new DataView(new Uint8Array([1,2,3]).buffer)&quot;
+    ];
+
+    cases.forEach(function(testCase) {
+        debug(&quot;&quot;);
+        evalAndExpectException(&quot;store.put('value', &quot; + testCase + &quot;)&quot;, &quot;0&quot;, &quot;'DataError'&quot;);
+    });
+
+    finishJSTest();
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeytypeinfinityjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/key-type-infinity.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-type-infinity.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-type-infinity.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeypatharraysjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/keypath-arrays.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-arrays.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-arrays.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeypathbasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeypathedgesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/keypath-edges.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-edges.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-edges.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeypathfetchkeyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/keypath-fetch-key.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-fetch-key.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-fetch-key.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeypathintrinsicpropertiesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/keypath-intrinsic-properties.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-intrinsic-properties.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-intrinsic-properties.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeyrangerequiredargumentsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/keyrange-required-arguments.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keyrange-required-arguments.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/keyrange-required-arguments.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceskeyrangejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/keyrange.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keyrange.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/keyrange.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceslazyindextypesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/lazy-index-types.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/lazy-index-types.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/lazy-index-types.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceslegacyconstantsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/legacy-constants.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/legacy-constants.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/legacy-constants.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourceslistorderingjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesmetadatajs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/metadata.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/metadata.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/metadata.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesmutatingcursorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/mutating-cursor.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/mutating-cursor.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/mutating-cursor.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectStorerequiredargumentsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/objectStore-required-arguments.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectStore-required-arguments.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectStore-required-arguments.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectstoreautoincrementjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/objectstore-autoincrement.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-autoincrement.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-autoincrement.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectstorebasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/objectstore-basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -31,6 +31,8 @@
</span><span class="cx">     shouldBeEqualToString(&quot;typeof store.clear&quot;, &quot;function&quot;);
</span><span class="cx">     shouldBeTrue(&quot;'openCursor' in store&quot;);
</span><span class="cx">     shouldBeEqualToString(&quot;typeof store.openCursor&quot;, &quot;function&quot;);
</span><ins>+    shouldBeTrue(&quot;'openKeyCursor' in store&quot;);
+    shouldBeEqualToString(&quot;typeof store.openKeyCursor&quot;, &quot;function&quot;);
</ins><span class="cx">     shouldBeTrue(&quot;'createIndex' in store&quot;);
</span><span class="cx">     shouldBeEqualToString(&quot;typeof store.createIndex&quot;, &quot;function&quot;);
</span><span class="cx">     shouldBeTrue(&quot;'index' in store&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectstoreclearjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/objectstore-clear.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-clear.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-clear.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectstorecountjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/objectstore-count.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-count.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-count.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectstorecursorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectstorekeycursorjsfromrev163962trunkLayoutTestsstorageindexeddbresourcesobjectstorecursorjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/storage/indexeddb/resources/objectstore-keycursor.js (from rev 163962, trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js) (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-keycursor.js                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-keycursor.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,209 @@
</span><ins>+if (this.importScripts) {
+    importScripts('../../../resources/js-test.js');
+    importScripts('shared.js');
+}
+
+description(&quot;Test IndexedDB's objectStore.openKeyCursor + the cursor it produces in depth.&quot;);
+
+// In order of how it should be sorted by IndexedDB.
+self.testData = [
+    1,
+    2,
+    3,
+    &quot;a&quot;,
+    &quot;b&quot;,
+    &quot;c&quot;
+];
+
+indexedDBTest(prepareDatabase);
+function prepareDatabase()
+{
+    db = event.target.result;
+    event.target.transaction.onabort = unexpectedAbortCallback;
+
+    evalAndLog(&quot;objectStore = db.createObjectStore('someObjectStore')&quot;);
+
+    debug(&quot;&quot;);
+    debug(&quot;Verify that specifying an invalid direction raises an exception:&quot;);
+    evalAndExpectExceptionClass(&quot;objectStore.openKeyCursor(0, 'invalid-direction')&quot;, &quot;TypeError&quot;);
+    debug(&quot;&quot;);
+
+    self.nextToAdd = 0;
+    addData();
+}
+
+function addData()
+{
+    request = evalAndLog(&quot;objectStore.add('', testData[nextToAdd])&quot;);
+    request.onsuccess = ++self.nextToAdd &lt; testData.length ? addData : scheduleTests;
+    request.onerror = unexpectedErrorCallback;
+}
+
+function scheduleTests()
+{
+    debug(&quot;Scheduling tests...&quot;);
+    self.scheduledTests = [];
+    for (var i = 0; i &lt; testData.length; ++i) {
+        /* left bound, is open, right bound, is open, ascending */
+        scheduledTests.unshift([i, true, null, null, true]);
+        scheduledTests.unshift([i, false, null, null, true]);
+        scheduledTests.unshift([null, null, i, true, true]);
+        scheduledTests.unshift([null, null, i, false, true]);
+        scheduledTests.unshift([i, true, null, null, false]);
+        scheduledTests.unshift([i, false, null, null, false]);
+        scheduledTests.unshift([null, null, i, true, false]);
+        scheduledTests.unshift([null, null, i, false, false]);
+        for (var j = 6; j &lt; testData.length; ++j) {
+            scheduledTests.unshift([i, true, j, true, true]);
+            scheduledTests.unshift([i, true, j, false, true]);
+            scheduledTests.unshift([i, false, j, true, true]);
+            scheduledTests.unshift([i, false, j, false, true]);
+            scheduledTests.unshift([i, true, j, true, false]);
+            scheduledTests.unshift([i, true, j, false, false]);
+            scheduledTests.unshift([i, false, j, true, false]);
+            scheduledTests.unshift([i, false, j, false, false]);
+        }
+    }
+
+    debug(&quot;Running tests...&quot;);
+    runNextTest();
+}
+
+function runNextTest()
+{
+    if (!scheduledTests.length) {
+        testNullKeyRange();
+        return;
+    }
+
+    var test = scheduledTests.pop();
+    self.lower = test[0];
+    self.lowerIsOpen = test[1];
+    self.upper = test[2];
+    self.upperIsOpen = test[3];
+    self.ascending = test[4];
+
+    str = &quot;Next test: &quot;;
+    if (lower !== null) {
+        str += &quot;lower &quot;;
+        if (lowerIsOpen)
+            str += &quot;open &quot;;
+        str += &quot;bound is &quot; + lower + &quot;; &quot;;
+    }
+    if (upper !== null) {
+        str += &quot;upper &quot;;
+        if (upperIsOpen)
+            str += &quot;open &quot;;
+        str += &quot;bound is &quot; + upper + &quot;; &quot;;
+    }
+    if (ascending)
+        str += &quot;sorted ascending.&quot;;
+    else
+        str += &quot;sorted descending.&quot;;
+
+    debug(&quot;&quot;);
+    debug(str);
+
+    if (ascending) {
+        if (lower !== null) {
+            if (!lowerIsOpen)
+                self.expectedIndex = lower;
+            else
+                self.expectedIndex = lower+1;
+        } else
+            self.expectedIndex = 0;
+    } else {
+        if (upper !== null) {
+            if (!upperIsOpen)
+                self.expectedIndex = upper;
+            else
+                self.expectedIndex = upper-1;
+        } else
+            self.expectedIndex = testData.length-1;
+    }
+    testWithinBounds();
+
+    if (testData[lower] === testData[upper] &amp;&amp; (lowerIsOpen || upperIsOpen)) {
+        debug(&quot;Skipping illegal key range.&quot;);
+        runNextTest();
+        return;
+    }
+
+    var keyRange;
+    if (lower !== null &amp;&amp; upper !== null)
+        keyRange = IDBKeyRange.bound(testData[lower], testData[upper], lowerIsOpen, upperIsOpen);
+    else if (lower !== null)
+        keyRange = IDBKeyRange.lowerBound(testData[lower], lowerIsOpen);
+    else
+        keyRange = IDBKeyRange.upperBound(testData[upper], upperIsOpen);
+
+    var request = objectStore.openKeyCursor(keyRange, ascending ? 'next' : 'prev');
+    request.onsuccess = cursorIteration;
+    request.onerror = unexpectedErrorCallback;
+}
+
+function testWithinBounds()
+{
+    if (expectedIndex &lt; 0 || testData.length &lt;= expectedIndex)
+        self.expectedIndex = null;
+    if (lower !== null &amp;&amp; expectedIndex &lt; lower)
+        self.expectedIndex = null;
+    if (upper !== null &amp;&amp; upper &lt; expectedIndex)
+        self.expectedIndex = null;
+    if (lower !== null &amp;&amp; lowerIsOpen &amp;&amp; expectedIndex &lt;= lower)
+        self.expectedIndex = null;
+    if (upper !== null &amp;&amp; upperIsOpen &amp;&amp; upper &lt;= expectedIndex)
+        self.expectedIndex = null;
+}
+
+function cursorIteration()
+{
+    if (expectedIndex === null) {
+        shouldBeNull(&quot;event.target.result&quot;);
+        runNextTest();
+        return;
+    }
+    if (event.target.result === null) {
+        testFailed(&quot;event.target.result should not be null.&quot;);
+        runNextTest();
+        return;
+    }
+
+    shouldBe(&quot;event.target.result.key&quot;, &quot;testData[&quot; + expectedIndex + &quot;]&quot;);
+    self.expectedIndex = ascending ? expectedIndex+1 : expectedIndex-1;
+    testWithinBounds();
+
+    event.target.result.continue();
+}
+
+self.nullKeyRangeStep = 0;
+function testNullKeyRange()
+{
+    self.lower = 0;
+    self.lowerIsOpen = false;
+    self.upper = testData.length-1;
+    self.upperIsOpen = false;
+
+    str = &quot;Next test: null key path &quot;;
+    if (self.nullKeyRangeStep == 0) {
+        str += &quot;sorted ascending.&quot;;
+        self.ascending = true;
+        self.expectedIndex = lower;
+        self.nullKeyRangeStep = 1;
+    } else if (self.nullKeyRangeStep == 1) {
+        str += &quot;sorted descending.&quot;;
+        self.ascending = false;
+        self.expectedIndex = upper;
+        self.nullKeyRangeStep = 2;
+    } else {
+        finishJSTest();
+        return;
+    }
+
+    debug(&quot;&quot;);
+    debug(str);
+
+    var request = objectStore.openKeyCursor(null, ascending ? 'next' : 'prev');
+    request.onsuccess = cursorIteration;
+    request.onerror = unexpectedErrorCallback;
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesobjectstoreremoveobjectstorejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/objectstore-removeobjectstore.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-removeobjectstore.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-removeobjectstore.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesoddstringsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/odd-strings.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/odd-strings.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/odd-strings.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesopencursorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/open-cursor.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-cursor.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-cursor.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesopenduringtransactionjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/open-during-transaction.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-during-transaction.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-during-transaction.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesopenorderingjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/open-ordering.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-ordering.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-ordering.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesopentwicejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/open-twice.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-twice.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-twice.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesopencursorkeyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/opencursor-key.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/opencursor-key.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/opencursor-key.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcespendingactivityjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/pending-activity.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/pending-activity.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/pending-activity.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcespendingversionchangeonexitjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-on-exit.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-on-exit.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-on-exit.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcespendingversionchangestuckjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-stuck.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-stuck.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-stuck.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcespersistencejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/persistence.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/persistence.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/persistence.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesprefetchbugfix108071js"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/prefetch-bugfix-108071.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/prefetch-bugfix-108071.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/prefetch-bugfix-108071.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,9 +1,9 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-description(&quot;Test for crbug.com/108071&quot;);
</del><ins>+description(&quot;Regression test for http://crbug.com/108071&quot;);
</ins><span class="cx"> 
</span><span class="cx"> // Have to be at least 5 here: 1 initial, 3 continues to trigger prefetch and 1
</span><span class="cx"> // post-abort outstanding continue.
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesqueuedcommandsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/queued-commands.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/queued-commands.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/queued-commands.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesreadonlypropertiesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/readonly-properties.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/readonly-properties.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/readonly-properties.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesreadonlyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/readonly.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/readonly.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/readonly.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesremovedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/removed.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/removed.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/removed.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesrequestcontinueabortjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/request-continue-abort.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/request-continue-abort.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/request-continue-abort.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesrequesteventpropagationjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/request-event-propagation.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/request-event-propagation.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/request-event-propagation.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesset_version_blockedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/set_version_blocked.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/set_version_blocked.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/set_version_blocked.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcessetversionblockedbyversionchangeclosejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcessetversionnotblockedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/setversion-not-blocked.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/setversion-not-blocked.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/setversion-not-blocked.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcessharedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/shared.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/shared.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/shared.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -47,13 +47,13 @@
</span><span class="cx"> 
</span><span class="cx"> function unexpectedErrorCallback(event)
</span><span class="cx"> {
</span><del>-    testFailed(&quot;Error function called unexpectedly: (&quot; + event.target.error.name + &quot;) &quot; + event.target.webkitErrorMessage);
</del><ins>+    testFailed(&quot;Error function called unexpectedly: (&quot; + event.target.error.name + &quot;) &quot; + event.target.error.message);
</ins><span class="cx">     finishJSTest();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function unexpectedAbortCallback(e)
</span><span class="cx"> {
</span><del>-    testFailed(&quot;Abort function called unexpectedly! Message: [&quot; + e.target.webkitErrorMessage + &quot;]&quot;);
</del><ins>+    testFailed(&quot;Abort function called unexpectedly! Message: [&quot; + e.target.error.message + &quot;]&quot;);
</ins><span class="cx">     finishJSTest();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -97,6 +97,8 @@
</span><span class="cx">             ename = e.name;
</span><span class="cx">             shouldBe(&quot;ename&quot;, exceptionName, _quiet);
</span><span class="cx">         }
</span><ins>+        if (!_quiet)
+            debug(&quot;Exception message: &quot; + e.message);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionabortjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-abort.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-abort.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-abort.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionactiveflagjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-active-flag.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-active-flag.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-active-flag.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionafterclosejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-after-close.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-after-close.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-after-close.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionandobjectstorecallsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-and-objectstore-calls.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-and-objectstore-calls.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-and-objectstore-calls.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionbasicsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-basics.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-basics.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-basics.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactioncompleteworkersjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-complete-workers.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-complete-workers.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-complete-workers.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactioncoordinationacrossdatabasesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactioncoordinationwithindatabasejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-within-database.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-within-database.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-within-database.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactioncrashonabortjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-crash-on-abort.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-crash-on-abort.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-crash-on-abort.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionerrorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-error.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-error.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-error.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -14,6 +14,7 @@
</span><span class="cx">     request.onerror = unexpectedErrorCallback;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+var nonConvertibleToString = {toString: function() { throw &quot;Exception in toString()&quot;; }};
</ins><span class="cx"> function startTest()
</span><span class="cx"> {
</span><span class="cx">     debug(&quot;&quot;);
</span><span class="lines">@@ -24,6 +25,10 @@
</span><span class="cx">     shouldBeNull(&quot;trans.error&quot;);
</span><span class="cx"> 
</span><span class="cx">     debug(&quot;&quot;);
</span><ins>+    debug(&quot;transaction() should throw if one of the DOMStringList items cannot be converted to a String:&quot;);
+    shouldThrow(&quot;db.transaction(['storeName', nonConvertibleToString])&quot;, &quot;'Exception in toString()'&quot;);
+
+    debug(&quot;&quot;);
</ins><span class="cx">     debug(&quot;If IDBTransaction.abort() is explicitly called, IDBTransaction.error should be null:&quot;);
</span><span class="cx">     evalAndLog(&quot;trans.abort()&quot;);
</span><span class="cx">     trans.oncomplete = unexpectedCompleteCallback;
</span><span class="lines">@@ -48,8 +53,8 @@
</span><span class="cx">     trans.onabort = function() {
</span><span class="cx">         debug(&quot;Transaction received abort event.&quot;);
</span><span class="cx">         shouldBeNonNull(&quot;trans.error&quot;);
</span><del>-        debug(&quot;trans.webkitErrorMessage = &quot; + trans.webkitErrorMessage);
-        shouldBeNonNull(&quot;trans.webkitErrorMessage&quot;);
</del><ins>+        debug(&quot;trans.error.message = &quot; + trans.error.message);
+        shouldBeNonNull(&quot;trans.error.message&quot;);
</ins><span class="cx">         shouldBe(&quot;trans.error&quot;, &quot;request_error&quot;);
</span><span class="cx">         testErrorFromException();
</span><span class="cx">     };
</span><span class="lines">@@ -80,8 +85,8 @@
</span><span class="cx">         self.onerror = self.originalWindowOnError;
</span><span class="cx"> 
</span><span class="cx">         shouldBeNonNull(&quot;trans.error&quot;);
</span><del>-        debug(&quot;trans.webkitErrorMessage = &quot; + trans.webkitErrorMessage);
-        shouldBeNonNull(&quot;trans.webkitErrorMessage&quot;);
</del><ins>+        debug(&quot;trans.error.message = &quot; + trans.error.message);
+        shouldBeNonNull(&quot;trans.error.message&quot;);
</ins><span class="cx">         shouldBe(&quot;trans.error.name&quot;, &quot;'AbortError'&quot;);
</span><span class="cx">         testErrorFromCommit();
</span><span class="cx">     };
</span><span class="lines">@@ -112,10 +117,10 @@
</span><span class="cx">                 debug(&quot;Transaction received abort event.&quot;);
</span><span class="cx">                 shouldBeNonNull(&quot;trans.error&quot;);
</span><span class="cx">                 shouldBe(&quot;trans.error.name&quot;, &quot;'ConstraintError'&quot;);
</span><del>-                debug(&quot;trans.webkitErrorMessage = &quot; + trans.webkitErrorMessage);
-                shouldBeNonNull(&quot;trans.webkitErrorMessage&quot;);
</del><ins>+                debug(&quot;trans.error.message = &quot; + trans.error.message);
+                shouldBeNonNull(&quot;trans.error.message&quot;);
</ins><span class="cx">                 debug(&quot;Note: This fails because of http://wkb.ug/37327&quot;);
</span><del>-                shouldNotBe(&quot;trans.webkitErrorMessage.indexOf(indexName)&quot;, &quot;-1&quot;);
</del><ins>+                shouldNotBe(&quot;trans.error.message.indexOf(indexName)&quot;, &quot;-1&quot;);
</ins><span class="cx">                 debug(&quot;&quot;);
</span><span class="cx">                 finishJSTest();
</span><span class="cx">             };
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactioneventpropagationjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-event-propagation.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-event-propagation.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-event-propagation.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionreadonlyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-read-only.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-read-only.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-read-only.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionreadwriteexclusivejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionrollbackjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-rollback.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-rollback.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-rollback.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionscopesequencingjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-scope-sequencing.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-scope-sequencing.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-scope-sequencing.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionstarvationjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-starvation.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-starvation.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-starvation.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcestransactionstoreNamesrequiredjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/transaction-storeNames-required.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-storeNames-required.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-storeNames-required.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesunblockedversionchangesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -37,8 +37,6 @@
</span><span class="cx">     request.onsuccess = onSuccess;
</span><span class="cx"> 
</span><span class="cx">     evalAndLog(&quot;transaction.abort()&quot;);
</span><del>-    // FIXME: Explicit db.close() call should not be necessary. http://wkbug.com/102298
-    evalAndLog(&quot;db.close()&quot;);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function onError(evt)
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesunprefixjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/unprefix.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/unprefix.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/unprefix.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesvalueundefinedjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/value-undefined.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/value-undefined.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/value-undefined.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesvaluesoddtypesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/values-odd-types.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/values-odd-types.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/values-odd-types.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesversionchangeabortjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/version-change-abort.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/version-change-abort.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/version-change-abort.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesversionchangeexclusivejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/version-change-exclusive.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/version-change-exclusive.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/version-change-exclusive.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbresourcesversionchangerequestactivedomobjectjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/resources/versionchangerequest-activedomobject.js (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/versionchangerequest-activedomobject.js        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/resources/versionchangerequest-activedomobject.js        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> if (this.importScripts) {
</span><del>-    importScripts('../../../resources/js-test-pre.js');
</del><ins>+    importScripts('../../../resources/js-test.js');
</ins><span class="cx">     importScripts('shared.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbset_version_blockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/set_version_blocked.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/set_version_blocked.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/set_version_blocked.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><del>-&lt;html&gt;
-&lt;head&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;script src=&quot;resources/set_version_blocked.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/set_version_blocked.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbsetversionblockedbyversionchangecloseexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -21,13 +21,22 @@
</span><span class="cx"> h2Blocked():
</span><span class="cx"> blockedEventFired = true
</span><span class="cx"> 
</span><ins>+h2UpgradeNeeded():
+h2 = event.target.result
+
+transactionOnComplete():
+versionChangeComplete = true
+
+h2Success():
+h2Opened = true
+
</ins><span class="cx"> h3Success():
</span><span class="cx"> h3 = event.target.result
</span><del>-FAIL h3.version should be 2. Was 1.
</del><ins>+PASS h3.version is 2
</ins><span class="cx"> FIXME: blocked should not fire as connection was closed. http://webkit.org/b/71130
</span><span class="cx"> FAIL blockedEventFired should be false. Was true.
</span><del>-FAIL versionChangeComplete should be true. Was false.
-FAIL h2Opened should be true. Was false.
</del><ins>+PASS versionChangeComplete is true
+PASS h2Opened is true
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbsetversionblockedbyversionchangeclosehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/setversion-blocked-by-versionchange-close.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbsetversionnotblockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/setversion-not-blocked.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/setversion-not-blocked.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/setversion-not-blocked.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/setversion-not-blocked.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbstructuredcloneexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/structured-clone-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/structured-clone-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/structured-clone-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -783,20 +783,25 @@
</span><span class="cx"> Expecting exception from store.put(new Error, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> Expecting exception from store.put(new Function, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> 
</span><span class="cx"> Other host object types:
</span><span class="cx"> Expecting exception from store.put(self, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> Expecting exception from store.put(document, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> Expecting exception from store.put(document.body, 'key')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.DATA_CLONE_ERR
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbstructuredclonehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/structured-clone.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/structured-clone.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/structured-clone.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -550,6 +550,5 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionabortexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-abort-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-abort-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-abort-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> PASS event.target.error.name is 'AbortError'
</span><span class="cx"> PASS trans.error is null
</span><span class="cx"> PASS firstError is true
</span><span class="lines">@@ -38,10 +39,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from trans.abort()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'abort' on 'IDBTransaction': The transaction has finished.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionaborthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-abort.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-abort.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-abort.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-abort.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionactiveflagexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-active-flag-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-active-flag-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-active-flag-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -60,130 +60,162 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.put(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.get(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.delete(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.delete(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.count(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.count(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.clear()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'clear' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.openCursor(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.openCursor(0, 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.openCursor(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from store.openCursor(IDBKeyRange.only(0), 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.get(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.getKey(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.getKey(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.count(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.count(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openCursor(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openCursor(0, 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openCursor(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openCursor(IDBKeyRange.only(0), 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openKeyCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openKeyCursor(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openKeyCursor(0, 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openKeyCursor(IDBKeyRange.only(0))
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> Expecting exception from index.openKeyCursor(IDBKeyRange.only(0), 'next')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction is not active.
</ins><span class="cx"> 
</span><span class="cx"> testEventCallback():
</span><span class="cx"> Transaction should be active inside a non-IDB-event callback
</span><span class="lines">@@ -227,6 +259,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The transaction has finished.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionactiveflaghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-active-flag.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-active-flag.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-active-flag.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-active-flag.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionaftercloseexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-after-close-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-after-close-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-after-close-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -19,6 +19,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
</ins><span class="cx"> 
</span><span class="cx"> verify that we can reopen the db after calling close
</span><span class="cx"> indexedDB.open(dbname)
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionafterclosehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-after-close.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-after-close.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-after-close.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-after-close.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionandobjectstorecallsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -18,10 +18,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> Expecting exception from trans.objectStore('x')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> 
</span><span class="cx"> trans = db.transaction(['a'])
</span><span class="cx"> trans.objectStore('a')
</span><span class="lines">@@ -29,10 +31,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> Expecting exception from trans.objectStore('x')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> 
</span><span class="cx"> trans = db.transaction(['b'])
</span><span class="cx"> trans.objectStore('b')
</span><span class="lines">@@ -40,10 +44,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> Expecting exception from trans.objectStore('x')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> 
</span><span class="cx"> trans = db.transaction(['a', 'b'])
</span><span class="cx"> trans.objectStore('a')
</span><span class="lines">@@ -52,6 +58,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> 
</span><span class="cx"> trans = db.transaction(['b', 'a'])
</span><span class="cx"> trans.objectStore('a')
</span><span class="lines">@@ -60,6 +67,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> 
</span><span class="cx"> Passing a string as the first argument is a shortcut for just one object store:
</span><span class="cx"> trans = db.transaction('a')
</span><span class="lines">@@ -68,48 +76,58 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> Expecting exception from trans.objectStore('x')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.
</ins><span class="cx"> 
</span><del>-PASS trans = db.transaction() threw exception TypeError: Not enough arguments.
</del><ins>+PASS trans = db.transaction() threw exception TypeError: Failed to execute 'transaction' on 'IDBDatabase': 1 argument required, but only 0 present..
</ins><span class="cx"> 
</span><span class="cx"> Expecting exception from db.transaction(['x'])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> Expecting exception from db.transaction(['x'])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> Expecting exception from db.transaction(['a', 'x'])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> Expecting exception from db.transaction(['x', 'x'])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> Expecting exception from db.transaction(['a', 'x', 'b'])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> 
</span><span class="cx"> Exception thrown when no stores specified:
</span><span class="cx"> Expecting exception from db.transaction([])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_ACCESS_ERR
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': The storeNames parameter was empty.
</ins><span class="cx"> 
</span><span class="cx"> {} coerces to a string - so no match, but not a type error:
</span><span class="cx"> Expecting exception from db.transaction({})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> Expecting exception from db.transaction({mode:0})
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> 
</span><span class="cx"> Overriding the default string coercion makes these work:
</span><span class="cx"> db.transaction({toString:function(){return 'a';}})
</span><span class="lines">@@ -119,10 +137,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> Expecting exception from db.transaction([{toString:function(){return 'x';}}])
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> 
</span><span class="cx"> trans = db.transaction(['store'])
</span><span class="cx"> PASS trans is non-null.
</span><span class="lines">@@ -136,10 +156,12 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'objectStore' on 'IDBTransaction': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.index('index')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'index' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionandobjectstorecallshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-and-objectstore-calls.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionbasicsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -23,6 +23,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> 
</span><span class="cx"> testSetVersionAbort2():
</span><span class="cx"> PASS self.db.objectStoreNames is []
</span><span class="lines">@@ -40,6 +41,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The object store has been deleted.
</ins><span class="cx"> store = db.createObjectStore('storeFail', null)
</span><span class="cx"> index = store.createIndex('indexFail', 'x')
</span><span class="cx"> 
</span><span class="lines">@@ -62,46 +64,57 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.openKeyCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.getKey(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.put(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.add(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.delete(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.clear()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'clear' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> testSetVersionAbort4():
</span><span class="cx"> PASS self.db.objectStoreNames is []
</span><span class="lines">@@ -120,46 +133,57 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.openKeyCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.getKey(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'getKey' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from index.count()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'count' on 'IDBIndex': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.put(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.add(0, 0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'add' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.delete(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.clear()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'clear' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.get(0)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> Expecting exception from store.openCursor()
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'TransactionInactiveError'
</span><ins>+Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> 
</span><span class="cx"> testSetVersionAbort5():
</span><span class="cx"> PASS db.objectStoreNames is ['storeFail']
</span><span class="lines">@@ -206,17 +230,19 @@
</span><span class="cx"> Verify that specifying an invalid mode raises an exception
</span><span class="cx"> Expecting TypeError exception from db.transaction(['storeName'], 'lsakjdf')
</span><span class="cx"> PASS Exception was thrown.
</span><del>-PASS db.transaction(['storeName'], 'lsakjdf') threw TypeError: Type error
</del><ins>+PASS db.transaction(['storeName'], 'lsakjdf') threw TypeError: Failed to execute 'transaction' on 'IDBDatabase': The mode provided ('lsakjdf') is not one of 'readonly' or 'readwrite'.
</ins><span class="cx"> 
</span><span class="cx"> Test that null and undefined are treated as strings
</span><span class="cx"> Expecting exception from db.transaction(null)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> Expecting exception from db.transaction(undefined)
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.NOT_FOUND_ERR
</span><span class="cx"> PASS ename is 'NotFoundError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.
</ins><span class="cx"> request = newConnection()
</span><span class="cx"> indexedDB.open(dbname, 8)
</span><span class="cx"> db.createObjectStore('null')
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionbasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-basics.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-basics.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-basics.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-basics.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncompletewithjsrecursioncrossframehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -53,6 +53,5 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncompletewithjsrecursionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="lines">@@ -50,6 +50,5 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncompleteworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -21,6 +21,7 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'TransactionInactiveError'
</span><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] recursionTest():
</span><span class="cx"> [Worker] transaction = db.transaction('store')
</span><span class="lines">@@ -50,6 +51,7 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'TransactionInactiveError'
</span><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] trying a timeout callback:
</span><span class="cx"> [Worker] setTimeout(timeoutTest, 0)
</span><span class="lines">@@ -62,6 +64,7 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'TransactionInactiveError'
</span><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> [Worker] 
</span><span class="cx"> [Worker] errorTest():
</span><span class="cx"> [Worker] self.old_onerror = self.onerror
</span><span class="lines">@@ -78,6 +81,7 @@
</span><span class="cx"> PASS [Worker] Exception was thrown.
</span><span class="cx"> PASS [Worker] code is 0
</span><span class="cx"> PASS [Worker] ename is 'TransactionInactiveError'
</span><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncompleteworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,12 +1,12 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><del>-var worker = startWorker('resources/transaction-complete-workers.js');
</del><ins>+worker = startWorker('resources/transaction-complete-workers.js');
</ins><span class="cx"> 
</span><span class="cx"> // FIXME: It should be possible for the worker to set self.onerror to catch the event
</span><span class="cx"> // and call event.preventDefault(), but in the current Worker implementation the raw
</span><span class="lines">@@ -24,6 +24,5 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncoordinationacrossdatabaseshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-coordination-across-databases.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-coordination-across-databases.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-coordination-across-databases.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-coordination-across-databases.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncoordinationwithindatabasehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-coordination-within-database.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-coordination-within-database.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-coordination-within-database.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-coordination-within-database.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncrashintaskshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-crash-in-tasks.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-crash-in-tasks.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-crash-in-tasks.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -16,4 +16,3 @@
</span><span class="cx">     finishJSTest();
</span><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;script src=../../resources/js-test-post.js&gt;&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncrashonaborthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-crash-on-abort.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionerrorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-error-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-error-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-error-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-CONSOLE MESSAGE: line 73: Error: This should *NOT* be caught!
</del><ins>+CONSOLE ERROR: line 78: Uncaught Error: This should *NOT* be caught!
</ins><span class="cx"> Test IDBTransaction.error cases.
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="lines">@@ -17,6 +17,9 @@
</span><span class="cx"> IDBTransaction.error should be null if transaction is not finished:
</span><span class="cx"> PASS trans.error is null
</span><span class="cx"> 
</span><ins>+transaction() should throw if one of the DOMStringList items cannot be converted to a String:
+PASS db.transaction(['storeName', nonConvertibleToString]) threw exception Exception in toString().
+
</ins><span class="cx"> If IDBTransaction.abort() is explicitly called, IDBTransaction.error should be null:
</span><span class="cx"> trans.abort()
</span><span class="cx"> PASS trans.error is null
</span><span class="lines">@@ -28,8 +31,8 @@
</span><span class="cx"> request_error = request.error
</span><span class="cx"> Transaction received abort event.
</span><span class="cx"> PASS trans.error is non-null.
</span><del>-trans.webkitErrorMessage = Key already exists in the object store.
-PASS trans.webkitErrorMessage is non-null.
</del><ins>+trans.error.message = Key already exists in the object store.
+PASS trans.error.message is non-null.
</ins><span class="cx"> PASS trans.error is request_error
</span><span class="cx"> 
</span><span class="cx"> If the transaction is aborted due to an exception thrown from event callback, IDBTransaction.error should be AbortError:
</span><span class="lines">@@ -39,8 +42,8 @@
</span><span class="cx"> Throwing exception...
</span><span class="cx"> Transaction received abort event.
</span><span class="cx"> PASS trans.error is non-null.
</span><del>-trans.webkitErrorMessage = Uncaught exception in event handler.
-PASS trans.webkitErrorMessage is non-null.
</del><ins>+trans.error.message = Uncaught exception in event handler.
+PASS trans.error.message is non-null.
</ins><span class="cx"> PASS trans.error.name is 'AbortError'
</span><span class="cx"> 
</span><span class="cx"> If the transaction is aborted due to an error during commit, IDBTransaction.error should reflect that error:
</span><span class="lines">@@ -55,10 +58,10 @@
</span><span class="cx"> Transaction received abort event.
</span><span class="cx"> PASS trans.error is non-null.
</span><span class="cx"> PASS trans.error.name is 'ConstraintError'
</span><del>-trans.webkitErrorMessage = Unable to add key to index 'Also test utf8: æ¼¢': at least one key does not satisfy the uniqueness requirements.
-PASS trans.webkitErrorMessage is non-null.
</del><ins>+trans.error.message = Unable to add key to index 'Also test utf8: 漢': at least one key does not satisfy the uniqueness requirements.
+PASS trans.error.message is non-null.
</ins><span class="cx"> Note: This fails because of http://wkb.ug/37327
</span><del>-FAIL trans.webkitErrorMessage.indexOf(indexName) should not be -1.
</del><ins>+PASS trans.error.message.indexOf(indexName) is not -1
</ins><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionerrorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-error.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-error.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-error.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-error.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioneventpropagationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-event-propagation.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-event-propagation.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-event-propagation.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-event-propagation.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionorderingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/transaction-ordering-expected.txt (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-ordering-expected.txt                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/transaction-ordering-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+Verify Indexed DB transactions are ordered per spec
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = &quot;transaction-ordering.html&quot;
+indexedDB.deleteDatabase(dbname)
+indexedDB.open(dbname)
+
+prepareDatabase():
+db = event.target.result
+store = db.createObjectStore('store')
+
+onOpen():
+db = event.target.result
+
+Create in order tx1, tx2
+tx1 = db.transaction('store', 'readwrite')
+tx2 = db.transaction('store', 'readwrite')
+
+Use in order tx2, tx1
+tx2.objectStore('store').get(0)
+tx1.objectStore('store').get(0)
+
+order = []
+tx1 complete
+tx1 complete
+
+done():
+PASS areArraysEqual(order, [ 1, 2 ]) is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionorderinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/storage/indexeddb/transaction-ordering.html (0 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-ordering.html                                (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/transaction-ordering.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+description(&quot;Verify Indexed DB transactions are ordered per spec&quot;);
+
+indexedDBTest(prepareDatabase, onOpen);
+
+function prepareDatabase(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    evalAndLog(&quot;store = db.createObjectStore('store')&quot;);
+}
+
+function onOpen(evt)
+{
+    preamble(evt);
+    evalAndLog(&quot;db = event.target.result&quot;);
+    debug(&quot;&quot;);
+    debug(&quot;Create in order tx1, tx2&quot;);
+    evalAndLog(&quot;tx1 = db.transaction('store', 'readwrite')&quot;);
+    evalAndLog(&quot;tx2 = db.transaction('store', 'readwrite')&quot;);
+    debug(&quot;&quot;);
+    debug(&quot;Use in order tx2, tx1&quot;);
+    evalAndLog(&quot;tx2.objectStore('store').get(0)&quot;);
+    evalAndLog(&quot;tx1.objectStore('store').get(0)&quot;);
+    debug(&quot;&quot;);
+    evalAndLog(&quot;order = []&quot;);
+
+    tx1.oncomplete = function(evt) {
+        debug(&quot;tx1 complete&quot;);
+        order.push(1);
+        if (order.length === 2) done();
+    };
+
+    tx2.oncomplete = function(evt) {
+        debug(&quot;tx1 complete&quot;);
+        order.push(2);
+        if (order.length === 2) done();
+    };
+
+    function done() {
+        preamble();
+        // IndexedDB Spec:
+        // https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#transaction-concept
+        //
+        // If multiple &quot;readwrite&quot; transactions are attempting to
+        // access the same object store (i.e. if they have overlapping
+        // scope), the transaction that was created first must be the
+        // transaction which gets access to the object store first.
+        //
+        shouldBeTrue(&quot;areArraysEqual(order, [ 1, 2 ])&quot;);
+        finishJSTest();
+    }
+}
+
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionreadonlyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-read-only-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-read-only-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-read-only-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -15,11 +15,13 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'put' on 'IDBObjectStore': The transaction is read-only.
</ins><span class="cx"> trans = db.transaction('store')
</span><span class="cx"> Expecting exception from trans.objectStore('store').delete('x')
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBObjectStore': The transaction is read-only.
</ins><span class="cx"> trans = db.transaction('store')
</span><span class="cx"> cur = trans.objectStore('store').openCursor()
</span><span class="cx"> PASS !event.target.result is false
</span><span class="lines">@@ -27,6 +29,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is 0
</span><span class="cx"> PASS ename is 'ReadOnlyError'
</span><ins>+Exception message: Failed to execute 'delete' on 'IDBCursor': The record may not be deleted inside a read-only transaction.
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionreadonlyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-read-only.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-read-only.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-read-only.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><del>-&lt;html&gt;
-&lt;head&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;script src=&quot;resources/transaction-read-only.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;resources/transaction-read-only.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionreadwriteexclusivehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-readwrite-exclusive.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-readwrite-exclusive.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-readwrite-exclusive.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-readwrite-exclusive.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionrollbackhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-rollback.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-rollback.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-rollback.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-rollback.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionscopesequencinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-scope-sequencing.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-scope-sequencing.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-scope-sequencing.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-scope-sequencing.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionstarvationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-starvation.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-starvation.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-starvation.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-starvation.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionstoreNamesrequiredexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> dbname = &quot;transaction-storeNames-required.html&quot;
</span><span class="cx"> indexedDB.deleteDatabase(dbname)
</span><span class="cx"> indexedDB.open(dbname)
</span><del>-PASS db.transaction(); threw exception TypeError: Not enough arguments.
</del><ins>+PASS db.transaction(); threw exception TypeError: Failed to execute 'transaction' on 'IDBDatabase': 1 argument required, but only 0 present..
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactionstoreNamesrequiredhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/transaction-storeNames-required.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbunblockedversionchangesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/unblocked-version-changes-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unblocked-version-changes-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/unblocked-version-changes-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -17,7 +17,6 @@
</span><span class="cx"> transaction = request.transaction
</span><span class="cx"> request = indexedDB.open(dbname, 3)
</span><span class="cx"> transaction.abort()
</span><del>-db.close()
</del><span class="cx"> 
</span><span class="cx"> onError():
</span><span class="cx"> PASS db.version is 0
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbunblockedversionchangeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/unblocked-version-changes.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unblocked-version-changes.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/unblocked-version-changes.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/unblocked-version-changes.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbunprefixworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/unprefix-workers.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unprefix-workers.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/unprefix-workers.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;startWorker('resources/unprefix.js');&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script&gt;worker = startWorker('resources/unprefix.js');&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbunprefixhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/unprefix.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unprefix.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/unprefix.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,11 +1,10 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/unprefix.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbvalueundefinedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/value-undefined.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/value-undefined.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/value-undefined.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/value-undefined.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbvaluesoddtypeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/values-odd-types.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/values-odd-types.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/values-odd-types.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/values-odd-types.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbversionchangeabortexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/version-change-abort-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-abort-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/version-change-abort-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-CONSOLE MESSAGE: line 52: Error: This should *NOT* be caught!
</del><ins>+CONSOLE ERROR: line 52: Uncaught Error: This should *NOT* be caught!
</ins><span class="cx"> Ensure that aborted VERSION_CHANGE transactions are completely rolled back
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbversionchangeaborthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/version-change-abort.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-abort.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/version-change-abort.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/version-change-abort.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbversionchangeexclusiveexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/version-change-exclusive-expected.txt (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-exclusive-expected.txt        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/version-change-exclusive-expected.txt        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -18,6 +18,7 @@
</span><span class="cx"> PASS Exception was thrown.
</span><span class="cx"> PASS code is DOMException.INVALID_STATE_ERR
</span><span class="cx"> PASS ename is 'InvalidStateError'
</span><ins>+Exception message: Failed to execute 'transaction' on 'IDBDatabase': A version change transaction is running.
</ins><span class="cx"> store.put(0, 0)
</span><span class="cx"> in put's onsuccess
</span><span class="cx"> store.put(1, 1)
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbversionchangeexclusivehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/version-change-exclusive.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-exclusive.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/version-change-exclusive.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/version-change-exclusive.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbversionchangerequestactivedomobjecthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html (163962 => 163963)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html        2014-02-12 18:15:23 UTC (rev 163962)
+++ trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html        2014-02-12 18:17:47 UTC (rev 163963)
</span><span class="lines">@@ -1,10 +1,9 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script src=&quot;resources/versionchangerequest-activedomobject.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre>
</div>
</div>

</body>
</html>