<!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>[200521] trunk</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/200521">200521</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2016-05-06 14:04:25 -0700 (Fri, 06 May 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Modern IDB (Workers): Start running a lot of the workers tests.
https://bugs.webkit.org/show_bug.cgi?id=157424
Reviewed by Sam Weinig.
Source/WebCore:
No new tests (Covered by enabling a whole bunch of existing tests).
* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::stop): Call removeAllEventListeners() to clean up the Worker VM
before it shuts down.
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::stop): Call removeAllEventListeners()
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::IDBTransaction): Initialize with the correct VM.
(WebCore::IDBTransaction::stop): Call removeAllEventListeners()
(WebCore::IDBTransaction::operationDidComplete):
* Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::takeIDBOpenDBRequest):
(WebCore::IDBClient::IDBConnectionProxy::completeOpenDBRequest): Don't take the request from
the map, but rather let the request take itself from its appropriate thread.
* Modules/indexeddb/client/IDBConnectionProxy.h:
* Modules/indexeddb/client/TransactionOperation.h:
(WebCore::IDBClient::TransactionOperation::completed): Rework clearing out the completion
handler, as the handler itself might hold the last reference to `this`.
* page/SecurityOrigin.h:
(WebCore::SecurityOrigin::hasUniversalAccess):
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope): If the parent context's SecurityOrigin had
universal access, grant it to this one.
LayoutTests:
Many tests that obviously pass need updated expectations for the details of error messages.
Others just work right out of the box.
* TestExpectations: Enable some tests, and categorize remaining failures.
* http/tests/security/cross-origin-worker-indexeddb-allowed-expected.txt:
* http/tests/security/cross-origin-worker-indexeddb-allowed.html:
* http/tests/security/cross-origin-worker-indexeddb-expected.txt:
* http/tests/security/cross-origin-worker-indexeddb.html:
* http/tests/security/resources/cross-origin-iframe-for-worker-indexeddb.html:
* http/tests/security/resources/document-for-cross-origin-worker-indexeddb.html:
* http/tests/security/resources/worker-for-indexeddb.js:
* storage/indexeddb/basics-workers.html:
* storage/indexeddb/cursor-advance-workers-expected.txt:
* storage/indexeddb/cursor-advance-workers.html:
* storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html:
* storage/indexeddb/dont-commit-on-blocked-private.html:
* storage/indexeddb/dont-commit-on-blocked.html:
* storage/indexeddb/factory-basics-workers.html:
* storage/indexeddb/index-basics-workers-expected.txt:
* storage/indexeddb/index-basics-workers.html:
* storage/indexeddb/modern/workers-disabled.html:
* storage/indexeddb/objectstore-basics-workers-expected.txt:
* storage/indexeddb/objectstore-basics-workers.html:
* storage/indexeddb/open-twice-workers.html:
* storage/indexeddb/pending-activity-workers.html:
* storage/indexeddb/pending-version-change-on-exit-private.html:
* storage/indexeddb/pending-version-change-on-exit.html:
* storage/indexeddb/pending-version-change-stuck-private.html:
* storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html:
* storage/indexeddb/pending-version-change-stuck-works-with-terminate.html:
* storage/indexeddb/pending-version-change-stuck.html:
* storage/indexeddb/transaction-complete-workers-expected.txt:
* storage/indexeddb/transaction-complete-workers-private-expected.txt:
* storage/indexeddb/transaction-complete-workers-private.html:
* storage/indexeddb/transaction-complete-workers.html:
* storage/indexeddb/unprefix-workers.html:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddballowedexpectedtxt">trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddballowedhtml">trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddbexpectedtxt">trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddbhtml">trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecurityresourcescrossoriginiframeforworkerindexeddbhtml">trunk/LayoutTests/http/tests/security/resources/cross-origin-iframe-for-worker-indexeddb.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecurityresourcesdocumentforcrossoriginworkerindexeddbhtml">trunk/LayoutTests/http/tests/security/resources/document-for-cross-origin-worker-indexeddb.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecurityresourcesworkerforindexeddbjs">trunk/LayoutTests/http/tests/security/resources/worker-for-indexeddb.js</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbbasicsworkershtml">trunk/LayoutTests/storage/indexeddb/basics-workers.html</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="#trunkLayoutTestsstorageindexeddbdeletedatabasedelayedbyopenandversionchangeworkershtml">trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdontcommitonblockedprivatehtml">trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked-private.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbdontcommitonblockedhtml">trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbfactorybasicsworkershtml">trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html</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="#trunkLayoutTestsstorageindexeddbmodernworkersdisabledhtml">trunk/LayoutTests/storage/indexeddb/modern/workers-disabled.html</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="#trunkLayoutTestsstorageindexeddbopentwiceworkershtml">trunk/LayoutTests/storage/indexeddb/open-twice-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingactivityworkershtml">trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingversionchangeonexitprivatehtml">trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit-private.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingversionchangeonexithtml">trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingversionchangestuckprivatehtml">trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-private.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbpendingversionchangestuckworkswithterminateprivatehtml">trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.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="#trunkLayoutTestsstorageindexeddbtransactioncompleteworkersexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncompleteworkersprivateexpectedtxt">trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private-expected.txt</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncompleteworkersprivatehtml">trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbtransactioncompleteworkershtml">trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html</a></li>
<li><a href="#trunkLayoutTestsstorageindexeddbunprefixworkershtml">trunk/LayoutTests/storage/indexeddb/unprefix-workers.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBDatabasecpp">trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBRequestcpp">trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactioncpp">trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbclientIDBConnectionProxycpp">trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbclientIDBConnectionProxyh">trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbclientTransactionOperationh">trunk/Source/WebCore/Modules/indexeddb/client/TransactionOperation.h</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOriginh">trunk/Source/WebCore/page/SecurityOrigin.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopecpp">trunk/Source/WebCore/workers/WorkerGlobalScope.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/ChangeLog        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2016-05-06 Brady Eidson <beidson@apple.com>
+
+ Modern IDB (Workers): Start running a lot of the workers tests.
+ https://bugs.webkit.org/show_bug.cgi?id=157424
+
+ Reviewed by Sam Weinig.
+
+ Many tests that obviously pass need updated expectations for the details of error messages.
+
+ Others just work right out of the box.
+
+ * TestExpectations: Enable some tests, and categorize remaining failures.
+
+ * http/tests/security/cross-origin-worker-indexeddb-allowed-expected.txt:
+ * http/tests/security/cross-origin-worker-indexeddb-allowed.html:
+ * http/tests/security/cross-origin-worker-indexeddb-expected.txt:
+ * http/tests/security/cross-origin-worker-indexeddb.html:
+ * http/tests/security/resources/cross-origin-iframe-for-worker-indexeddb.html:
+ * http/tests/security/resources/document-for-cross-origin-worker-indexeddb.html:
+ * http/tests/security/resources/worker-for-indexeddb.js:
+ * storage/indexeddb/basics-workers.html:
+ * storage/indexeddb/cursor-advance-workers-expected.txt:
+ * storage/indexeddb/cursor-advance-workers.html:
+ * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html:
+ * storage/indexeddb/dont-commit-on-blocked-private.html:
+ * storage/indexeddb/dont-commit-on-blocked.html:
+ * storage/indexeddb/factory-basics-workers.html:
+ * storage/indexeddb/index-basics-workers-expected.txt:
+ * storage/indexeddb/index-basics-workers.html:
+ * storage/indexeddb/modern/workers-disabled.html:
+ * storage/indexeddb/objectstore-basics-workers-expected.txt:
+ * storage/indexeddb/objectstore-basics-workers.html:
+ * storage/indexeddb/open-twice-workers.html:
+ * storage/indexeddb/pending-activity-workers.html:
+ * storage/indexeddb/pending-version-change-on-exit-private.html:
+ * storage/indexeddb/pending-version-change-on-exit.html:
+ * storage/indexeddb/pending-version-change-stuck-private.html:
+ * storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html:
+ * storage/indexeddb/pending-version-change-stuck-works-with-terminate.html:
+ * storage/indexeddb/pending-version-change-stuck.html:
+ * storage/indexeddb/transaction-complete-workers-expected.txt:
+ * storage/indexeddb/transaction-complete-workers-private-expected.txt:
+ * storage/indexeddb/transaction-complete-workers-private.html:
+ * storage/indexeddb/transaction-complete-workers.html:
+ * storage/indexeddb/unprefix-workers.html:
+
</ins><span class="cx"> 2016-05-06 Ryosuke Niwa <rniwa@webkit.org>
</span><span class="cx">
</span><span class="cx"> FKA: No way to get focus from DOM to shadow DOM components (Was: HTML5 media controls not keyboard accessible)
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/TestExpectations        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -908,28 +908,19 @@
</span><span class="cx">
</span><span class="cx"> webkit.org/b/154619 storage/indexeddb/odd-strings.html [ Skip ]
</span><span class="cx">
</span><del>-# No workers support in Modern IDB yet
-http/tests/security/cross-origin-worker-indexeddb-allowed.html
-http/tests/security/cross-origin-worker-indexeddb.html
-storage/indexeddb/basics-workers.html
-storage/indexeddb/cursor-advance-workers.html
-storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html
-storage/indexeddb/dont-commit-on-blocked-private.html
-storage/indexeddb/dont-commit-on-blocked.html
-storage/indexeddb/factory-basics-workers.html
-storage/indexeddb/index-basics-workers.html
-storage/indexeddb/objectstore-basics-workers.html
-storage/indexeddb/open-twice-workers.html
-storage/indexeddb/pending-activity-workers.html
-storage/indexeddb/pending-version-change-on-exit-private.html
-storage/indexeddb/pending-version-change-on-exit.html
</del><ins>+# IDB workers tests that fail
+storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html [ Failure ]
+storage/indexeddb/dont-commit-on-blocked-private.html [ Failure ]
+storage/indexeddb/dont-commit-on-blocked.html [ Failure ]
+storage/indexeddb/factory-basics-workers.html [ Failure ]
+storage/indexeddb/pending-activity-workers.html [ Failure ]
+storage/indexeddb/unprefix-workers.html [ Failure ]
+
+# IDB workers tests that timeout
+storage/indexeddb/pending-version-change-stuck.html
</ins><span class="cx"> storage/indexeddb/pending-version-change-stuck-private.html
</span><del>-storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html
</del><span class="cx"> storage/indexeddb/pending-version-change-stuck-works-with-terminate.html
</span><del>-storage/indexeddb/pending-version-change-stuck.html
-storage/indexeddb/transaction-complete-workers-private.html
-storage/indexeddb/transaction-complete-workers.html
-storage/indexeddb/unprefix-workers.html
</del><ins>+storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html
</ins><span class="cx">
</span><span class="cx"> # Test's behavior specific to Legacy IDB with LevelDB backend
</span><span class="cx"> # Modern IDB is spec-compliant without supporting this behavior
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddballowedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed-expected.txt (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed-expected.txt        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed-expected.txt        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,15 +5,13 @@
</span><span class="cx"> --------
</span><span class="cx"> Frame: '<!--framePath //<!--frame0-->-->'
</span><span class="cx"> --------
</span><del>-Successfully called self.webkitIndexedDB.deleteDatabase().
-Successfully called self.webkitIndexedDB.open().
-Successfully called self.webkitIndexedDB.webkitGetDatabaseNames().
</del><ins>+Successfully called self.indexedDB.deleteDatabase().
+Successfully called self.indexedDB.open().
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> --------
</span><span class="cx"> Frame: '<!--framePath //<!--frame1-->-->'
</span><span class="cx"> --------
</span><del>-Successfully called self.webkitIndexedDB.deleteDatabase().
-Successfully called self.webkitIndexedDB.open().
-Successfully called self.webkitIndexedDB.webkitGetDatabaseNames().
</del><ins>+Successfully called self.indexedDB.deleteDatabase().
+Successfully called self.indexedDB.open().
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddballowedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -1,22 +1,25 @@
</span><span class="cx"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>- <script>
- var frames = 2;
- if (window.testRunner) {
- testRunner.dumpAsText();
- testRunner.dumpChildFramesAsText();
- testRunner.waitUntilDone();
- }
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><del>- function decrement() {
- --frames;
- if (!frames && window.testRunner)
- testRunner.notifyDone();
- }
</del><ins>+var frames = 2;
+if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.dumpChildFramesAsText();
+ testRunner.waitUntilDone();
+}
</ins><span class="cx">
</span><del>- window.onmessage = decrement;
- </script>
</del><ins>+function decrement() {
+ --frames;
+ if (!frames && window.testRunner)
+ testRunner.notifyDone();
+}
+
+window.onmessage = decrement;
+</script>
</ins><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <p>Both of these frames should successfully open the database:</p>
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddbexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-expected.txt (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-expected.txt        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-expected.txt        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,15 +5,13 @@
</span><span class="cx"> --------
</span><span class="cx"> Frame: '<!--framePath //<!--frame0-->-->'
</span><span class="cx"> --------
</span><del>-self.webkitIndexedDB.deleteDatabase() threw an exception: SecurityError
-self.webkitIndexedDB.open() threw an exception: SecurityError
-self.webkitIndexedDB.webkitGetDatabaseNames() threw an exception: SecurityError
</del><ins>+self.indexedDB.deleteDatabase() threw an exception: SecurityError
+self.indexedDB.open() threw an exception: SecurityError
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> --------
</span><span class="cx"> Frame: '<!--framePath //<!--frame1-->-->'
</span><span class="cx"> --------
</span><del>-Successfully called self.webkitIndexedDB.deleteDatabase().
-Successfully called self.webkitIndexedDB.open().
-Successfully called self.webkitIndexedDB.webkitGetDatabaseNames().
</del><ins>+Successfully called self.indexedDB.deleteDatabase().
+Successfully called self.indexedDB.open().
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycrossoriginworkerindexeddbhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/http/tests/security/cross-origin-worker-indexeddb.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -3,17 +3,20 @@
</span><span class="cx"> <head>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>- <script>
- if (window.testRunner) {
- testRunner.dumpAsText();
- testRunner.dumpChildFramesAsText();
- testRunner.waitUntilDone();
- testRunner.setCanOpenWindows(true);
- testRunner.setCloseRemainingWindowsWhenComplete(true);
- internals.settings.setStorageBlockingPolicy('BlockThirdParty');
- }
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><del>- document.location = "resources/document-for-cross-origin-worker-indexeddb.html"
- </script>
</del><ins>+if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.dumpChildFramesAsText();
+ testRunner.waitUntilDone();
+ testRunner.setCanOpenWindows(true);
+ testRunner.setCloseRemainingWindowsWhenComplete(true);
+ internals.settings.setStorageBlockingPolicy('BlockThirdParty');
+}
+
+document.location = "resources/document-for-cross-origin-worker-indexeddb.html"
+</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecurityresourcescrossoriginiframeforworkerindexeddbhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/resources/cross-origin-iframe-for-worker-indexeddb.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/resources/cross-origin-iframe-for-worker-indexeddb.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/http/tests/security/resources/cross-origin-iframe-for-worker-indexeddb.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -1,17 +1,20 @@
</span><span class="cx"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>- <script>
- window.onload = function() {
- var worker = new Worker('worker-for-indexeddb.js');
- worker.postMessage(true);
- worker.onmessage = function(event) {
- for (var i = 0; i < event.data.result.length; i++)
- document.write(event.data.result[i]);
- window.parent.postMessage('DONE', '*');
- };
- };
- </script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+
+window.onload = function() {
+ var worker = new Worker('worker-for-indexeddb.js');
+ worker.postMessage(true);
+ worker.onmessage = function(event) {
+ for (var i = 0; i < event.data.result.length; i++)
+ document.write(event.data.result[i]);
+ window.parent.postMessage('DONE', '*');
+ };
+};
+</script>
</ins><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> </body>
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecurityresourcesdocumentforcrossoriginworkerindexeddbhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/resources/document-for-cross-origin-worker-indexeddb.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/resources/document-for-cross-origin-worker-indexeddb.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/http/tests/security/resources/document-for-cross-origin-worker-indexeddb.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -1,19 +1,22 @@
</span><span class="cx"> <!DOCTYPE html>
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><del>- <script>
- var frames = 2;
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+
+var frames = 2;
</ins><span class="cx">
</span><del>- function decrement() {
- --frames;
- if (!frames && window.testRunner) {
- internals.settings.setStorageBlockingPolicy('AllowAll');
- testRunner.notifyDone();
- }
- }
</del><ins>+function decrement() {
+ --frames;
+ if (!frames && window.testRunner) {
+ internals.settings.setStorageBlockingPolicy('AllowAll');
+ testRunner.notifyDone();
+ }
+}
</ins><span class="cx">
</span><del>- window.onmessage = decrement;
- </script>
</del><ins>+window.onmessage = decrement;
+</script>
</ins><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <p>The first iframe below should return a security error, and the second should successfully open the database.</p>
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecurityresourcesworkerforindexeddbjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/resources/worker-for-indexeddb.js (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/resources/worker-for-indexeddb.js        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/http/tests/security/resources/worker-for-indexeddb.js        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -1,17 +1,16 @@
</span><span class="cx"> self.onmessage = function() {
</span><span class="cx"> function test(method, args) {
</span><span class="cx"> try {
</span><del>- var request = self.webkitIndexedDB[method].call(self.webkitIndexedDB, args);
- return 'Successfully called self.webkitIndexedDB.' + method + '().<br>';
</del><ins>+ var request = self.indexedDB[method].call(self.indexedDB, args);
+ return 'Successfully called self.indexedDB.' + method + '().<br>';
</ins><span class="cx"> } catch (exception) {
</span><del>- return 'self.webkitIndexedDB.' + method + '() threw an exception: ' + exception.name + '<br>';
</del><ins>+ return 'self.indexedDB.' + method + '() threw an exception: ' + exception.name + '<br>';
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> self.postMessage({
</span><span class="cx"> 'result': [
</span><span class="cx"> test('deleteDatabase', 'testDBName'),
</span><span class="cx"> test('open', 'testDBName'),
</span><del>- test('webkitGetDatabaseNames')
</del><span class="cx"> ]
</span><span class="cx"> });
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbbasicsworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/basics-workers.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/basics-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/basics-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/basics.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/basics.js');
+</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbcursoradvanceworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-workers-expected.txt        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -6,7 +6,6 @@
</span><span class="cx"> Starting worker: resources/cursor-advance.js
</span><span class="cx"> [Worker] indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
</span><span class="cx"> [Worker]
</span><del>-[Worker] dbname = "cursor-advance.js"
</del><span class="cx"> [Worker] indexedDB.deleteDatabase(dbname)
</span><span class="cx"> [Worker] indexedDB.open(dbname)
</span><span class="cx"> [Worker]
</span><span class="lines">@@ -182,13 +181,13 @@
</span><span class="cx"> 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.
</span><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: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</del><ins>+PASS [Worker] cursor.advance(-1) threw TypeError: Value -1 is outside the range [0, 4294967295]
</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: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</del><ins>+PASS [Worker] cursor.advance(0x100000000) threw TypeError: Value 4294967296 is outside the range [0, 4294967295]
</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: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range.
</del><ins>+PASS [Worker] cursor.advance(0x20000000000000) threw TypeError: Value 9007199254740992 is outside the range [0, 4294967295]
</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 (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/cursor-advance-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/cursor-advance.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/cursor-advance.js');
+</script>
</ins><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 (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/deletedatabase-delayed-by-open-and-versionchange.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+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="trunkLayoutTestsstorageindexeddbdontcommitonblockedprivatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked-private.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked-private.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked-private.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> description("Regression test for WK82678 - don't commit after a blocked event");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbdontcommitonblockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/dont-commit-on-blocked.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,7 +5,9 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><del>-
</del><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+
</ins><span class="cx"> description("Regression test for WK82678 - don't commit after a blocked event");
</span><span class="cx">
</span><span class="cx"> indexedDBTest(prepareDatabase, holdConnection);
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbfactorybasicsworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/factory-basics-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/factory-basics.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/factory-basics.js');
+</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexbasicsworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-workers-expected.txt        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -6,7 +6,6 @@
</span><span class="cx"> Starting worker: resources/index-basics.js
</span><span class="cx"> [Worker] indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
</span><span class="cx"> [Worker]
</span><del>-[Worker] dbname = "index-basics.js"
</del><span class="cx"> [Worker] indexedDB.deleteDatabase(dbname)
</span><span class="cx"> [Worker] indexedDB.open(dbname)
</span><span class="cx"> [Worker]
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbindexbasicsworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/index-basics-workers.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/index-basics-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/index-basics-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/index-basics.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/index-basics.js');
+</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbmodernworkersdisabledhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/modern/workers-disabled.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/modern/workers-disabled.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/modern/workers-disabled.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,13 +5,9 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><del>-
-/*
-IndexedDB for workers is currently disabled by default.
-Once that changes, we'll need the following code to keep this test passing.
</del><span class="cx"> if (window.internals)
</span><span class="cx"> window.internals.settings.setIndexedDBWorkersEnabled(false);
</span><del>-*/
</del><ins>+
</ins><span class="cx"> worker = startWorker('resources/workers-disabled.js');</script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbobjectstorebasicsworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers-expected.txt        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -6,7 +6,6 @@
</span><span class="cx"> Starting worker: resources/objectstore-basics.js
</span><span class="cx"> [Worker] indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
</span><span class="cx"> [Worker]
</span><del>-[Worker] dbname = "objectstore-basics.js"
</del><span class="cx"> [Worker] indexedDB.deleteDatabase(dbname)
</span><span class="cx"> [Worker] indexedDB.open(dbname)
</span><span class="cx"> [Worker]
</span><span class="lines">@@ -30,8 +29,6 @@
</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><del>-PASS [Worker] 'openKeyCursor' in store is true
-PASS [Worker] typeof store.openKeyCursor is "function"
</del><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">@@ -98,7 +95,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><del>-[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': An object could not be cloned.
</del><ins>+[Worker] Exception message: Failed to store record in an 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">@@ -114,7 +111,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><del>-[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</del><ins>+[Worker] Exception message: Failed to store record in an 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">@@ -152,13 +149,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><del>-[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</del><ins>+[Worker] Exception message: Failed to store record in an 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">@@ -175,31 +172,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><del>-[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store uses in-line keys and the key parameter was provided.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[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.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[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.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[Worker] Exception message: Failed to execute 'put' on 'IDBObjectStore': The parameter is not a valid key.
</del><ins>+[Worker] Exception message: Failed to store record in an 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">@@ -207,31 +204,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><del>-[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The object store uses in-line keys and the key parameter was provided.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[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.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[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.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.
</del><ins>+[Worker] Exception message: Failed to store record in an 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><del>-[Worker] Exception message: Failed to execute 'add' on 'IDBObjectStore': The parameter is not a valid key.
</del><ins>+[Worker] Exception message: Failed to store record in an 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 (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/objectstore-basics-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/objectstore-basics.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/objectstore-basics.js');
+</script>
</ins><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 (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/open-twice-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/open-twice-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/open-twice.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/open-twice.js');
+</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingactivityworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/pending-activity-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -2,5 +2,9 @@
</span><span class="cx"> <script src="../../resources/js-test.js"></script>
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/pending-activity.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/pending-activity.js');
+</script>
</ins><span class="cx"> </body>
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangeonexitprivatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit-private.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit-private.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit-private.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> description("No crashes when there are event listeners in a worker on shutdown");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangeonexithtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-on-exit.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> description("No crashes when there are event listeners in a worker on shutdown");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangestuckprivatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-private.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-private.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-private.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> description("Implicitly terminating worker with blocked setVersion call should allow later open calls to proceed");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangestuckworkswithterminateprivatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> description("Explicitly terminating worker with blocked call should allow later open calls to proceed");
</span><span class="cx">
</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 (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck-works-with-terminate.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> description("Explicitly terminating worker with blocked call should allow later open calls to proceed");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbpendingversionchangestuckhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/pending-version-change-stuck.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> description("Implicitly terminating worker with blocked setVersion call should allow later open calls to proceed");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncompleteworkersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-expected.txt        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -6,7 +6,6 @@
</span><span class="cx"> Starting worker: resources/transaction-complete-workers.js
</span><span class="cx"> [Worker] indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
</span><span class="cx"> [Worker]
</span><del>-[Worker] dbname = "transaction-complete-workers.js"
</del><span class="cx"> [Worker] indexedDB.deleteDatabase(dbname)
</span><span class="cx"> [Worker] indexedDB.open(dbname)
</span><span class="cx"> [Worker]
</span><span class="lines">@@ -21,7 +20,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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">@@ -51,7 +50,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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">@@ -64,7 +63,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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">@@ -81,7 +80,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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="trunkLayoutTestsstorageindexeddbtransactioncompleteworkersprivateexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private-expected.txt (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private-expected.txt        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private-expected.txt        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -20,7 +20,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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,7 +50,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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">@@ -63,7 +63,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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">@@ -80,7 +80,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><del>-[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction has finished.
</del><ins>+[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or 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="trunkLayoutTestsstorageindexeddbtransactioncompleteworkersprivatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers-private.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> worker = startWorker('resources/transaction-complete-workers.js');
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbtransactioncompleteworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/transaction-complete-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,8 @@
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><span class="cx"> <script>
</span><ins>+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx">
</span><span class="cx"> worker = startWorker('resources/transaction-complete-workers.js');
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsstorageindexeddbunprefixworkershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/storage/indexeddb/unprefix-workers.html (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/storage/indexeddb/unprefix-workers.html        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/LayoutTests/storage/indexeddb/unprefix-workers.html        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -5,6 +5,10 @@
</span><span class="cx"> <script src="resources/shared.js"></script>
</span><span class="cx"> </head>
</span><span class="cx"> <body>
</span><del>-<script>worker = startWorker('resources/unprefix.js');</script>
</del><ins>+<script>
+if (window.internals)
+ window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/unprefix.js');
+</script>
</ins><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/ChangeLog        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2016-05-06 Brady Eidson <beidson@apple.com>
+
+ Modern IDB (Workers): Start running a lot of the workers tests.
+ https://bugs.webkit.org/show_bug.cgi?id=157424
+
+ Reviewed by Sam Weinig.
+
+ No new tests (Covered by enabling a whole bunch of existing tests).
+
+ * Modules/indexeddb/IDBDatabase.cpp:
+ (WebCore::IDBDatabase::stop): Call removeAllEventListeners() to clean up the Worker VM
+ before it shuts down.
+
+ * Modules/indexeddb/IDBRequest.cpp:
+ (WebCore::IDBRequest::stop): Call removeAllEventListeners()
+
+ * Modules/indexeddb/IDBTransaction.cpp:
+ (WebCore::IDBTransaction::IDBTransaction): Initialize with the correct VM.
+ (WebCore::IDBTransaction::stop): Call removeAllEventListeners()
+ (WebCore::IDBTransaction::operationDidComplete):
+
+ * Modules/indexeddb/client/IDBConnectionProxy.cpp:
+ (WebCore::IDBClient::IDBConnectionProxy::takeIDBOpenDBRequest):
+ (WebCore::IDBClient::IDBConnectionProxy::completeOpenDBRequest): Don't take the request from
+ the map, but rather let the request take itself from its appropriate thread.
+ * Modules/indexeddb/client/IDBConnectionProxy.h:
+
+ * Modules/indexeddb/client/TransactionOperation.h:
+ (WebCore::IDBClient::TransactionOperation::completed): Rework clearing out the completion
+ handler, as the handler itself might hold the last reference to `this`.
+
+ * page/SecurityOrigin.h:
+ (WebCore::SecurityOrigin::hasUniversalAccess):
+
+ * workers/WorkerGlobalScope.cpp:
+ (WebCore::WorkerGlobalScope::WorkerGlobalScope): If the parent context's SecurityOrigin had
+ universal access, grant it to this one.
+
</ins><span class="cx"> 2016-05-06 Ryosuke Niwa <rniwa@webkit.org>
</span><span class="cx">
</span><span class="cx"> FKA: No way to get focus from DOM to shadow DOM components (Was: HTML5 media controls not keyboard accessible)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -285,6 +285,8 @@
</span><span class="cx">
</span><span class="cx"> ASSERT(currentThread() == m_originThreadID);
</span><span class="cx">
</span><ins>+ removeAllEventListeners();
+
</ins><span class="cx"> Vector<IDBResourceIdentifier> transactionIdentifiers;
</span><span class="cx"> transactionIdentifiers.reserveInitialCapacity(m_activeTransactions.size());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBRequestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -241,6 +241,9 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(currentThread() == m_originThreadID);
</span><span class="cx"> ASSERT(!m_contextStopped);
</span><ins>+
+ removeAllEventListeners();
+
</ins><span class="cx"> m_contextStopped = true;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -140,8 +140,11 @@
</span><span class="cx"> } else {
</span><span class="cx"> activate();
</span><span class="cx">
</span><ins>+ auto* context = scriptExecutionContext();
+ ASSERT(context);
+
</ins><span class="cx"> RefPtr<IDBTransaction> self;
</span><del>- JSC::VM& vm = JSDOMWindowBase::commonVM();
</del><ins>+ JSC::VM& vm = context->vm();
</ins><span class="cx"> vm.whenIdle([self, this]() {
</span><span class="cx"> deactivate();
</span><span class="cx"> });
</span><span class="lines">@@ -333,6 +336,8 @@
</span><span class="cx"> if (m_contextStopped)
</span><span class="cx"> return;
</span><span class="cx">
</span><ins>+ removeAllEventListeners();
+
</ins><span class="cx"> m_contextStopped = true;
</span><span class="cx">
</span><span class="cx"> if (isFinishedOrFinishing())
</span><span class="lines">@@ -1030,6 +1035,7 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(m_transactionOperationMap.get(operation.identifier()) == &operation);
</span><span class="cx"> ASSERT(currentThread() == m_database->originThreadID());
</span><ins>+ ASSERT(currentThread() == operation.originThreadID());
</ins><span class="cx">
</span><span class="cx"> m_transactionOperationMap.remove(operation.identifier());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbclientIDBConnectionProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -117,14 +117,26 @@
</span><span class="cx"> completeOpenDBRequest(resultData);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+RefPtr<IDBOpenDBRequest> IDBConnectionProxy::takeIDBOpenDBRequest(IDBOpenDBRequest& request)
+{
+ ASSERT(request.originThreadID() == currentThread());
+
+ Locker<Lock> locker(m_openDBRequestMapLock);
+
+ auto mappedRequest = m_openDBRequestMap.take(request.resourceIdentifier());
+ ASSERT(mappedRequest.get() == &request);
+
+ return mappedRequest;
+}
+
</ins><span class="cx"> void IDBConnectionProxy::completeOpenDBRequest(const IDBResultData& resultData)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(isMainThread());
</span><span class="cx">
</span><del>- RefPtr<IDBOpenDBRequest> request;
</del><ins>+ IDBOpenDBRequest* request;
</ins><span class="cx"> {
</span><span class="cx"> Locker<Lock> locker(m_openDBRequestMapLock);
</span><del>- request = m_openDBRequestMap.take(resultData.requestIdentifier());
</del><ins>+ request = m_openDBRequestMap.get(resultData.requestIdentifier());
</ins><span class="cx"> ASSERT(request);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbclientIDBConnectionProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -106,6 +106,8 @@
</span><span class="cx"> void registerDatabaseConnection(IDBDatabase&);
</span><span class="cx"> void unregisterDatabaseConnection(IDBDatabase&);
</span><span class="cx">
</span><ins>+ RefPtr<IDBOpenDBRequest> takeIDBOpenDBRequest(IDBOpenDBRequest&);
+
</ins><span class="cx"> private:
</span><span class="cx"> void completeOpenDBRequest(const IDBResultData&);
</span><span class="cx"> bool hasRecordOfTransaction(const IDBTransaction&) const;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbclientTransactionOperationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/client/TransactionOperation.h (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/client/TransactionOperation.h        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/Modules/indexeddb/client/TransactionOperation.h        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -66,7 +66,11 @@
</span><span class="cx"> ASSERT(m_completeFunction);
</span><span class="cx"> m_completeFunction(data);
</span><span class="cx"> m_transaction->operationDidComplete(*this);
</span><del>- m_completeFunction = { };
</del><ins>+
+ // m_completeFunction might be holding the last ref to this TransactionOperation,
+ // so we need to do this trick to null it out without first destroying it.
+ std::function<void (const IDBResultData&)> oldCompleteFunction;
+ std::swap(m_completeFunction, oldCompleteFunction);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> const IDBResourceIdentifier& identifier() const { return m_identifier; }
</span></span></pre></div>
<a id="trunkSourceWebCorepageSecurityOriginh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/SecurityOrigin.h (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/SecurityOrigin.h        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/page/SecurityOrigin.h        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -143,6 +143,7 @@
</span><span class="cx"> //
</span><span class="cx"> // WARNING: This is an extremely powerful ability. Use with caution!
</span><span class="cx"> void grantUniversalAccess();
</span><ins>+ bool hasUniversalAccess() const { return m_universalAccess; }
</ins><span class="cx">
</span><span class="cx"> void setStorageBlockingPolicy(StorageBlockingPolicy policy) { m_storageBlockingPolicy = policy; }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerGlobalScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.cpp (200520 => 200521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerGlobalScope.cpp        2016-05-06 21:01:32 UTC (rev 200520)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.cpp        2016-05-06 21:04:25 UTC (rev 200521)
</span><span class="lines">@@ -76,7 +76,11 @@
</span><span class="cx"> , m_connectionProxy(connectionProxy)
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><del>- setSecurityOriginPolicy(SecurityOriginPolicy::create(SecurityOrigin::create(url)));
</del><ins>+ auto origin = SecurityOrigin::create(url);
+ if (m_topOrigin->hasUniversalAccess())
+ origin->grantUniversalAccess();
+
+ setSecurityOriginPolicy(SecurityOriginPolicy::create(WTFMove(origin)));
</ins><span class="cx"> setContentSecurityPolicy(std::make_unique<ContentSecurityPolicy>(*this));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>