<!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 <beidson@apple.com>
+
+ 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 <mmaxfield@apple.com>
</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 == "description")
+ refNode = getOrCreate("console", "div");
+ else
+ refNode = parent.firstChild;
+
+ parent.insertBefore(element, refNode);
+ return element;
+ }
+
+ description = function description(msg, quiet)
+ {
+ // For MSIE 6 compatibility
+ var span = document.createElement("span");
+ if (quiet)
+ span.innerHTML = '<p>' + msg + '</p><p>On success, you will see no "<span class="fail">FAIL</span>" messages, followed by "<span class="pass">TEST COMPLETE</span>".</p>';
+ else
+ span.innerHTML = '<p>' + msg + '</p><p>On success, you will see a series of "<span class="pass">PASS</span>" messages, followed by "<span class="pass">TEST COMPLETE</span>".</p>';
+
+ var description = getOrCreate("description", "p");
+ if (description.firstChild)
+ description.replaceChild(span, description.firstChild);
+ else
+ description.appendChild(span);
+ };
+
+ debug = function debug(msg)
+ {
+ var span = document.createElement("span");
+ getOrCreate("console", "div").appendChild(span); // insert it first so XHTML knows the namespace
+ span.innerHTML = msg + '<br />';
+ };
+
+ var css =
+ ".pass {" +
+ "font-weight: bold;" +
+ "color: green;" +
+ "}" +
+ ".fail {" +
+ "font-weight: bold;" +
+ "color: red;" +
+ "}" +
+ "#console {" +
+ "white-space: pre-wrap;" +
+ "font-family: monospace;" +
+ "}";
+
+ function insertStyleSheet()
+ {
+ var styleElement = document.createElement("style");
+ 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("Unexpected error: " + 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') && !!self.importScripts;
+}
+
+function descriptionQuiet(msg) { description(msg, true); }
+
+function escapeHTML(text)
+{
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/\0/g, "\\0");
+}
+
+function testPassed(msg)
+{
+ debug('<span><span class="pass">PASS</span> ' + escapeHTML(msg) + '</span>');
+}
+
+function testFailed(msg)
+{
+ debug('<span><span class="fail">FAIL</span> ' + escapeHTML(msg) + '</span>');
+}
+
+function areArraysEqual(a, b)
+{
+ try {
+ if (a.length !== b.length)
+ return false;
+ for (var i = 0; i < 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 && 1/n < 0;
+}
+
+function isNewSVGTearOffType(v)
+{
+ return ['[object SVGLength]', '[object SVGLengthList]', '[object SVGPoint]', '[object SVGPointList]', '[object SVGNumber]'].indexOf(""+v) != -1;
+}
+
+function isResultCorrect(actual, expected)
+{
+ if (expected === 0)
+ return actual === expected && (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) && typeof(expected) == typeof(actual) && actual.valueAsString == expected.valueAsString)
+ return true;
+ if (typeof(expected) == "number" && isNaN(expected))
+ return typeof(actual) == "number" && isNaN(actual);
+ if (expected && (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 && 1/v < 0)
+ return "-0";
+ else return "" + v;
+}
+
+function evalAndLog(_a, _quiet)
+{
+ if (typeof _a != "string")
+ debug("WARN: tryAndLog() expects a string argument");
+
+ // 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 + " threw exception " + e);
+ }
+ return _av;
+}
+
+function shouldBe(_a, _b, quiet)
+{
+ if (typeof _a != "string" || typeof _b != "string")
+ debug("WARN: shouldBe() expects string arguments");
+ var _exception;
+ var _av;
+ try {
+ _av = eval(_a);
+ } catch (e) {
+ _exception = e;
+ }
+ var _bv = eval(_b);
+
+ if (_exception)
+ testFailed(_a + " should be " + _bv + ". Threw exception " + _exception);
+ else if (isResultCorrect(_av, _bv)) {
+ if (!quiet) {
+ testPassed(_a + " is " + _b);
+ }
+ } else if (typeof(_av) == typeof(_bv))
+ testFailed(_a + " should be " + _bv + ". Was " + stringify(_av) + ".");
+ else
+ testFailed(_a + " should be " + _bv + " (of type " + typeof _bv + "). Was " + _av + " (of type " + typeof _av + ").");
+}
+
+// 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() > failureTime) {
+ failureHandler();
+ } else {
+ setTimeout(_waitForCondition, 5, condition, failureTime, completionHandler, failureHandler);
+ }
+}
+
+function shouldBecomeEqual(_a, _b, _completionHandler, _timeout)
+{
+ if (typeof _a != "string" || typeof _b != "string")
+ debug("WARN: shouldBecomeEqual() expects string arguments");
+
+ 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 + " should become " + _bv + ". Threw exception " + _exception);
+ if (isResultCorrect(_av, _bv)) {
+ testPassed(_a + " became " + _b);
+ return true;
+ }
+ return false;
+ };
+ var _failureTime = Date.now() + _timeout;
+ var _failureHandler = function () {
+ testFailed(_a + " failed to change to " + _bv + " in " + (_timeout / 1000) + " seconds.");
+ _completionHandler();
+ };
+ _waitForCondition(_condition, _failureTime, _completionHandler, _failureHandler);
+}
+
+function shouldBecomeEqualToString(value, reference, completionHandler, timeout)
+{
+ if (typeof value !== "string" || typeof reference !== "string")
+ debug("WARN: shouldBecomeEqualToString() expects string arguments");
+ 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 + " is an instance of " + _type);
+ } else {
+ testFailed(_a + " is not an instance of " + _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 != "string") {
+ testFailed("shouldBeCloseTo() requires string argument _to_eval. was type " + typeof _to_eval);
+ return;
+ }
+ if (typeof _target != "number") {
+ testFailed("shouldBeCloseTo() requires numeric argument _target. was type " + typeof _target);
+ return;
+ }
+ if (typeof _tolerance != "number") {
+ testFailed("shouldBeCloseTo() requires numeric argument _tolerance. was type " + typeof _tolerance);
+ return;
+ }
+
+ var _result;
+ try {
+ _result = eval(_to_eval);
+ } catch (e) {
+ testFailed(_to_eval + " should be within " + _tolerance + " of "
+ + _target + ". Threw exception " + e);
+ return;
+ }
+
+ if (typeof(_result) != typeof(_target)) {
+ testFailed(_to_eval + " should be of type " + typeof _target
+ + " but was of type " + typeof _result);
+ } else if (Math.abs(_result - _target) <= _tolerance) {
+ if (!_quiet) {
+ testPassed(_to_eval + " is within " + _tolerance + " of " + _target);
+ }
+ } else {
+ testFailed(_to_eval + " should be within " + _tolerance + " of " + _target
+ + ". Was " + _result + ".");
+ }
+}
+
+function shouldNotBe(_a, _b, _quiet)
+{
+ if (typeof _a != "string" || typeof _b != "string")
+ debug("WARN: shouldNotBe() expects string arguments");
+ var _exception;
+ var _av;
+ try {
+ _av = eval(_a);
+ } catch (e) {
+ _exception = e;
+ }
+ var _bv = eval(_b);
+
+ if (_exception)
+ testFailed(_a + " should not be " + _bv + ". Threw exception " + _exception);
+ else if (!isResultCorrect(_av, _bv)) {
+ if (!_quiet) {
+ testPassed(_a + " is not " + _b);
+ }
+ } else
+ testFailed(_a + " should not be " + _bv + ".");
+}
+
+function shouldBecomeDifferent(_a, _b, _completionHandler, _timeout)
+{
+ if (typeof _a != "string" || typeof _b != "string")
+ debug("WARN: shouldBecomeDifferent() expects string arguments");
+ 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 + " should became not equal to " + _bv + ". Threw exception " + _exception);
+ if (!isResultCorrect(_av, _bv)) {
+ testPassed(_a + " became different from " + _b);
+ return true;
+ }
+ return false;
+ };
+ var _failureTime = Date.now() + _timeout;
+ var _failureHandler = function () {
+ testFailed(_a + " did not become different from " + _bv + " in " + (_timeout / 1000) + " seconds.");
+ _completionHandler();
+ };
+ _waitForCondition(_condition, _failureTime, _completionHandler, _failureHandler);
+}
+
+function shouldBeTrue(a, quiet) { shouldBe(a, "true", quiet); }
+function shouldBeTrueQuiet(a) { shouldBe(a, "true", true); }
+function shouldBeFalse(a, quiet) { shouldBe(a, "false", quiet); }
+function shouldBeNaN(a, quiet) { shouldBe(a, "NaN", quiet); }
+function shouldBeNull(a, quiet) { shouldBe(a, "null", quiet); }
+function shouldBeZero(a, quiet) { shouldBe(a, "0", quiet); }
+
+function shouldBeEqualToString(a, b)
+{
+ if (typeof a !== "string" || typeof b !== "string")
+ debug("WARN: shouldBeEqualToString() expects string arguments");
+ var unevaledString = JSON.stringify(b);
+ shouldBe(a, unevaledString);
+}
+
+function shouldBeEmptyString(a) { shouldBeEqualToString(a, ""); }
+
+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 == "undefined") {
+ shouldBeUndefined(actual);
+ } else if (typeof expected == "function") {
+ // All this fuss is to avoid the string-arg warning from shouldBe().
+ try {
+ var actualValue = eval(actual);
+ } catch (e) {
+ testFailed("Evaluating " + actual + ": Threw exception " + e);
+ return;
+ }
+ shouldBe("'" + actualValue.toString().replace(/\n/g, "") + "'",
+ "'" + expected.toString().replace(/\n/g, "") + "'");
+ } else if (typeof expected == "object") {
+ shouldBeTrue(actual + " == '" + expected + "'");
+ } else if (typeof expected == "string") {
+ shouldBe(actual, expected);
+ } else if (typeof expected == "boolean") {
+ shouldBe("typeof " + actual, "'boolean'");
+ if (expected)
+ shouldBeTrue(actual);
+ else
+ shouldBeFalse(actual);
+ } else if (typeof expected == "number") {
+ shouldBe(actual, stringify(expected));
+ } else {
+ debug(expected + " is unknown type " + typeof expected);
+ shouldBeTrue(actual, "'" +expected.toString() + "'");
+ }
+}
+
+function shouldBeNonZero(_a)
+{
+ var _exception;
+ var _av;
+ try {
+ _av = eval(_a);
+ } catch (e) {
+ _exception = e;
+ }
+
+ if (_exception)
+ testFailed(_a + " should be non-zero. Threw exception " + _exception);
+ else if (_av != 0)
+ testPassed(_a + " is non-zero.");
+ else
+ testFailed(_a + " should be non-zero. Was " + _av);
+}
+
+function shouldBeNonNull(_a)
+{
+ var _exception;
+ var _av;
+ try {
+ _av = eval(_a);
+ } catch (e) {
+ _exception = e;
+ }
+
+ if (_exception)
+ testFailed(_a + " should be non-null. Threw exception " + _exception);
+ else if (_av != null)
+ testPassed(_a + " is non-null.");
+ else
+ testFailed(_a + " should be non-null. Was " + _av);
+}
+
+function shouldBeUndefined(_a)
+{
+ var _exception;
+ var _av;
+ try {
+ _av = eval(_a);
+ } catch (e) {
+ _exception = e;
+ }
+
+ if (_exception)
+ testFailed(_a + " should be undefined. Threw exception " + _exception);
+ else if (typeof _av == "undefined")
+ testPassed(_a + " is undefined.");
+ else
+ testFailed(_a + " should be undefined. Was " + _av);
+}
+
+function shouldBeDefined(_a)
+{
+ var _exception;
+ var _av;
+ try {
+ _av = eval(_a);
+ } catch (e) {
+ _exception = e;
+ }
+
+ if (_exception)
+ testFailed(_a + " should be defined. Threw exception " + _exception);
+ else if (_av !== undefined)
+ testPassed(_a + " is defined.");
+ else
+ testFailed(_a + " should be defined. Was " + _av);
+}
+
+function shouldBeGreaterThanOrEqual(_a, _b) {
+ if (typeof _a != "string" || typeof _b != "string")
+ debug("WARN: shouldBeGreaterThanOrEqual expects string arguments");
+
+ var _exception;
+ var _av;
+ try {
+ _av = eval(_a);
+ } catch (e) {
+ _exception = e;
+ }
+ var _bv = eval(_b);
+
+ if (_exception)
+ testFailed(_a + " should be >= " + _b + ". Threw exception " + _exception);
+ else if (typeof _av == "undefined" || _av < _bv)
+ testFailed(_a + " should be >= " + _b + ". Was " + _av + " (of type " + typeof _av + ").");
+ else
+ testPassed(_a + " is >= " + _b);
+}
+
+function shouldNotThrow(_a) {
+ try {
+ eval(_a);
+ testPassed(_a + " did not throw exception.");
+ } catch (e) {
+ testFailed(_a + " should not throw exception. Threw exception " + e + ".");
+ }
+}
+
+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 == "undefined" || _exception == _ev)
+ testPassed(_a + " threw exception " + _exception + ".");
+ else
+ testFailed(_a + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Threw exception " + _exception + ".");
+ } else if (typeof _av == "undefined")
+ testFailed(_a + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Was undefined.");
+ else
+ testFailed(_a + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Was " + _av + ".");
+}
+
+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 < 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 > endDate)
+ continue;
+
+ if (typeof date !== "number") {
+ testFailed(a + " is not a number or a Date. Got " + av);
+ return;
+ }
+ if (date < startDate - delta) {
+ testFailed(a + " is not the curent time. Got " + av + " which is " + (startDate - date) / 1000 + " seconds in the past.");
+ return;
+ }
+ if (date > endDate + delta) {
+ testFailed(a + " is not the current time. Got " + av + " which is " + (date - endDate) / 1000 + " seconds in the future.");
+ return;
+ }
+
+ testPassed(a + " is equivalent to Date.now().");
+ return;
+ }
+ testFailed(a + " cannot be tested against the current time. The clock is going backwards too often.");
+}
+
+function expectError()
+{
+ if (expectingError) {
+ testFailed("shouldHaveError() called twice before an error occurred!");
+ }
+ expectingError = true;
+}
+
+function shouldHaveHadError(message)
+{
+ if (expectingError) {
+ testFailed("No error thrown between expectError() and shouldHaveHadError()");
+ return;
+ }
+
+ if (expectedErrorMessage) {
+ if (!message)
+ testPassed("Got expected error");
+ else if (expectedErrorMessage.indexOf(message) !== -1)
+ testPassed("Got expected error: '" + message + "'");
+ else
+ testFailed("Unexpected error '" + message + "'");
+ expectedErrorMessage = undefined;
+ return;
+ }
+
+ testFailed("expectError() not called before shouldHaveHadError()");
+}
+
+function gc() {
+ if (typeof GCController !== "undefined")
+ GCController.collect();
+ else {
+ var gcRec = function (n) {
+ if (n < 1)
+ return {};
+ var temp = {i: "ab" + i + (i / 100000)};
+ temp += "foo";
+ gcRec(n-1);
+ };
+ for (var i = 0; i < 1000; i++)
+ gcRec(10);
+ }
+}
+
+function minorGC() {
+ if (typeof GCController !== "undefined")
+ GCController.minorCollect();
+ else
+ testFailed("Minor GC is available only when you enable the --expose-gc option in V8.");
+}
+
+function isSuccessfullyParsed()
+{
+ // FIXME: Remove this and only report unexpected syntax errors.
+ successfullyParsed = !unexpectedErrorMessage;
+ shouldBeTrue("successfullyParsed");
+ debug('<br /><span class="pass">TEST COMPLETE</span>');
+}
+
+// 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 && self.testRunner)
+ testRunner.notifyDone();
+}
+
+function startWorker(testScriptURL, shared)
+{
+ self.jsTestIsAsync = true;
+ debug('Starting worker: ' + testScriptURL);
+ var worker = shared ? new SharedWorker(testScriptURL, "Shared Worker") : new Worker(testScriptURL);
+ worker.onmessage = function(event)
+ {
+ var workerPrefix = "[Worker] ";
+ if (event.data.length < 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 == "PASS")
+ testPassed(payload);
+ else if (code == "FAIL")
+ testFailed(payload);
+ else if (code == "DESC")
+ description(payload);
+ else if (code == "DONE")
+ 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 == "Shared Worker") {
+ self.onconnect = function(e) {
+ workerPort = e.ports[0];
+ workerPort.onmessage = function(event)
+ {
+ var colon = event.data.indexOf(":");
+ if (colon == -1) {
+ testFailed("Unrecognized message to shared worker: " + event.data);
+ return;
+ }
+ var code = event.data.substring(0, colon);
+ var payload = event.data.substring(colon + 1);
+ try {
+ if (code == "IMPORT")
+ importScripts(payload);
+ else
+ testFailed("Unrecognized message to shared worker: " + event.data);
+ } catch (ex) {
+ testFailed("Caught exception in shared worker onmessage: " + 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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/aborted-versionchange-closes.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/basics.js', true /*shared*/);</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/basics.js', true /*shared*/);</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/basics.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/basics.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/basics.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script>
</span><span class="cx">
</span><span class="lines">@@ -48,4 +48,3 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "closed-cursor.html"
+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 "[\"key\"]"
+PASS JSON.stringify(cursor.primaryKey) is "[\"key\"]"
+PASS JSON.stringify(cursor.value) is "{\"value\":\"value\"}"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Verify that that cursors accessed after being closed are well behaved");
+
+indexedDBTest(prepareDatabase, onOpen);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ evalAndLog("store.put({value: 'value'}, ['key'])");
+}
+
+function onOpen(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("tx = db.transaction('store')");
+ evalAndLog("store = tx.objectStore('store')");
+ evalAndLog("cursorRequest = store.openCursor()");
+ cursorRequest.onsuccess = function openCursorSuccess(evt) {
+ preamble(evt);
+ evalAndLog("cursor = cursorRequest.result");
+ debug("Don't continue the cursor, so it retains its key/primaryKey/value");
+ };
+ tx.oncomplete = function transactionComplete(evt) {
+ preamble(evt);
+ shouldBeEqualToString("JSON.stringify(cursor.key)", '["key"]');
+ shouldBeEqualToString("JSON.stringify(cursor.primaryKey)", '["key"]');
+ shouldBeEqualToString("JSON.stringify(cursor.value)", '{"value":"value"}');
+ finishJSTest();
+ };
+}
+
+</script>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+dbname = "connection-leak.html"
+
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Regression test to ensure that IndexedDB connections don't leak");
+
+setDBNameFromPath();
+doFirstOpen();
+
+function doFirstOpen()
+{
+ preamble();
+
+ evalAndLog("request = indexedDB.open(dbname, 1)");
+ evalAndLog("sawUpgradeNeeded1 = false");
+ request.onerror = unexpectedErrorCallback;
+ request.onblocked = unexpectedBlockedCallback;
+ request.onupgradeneeded = function onUpgradeNeeded1() {
+ preamble();
+ evalAndLog("sawUpgradeNeeded1 = true");
+ };
+ request.onsuccess = function onOpenSuccess1() {
+ preamble();
+ shouldBeTrue("sawUpgradeNeeded1");
+ evalAndLog("db = request.result");
+ evalAndLog("db.close()");
+
+ doSecondOpen();
+ };
+}
+
+function doSecondOpen()
+{
+ preamble();
+
+ evalAndLog("request = indexedDB.open(dbname, 1)");
+ request.onerror = unexpectedErrorCallback;
+ request.onblocked = unexpectedBlockedCallback;
+ request.onupgradeneeded = unexpectedUpgradeNeededCallback;
+ request.onsuccess = function onOpenSuccess2() {
+ preamble();
+ evalAndLog("db = request.result");
+
+ evalAndLog("db = null");
+ evalAndLog("request = null");
+
+ debug("Run GC outside of request's callback via setTimeout()");
+ setTimeout( function() {
+ evalAndLog("window.gc()");
+ doThirdOpen();
+ }, 0);
+ };
+}
+
+function doThirdOpen()
+{
+ preamble();
+
+ evalAndLog("request = indexedDB.open(dbname, 2)");
+ evalAndLog("sawUpgradeNeeded3 = false");
+ request.onerror = unexpectedErrorCallback;
+ request.onblocked = unexpectedBlockedCallback;
+ request.onupgradeneeded = function onUpgradeNeeded2() {
+ preamble();
+ evalAndLog("sawUpgradeNeeded3 = true");
+ };
+ request.onsuccess = function onOpenSuccess3() {
+ preamble();
+ shouldBeTrue("sawUpgradeNeeded3");
+ evalAndLog("db = request.result");
+ evalAndLog("db.close()");
+
+ finishJSTest();
+ };
+}
+
+</script>
</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("some os")
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/create-and-remove-object-store.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/create-object-store-options.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/createIndex-after-failure.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/createObjectStore-name-argument-required.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/createObjectStore-null-name.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-added-bug.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/cursor-advance.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/cursor-advance.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-advance.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "cursor-basics.html"
+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 "function"
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is "function"
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is "function"
+PASS 'update' in cursor is true
+PASS typeof cursor.update is "function"
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is "function"
+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 "{\"indexOn\":\"a\"}"
+
+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 "function"
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is "function"
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is "function"
+PASS 'update' in cursor is true
+PASS typeof cursor.update is "function"
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is "function"
+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 "function"
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is "function"
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is "function"
+PASS 'update' in cursor is true
+PASS typeof cursor.update is "function"
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is "function"
+PASS cursor.key is "a"
+PASS cursor.primaryKey is 0
+PASS cursor instanceof IDBCursorWithValue is true
+PASS 'value' in cursor is true
+PASS JSON.stringify(cursor.value) is "{\"indexOn\":\"a\"}"
+
+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 "function"
+PASS 'continuePrimaryKey' in cursor is true
+PASS typeof cursor.continuePrimaryKey is "function"
+PASS 'advance' in cursor is true
+PASS typeof cursor.advance is "function"
+PASS 'update' in cursor is true
+PASS typeof cursor.update is "function"
+PASS 'delete' in cursor is true
+PASS typeof cursor.delete is "function"
+PASS cursor.key is "a"
+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>+<html>
+<head>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+</head>
+<body>
+<script src="resources/cursor-basics.js"></script>
+</body>
+</html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "cursor-cast.html"
+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 "[object IDBCursorWithValue]"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Ensure cursor wrappers are created correctly.");
+
+indexedDBTest(prepareDatabase, verifyWrappers);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ evalAndLog("store.put(0, 0)");
+}
+
+function verifyWrappers(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("tx = db.transaction('store', 'readwrite')");
+ evalAndLog("request = tx.objectStore('store').openCursor()");
+
+ request.onsuccess = function onOpenCursorSuccess(evt) {
+ preamble(evt);
+ evalAndLog("cursor = event.target.result");
+ evalAndLog("request = cursor.update(1)");
+
+ request.onsuccess = function onUpdateSuccess(evt) {
+ preamble(evt);
+ evalAndLog("cursor = null");
+ gc();
+ gc(); // FIXME: Shouldn't need to call twice. http://crbug.com/288072
+ setTimeout(checkCursorType, 0);
+ };
+ };
+}
+
+function checkCursorType() {
+ shouldBeEqualToString("request.source.toString()", "[object IDBCursorWithValue]");
+ finishJSTest();
+}
+
+</script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-continue-dir.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-continue-validity.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-continue.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "cursor-continueprimarykey.html"
+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 "a"
+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 "b"
+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 "a"
+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 "b"
+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 "b"
+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 "b"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script src="resources/cursor-continueprimarykey.js"></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-delete.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-finished.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-inconsistency.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-index-delete.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-key-order.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "cursor-leak.html"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Verify that that cursors weakly hold script value properties");
+
+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("cursorObserver.wasCollected");
+ finishJSTest();
+ };
+}
+
+
+</script>
</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 "prevunique"
</span><ins>+store.openKeyCursor()
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "next"
+store.openKeyCursor(0)
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "next"
+store.openKeyCursor(0, 'next')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "next"
+store.openKeyCursor(0, 'nextunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "nextunique"
+store.openKeyCursor(0, 'prev')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "prev"
+store.openKeyCursor(0, 'prevunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "prevunique"
+store.openKeyCursor(IDBKeyRange.only(0))
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "next"
+store.openKeyCursor(IDBKeyRange.only(0), 'next')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "next"
+store.openKeyCursor(IDBKeyRange.only(0), 'nextunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "nextunique"
+store.openKeyCursor(IDBKeyRange.only(0), 'prev')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "prev"
+store.openKeyCursor(IDBKeyRange.only(0), 'prevunique')
+PASS event.target.result is non-null.
+PASS event.target.result.direction is "prevunique"
</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 "next"
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script>
</span><span class="cx"> description("Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor().");
</span><span class="lines">@@ -35,6 +35,19 @@
</span><span class="cx"> checkCursorDirection("store.openCursor(IDBKeyRange.only(0), 'prev')", "prev");
</span><span class="cx"> checkCursorDirection("store.openCursor(IDBKeyRange.only(0), 'prevunique')", "prevunique");
</span><span class="cx">
</span><ins>+ checkCursorDirection("store.openKeyCursor()", "next");
+ checkCursorDirection("store.openKeyCursor(0)", "next");
+ checkCursorDirection("store.openKeyCursor(0, 'next')", "next");
+ checkCursorDirection("store.openKeyCursor(0, 'nextunique')", "nextunique");
+ checkCursorDirection("store.openKeyCursor(0, 'prev')", "prev");
+ checkCursorDirection("store.openKeyCursor(0, 'prevunique')", "prevunique");
+
+ checkCursorDirection("store.openKeyCursor(IDBKeyRange.only(0))", "next");
+ checkCursorDirection("store.openKeyCursor(IDBKeyRange.only(0), 'next')", "next");
+ checkCursorDirection("store.openKeyCursor(IDBKeyRange.only(0), 'nextunique')", "nextunique");
+ checkCursorDirection("store.openKeyCursor(IDBKeyRange.only(0), 'prev')", "prev");
+ checkCursorDirection("store.openKeyCursor(IDBKeyRange.only(0), 'prevunique')", "prevunique");
+
</ins><span class="cx"> checkCursorDirection("index.openCursor()", "next");
</span><span class="cx"> checkCursorDirection("index.openCursor(0)", "next");
</span><span class="cx"> checkCursorDirection("index.openCursor(0, 'next')", "next");
</span><span class="lines">@@ -76,4 +89,3 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-prev-no-duplicate.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-primary-key-order.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-properties.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "cursor-request-cycle.html"
+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 "key1"
+PASS cursor.value is "value1"
+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 "key2"
+PASS cursor.value is "value2"
+PASS event.target.extra is 123
+PASS cursor.extra is 456
+
+finalRequestSuccess():
+PASS cursor.key is "key2"
+PASS cursor.value is "value2"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Verify that that cursors weakly hold request, and work if request is GC'd");
+
+indexedDBTest(prepareDatabase, onOpen);
+
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ store.put("value1", "key1");
+ store.put("value2", "key2");
+}
+
+function onOpen(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("tx = db.transaction('store')");
+ evalAndLog("store = tx.objectStore('store')");
+
+ evalAndLog("cursorRequest = store.openCursor()");
+ cursorRequest.onsuccess = function openCursorRequestSuccess(evt) {
+ preamble(evt);
+ debug("Result will be checked later, to ensure that lazy access is safe");
+ };
+
+ evalAndLog("otherRequest = store.get(0)");
+ otherRequest.onsuccess = function otherRequestSuccess(evt) {
+ preamble(evt);
+
+ debug("Verify that the request's result can be accessed lazily:");
+ evalAndLog("gc()");
+
+ evalAndLog("cursor = cursorRequest.result");
+ shouldBeNonNull("cursor");
+ shouldBeEqualToString("cursor.key", "key1");
+ shouldBeEqualToString("cursor.value", "value1");
+ evalAndLog("cursorRequest.extra = 123");
+ evalAndLog("cursor.extra = 456");
+
+ // Assign a new handler to inspect the request and cursor indirectly.
+ cursorRequest.onsuccess = function cursorContinueSuccess(evt) {
+ preamble(evt);
+ evalAndLog("cursor = event.target.result");
+ shouldBeNonNull("cursor");
+ shouldBeEqualToString("cursor.key", "key2");
+ shouldBeEqualToString("cursor.value", "value2");
+ shouldBe("event.target.extra", "123");
+ shouldBe("cursor.extra", "456");
+ };
+
+ debug("Ensure request is not released if cursor is still around.");
+ cursorRequestObservation = internals.observeGC(cursorRequest);
+ evalAndLog("cursorRequest = null");
+ evalAndLog("gc()");
+ shouldBeFalse("cursorRequestObservation.wasCollected");
+
+ evalAndLog("cursor.continue()");
+
+ cursorObservation = internals.observeGC(cursor);
+ evalAndLog("cursor = null");
+ evalAndLog("gc()");
+ shouldBeFalse("cursorObservation.wasCollected");
+
+ evalAndLog("finalRequest = store.get(0)");
+ finalRequest.onsuccess = function finalRequestSuccess(evt) {
+ preamble(evt);
+ shouldBeEqualToString("cursor.key", "key2");
+ shouldBeEqualToString("cursor.value", "value2");
+
+ cursorObservation = internals.observeGC(cursor);
+ evalAndLog("cursor = null");
+ evalAndLog("gc()");
+ shouldBeTrue("cursorRequestObservation.wasCollected");
+ shouldBeTrue("cursorObservation.wasCollected");
+ };
+ };
+
+ tx.oncomplete = finishJSTest;
+}
+
+
+</script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-reverse-bug.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-skip-deleted.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-update-value-argument-required.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-update.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/cursor-value.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "none"
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/data-corruption.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "database-basics.html"
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/database-basics.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/database-close.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> "2. Wait for all transactions created using connection to complete. Once they are complete, connection is closed."
</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"> "versionchange" transaction steps:
</span><span class="cx"> "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."
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/database-closepending-flag.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/database-deletepending-flag.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/database-name-undefined.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/database-odd-names.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/database-wrapper.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/delete-closed-database-object.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/delete-in-upgradeneeded-close-in-open-success.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/delete-in-upgradeneeded-close-in-versionchange.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/delete-range.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script>
</span><span class="cx">
</span><span class="lines">@@ -39,4 +39,3 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src=../../resources/js-test-post.js></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deleteIndex.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 = "deleteObjectStore-name-argument-required.html"
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deleteObjectStore-name-argument-required.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deleteObjectStore-null-name.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deleted-objects.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deletedatabase-blocked.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/deletedatabase-delayed-by-open-and-versionchange.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/deletedatabase-delayed-by-open-and-versionchange.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deletedatabase-delayed-by-open-and-versionchange.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deletedatabase-delayed-by-versionchange.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/deletedatabase-not-blocked.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script>
</span><span class="cx"> description("Ensure deleteDatabase() can run concurrently with transactions in other databases");
</span><span class="lines">@@ -31,4 +31,3 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> debug("holdConnection():");
</span><span class="cx"> debug("holding connection until versionchange event");
</span><span class="cx"> debug("");
</span><del>- startWorker("resources/dont-commit-on-blocked-worker.js");
</del><ins>+ worker = startWorker("resources/dont-commit-on-blocked-worker.js");
</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"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/dont-wedge.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/duplicates.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/error-causes-abort-by-default.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/events.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/exception-in-event-aborts.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "versionchange" 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 "versionchange" 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 "versionchange" 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 "readonly".
</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 "readonly".
</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 "readonly".
</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 "versionchange" 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 "versionchange" 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 "next" or "nextunique".
</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 "prev" or "prevunique".
</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 "readonly".
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/exceptions.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "function"
</span><span class="cx"> PASS typeof indexedDB.webkitGetDatabaseNames is "function"
</span><span class="cx"> PASS typeof indexedDB.getDatabaseNames is "undefined"
</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 "function"
</span><span class="cx"> PASS [Worker] typeof indexedDB.webkitGetDatabaseNames is "function"
</span><span class="cx"> PASS [Worker] typeof indexedDB.getDatabaseNames is "undefined"
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/factory-basics.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/factory-basics.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/factory-basics.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/factory-cmp.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/factory-deletedatabase.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/get-keyrange.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "indexName"
</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 "indexName"
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/index-basics.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/index-basics.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-basics.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 = {"key":0,"expected":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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-count.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-cursor.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-duplicate-keypaths.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-get-key-argument-required.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-multientry.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-population.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/index-unique.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/interfaces.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-abort-in-initial-upgradeneeded.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-bad-parameters.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-blocked.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-close-between-events.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-close-in-oncomplete.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-close-in-upgradeneeded.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-encoding.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-gated-on-delete.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "success"
-
</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 "versionchange"
-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 "success"
+
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-long-queue.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-omit-parameter.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-open-in-upgradeneeded.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-open-with-version.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "intversion-pending-version-changes-ascending.html"
+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>+<html>
+<head>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+</head>
+<body>
+<script src="resources/intversion-pending-version-changes-ascending.js"></script>
+</body>
+</html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "intversion-pending-version-changes-descending.html"
+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 "VersionError"
+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>+<html>
+<head>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+</head>
+<body>
+<script src="resources/intversion-pending-version-changes-descending.js"></script>
+</body>
+</html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "intversion-pending-version-changes-same.html"
+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>+<html>
+<head>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+</head>
+<body>
+<script src="resources/intversion-pending-version-changes-same.js"></script>
+</body>
+</html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-persistence.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-revert-on-abort.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-two-opens-no-versions.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/intversion-upgrades.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/invalid-keys.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/key-generator.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/key-sort-order-across-types.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/key-sort-order-date.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/key-type-array.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "key-type-binary.html"
+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 "[object Uint8Array]"
+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 "[object Uint8Array]"
+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 "[object Uint8Array]"
+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 "[object Uint8Array]"
+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 "[object Uint8Array]"
+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 "[object Uint8Array]"
+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 "[object Uint8Array]"
+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 "[object Uint8Array]"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script src="resources/key-type-binary.js"></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/key-type-infinity.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/keypath-arrays.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/keypath-basics.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/keypath-edges.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/keypath-fetch-key.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/keypath-intrinsic-properties.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/keyrange-required-arguments.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/keyrange.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script>
</span><span class="cx">
</span><span class="lines">@@ -134,8 +134,6 @@
</span><span class="cx"> debug("");
</span><span class="cx"> debug("Verify that uniqueness constraints are enforced when index is created between puts:");
</span><span class="cx">
</span><del>- debug("FIXME: Script shouldn't have to explicitly close connection after it failed to open. http://wkbug.com/102298");
- evalAndLog("connection.close()");
</del><span class="cx"> request = evalAndLog("indexedDB.open(dbname, 4)");
</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"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/lazy-index-types.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/legacy-constants.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/list-ordering.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "metadata-race.html"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Ensure IndexedDB transactions created before open onsuccess have correct metadata");
+
+indexedDBTest(prepareDatabase, onOpenSuccess);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ evalAndLog("store.createIndex('index', 'keyPath')");
+ evalAndLog("transaction = event.target.transaction");
+ shouldNotThrow("index = transaction.objectStore('store').index('index')");
+ transaction.oncomplete = onTransactionComplete;
+}
+
+function onTransactionComplete(evt)
+{
+ preamble(evt);
+ debug("In multiprocess mode, 'complete' event may be dispatched before\n" +
+ "the 'success' arrives with updated metadata. Ensure the new metadata\n" +
+ "is still used for transactions.");
+ evalAndLog("store = db.transaction('store').objectStore('store')");
+ shouldNotThrow("index = store.index('index')");
+}
+
+function onOpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.transaction('store').objectStore('store')");
+ shouldNotThrow("index = store.index('index')");
+ finishJSTest();
+}
+
+</script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/metadata.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/mutating-cursor.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="lines">@@ -82,6 +82,5 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script>
</span><span class="cx">
</span><span class="lines">@@ -18,4 +18,3 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src=../../resources/js-test-post.js></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/objectStore-required-arguments.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/objectstore-autoincrement.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "function"
</span><span class="cx"> PASS 'openCursor' in store is true
</span><span class="cx"> PASS typeof store.openCursor is "function"
</span><ins>+PASS 'openKeyCursor' in store is true
+PASS typeof store.openKeyCursor is "function"
</ins><span class="cx"> PASS 'createIndex' in store is true
</span><span class="cx"> PASS typeof store.createIndex is "function"
</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 "function"
</span><span class="cx"> PASS [Worker] 'openCursor' in store is true
</span><span class="cx"> PASS [Worker] typeof store.openCursor is "function"
</span><ins>+PASS [Worker] 'openKeyCursor' in store is true
+PASS [Worker] typeof store.openKeyCursor is "function"
</ins><span class="cx"> PASS [Worker] 'createIndex' in store is true
</span><span class="cx"> PASS [Worker] typeof store.createIndex is "function"
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/objectstore-basics.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/objectstore-basics.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/objectstore-basics.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/objectstore-clear.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 = {"key":0,"expected":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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/objectstore-count.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/objectstore-cursor.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "objectstore-keycursor.html"
+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>+<html>
+<head>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+</head>
+<body>
+<script src="resources/objectstore-keycursor.js"></script>
+</body>
+</html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/objectstore-removeobjectstore.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/odd-strings.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="lines">@@ -29,6 +29,5 @@
</span><span class="cx"> test();
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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("InexistentKey")
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/open-cursor.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/open-during-transaction.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/open-ordering.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/open-twice.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/open-twice.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/opencursor-key.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "optional-arguments.html"
+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 "next"
+PASS continues is 5
+
+verifyCursor():
+request = store.openCursor(null)
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 5
+
+verifyCursor():
+request = store.openCursor(IDBKeyRange.lowerBound(4))
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 2
+
+verifyCursor():
+request = store.openCursor(3)
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 1
+
+verifyCursor():
+request = store.openKeyCursor()
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 5
+
+verifyCursor():
+request = store.openKeyCursor(null)
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 5
+
+verifyCursor():
+request = store.openKeyCursor(IDBKeyRange.lowerBound(4))
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 2
+
+verifyCursor():
+request = store.openKeyCursor(3)
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 1
+
+verifyCursor():
+request = index.openCursor()
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 5
+
+verifyCursor():
+request = index.openCursor(null)
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 5
+
+verifyCursor():
+request = index.openCursor(IDBKeyRange.lowerBound('b'))
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 4
+
+verifyCursor():
+request = index.openCursor('c')
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 1
+
+verifyCursor():
+request = index.openKeyCursor()
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 5
+
+verifyCursor():
+request = index.openKeyCursor(null)
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 5
+
+verifyCursor():
+request = index.openKeyCursor(IDBKeyRange.lowerBound('b'))
+cursor = request.result
+PASS cursor.direction is "next"
+PASS continues is 4
+
+verifyCursor():
+request = index.openKeyCursor('c')
+cursor = request.result
+PASS cursor.direction is "next"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Exercise optional arguments with missing vs. undefined in IndexedDB methods.");
+
+indexedDBTest(prepareDatabase, checkOptionalArguments);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store', {keyPath: 'id'})");
+ evalAndLog("store.createIndex('by_name', 'name', {unique: true})");
+
+ evalAndLog("store.put({id: 1, name: 'a'})");
+}
+
+function checkOptionalArguments(event)
+{
+ evalAndLog("tx = db.transaction('store', 'readwrite')");
+ tx.oncomplete = finishJSTest;
+
+ evalAndLog("store = tx.objectStore('store')");
+ evalAndLog("index = store.index('by_name')");
+
+ shouldBe("IDBKeyRange.lowerBound(0).lowerOpen", "false");
+ shouldBe("IDBKeyRange.upperBound(0).upperOpen", "false");
+ shouldBe("IDBKeyRange.bound(0, 1).lowerOpen", "false");
+ shouldBe("IDBKeyRange.bound(0, 1).upperOpen", "false");
+
+ shouldBe("IDBKeyRange.lowerBound(0, undefined).lowerOpen", "false");
+ shouldBe("IDBKeyRange.upperBound(0, undefined).upperOpen", "false");
+ shouldBe("IDBKeyRange.bound(0, 1, undefined, undefined).lowerOpen", "false");
+ shouldBe("IDBKeyRange.bound(0, 1, undefined, undefined).upperOpen", "false");
+
+ shouldNotThrow("store.add({id: 2, name: 'b'})");
+ shouldNotThrow("store.put({id: 3, name: 'c'})");
+ shouldNotThrow("store.add({id: 4, name: 'd'}, undefined)");
+ shouldNotThrow("store.put({id: 5, name: 'e'}, undefined)");
+
+ tasks = [
+ function(callback) { verifyCursor("store.openCursor()", "next", 5, callback); },
+ function(callback) { verifyCursor("store.openCursor(null)", "next", 5, callback); },
+ function(callback) { verifyCursor("store.openCursor(IDBKeyRange.lowerBound(4))", "next", 2, callback); },
+ function(callback) { verifyCursor("store.openCursor(3)", "next", 1, callback); },
+
+ function(callback) { verifyCursor("store.openKeyCursor()", "next", 5, callback); },
+ function(callback) { verifyCursor("store.openKeyCursor(null)", "next", 5, callback); },
+ function(callback) { verifyCursor("store.openKeyCursor(IDBKeyRange.lowerBound(4))", "next", 2, callback); },
+ function(callback) { verifyCursor("store.openKeyCursor(3)", "next", 1, callback); },
+
+ function(callback) { verifyCursor("index.openCursor()", "next", 5, callback); },
+ function(callback) { verifyCursor("index.openCursor(null)", "next", 5, callback); },
+ function(callback) { verifyCursor("index.openCursor(IDBKeyRange.lowerBound('b'))", "next", 4, callback); },
+ function(callback) { verifyCursor("index.openCursor('c')", "next", 1, callback); },
+
+ function(callback) { verifyCursor("index.openKeyCursor()", "next", 5, callback); },
+ function(callback) { verifyCursor("index.openKeyCursor(null)", "next", 5, callback); },
+ function(callback) { verifyCursor("index.openKeyCursor(IDBKeyRange.lowerBound('b'))", "next", 4, callback); },
+ function(callback) { verifyCursor("index.openKeyCursor('c')", "next", 1, callback); },
+
+ function(callback) { verifyCount("store.count()", 5, callback); },
+ function(callback) { verifyCount("store.count(null)", 5, callback); },
+ function(callback) { verifyCount("store.count(IDBKeyRange.lowerBound(2))", 4, callback); },
+
+ function(callback) { verifyCount("index.count()", 5, callback); },
+ function(callback) { verifyCount("index.count(null)", 5, callback); },
+ function(callback) { verifyCount("index.count(IDBKeyRange.lowerBound('b'))", 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("request = " + expr);
+ request.onerror = unexpectedErrorCallback;
+
+ request.onsuccess = function() {
+ if (request.result) {
+ if (!cursor) {
+ evalAndLog("cursor = request.result");
+ shouldBeEqualToString("cursor.direction", direction);
+ }
+ ++continues;
+ cursor.continue();
+ } else {
+ shouldBe("continues", JSON.stringify(expected));
+ callback();
+ }
+ };
+}
+
+function verifyCount(expr, expected, callback)
+{
+ preamble();
+ evalAndLog("request = " + expr);
+ request.onerror = unexpectedErrorCallback;
+
+ request.onsuccess = function() {
+ shouldBe("request.result", JSON.stringify(expected));
+ callback();
+ };
+}
+
+function continueUndefined(callback)
+{
+ preamble();
+ first = true;
+ evalAndLog("request = store.openCursor()");
+ request.onerror = unexpectedErrorCallback;
+
+ request.onsuccess = function() {
+ if (first) {
+ first = false;
+ evalAndLog("cursor = request.result");
+ shouldBeNonNull("request.result");
+ shouldNotThrow("cursor.continue(undefined)");
+ callback();
+ }
+ };
+}
+
+</script>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/pending-activity.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/pending-activity.js');</script>
</ins><span class="cx"> </body>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script src="resources/pending-activity.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</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("resources/pending-version-change-on-exit.js?" + encodeURIComponent(dbname));
</del><ins>+ worker = startWorker("resources/pending-version-change-on-exit.js?" + 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"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</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("resources/pending-version-change-stuck.js?" + encodeURIComponent(dbname));
</del><ins>+ worker = startWorker("resources/pending-version-change-stuck.js?" + 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"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</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("resources/pending-version-change-stuck.js?" + encodeURI(dbname));
</del><ins>+ worker = startWorker("resources/pending-version-change-stuck.js?" + 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"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/persistence.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/prefetch-bugfix-108071.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "prefetch-invalidation.html"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Ensure IndexedDB's write operations invalidate cursor prefetch caches");
+
+indexedDBTest(prepareDatabase, onOpenSuccess);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+}
+
+function onOpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+
+ var steps = [
+ deleteRange,
+ clearStore
+ ];
+
+ (function nextStep() {
+ var step = steps.shift();
+ if (step) {
+ doPrefetchInvalidationTest(step, nextStep);
+ } else {
+ finishJSTest();
+ return;
+ }
+ }());
+}
+
+function doPrefetchInvalidationTest(operation, callback)
+{
+ debug("");
+ debug("-------------------------------------------");
+ preamble();
+ evalAndLog("store = db.transaction('store', 'readwrite').objectStore('store')");
+ debug("Populate the store with 200 records.");
+ for (var i = 0; i < 200; ++i)
+ store.put(i, i);
+ evalAndLog("cursorRequest = store.openCursor()");
+ continue100Times(operation, callback);
+}
+
+function continue100Times(operation, callback)
+{
+ preamble();
+ var count = 0;
+
+ cursorRequest.onsuccess = function() {
+ var cursor = cursorRequest.result;
+ ++count;
+ if (count < 100) {
+ cursor.continue();
+ return;
+ }
+ shouldBeNonNull("cursorRequest.result");
+ doOperationAndContinue(operation, callback);
+ }
+}
+
+function doOperationAndContinue(operation, callback)
+{
+ preamble();
+ operation();
+ evalAndLog("cursor = cursorRequest.result");
+ evalAndLog("cursor.continue()")
+ cursorRequest.onsuccess = function onContinueSuccess() {
+ preamble();
+ shouldBeNull("cursorRequest.result");
+ callback();
+ };
+}
+
+function deleteRange()
+{
+ return evalAndLog("store.delete(IDBKeyRange.bound(-Infinity, +Infinity))");
+}
+
+function clearStore()
+{
+ return evalAndLog("store.clear()");
+}
+
+</script>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "prefetch-race.html"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Ensure IndexedDB's cursor prefetch cache requests are invalidated");
+
+indexedDBTest(prepareDatabase, onOpenSuccess);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ debug("Populate with even records...");
+ for (var i = 0; i < 10; i += 2)
+ store.put(i, i);
+}
+
+function onOpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+
+ evalAndLog("tx = db.transaction('store', 'readwrite')");
+ evalAndLog("store = tx.objectStore('store')");
+ evalAndLog("request = store.openCursor()");
+
+ kPrefetchThreshold = 3;
+
+ expected = ["0", "2", "4", "6", "7", "8", "9"];
+ continueCount = 0;
+ request.onsuccess = function cursorSuccess() {
+ preamble();
+ cursor = request.result;
+ if (!cursor)
+ return;
+ ++continueCount;
+
+ expect = expected.shift();
+ shouldBe("cursor.key", expect);
+ evalAndLog("cursor.continue()");
+
+ if (continueCount === kPrefetchThreshold) {
+ debug("\nThat should have triggered a prefetch, injecting odd records...");
+ for (var i = 1; i < 10; i += 2)
+ store.put(i, i);
+ }
+ };
+
+ tx.oncomplete = function() {
+ shouldBe("continueCount", "7");
+ finishJSTest();
+ };
+}
+</script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/queued-commands.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/readonly-properties.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/readonly.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/removed.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/request-continue-abort.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/request-event-propagation.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "request-leak.html"
+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 "object"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Verify that that requests weakly hold script value properties");
+
+if (window.internals) {
+ indexedDBTest(prepareDatabase, onOpen);
+} else {
+ testFailed('This test requires access to the Internals object');
+ finishJSTest();
+}
+
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ evalAndLog("store.put({value: 'value'}, 'key')");
+}
+
+function onOpen(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("tx = db.transaction('store')");
+ evalAndLog("store = tx.objectStore('store')");
+ evalAndLog("request = store.get('key')");
+ tx.oncomplete = function onTransactionComplete() {
+ preamble();
+ evalAndLog("db.close()");
+ shouldBeEqualToString("typeof request.result", "object");
+
+ // Verify that the same object is returned on each access to request.result.
+ evalAndLog("request.result.x = 123");
+ shouldBe("request.result.x", "123");
+
+ // 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("request.result.leak = request");
+ evalAndLog("observer = internals.observeGC(request)");
+ evalAndLog("request = null");
+ evalAndLog("gc()");
+ shouldBeTrue("observer.wasCollected");
+ finishJSTest();
+ };
+}
+
+
+</script>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "request-result-cache.html"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Verify that a request's result is dirtied when a cursor is continued");
+
+indexedDBTest(prepareDatabase, onOpen);
+
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ store.put("value", "key");
+}
+
+function onOpen(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("tx = db.transaction('store')");
+ evalAndLog("store = tx.objectStore('store')");
+
+ evalAndLog("cursorRequest = store.openCursor()");
+ cursorRequest.onsuccess = function cursorRequestSuccess(evt) {
+ preamble(evt);
+ if (!cursorRequest.result)
+ return;
+
+ evalAndLog("cursor = cursorRequest.result");
+ evalAndLog("cursor.continue()");
+ evalAndExpectException("cursorRequest.result", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'"); };
+
+ tx.oncomplete = finishJSTest;
+}
+</script>
</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("indexedDB.open('basics')");
</span><span class="cx"> shouldBeTrue("'result' in request");
</span><span class="cx"> evalAndExpectException("request.result", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><del>- shouldBeTrue("'webkitErrorMessage' in request");
- evalAndExpectException("request.webkitErrorMessage", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</del><ins>+ shouldBeTrue("'error' in request");
</ins><span class="cx"> evalAndExpectException("request.error", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> shouldBeTrue("'source' in request");
</span><span class="cx"> shouldBeNull("request.source");
</span><span class="lines">@@ -33,8 +32,6 @@
</span><span class="cx"> event = evt;
</span><span class="cx"> shouldBeTrue("'result' in event.target");
</span><span class="cx"> shouldBeTrue("!!event.target.result");
</span><del>- shouldBeTrue("'webkitErrorMessage' in event.target");
- shouldBeUndefined("event.target.webkitErrorMessage");
</del><span class="cx"> shouldBeTrue("'error' in event.target");
</span><span class="cx"> shouldBeNull("event.target.error");
</span><span class="cx"> shouldBeTrue("'source' in event.target");
</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("Test the basics of IndexedDB's IDBCursor objects.");
+
+indexedDBTest(prepareDatabase);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ db = event.target.result;
+
+ evalAndLog("store = db.createObjectStore('storeName')");
+ evalAndLog("index = store.createIndex('indexName', 'indexOn')");
+ evalAndLog("store.put({indexOn: 'a'}, 0)");
+
+ request = evalAndLog("store.openCursor()");
+ request.onsuccess = onStoreOpenCursor;
+ request.onerror = unexpectedErrorCallback;
+
+ request = evalAndLog("store.openKeyCursor()");
+ request.onsuccess = onStoreOpenKeyCursor;
+ request.onerror = unexpectedErrorCallback;
+
+ request = evalAndLog("index.openCursor()");
+ request.onsuccess = onIndexOpenCursor;
+ request.onerror = unexpectedErrorCallback;
+
+ request = evalAndLog("index.openKeyCursor()");
+ request.onsuccess = onIndexOpenKeyCursor;
+ request.onerror = unexpectedErrorCallback;
+
+ event.target.transaction.oncomplete = finishJSTest;
+}
+
+function checkCursorProperties() {
+ shouldBeTrue("cursor instanceof IDBCursor");
+ shouldBeTrue("'key' in cursor");
+ shouldBeTrue("'primaryKey' in cursor");
+
+ shouldBeTrue("'continue' in cursor");
+ shouldBeEqualToString("typeof cursor.continue", "function");
+ shouldBeTrue("'continuePrimaryKey' in cursor");
+ shouldBeEqualToString("typeof cursor.continuePrimaryKey", "function");
+ shouldBeTrue("'advance' in cursor");
+ shouldBeEqualToString("typeof cursor.advance", "function");
+ shouldBeTrue("'update' in cursor");
+ shouldBeEqualToString("typeof cursor.update", "function");
+ shouldBeTrue("'delete' in cursor");
+ shouldBeEqualToString("typeof cursor.delete", "function");
+}
+
+function onStoreOpenCursor(evt) {
+ preamble(evt);
+ evalAndLog("cursor = event.target.result");
+ shouldBeNonNull("cursor");
+ checkCursorProperties();
+
+ shouldBe("cursor.key", "0");
+ shouldBe("cursor.primaryKey", "0");
+
+ shouldBeTrue("cursor instanceof IDBCursorWithValue");
+ shouldBeTrue("'value' in cursor");
+ shouldBeEqualToString("JSON.stringify(cursor.value)", '{"indexOn":"a"}');
+}
+
+function onStoreOpenKeyCursor(evt) {
+ preamble(evt);
+ evalAndLog("cursor = event.target.result");
+ shouldBeNonNull("cursor");
+ checkCursorProperties();
+
+ shouldBe("cursor.key", "0");
+ shouldBeTrue("'primaryKey' in cursor");
+ shouldBe("cursor.primaryKey", "0");
+
+ shouldBeFalse("cursor instanceof IDBCursorWithValue");
+ shouldBeFalse("'value' in cursor");
+}
+
+function onIndexOpenCursor(evt) {
+ preamble(evt);
+ evalAndLog("cursor = event.target.result");
+ shouldBeNonNull("cursor");
+ checkCursorProperties();
+
+ shouldBeEqualToString("cursor.key", "a");
+ shouldBe("cursor.primaryKey", "0");
+
+ shouldBeTrue("cursor instanceof IDBCursorWithValue");
+ shouldBeTrue("'value' in cursor");
+ shouldBeEqualToString("JSON.stringify(cursor.value)", '{"indexOn":"a"}');
+}
+
+function onIndexOpenKeyCursor(evt) {
+ preamble(evt);
+ evalAndLog("cursor = event.target.result");
+ shouldBeNonNull("cursor");
+ checkCursorProperties();
+
+ shouldBeEqualToString("cursor.key", "a");
+ shouldBe("cursor.primaryKey", "0");
+
+ shouldBeFalse("cursor instanceof IDBCursorWithValue");
+ shouldBe("cursor.primaryKey", "0");
+ shouldBeFalse("'value' in cursor");
+}
+
</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("Test IndexedDB's IDBCursor.continue() with a primary key parameter.");
+
+indexedDBTest(prepareDatabase, verifyContinueCalls);
+function prepareDatabase(evt)
+{
+ preamble(evt);
+
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+ evalAndLog("index = store.createIndex('index', 'indexKey', {multiEntry: true})");
+
+ evalAndLog("store.put({indexKey: ['a', 'b']}, 1)");
+ evalAndLog("store.put({indexKey: ['a', 'b']}, 2)");
+ evalAndLog("store.put({indexKey: ['a', 'b']}, 3)");
+ evalAndLog("store.put({indexKey: ['b']}, 4)");
+
+ var indexExpected = [
+ {key: "a", primaryKey: 1},
+ {key: "a", primaryKey: 2},
+ {key: "a", primaryKey: 3},
+ {key: "b", primaryKey: 1},
+ {key: "b", primaryKey: 2},
+ {key: "b", primaryKey: 3},
+ {key: "b", primaryKey: 4}
+ ];
+ debug("checking index structure...");
+ debug("");
+ debug("index key primary key");
+ debug("========= ===========");
+ var quiet = true;
+ evalAndLog("request = index.openCursor()", quiet);
+ request.onerror = unexpectedErrorCallback;
+ request.onsuccess = function onCursorSuccess() {
+ evalAndLog("cursor = request.result", quiet);
+ var expectedEntry = indexExpected.shift();
+ if (expectedEntry) {
+ shouldBe("cursor.key", JSON.stringify(expectedEntry.key), quiet);
+ shouldBe("cursor.primaryKey", JSON.stringify(expectedEntry.primaryKey), quiet);
+ debug(cursor.key + " " + cursor.primaryKey);
+ evalAndLog("cursor.continue()", quiet);
+ } else {
+ shouldBeNull("cursor", quiet);
+ }
+ };
+}
+
+var testCases = [
+ // Continuing index key
+ { call: "cursor.continue()", result: { key: "a", primaryKey: 2 } },
+ { call: "cursor.continue('a')", exception: 'DataError' },
+ { call: "cursor.continue('b')", result: { key: "b", primaryKey: 1 } },
+ { call: "cursor.continue('c')", result: null },
+
+ // Called w/ index key and primary key:
+ { call: "cursor.continuePrimaryKey('a', 3)", result: {key: 'a', primaryKey: 3} },
+ { call: "cursor.continuePrimaryKey('a', 4)", result: {key: 'b', primaryKey: 1} },
+ { call: "cursor.continuePrimaryKey('b', 1)", result: {key: 'b', primaryKey: 1} },
+ { call: "cursor.continuePrimaryKey('b', 4)", result: {key: 'b', primaryKey: 4} },
+ { call: "cursor.continuePrimaryKey('b', 5)", result: null },
+ { call: "cursor.continuePrimaryKey('c', 1)", result: null },
+
+ // Called w/ primary key but w/o index key
+ { call: "cursor.continuePrimaryKey(null, 1)", exception: 'DataError' },
+ { call: "cursor.continuePrimaryKey(null, 2)", exception: 'DataError' },
+ { call: "cursor.continuePrimaryKey(null, 3)", exception: 'DataError' },
+ { call: "cursor.continuePrimaryKey(null, 4)", exception: 'DataError' },
+ { call: "cursor.continuePrimaryKey(null, 5)", exception: 'DataError' },
+
+ // Called w/ index key but w/o primary key
+ { call: "cursor.continuePrimaryKey('a', null)", exception: 'DataError' },
+ ];
+
+function verifyContinueCalls() {
+ debug("");
+ if (!testCases.length) {
+ finishJSTest();
+ return;
+ }
+
+ var quiet = true;
+ testCase = testCases.shift();
+ debug("Test case: " + testCase.call);
+ debug("");
+ evalAndLog("tx = db.transaction('store')");
+ evalAndLog("request = tx.objectStore('store').index('index').openCursor()");
+ var i = 0;
+ request.onsuccess = function() {
+ ++i;
+ evalAndLog("cursor = request.result", true);
+ if (i === 1) {
+ if ('exception' in testCase) {
+ evalAndExpectException(testCase.call, "0", "'DataError'");
+ } else {
+ evalAndLog(testCase.call);
+ }
+ return;
+ }
+
+ if (i === 2) {
+ if (testCase.result) {
+ shouldBe("cursor.key", JSON.stringify(testCase.result.key));
+ shouldBe("cursor.primaryKey", JSON.stringify(testCase.result.primaryKey));
+ } else {
+ shouldBeNull("cursor");
+ }
+ }
+ };
+
+ 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("setVersionSuccess():");
</span><ins>+ shouldBeEqualToString("event.dataLoss", "none");
</ins><span class="cx"> self.trans = evalAndLog("trans = event.target.transaction");
</span><span class="cx"> shouldBeNonNull("trans");
</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("Error function called: (" + event.target.error.name + ") " + event.target.webkitErrorMessage);
</del><ins>+ debug("Error function called: (" + event.target.error.name + ") " + event.target.error.message);
</ins><span class="cx"> evalAndLog("event.preventDefault()");
</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("FIXME: Blocked event shouldn't fire. http://wkbug.com/71130");
</del><ins>+ debug("FIXME: Blocked event shouldn't fire. http://crbug.com/100123");
</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("db.close()");
</span><span class="cx">
</span><del>- debug("We can't specify a version here due to http://wkbug.com/102716");
- var openRequest = evalAndLog("indexedDB.open(dbname)"); // NOTE: No version specified.
</del><ins>+ var openRequest = evalAndLog("indexedDB.open(dbname)");
</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("sawVersionChange");
</span><del>- debug("FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://wkbug.com/71130");
</del><ins>+ debug("FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://crbug.com/100123");
</ins><span class="cx"> shouldBeFalse("sawDeleteBlocked");
</span><span class="cx"> shouldBeTrue("sawUpgradeNeeded");
</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("");
</del><ins>+ testStore();
+}
+
+function testStore()
+{
+ preamble();
+
</ins><span class="cx"> evalAndLog("deletedStore = connection.createObjectStore('deletedStore')");
</span><del>- evalAndLog("store = connection.createObjectStore('store')");
- evalAndLog("deletedIndex = store.createIndex('deletedIndex', 'path')");
</del><ins>+ evalAndLog("connection.deleteObjectStore('deletedStore')");
</ins><span class="cx">
</span><span class="cx"> debug("");
</span><del>- evalAndLog("connection.deleteObjectStore('deletedStore')");
- evalAndLog("store.deleteIndex('deletedIndex')");
</del><span class="cx">
</span><del>- debug("");
</del><span class="cx"> evalAndExpectException("deletedStore.put(0, 0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedStore.add(0, 0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedStore.delete(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="lines">@@ -33,6 +35,11 @@
</span><span class="cx"> evalAndExpectException("deletedStore.openCursor(0, 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedStore.openCursor(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedStore.openCursor(IDBKeyRange.only(0), 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><ins>+ evalAndExpectException("deletedStore.openKeyCursor()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("deletedStore.openKeyCursor(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("deletedStore.openKeyCursor(0, 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("deletedStore.openKeyCursor(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("deletedStore.openKeyCursor(IDBKeyRange.only(0), 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</ins><span class="cx"> evalAndExpectException("deletedStore.createIndex('name', 'path')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedStore.index('name')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedStore.deleteIndex('name')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="lines">@@ -40,7 +47,19 @@
</span><span class="cx"> evalAndExpectException("deletedStore.count(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedStore.count(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx">
</span><ins>+ testIndex();
+}
+
+function testIndex()
+{
+ preamble();
+
+ evalAndLog("store = connection.createObjectStore('store')");
+ evalAndLog("deletedIndex = store.createIndex('deletedIndex', 'path')");
+ evalAndLog("store.deleteIndex('deletedIndex')");
+
</ins><span class="cx"> debug("");
</span><ins>+
</ins><span class="cx"> evalAndExpectException("deletedIndex.openCursor()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedIndex.openCursor(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedIndex.openCursor(0, 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="lines">@@ -59,6 +78,111 @@
</span><span class="cx"> evalAndExpectException("deletedIndex.count(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</span><span class="cx"> evalAndExpectException("deletedIndex.count(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
</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("deletedStore = connection.createObjectStore('deletedStore')");
+ evalAndLog("indexOfDeletedStore = deletedStore.createIndex('index', 'path')");
+ evalAndLog("connection.deleteObjectStore('deletedStore')");
+
+ debug("");
+
+ evalAndExpectException("indexOfDeletedStore.openCursor()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openCursor(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openCursor(0, 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openCursor(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openCursor(IDBKeyRange.only(0), 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openKeyCursor()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openKeyCursor(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openKeyCursor(0, 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0), 'next')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.get(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.get(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.getKey(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.getKey(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.count()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.count(0)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("indexOfDeletedStore.count(IDBKeyRange.only(0))", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+
+ testObjectStoreCursor();
+}
+
+function testObjectStoreCursor()
+{
+ preamble();
+
+ evalAndLog("deletedStore = connection.createObjectStore('deletedStore')");
+ evalAndLog("deletedStore.put(0, 0)");
+
+ request = evalAndLog("deletedStore.openCursor()");
+ request.onerror = unexpectedErrorCallback;
+ request.onsuccess = function() {
+ evalAndLog("cursor = request.result");
+ shouldBe("cursor.key", "0");
+ shouldBe("cursor.value", "0");
+
+ evalAndLog("connection.deleteObjectStore('deletedStore')");
+ evalAndExpectException("cursor.delete()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.update(1)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.continue()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.advance(1)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+
+ testIndexCursor();
+ };
+}
+
+
+function testIndexCursor()
+{
+ preamble();
+
+ evalAndLog("store.put({id: 123}, 0)");
+ evalAndLog("deletedIndex = store.createIndex('deletedIndex', 'id')");
+
+ request = evalAndLog("deletedIndex.openCursor()");
+ request.onerror = unexpectedErrorCallback;
+ request.onsuccess = function() {
+ evalAndLog("cursor = request.result");
+ shouldBe("cursor.key", "123");
+ shouldBe("cursor.primaryKey", "0");
+
+ evalAndLog("store.deleteIndex('deletedIndex')");
+ evalAndExpectException("cursor.delete()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.update(1)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.continue()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.advance(1)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+
+ testIndexOfDeletedStoreCursor();
+ };
+}
+
+function testIndexOfDeletedStoreCursor()
+{
+ preamble();
+
+ evalAndLog("deletedStore = connection.createObjectStore('deletedStore')");
+ evalAndLog("deletedStore.put({id: 123}, 0)");
+ evalAndLog("index = deletedStore.createIndex('index', 'id')");
+
+ request = evalAndLog("index.openCursor()");
+ request.onerror = unexpectedErrorCallback;
+ request.onsuccess = function() {
+ evalAndLog("cursor = request.result");
+ shouldBe("cursor.key", "123");
+ shouldBe("cursor.primaryKey", "0");
+
+ evalAndLog("connection.deleteObjectStore('deletedStore')");
+ evalAndExpectException("cursor.delete()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.update(1)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.continue()", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+ evalAndExpectException("cursor.advance(1)", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
+
+ 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("h3.close()");
+ };
</ins><span class="cx"> request.onblocked = function h3Blocked(evt) {
</span><span class="cx"> preamble(evt);
</span><span class="cx"> evalAndLog("setVersionBlockedEventFired = true");
</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("'oldVersion' in document.createEvent('IDBVersionChangeEvent')");
</span><span class="cx"> shouldBeTrue("'newVersion' in document.createEvent('IDBVersionChangeEvent')");
</span><ins>+ shouldBeTrue("'dataLoss' in document.createEvent('IDBVersionChangeEvent')");
</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("");
</span><span class="cx"> evalAndLog("event.preventDefault()");
</span><span class="cx"> debug("Throwing");
</span><ins>+ expectError();
</ins><span class="cx"> throw "this exception is expected";
</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"> // "Occurs if a request is made on a source object that has been deleted or removed." - covered in deleted-objects.html
</span><span class="cx">
</span><span class="cx"> debug("");
</span><ins>+ debug("IDBObjectStore.openKeyCursor()");
+ debug("If the range parameter is specified but is not a valid key or a key range, this method throws a DOMException of type DataError.");
+ evalAndExpectException("store.openKeyCursor({})", "0", "'DataError'");
+ debug("The transaction this IDBObjectStore belongs to is not active.");
+ evalAndExpectException("storeFromInactiveTransaction.openKeyCursor()", "0", "'TransactionInactiveError'");
+ debug("The value for the direction parameter is invalid.");
+ evalAndExpectExceptionClass("store.openKeyCursor(0, 'invalid-direction')", "TypeError");
+ // "Occurs if a request is made on a source object that has been deleted or removed." - covered in deleted-objects.html
+
+ debug("");
</ins><span class="cx"> debug("IDBObjectStore.put()");
</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 "readonly".');
</span><span class="cx"> evalAndExpectException("storeFromReadOnlyTransaction.put(0, 0)", "0", "'ReadOnlyError'");
</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("typeof indexedDB.webkitGetDatabaseNames", "function");
</span><span class="cx"> shouldBeEqualToString("typeof indexedDB.getDatabaseNames", "undefined");
</span><span class="cx">
</span><del>-
</del><span class="cx"> name = 'storage/indexeddb/factory-basics';
</span><span class="cx">
</span><del>- request = evalAndLog("indexedDB.webkitGetDatabaseNames()");
</del><ins>+ evalAndLog("request = indexedDB.webkitGetDatabaseNames()");
+ shouldBeNull("request.source");
</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("databaseNames.contains('" + name + "')");
</span><span class="cx"> shouldBeFalse("databaseNames.contains('DATABASE THAT DOES NOT EXIST')");
</span><span class="cx">
</span><del>- request = evalAndLog("indexedDB.open(name)");
</del><ins>+ evalAndLog("request = indexedDB.open(name)");
+ shouldBeNull("request.source");
</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("databaseNames.contains('" + name + "')");
</span><span class="cx"> shouldBeFalse("databaseNames.contains('DATABASE THAT DOES NOT EXIST')");
</span><span class="cx">
</span><del>- request = evalAndLog("indexedDB.deleteDatabase('" + name + "')");
</del><ins>+ evalAndLog("request = indexedDB.deleteDatabase('" + name + "')");
+ shouldBeNull("request.source");
</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"> "'\uD834\uDD1E'", // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair)
</span><span class="cx"> "'\uFFFD'", // U+FFFD REPLACEMENT CHARACTER
</span><span class="cx">
</span><ins>+ "new Uint8Array()",
+ "new Uint8Array([0])",
+ "new Uint8Array([0, 0])",
+ "new Uint8Array([0, 1])",
+ "new Uint8Array([1])",
+ "new Uint8Array([1, 0])",
+ "new Uint8Array([1, 1])",
+ "new Uint8Array([255])",
+
</ins><span class="cx"> "[]",
</span><span class="cx">
</span><span class="cx"> "[-Infinity]",
</span><span class="lines">@@ -77,6 +86,15 @@
</span><span class="cx"> "['\uD834\uDD1E']", // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair)
</span><span class="cx"> "['\uFFFD']", // U+FFFD REPLACEMENT CHARACTER
</span><span class="cx">
</span><ins>+ "[new Uint8Array()]",
+ "[new Uint8Array([0])]",
+ "[new Uint8Array([0, 0])]",
+ "[new Uint8Array([0, 1])]",
+ "[new Uint8Array([1])]",
+ "[new Uint8Array([1, 0])]",
+ "[new Uint8Array([1, 1])]",
+ "[new Uint8Array([255])]",
+
</ins><span class="cx"> "[[]]",
</span><span class="cx">
</span><span class="cx"> "[[], []]",
</span><span class="lines">@@ -138,4 +156,4 @@
</span><span class="cx"> shouldBe("indexedDB.cmp(0, -0)", "0");
</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("store.createIndex('indexName', 'x')");
</span><span class="cx"> self.indexObject2 = evalAndLog("store.createIndex('indexName2', 'y', {unique: false})");
</span><span class="cx"> self.indexObject3 = evalAndLog("store.createIndex('zIndex', 'z', {unique: true})");
</span><ins>+ shouldNotThrow("store.createIndex('index4', 'path', undefined)");
</ins><span class="cx"> shouldBeFalse("indexObject2.unique");
</span><span class="cx"> shouldBeTrue("indexObject3.unique");
</span><span class="cx"> evalAndExpectExceptionClass("store.createIndex('failureIndex', 'zzz', true)", "TypeError");
</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("event.oldVersion", "0");
</del><ins>+ shouldBe("event.oldVersion", "1");
</ins><span class="cx"> shouldBe("event.newVersion", "2");
</span><span class="cx"> evalAndLog("db = event.target.result");
</span><span class="cx"> shouldBe("db.objectStoreNames.length", "0");
</span><span class="lines">@@ -78,7 +78,8 @@
</span><span class="cx"> {
</span><span class="cx"> preamble(evt);
</span><span class="cx"> evalAndLog("connection2 = event.target.result");
</span><del>- evalAndLog("connection2.onversionchange = connection2VersionChangeEvent");
</del><ins>+ connection2.onversionchange = unexpectedVersionChangeCallback;
+ evalAndLog("connection2.close()");
</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("db.version", "2");
</span><span class="cx"> }
</span><span class="cx">
</span><del>-function connection2VersionChangeEvent(evt)
-{
- preamble(evt);
- shouldBeEqualToString("event.type", "versionchange");
- shouldBe("event.oldVersion", "2");
- shouldBe("event.newVersion", "3");
- evalAndLog("connection2.close()");
-}
-
</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("gotUpgradeNeededEvent = true");
</span><span class="cx"> shouldBe("event.newVersion", "3");
</span><del>- shouldBe("event.oldVersion", "2");
</del><ins>+ shouldBe("event.oldVersion", "0");
</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("gotUpgradeNeededEvent");
</span><del>- shouldBe("event.target.result.objectStoreNames.length", "1");
</del><ins>+ shouldBe("event.target.result.objectStoreNames.length", "0");
</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("Check processing of pending version change requests - increasing versions.");
+
+indexedDBTest(null, function onConnection1Open(evt) {
+ preamble(evt);
+ db = event.target.result;
+
+ request = evalAndLog("indexedDB.open(dbname, 2)");
+ request.onblocked = connection2Blocked;
+ request.onupgradeneeded = connection2UpgradeNeeded;
+ request.onsuccess = connection2OpenSuccess;
+ request.onerror = unexpectedErrorCallback;
+
+ request = evalAndLog("indexedDB.open(dbname, 3)");
+ request.onblocked = connection3Blocked;
+ request.onupgradeneeded = connection3UpgradeNeeded;
+ request.onsuccess = connection3OpenSuccess;
+ request.onerror = unexpectedErrorCallback;
+
+ debug("");
+ debug("FIXME: The open call with higher version should execute first.");
+});
+
+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("db.close()");
+ }, 0);
+}
+
+function connection2UpgradeNeeded(evt)
+{
+ preamble(evt);
+ shouldBe("event.oldVersion", "1");
+ shouldBe("event.newVersion", "2");
+}
+
+function connection2OpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("db2 = event.target.result");
+ shouldBe("db2.version", "2");
+}
+
+function connection3Blocked(evt)
+{
+ preamble(evt);
+ evalAndLog("db2.close()");
+}
+
+function connection3UpgradeNeeded(evt)
+{
+ preamble(evt);
+ shouldBe("event.oldVersion", "2");
+ shouldBe("event.newVersion", "3");
+}
+
+function connection3OpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("db3 = event.target.result");
+ shouldBe("db3.version", "3");
+ 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("Check processing of pending version change requests - descending versions.");
+
+indexedDBTest(null, function onConnection1Open(evt) {
+ preamble(evt);
+ db = event.target.result;
+
+ request = evalAndLog("indexedDB.open(dbname, 3)");
+ request.onblocked = connection2Blocked;
+ request.onupgradeneeded = connection2UpgradeNeeded;
+ request.onsuccess = connection2OpenSuccess;
+ request.onerror = unexpectedErrorCallback;
+
+ request = evalAndLog("indexedDB.open(dbname, 2)");
+ 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("db.close()");
+ }, 0);
+}
+
+function connection3Blocked(evt)
+{
+ preamble(evt);
+}
+
+function connection2UpgradeNeeded(evt)
+{
+ preamble(evt);
+ shouldBe("event.oldVersion", "1");
+ shouldBe("event.newVersion", "3");
+}
+
+function connection2OpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("event.target.result.close()");
+ evalAndLog("db2 = event.target.result");
+ shouldBe("db2.version", "3");
+}
+
+function connection3Error(evt)
+{
+ preamble(evt);
+ shouldBeEqualToString("event.target.error.name", "VersionError");
+ 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("Check processing of pending version change requests - same versions.");
+
+indexedDBTest(null, function onConnection1Open(evt) {
+ preamble(evt);
+ db = event.target.result;
+
+ request = evalAndLog("indexedDB.open(dbname, 2)");
+ request.onblocked = connection2Blocked;
+ request.onupgradeneeded = connection2UpgradeNeeded;
+ request.onsuccess = connection2OpenSuccess;
+ request.onerror = unexpectedErrorCallback;
+
+ request = evalAndLog("indexedDB.open(dbname, 2)");
+ 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("db.close()");
+ }, 0);
+}
+
+function connection2UpgradeNeeded(evt)
+{
+ preamble(evt);
+ shouldBe("event.oldVersion", "1");
+ shouldBe("event.newVersion", "2");
+}
+
+function connection2OpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("db2 = event.target.result");
+ shouldBe("db2.version", "2");
+}
+
+function connection3OpenSuccess(evt)
+{
+ preamble(evt);
+ evalAndLog("db3 = event.target.result");
+ shouldBe("db3.version", "2");
+ 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("This should not be called: http://wkbug.com/71130");
</del><ins>+ debug("This should not be called: http://crbug.com/100123");
</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("request.webkitErrorMessage = " + request.webkitErrorMessage);
</del><ins>+ debug("request.error.message = " + request.error.message);
</ins><span class="cx"> evalAndLog("request = indexedDB.open(dbname, 4)");
</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("Test IndexedDB binary keys");
+
+indexedDBTest(prepareDatabase, testValidBinaryKeys);
+function prepareDatabase()
+{
+ db = event.target.result;
+ event.target.transaction.onabort = unexpectedAbortCallback;
+ objectStore = evalAndLog("db.createObjectStore('store');");
+ debug("");
+}
+
+function testValidBinaryKeys()
+{
+ preamble();
+ evalAndLog("trans = db.transaction('store', 'readwrite')");
+ evalAndLog("store = trans.objectStore('store')");
+
+ var n = 0, cases = [
+ "[]",
+ "[0]",
+ "[0, 0]",
+ "[0, 1]",
+ "[1]",
+ "[1, 0]",
+ "[1, 1]",
+ "[255]",
+ ];
+
+ (function testCase() {
+ if (!cases.length)
+ return;
+
+ key = cases.shift();
+ value = n++;
+
+ debug("");
+ request = evalAndLog("store.put(" + JSON.stringify(value) + ", new Uint8Array(" + key + "));");
+ request.onerror = unexpectedErrorCallback;
+ request.onsuccess = function() {
+ shouldBeEqualToString("request.result.toString()", "[object Uint8Array]");
+ shouldBe("[].slice.call(request.result).toString()", key + ".toString()");
+
+ request = evalAndLog("store.get(new Uint8Array(" + key + "));");
+ request.onerror = unexpectedErrorCallback;
+ request.onsuccess = function() {
+ shouldBe("request.result", JSON.stringify(value));
+ testCase();
+ };
+ };
+ }());
+
+ trans.oncomplete = testInvalidBinaryKeys;
+}
+
+function testInvalidBinaryKeys()
+{
+ preamble();
+ evalAndLog("trans = db.transaction('store', 'readwrite')");
+ evalAndLog("store = trans.objectStore('store')");
+
+ var cases = [
+ "new Uint8ClampedArray([1,2,3])",
+ "new Uint16Array([1,2,3])",
+ "new Uint32Array([1,2,3])",
+ "new Int8Array([1,2,3])",
+ "new Int16Array([1,2,3])",
+ "new Int32Array([1,2,3])",
+ "new Float32Array([1,2,3])",
+ "new Float64Array([1,2,3])",
+ "new Uint8Array([1,2,3]).buffer",
+ "new DataView(new Uint8Array([1,2,3]).buffer)"
+ ];
+
+ cases.forEach(function(testCase) {
+ debug("");
+ evalAndExpectException("store.put('value', " + testCase + ")", "0", "'DataError'");
+ });
+
+ 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("typeof store.clear", "function");
</span><span class="cx"> shouldBeTrue("'openCursor' in store");
</span><span class="cx"> shouldBeEqualToString("typeof store.openCursor", "function");
</span><ins>+ shouldBeTrue("'openKeyCursor' in store");
+ shouldBeEqualToString("typeof store.openKeyCursor", "function");
</ins><span class="cx"> shouldBeTrue("'createIndex' in store");
</span><span class="cx"> shouldBeEqualToString("typeof store.createIndex", "function");
</span><span class="cx"> shouldBeTrue("'index' in store");
</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("Test IndexedDB's objectStore.openKeyCursor + the cursor it produces in depth.");
+
+// In order of how it should be sorted by IndexedDB.
+self.testData = [
+ 1,
+ 2,
+ 3,
+ "a",
+ "b",
+ "c"
+];
+
+indexedDBTest(prepareDatabase);
+function prepareDatabase()
+{
+ db = event.target.result;
+ event.target.transaction.onabort = unexpectedAbortCallback;
+
+ evalAndLog("objectStore = db.createObjectStore('someObjectStore')");
+
+ debug("");
+ debug("Verify that specifying an invalid direction raises an exception:");
+ evalAndExpectExceptionClass("objectStore.openKeyCursor(0, 'invalid-direction')", "TypeError");
+ debug("");
+
+ self.nextToAdd = 0;
+ addData();
+}
+
+function addData()
+{
+ request = evalAndLog("objectStore.add('', testData[nextToAdd])");
+ request.onsuccess = ++self.nextToAdd < testData.length ? addData : scheduleTests;
+ request.onerror = unexpectedErrorCallback;
+}
+
+function scheduleTests()
+{
+ debug("Scheduling tests...");
+ self.scheduledTests = [];
+ for (var i = 0; i < 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 < 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("Running tests...");
+ 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 = "Next test: ";
+ if (lower !== null) {
+ str += "lower ";
+ if (lowerIsOpen)
+ str += "open ";
+ str += "bound is " + lower + "; ";
+ }
+ if (upper !== null) {
+ str += "upper ";
+ if (upperIsOpen)
+ str += "open ";
+ str += "bound is " + upper + "; ";
+ }
+ if (ascending)
+ str += "sorted ascending.";
+ else
+ str += "sorted descending.";
+
+ debug("");
+ 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] && (lowerIsOpen || upperIsOpen)) {
+ debug("Skipping illegal key range.");
+ runNextTest();
+ return;
+ }
+
+ var keyRange;
+ if (lower !== null && 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 < 0 || testData.length <= expectedIndex)
+ self.expectedIndex = null;
+ if (lower !== null && expectedIndex < lower)
+ self.expectedIndex = null;
+ if (upper !== null && upper < expectedIndex)
+ self.expectedIndex = null;
+ if (lower !== null && lowerIsOpen && expectedIndex <= lower)
+ self.expectedIndex = null;
+ if (upper !== null && upperIsOpen && upper <= expectedIndex)
+ self.expectedIndex = null;
+}
+
+function cursorIteration()
+{
+ if (expectedIndex === null) {
+ shouldBeNull("event.target.result");
+ runNextTest();
+ return;
+ }
+ if (event.target.result === null) {
+ testFailed("event.target.result should not be null.");
+ runNextTest();
+ return;
+ }
+
+ shouldBe("event.target.result.key", "testData[" + expectedIndex + "]");
+ 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 = "Next test: null key path ";
+ if (self.nullKeyRangeStep == 0) {
+ str += "sorted ascending.";
+ self.ascending = true;
+ self.expectedIndex = lower;
+ self.nullKeyRangeStep = 1;
+ } else if (self.nullKeyRangeStep == 1) {
+ str += "sorted descending.";
+ self.ascending = false;
+ self.expectedIndex = upper;
+ self.nullKeyRangeStep = 2;
+ } else {
+ finishJSTest();
+ return;
+ }
+
+ debug("");
+ 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("Test for crbug.com/108071");
</del><ins>+description("Regression test for http://crbug.com/108071");
</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("Error function called unexpectedly: (" + event.target.error.name + ") " + event.target.webkitErrorMessage);
</del><ins>+ testFailed("Error function called unexpectedly: (" + event.target.error.name + ") " + 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("Abort function called unexpectedly! Message: [" + e.target.webkitErrorMessage + "]");
</del><ins>+ testFailed("Abort function called unexpectedly! Message: [" + e.target.error.message + "]");
</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("ename", exceptionName, _quiet);
</span><span class="cx"> }
</span><ins>+ if (!_quiet)
+ debug("Exception message: " + 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 "Exception in toString()"; }};
</ins><span class="cx"> function startTest()
</span><span class="cx"> {
</span><span class="cx"> debug("");
</span><span class="lines">@@ -24,6 +25,10 @@
</span><span class="cx"> shouldBeNull("trans.error");
</span><span class="cx">
</span><span class="cx"> debug("");
</span><ins>+ debug("transaction() should throw if one of the DOMStringList items cannot be converted to a String:");
+ shouldThrow("db.transaction(['storeName', nonConvertibleToString])", "'Exception in toString()'");
+
+ debug("");
</ins><span class="cx"> debug("If IDBTransaction.abort() is explicitly called, IDBTransaction.error should be null:");
</span><span class="cx"> evalAndLog("trans.abort()");
</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("Transaction received abort event.");
</span><span class="cx"> shouldBeNonNull("trans.error");
</span><del>- debug("trans.webkitErrorMessage = " + trans.webkitErrorMessage);
- shouldBeNonNull("trans.webkitErrorMessage");
</del><ins>+ debug("trans.error.message = " + trans.error.message);
+ shouldBeNonNull("trans.error.message");
</ins><span class="cx"> shouldBe("trans.error", "request_error");
</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("trans.error");
</span><del>- debug("trans.webkitErrorMessage = " + trans.webkitErrorMessage);
- shouldBeNonNull("trans.webkitErrorMessage");
</del><ins>+ debug("trans.error.message = " + trans.error.message);
+ shouldBeNonNull("trans.error.message");
</ins><span class="cx"> shouldBe("trans.error.name", "'AbortError'");
</span><span class="cx"> testErrorFromCommit();
</span><span class="cx"> };
</span><span class="lines">@@ -112,10 +117,10 @@
</span><span class="cx"> debug("Transaction received abort event.");
</span><span class="cx"> shouldBeNonNull("trans.error");
</span><span class="cx"> shouldBe("trans.error.name", "'ConstraintError'");
</span><del>- debug("trans.webkitErrorMessage = " + trans.webkitErrorMessage);
- shouldBeNonNull("trans.webkitErrorMessage");
</del><ins>+ debug("trans.error.message = " + trans.error.message);
+ shouldBeNonNull("trans.error.message");
</ins><span class="cx"> debug("Note: This fails because of http://wkb.ug/37327");
</span><del>- shouldNotBe("trans.webkitErrorMessage.indexOf(indexName)", "-1");
</del><ins>+ shouldNotBe("trans.error.message.indexOf(indexName)", "-1");
</ins><span class="cx"> debug("");
</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("transaction.abort()");
</span><del>- // FIXME: Explicit db.close() call should not be necessary. http://wkbug.com/102298
- evalAndLog("db.close()");
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/set_version_blocked.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/setversion-blocked-by-versionchange-close.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/setversion-not-blocked.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="lines">@@ -550,6 +550,5 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-abort.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-active-flag.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-after-close.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-and-objectstore-calls.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-basics.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="lines">@@ -53,6 +53,5 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="lines">@@ -50,6 +50,5 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</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"> </script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-coordination-across-databases.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-coordination-within-database.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <script>
</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"> </script>
</span><del>-<script src=../../resources/js-test-post.js></script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-crash-on-abort.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-error.js" charset="utf-8"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-event-propagation.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
+
+dbname = "transaction-ordering.html"
+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>+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<script src="resources/shared.js"></script>
+<script>
+
+description("Verify Indexed DB transactions are ordered per spec");
+
+indexedDBTest(prepareDatabase, onOpen);
+
+function prepareDatabase(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ evalAndLog("store = db.createObjectStore('store')");
+}
+
+function onOpen(evt)
+{
+ preamble(evt);
+ evalAndLog("db = event.target.result");
+ debug("");
+ debug("Create in order tx1, tx2");
+ evalAndLog("tx1 = db.transaction('store', 'readwrite')");
+ evalAndLog("tx2 = db.transaction('store', 'readwrite')");
+ debug("");
+ debug("Use in order tx2, tx1");
+ evalAndLog("tx2.objectStore('store').get(0)");
+ evalAndLog("tx1.objectStore('store').get(0)");
+ debug("");
+ evalAndLog("order = []");
+
+ tx1.oncomplete = function(evt) {
+ debug("tx1 complete");
+ order.push(1);
+ if (order.length === 2) done();
+ };
+
+ tx2.oncomplete = function(evt) {
+ debug("tx1 complete");
+ 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 "readwrite" 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("areArraysEqual(order, [ 1, 2 ])");
+ finishJSTest();
+ }
+}
+
+
+</script>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-read-only.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-readwrite-exclusive.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-rollback.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-scope-sequencing.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-starvation.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 = "transaction-storeNames-required.html"
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/transaction-storeNames-required.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/unblocked-version-changes.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>startWorker('resources/unprefix.js');</script>
-<script src="../../resources/js-test-post.js"></script>
</del><ins>+<script>worker = startWorker('resources/unprefix.js');</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/unprefix.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/value-undefined.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/values-odd-types.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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 "PASS" messages, followed by "TEST COMPLETE".
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/version-change-abort.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/version-change-exclusive.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</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"> <html>
</span><span class="cx"> <head>
</span><del>-<script src="../../resources/js-test-pre.js"></script>
</del><ins>+<script src="../../resources/js-test.js"></script>
</ins><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script src="resources/versionchangerequest-activedomobject.js"></script>
</span><del>-<script src="../../resources/js-test-post.js"></script>
</del><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre>
</div>
</div>
</body>
</html>