<!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>[163923] 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/163923">163923</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2014-02-11 17:56:01 -0800 (Tue, 11 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

Reviewed by Tim Horton.

* 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/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="#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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/ChangeLog        2014-02-12 01:56:01 UTC (rev 163923)
</span><span class="lines">@@ -1,3 +1,460 @@
</span><ins>+2014-02-11  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        IDB: Reimport storage/indexeddb tests from Blink
+        https://bugs.webkit.org/show_bug.cgi?id=128636
+
+        Reviewed by Tim Horton.
+
+        * 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/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  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Position and thickness of underline as text size changes
</span></span></pre></div>
<a id="trunkLayoutTestsresourcesjstestjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/resources/js-test.js (0 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/aborted-versionchange-closes.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/basics-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-workers-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/basics-workers-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/basics-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/basics.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/clone-exception-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/clone-exception-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/clone-exception.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/clone-exception.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/create-and-remove-object-store.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/create-object-store-options.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/create-object-store-options.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createIndex-after-failure-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/createIndex-after-failure-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createIndex-after-failure.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/createIndex-after-failure.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/createObjectStore-null-name.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/createObjectStore-null-name.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-added-bug.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-dir-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-dir-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-dir.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-dir.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-validity-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-validity-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue-validity.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue-validity.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-continue.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-continue.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-delete.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-delete.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-finished-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-finished-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-finished.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-finished.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-inconsistency.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-inconsistency.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-index-delete.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-index-delete.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-key-order.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-key-order.html        2014-02-12 01:56:01 UTC (rev 163923)
</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="trunkLayoutTestsstorageindexeddbcursorleakexpectedtxtfromrev163921trunkLayoutTestsstorageindexeddbtransactionstoreNamesrequiredexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/storage/indexeddb/cursor-leak-expected.txt (from rev 163921, trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt) (0 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-overloads-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-overloads-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-overloads.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-overloads.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-prev-no-duplicate.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-prev-no-duplicate.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-primary-key-order.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-primary-key-order.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-properties.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-properties.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-reverse-bug.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-reverse-bug.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-skip-deleted.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-skip-deleted.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update-value-argument-required.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-update.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-update.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-value.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/cursor-value.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/data-corruption-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/data-corruption-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/data-corruption.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/data-corruption.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-basics-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-basics-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-basics.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-basics.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-close-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-close-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-close.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-close.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-closepending-flag-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-closepending-flag-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-closepending-flag.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-closepending-flag.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-deletepending-flag.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-deletepending-flag.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-name-undefined-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-name-undefined-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-name-undefined.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-name-undefined.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-odd-names.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-odd-names.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-wrapper-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-wrapper-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/database-wrapper.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/database-wrapper.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-closed-database-object-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/delete-closed-database-object-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-closed-database-object.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/delete-closed-database-object.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/delete-range.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/delete-range.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex-bug110792.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteIndex.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleteIndex.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleteObjectStore-name-argument-required.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleteObjectStore-null-name.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleteObjectStore-null-name.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deleted-objects.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deleted-objects.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-blocked.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-blocked.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-transaction.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-transaction.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/dont-wedge.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/dont-wedge.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/duplicates.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/duplicates.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/error-causes-abort-by-default.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/error-causes-abort-by-default.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/events-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/events-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/events.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/events.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/exception-in-event-aborts.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exceptions-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/exceptions-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/exceptions.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/exceptions.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics-workers-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics-workers-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-cmp-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/factory-cmp-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-cmp.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/factory-cmp.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-deletedatabase.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/factory-deletedatabase.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/get-keyrange-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/get-keyrange-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/get-keyrange.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/get-keyrange.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-basics.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-count-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-count-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-count.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-count.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-cursor.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-cursor.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-duplicate-keypaths.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-duplicate-keypaths.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-get-key-argument-required.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-multientry.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-multientry.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-population.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-population.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-unique.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/index-unique.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/interfaces.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/interfaces.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-bad-parameters.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-blocked.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-blocked.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-between-events.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-between-events.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-oncomplete.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-close-in-upgradeneeded.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-encoding.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-encoding.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-gated-on-delete.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-gated-on-delete.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-long-queue.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-long-queue.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-omit-parameter.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-omit-parameter.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-open-in-upgradeneeded.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-open-in-upgradeneeded.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-open-with-version.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-open-with-version.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-persistence.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-persistence.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-revert-on-abort.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-revert-on-abort.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-two-opens-no-versions.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-two-opens-no-versions.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-upgrades-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-upgrades-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/intversion-upgrades.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/intversion-upgrades.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/invalid-keys-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/invalid-keys-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/invalid-keys.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/invalid-keys.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-generator.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/key-generator.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-sort-order-across-types.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/key-sort-order-across-types.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-sort-order-date.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/key-sort-order-date.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-array-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/key-type-array-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-array.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/key-type-array.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/key-type-infinity.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/key-type-infinity.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-arrays-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-arrays-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-arrays.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-arrays.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-basics.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-basics.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-edges-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-edges-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-edges.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-edges.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-fetch-key.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-fetch-key.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keypath-intrinsic-properties.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keypath-intrinsic-properties.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keyrange-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keyrange-required-arguments.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/keyrange.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/keyrange.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/lazy-index-population-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/lazy-index-population-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/lazy-index-population.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/lazy-index-population.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/lazy-index-types.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/lazy-index-types.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/legacy-constants.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/legacy-constants.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/list-ordering.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/list-ordering.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/metadata.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/metadata.html        2014-02-12 01:56:01 UTC (rev 163923)
</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="trunkLayoutTestsstorageindexeddbmutatingcursorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/mutating-cursor.html (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/mutating-cursor.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/mutating-cursor.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/noblobs-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/noblobs-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/noblobs.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/noblobs.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/object-lookups-in-versionchange.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectStore-required-arguments.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-autoincrement.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-clear.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-clear.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-count-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-count-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-count.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-count.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-cursor.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-cursor.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/odd-strings.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/odd-strings.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-bad-versions.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/open-bad-versions.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-cursor-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/open-cursor-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-cursor.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/open-cursor.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-during-transaction.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/open-during-transaction.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-ordering.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/open-ordering.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-twice-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/open-twice-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/opencursor-key.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/opencursor-key.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-activity.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/pending-activity.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/persistence.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/persistence.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/prefetch-bugfix-108071.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/queued-commands.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/queued-commands.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/readonly-properties.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/readonly-properties.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/readonly.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/readonly.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/removed-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/removed-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/removed.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/removed.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-continue-abort.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/request-continue-abort.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/request-event-propagation.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/request-event-propagation.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/aborted-versionchange-closes.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/aborted-versionchange-closes.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/basics.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/basics.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/create-and-remove-object-store.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/create-and-remove-object-store.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/create-object-store-options.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/create-object-store-options.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-name-argument-required.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-name-argument-required.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-null-name.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/createObjectStore-null-name.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-added-bug.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-advance.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-advance.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-dir.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-dir.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-validity.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-continue-validity.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-continue.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-continue.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-delete.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-delete.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-inconsistency.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-inconsistency.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-index-delete.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-index-delete.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-key-order.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-key-order.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-primary-key-order.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-primary-key-order.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-properties.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-properties.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-reverse-bug.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-reverse-bug.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-skip-deleted.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-skip-deleted.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-update-value-argument-required.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-update-value-argument-required.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-update.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-update.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/cursor-value.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/cursor-value.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/data-corruption.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/data-corruption.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-basics.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-basics.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-close.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-close.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-closepending-flag.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-closepending-flag.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-deletepending-flag.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-deletepending-flag.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-name-undefined.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-name-undefined.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-odd-names.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-odd-names.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-quota.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-quota.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/database-wrapper.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/database-wrapper.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-closed-database-object.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-closed-database-object.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/delete-range.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-range.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleteIndex.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleteIndex.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-name-argument-required.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-name-argument-required.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-null-name.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleteObjectStore-null-name.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deleted-objects.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deleted-objects.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-blocked.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-blocked.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/dont-commit-on-blocked-worker.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/dont-commit-on-blocked-worker.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/dont-wedge.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/dont-wedge.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/duplicates.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/duplicates.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/error-causes-abort-by-default.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/error-causes-abort-by-default.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/events.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/events.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/exception-in-event-aborts.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/exception-in-event-aborts.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/exceptions.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/exceptions.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/factory-basics.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/factory-basics.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/factory-cmp.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/factory-cmp.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/factory-deletedatabase.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/factory-deletedatabase.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/get-keyrange.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/get-keyrange.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-basics.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-basics.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-count.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-count.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-cursor.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-cursor.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-duplicate-keypaths.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-duplicate-keypaths.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-get-key-argument-required.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-get-key-argument-required.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-multientry.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-multientry.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-population.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-population.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/index-unique.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/index-unique.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/interfaces.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/interfaces.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-abort-in-initial-upgradeneeded.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-bad-parameters.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-bad-parameters.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-blocked.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-blocked.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-close-between-events.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-close-between-events.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-oncomplete.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-oncomplete.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-upgradeneeded.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-close-in-upgradeneeded.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-encoding.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-encoding.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-gated-on-delete.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-gated-on-delete.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-long-queue.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-long-queue.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-omit-parameter.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-omit-parameter.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-open-in-upgradeneeded.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-open-in-upgradeneeded.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-open-with-version.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-open-with-version.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-persistence.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-persistence.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-revert-on-abort.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-revert-on-abort.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-two-opens-no-versions.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-two-opens-no-versions.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/intversion-upgrades.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/intversion-upgrades.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/invalid-keys.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/invalid-keys.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-generator.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-generator.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-across-types.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-across-types.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-date.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-sort-order-date.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-type-array.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-type-array.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/key-type-infinity.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/key-type-infinity.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-arrays.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-arrays.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-edges.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-edges.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-fetch-key.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-fetch-key.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keypath-intrinsic-properties.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-intrinsic-properties.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keyrange-required-arguments.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/keyrange-required-arguments.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/keyrange.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/keyrange.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/lazy-index-types.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/lazy-index-types.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/legacy-constants.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/legacy-constants.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/metadata.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/metadata.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/mutating-cursor.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/mutating-cursor.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectStore-required-arguments.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectStore-required-arguments.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-autoincrement.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-autoincrement.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-basics.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-basics.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-clear.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-clear.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-count.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-count.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js        2014-02-12 01:56:01 UTC (rev 163923)
</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="trunkLayoutTestsstorageindexeddbresourcesobjectstorekeycursorjsfromrev163921trunkLayoutTestsstorageindexeddbresourcesobjectstorecursorjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/storage/indexeddb/resources/objectstore-keycursor.js (from rev 163921, trunk/LayoutTests/storage/indexeddb/resources/objectstore-cursor.js) (0 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/objectstore-removeobjectstore.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/objectstore-removeobjectstore.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/odd-strings.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/odd-strings.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-cursor.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-cursor.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-during-transaction.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-during-transaction.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-ordering.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-ordering.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/open-twice.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/open-twice.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/opencursor-key.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/opencursor-key.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/pending-activity.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/pending-activity.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-on-exit.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-on-exit.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-stuck.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/pending-version-change-stuck.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/persistence.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/persistence.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/prefetch-bugfix-108071.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/prefetch-bugfix-108071.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/queued-commands.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/queued-commands.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/readonly-properties.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/readonly-properties.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/readonly.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/readonly.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/removed.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/removed.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/request-continue-abort.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/request-continue-abort.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/request-event-propagation.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/request-event-propagation.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/set_version_blocked.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/set_version_blocked.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/setversion-not-blocked.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/setversion-not-blocked.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/shared.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/shared.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-abort.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-abort.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-active-flag.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-active-flag.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-after-close.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-after-close.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-and-objectstore-calls.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-and-objectstore-calls.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-basics.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-basics.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-complete-workers.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-complete-workers.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-within-database.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-coordination-within-database.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-crash-on-abort.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-crash-on-abort.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-error.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-error.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-event-propagation.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-event-propagation.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-read-only.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-read-only.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-rollback.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-rollback.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-scope-sequencing.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-scope-sequencing.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-starvation.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-starvation.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/transaction-storeNames-required.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/transaction-storeNames-required.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/unprefix.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/unprefix.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/value-undefined.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/value-undefined.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/values-odd-types.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/values-odd-types.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/version-change-abort.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/version-change-abort.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/version-change-exclusive.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/version-change-exclusive.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/resources/versionchangerequest-activedomobject.js        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/resources/versionchangerequest-activedomobject.js        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/set_version_blocked.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/set_version_blocked.html        2014-02-12 01:56:01 UTC (rev 163923)
</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/set_version_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="trunkLayoutTestsstorageindexeddbsetversionblockedbyversionchangecloseexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/setversion-blocked-by-versionchange-close.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/setversion-not-blocked.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/setversion-not-blocked.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/structured-clone-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/structured-clone-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/structured-clone.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/structured-clone.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-abort-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-abort-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-abort.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-abort.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-active-flag-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-active-flag-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-active-flag.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-active-flag.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-after-close-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-after-close-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-after-close.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-after-close.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-and-objectstore-calls.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-basics.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-basics.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion-cross-frame.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-with-js-recursion.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-coordination-across-databases.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-coordination-across-databases.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-coordination-within-database.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-coordination-within-database.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-crash-in-tasks.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-crash-in-tasks.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-crash-on-abort.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-error-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-error-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-error.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-error.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-event-propagation.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-event-propagation.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 => 163923)</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 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-read-only-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-read-only-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-read-only.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-read-only.html        2014-02-12 01:56:01 UTC (rev 163923)
</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-read-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="trunkLayoutTestsstorageindexeddbtransactionreadwriteexclusivehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-readwrite-exclusive.html (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-readwrite-exclusive.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-readwrite-exclusive.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-rollback.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-rollback.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-scope-sequencing.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-scope-sequencing.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-starvation.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-starvation.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/transaction-storeNames-required.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unblocked-version-changes-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/unblocked-version-changes-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unblocked-version-changes.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/unblocked-version-changes.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unprefix-workers.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/unprefix-workers.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unprefix.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/unprefix.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/value-undefined.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/value-undefined.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/values-odd-types.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/values-odd-types.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-abort-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/version-change-abort-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-abort.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/version-change-abort.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-exclusive-expected.txt        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/version-change-exclusive-expected.txt        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/version-change-exclusive.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/version-change-exclusive.html        2014-02-12 01:56:01 UTC (rev 163923)
</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 (163922 => 163923)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html        2014-02-12 01:55:40 UTC (rev 163922)
+++ trunk/LayoutTests/storage/indexeddb/versionchangerequest-activedomobject.html        2014-02-12 01:56:01 UTC (rev 163923)
</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>