<!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  &lt;beidson@apple.com&gt;
+
+        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  &lt;rniwa@webkit.org&gt;
</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: '&lt;!--framePath //&lt;!--frame0--&gt;--&gt;'
</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: '&lt;!--framePath //&lt;!--frame1--&gt;--&gt;'
</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"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-    &lt;script&gt;
-        var frames = 2;
-        if (window.testRunner) {
-            testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
-            testRunner.waitUntilDone();
-        }
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><del>-        function decrement() {
-            --frames;
-            if (!frames &amp;&amp; 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;
-    &lt;/script&gt;
</del><ins>+function decrement() {
+    --frames;
+    if (!frames &amp;&amp; window.testRunner)
+        testRunner.notifyDone();
+}
+
+window.onmessage = decrement;
+&lt;/script&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">     &lt;p&gt;Both of these frames should successfully open the database:&lt;/p&gt;
</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: '&lt;!--framePath //&lt;!--frame0--&gt;--&gt;'
</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: '&lt;!--framePath //&lt;!--frame1--&gt;--&gt;'
</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"> &lt;head&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-    &lt;script&gt;
-        if (window.testRunner) {
-            testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
-            testRunner.waitUntilDone();
-            testRunner.setCanOpenWindows(true);
-            testRunner.setCloseRemainingWindowsWhenComplete(true);
-            internals.settings.setStorageBlockingPolicy('BlockThirdParty');
-        }
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><del>-        document.location = &quot;resources/document-for-cross-origin-worker-indexeddb.html&quot;
-    &lt;/script&gt;
</del><ins>+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.dumpChildFramesAsText();
+    testRunner.waitUntilDone();
+    testRunner.setCanOpenWindows(true);
+    testRunner.setCloseRemainingWindowsWhenComplete(true);
+    internals.settings.setStorageBlockingPolicy('BlockThirdParty');
+}
+
+document.location = &quot;resources/document-for-cross-origin-worker-indexeddb.html&quot;
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</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"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-    &lt;script&gt;
-        window.onload = function() {
-            var worker = new Worker('worker-for-indexeddb.js');
-            worker.postMessage(true);
-            worker.onmessage = function(event) {
-                for (var i = 0; i &lt; event.data.result.length; i++)
-                    document.write(event.data.result[i]);
-                window.parent.postMessage('DONE', '*');
-            };
-        };
-    &lt;/script&gt;
</del><ins>+&lt;script&gt;
+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 &lt; event.data.result.length; i++)
+            document.write(event.data.result[i]);
+        window.parent.postMessage('DONE', '*');
+    };
+};
+&lt;/script&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;/body&gt;
</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"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><del>-    &lt;script&gt;
-        var frames = 2;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+    
+var frames = 2;
</ins><span class="cx"> 
</span><del>-        function decrement() {
-            --frames;
-            if (!frames &amp;&amp; window.testRunner) {
-                internals.settings.setStorageBlockingPolicy('AllowAll');
-                testRunner.notifyDone();
-            }
-        }
</del><ins>+function decrement() {
+    --frames;
+    if (!frames &amp;&amp; window.testRunner) {
+        internals.settings.setStorageBlockingPolicy('AllowAll');
+        testRunner.notifyDone();
+    }
+}
</ins><span class="cx"> 
</span><del>-        window.onmessage = decrement;
-    &lt;/script&gt;
</del><ins>+window.onmessage = decrement;
+&lt;/script&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">     &lt;p&gt;The first iframe below should return a security error, and the second should successfully open the database.&lt;/p&gt;
</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 + '().&lt;br&gt;';
</del><ins>+            var request = self.indexedDB[method].call(self.indexedDB, args);
+            return 'Successfully called self.indexedDB.' + method + '().&lt;br&gt;';
</ins><span class="cx">         } catch (exception) {
</span><del>-            return 'self.webkitIndexedDB.' + method + '() threw an exception: ' + exception.name + '&lt;br&gt;';
</del><ins>+            return 'self.indexedDB.' + method + '() threw an exception: ' + exception.name + '&lt;br&gt;';
</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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/basics.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/basics.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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 = &quot;cursor-advance.js&quot;
</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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/cursor-advance.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/cursor-advance.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/deletedatabase-delayed-by-open-and-versionchange.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/deletedatabase-delayed-by-open-and-versionchange.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><span class="cx"> description(&quot;Regression test for WK82678 - don't commit after a blocked event&quot;);
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><del>-
</del><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+    
</ins><span class="cx"> description(&quot;Regression test for WK82678 - don't commit after a blocked event&quot;);
</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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/factory-basics.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/factory-basics.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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 = &quot;index-basics.js&quot;
</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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/index-basics.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/index-basics.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</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');&lt;/script&gt;
</span><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</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 = &quot;objectstore-basics.js&quot;
</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 &quot;function&quot;
</span><span class="cx"> PASS [Worker] 'openCursor' in store is true
</span><span class="cx"> PASS [Worker] typeof store.openCursor is &quot;function&quot;
</span><del>-PASS [Worker] 'openKeyCursor' in store is true
-PASS [Worker] typeof store.openKeyCursor is &quot;function&quot;
</del><span class="cx"> PASS [Worker] 'createIndex' in store is true
</span><span class="cx"> PASS [Worker] typeof store.createIndex is &quot;function&quot;
</span><span class="cx"> PASS [Worker] 'index' in store is true
</span><span class="lines">@@ -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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/objectstore-basics.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/objectstore-basics.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/open-twice.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/open-twice.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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"> &lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/pending-activity.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/pending-activity.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><span class="cx"> description(&quot;No crashes when there are event listeners in a worker on shutdown&quot;);
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><span class="cx"> description(&quot;No crashes when there are event listeners in a worker on shutdown&quot;);
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><span class="cx"> description(&quot;Implicitly terminating worker with blocked setVersion call should allow later open calls to proceed&quot;);
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><span class="cx"> description(&quot;Explicitly terminating worker with blocked call should allow later open calls to proceed&quot;);
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><span class="cx"> description(&quot;Explicitly terminating worker with blocked call should allow later open calls to proceed&quot;);
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
</ins><span class="cx"> 
</span><span class="cx"> description(&quot;Implicitly terminating worker with blocked setVersion call should allow later open calls to proceed&quot;);
</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 = &quot;transaction-complete-workers.js&quot;
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</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"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</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"> &lt;script src=&quot;resources/shared.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;script&gt;worker = startWorker('resources/unprefix.js');&lt;/script&gt;
</del><ins>+&lt;script&gt;
+if (window.internals)
+    window.internals.settings.setIndexedDBWorkersEnabled(true);
+worker = startWorker('resources/unprefix.js');
+&lt;/script&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="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  &lt;beidson@apple.com&gt;
+
+        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  &lt;rniwa@webkit.org&gt;
</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&lt;IDBResourceIdentifier&gt; 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&lt;IDBTransaction&gt; self;
</span><del>-        JSC::VM&amp; vm = JSDOMWindowBase::commonVM();
</del><ins>+        JSC::VM&amp; vm = context-&gt;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()) == &amp;operation);
</span><span class="cx">     ASSERT(currentThread() == m_database-&gt;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&lt;IDBOpenDBRequest&gt; IDBConnectionProxy::takeIDBOpenDBRequest(IDBOpenDBRequest&amp; request)
+{
+    ASSERT(request.originThreadID() == currentThread());
+
+    Locker&lt;Lock&gt; locker(m_openDBRequestMapLock);
+
+    auto mappedRequest = m_openDBRequestMap.take(request.resourceIdentifier());
+    ASSERT(mappedRequest.get() == &amp;request);
+
+    return mappedRequest;
+}
+
</ins><span class="cx"> void IDBConnectionProxy::completeOpenDBRequest(const IDBResultData&amp; resultData)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;IDBOpenDBRequest&gt; request;
</del><ins>+    IDBOpenDBRequest* request;
</ins><span class="cx">     {
</span><span class="cx">         Locker&lt;Lock&gt; 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&amp;);
</span><span class="cx">     void unregisterDatabaseConnection(IDBDatabase&amp;);
</span><span class="cx"> 
</span><ins>+    RefPtr&lt;IDBOpenDBRequest&gt; takeIDBOpenDBRequest(IDBOpenDBRequest&amp;);
+
</ins><span class="cx"> private:
</span><span class="cx">     void completeOpenDBRequest(const IDBResultData&amp;);
</span><span class="cx">     bool hasRecordOfTransaction(const IDBTransaction&amp;) 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-&gt;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&lt;void (const IDBResultData&amp;)&gt; oldCompleteFunction;
+        std::swap(m_completeFunction, oldCompleteFunction);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     const IDBResourceIdentifier&amp; 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-&gt;hasUniversalAccess())
+        origin-&gt;grantUniversalAccess();
+
+    setSecurityOriginPolicy(SecurityOriginPolicy::create(WTFMove(origin)));
</ins><span class="cx">     setContentSecurityPolicy(std::make_unique&lt;ContentSecurityPolicy&gt;(*this));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>