Title: [109828] trunk/LayoutTests
Revision
109828
Author
[email protected]
Date
2012-03-05 17:41:54 -0800 (Mon, 05 Mar 2012)

Log Message

Basic IndexedDB shared worker test
https://bugs.webkit.org/show_bug.cgi?id=80189

Reviewed by Tony Chang.

* fast/js/resources/js-test-pre.js:
(startWorker.worker.port.onmessage):
* platform/chromium/test_expectations.txt:
* storage/indexeddb/basics-shared-workers-expected.txt: Added.
* storage/indexeddb/basics-shared-workers.html: Added.
* storage/indexeddb/resources/shared.js:
(.self.postMessage):
(.self.onconnect.self.postMessage):
(.self.onconnect):
(done):
(unexpectedErrorCallback):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (109827 => 109828)


--- trunk/LayoutTests/ChangeLog	2012-03-06 01:38:58 UTC (rev 109827)
+++ trunk/LayoutTests/ChangeLog	2012-03-06 01:41:54 UTC (rev 109828)
@@ -1,3 +1,22 @@
+2012-03-05  David Grogan  <[email protected]>
+
+        Basic IndexedDB shared worker test
+        https://bugs.webkit.org/show_bug.cgi?id=80189
+
+        Reviewed by Tony Chang.
+
+        * fast/js/resources/js-test-pre.js:
+        (startWorker.worker.port.onmessage):
+        * platform/chromium/test_expectations.txt:
+        * storage/indexeddb/basics-shared-workers-expected.txt: Added.
+        * storage/indexeddb/basics-shared-workers.html: Added.
+        * storage/indexeddb/resources/shared.js:
+        (.self.postMessage):
+        (.self.onconnect.self.postMessage):
+        (.self.onconnect):
+        (done):
+        (unexpectedErrorCallback):
+
 2012-03-05  Gavin Barraclough  <[email protected]>
 
         putByIndex should throw in strict mode

Modified: trunk/LayoutTests/fast/js/resources/js-test-pre.js (109827 => 109828)


--- trunk/LayoutTests/fast/js/resources/js-test-pre.js	2012-03-06 01:38:58 UTC (rev 109827)
+++ trunk/LayoutTests/fast/js/resources/js-test-pre.js	2012-03-06 01:41:54 UTC (rev 109828)
@@ -467,11 +467,13 @@
         layoutTestController.notifyDone();
 }
 
-function startWorker(testScriptURL)
+function startWorker(testScriptURL, shared)
 {
     self.jsTestIsAsync = true;
     debug('Starting worker: ' + testScriptURL);
-    var worker = new Worker(testScriptURL);
+    var worker = shared ? new SharedWorker(testScriptURL) : new Worker(testScriptURL);
+    if (shared)
+        worker.port._onmessage_ = function(event) { worker.onmessage(event); };
     worker._onmessage_ = function(event)
     {
         var workerPrefix = "[Worker] ";

Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (109827 => 109828)


--- trunk/LayoutTests/platform/chromium/test_expectations.txt	2012-03-06 01:38:58 UTC (rev 109827)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt	2012-03-06 01:41:54 UTC (rev 109828)
@@ -195,6 +195,7 @@
 WONTFIX SKIP : http/tests/inspector/network/network-shared-worker.html = PASS TIMEOUT FAIL
 WONTFIX SKIP : http/tests/security/contentSecurityPolicy/shared-worker-connect-src-allowed.html = TEXT
 WONTFIX SKIP : http/tests/security/contentSecurityPolicy/shared-worker-connect-src-blocked.html = TEXT
+WONTFIX SKIP : storage/indexeddb/basics-shared-workers.html = PASS TIMEOUT FAIL
 
 // test_shell does not support message ports
 BUGWK74459 SKIP : fast/workers/termination-with-port-messages.html = CRASH

Added: trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt (0 => 109828)


--- trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/basics-shared-workers-expected.txt	2012-03-06 01:41:54 UTC (rev 109828)
@@ -0,0 +1,55 @@
+[Worker] Test IndexedDB's basics.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/basics.js
+PASS [Worker] 'webkitIndexedDB' in self is true
+PASS [Worker] webkitIndexedDB == null is false
+PASS [Worker] 'webkitIDBCursor' in self is true
+PASS [Worker] webkitIDBCursor == null is false
+[Worker] webkitIndexedDB.open('basics')
+PASS [Worker] 'result' in request is true
+[Worker] Expecting exception from request.result
+PASS [Worker] Exception was thrown.
+PASS [Worker] code is webkitIDBDatabaseException.NOT_ALLOWED_ERR
+PASS [Worker] 'errorCode' in request is true
+[Worker] Expecting exception from request.errorCode
+PASS [Worker] Exception was thrown.
+PASS [Worker] code is webkitIDBDatabaseException.NOT_ALLOWED_ERR
+PASS [Worker] 'webkitErrorMessage' in request is true
+[Worker] Expecting exception from request.webkitErrorMessage
+PASS [Worker] Exception was thrown.
+PASS [Worker] code is webkitIDBDatabaseException.NOT_ALLOWED_ERR
+PASS [Worker] 'source' in request is true
+PASS [Worker] request.source is webkitIndexedDB
+PASS [Worker] 'transaction' in request is true
+PASS [Worker] request.transaction is null
+PASS [Worker] 'readyState' in request is true
+PASS [Worker] request.readyState is webkitIDBRequest.LOADING
+PASS [Worker] 'onsuccess' in request is true
+PASS [Worker] request.onsuccess is null
+PASS [Worker] 'onerror' in request is true
+PASS [Worker] request.onerror is null
+PASS [Worker] request.LOADING is 1
+PASS [Worker] request.DONE is 2
+PASS [Worker] 'result' in event.target is true
+PASS [Worker] !!event.target.result is true
+PASS [Worker] 'errorCode' in event.target is true
+PASS [Worker] event.target.errorCode is 0
+PASS [Worker] 'webkitErrorMessage' in event.target is true
+PASS [Worker] event.target.webkitErrorMessage is undefined.
+PASS [Worker] 'source' in event.target is true
+PASS [Worker] request.source is webkitIndexedDB
+PASS [Worker] 'transaction' in event.target is true
+PASS [Worker] event.target.transaction is null
+PASS [Worker] 'readyState' in request is true
+PASS [Worker] event.target.readyState is webkitIDBRequest.DONE
+PASS [Worker] 'onsuccess' in event.target is true
+PASS [Worker] 'onerror' in event.target is true
+PASS [Worker] event.target.LOADING is 1
+PASS [Worker] event.target.DONE is 2
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html (0 => 109828)


--- trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/basics-shared-workers.html	2012-03-06 01:41:54 UTC (rev 109828)
@@ -0,0 +1,12 @@
+<html>
+<head>
+<script src=""
+<script src=""
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script>startWorker('resources/basics.js', true /*shared*/);</script>
+<script src=""
+</body>
+</html>

Modified: trunk/LayoutTests/storage/indexeddb/resources/shared.js (109827 => 109828)


--- trunk/LayoutTests/storage/indexeddb/resources/shared.js	2012-03-06 01:38:58 UTC (rev 109827)
+++ trunk/LayoutTests/storage/indexeddb/resources/shared.js	2012-03-06 01:41:54 UTC (rev 109828)
@@ -1,9 +1,33 @@
 var jsTestIsAsync = true;
+if (self.importScripts && !self.postMessage) {
+    // Shared worker.  Make postMessage send to the newest client, which in
+    // our tests is the only client.
 
+    // Store messages for sending until we have somewhere to send them.
+    self.postMessage = function(message)
+    {
+        if (typeof self.pendingMessages === "undefined")
+            self.pendingMessages = [];
+        self.pendingMessages.push(message);
+    };
+    self._onconnect_ = function(event)
+    {
+        self.postMessage = function(message)
+        {
+            event.ports[0].postMessage(message);
+        };
+        // Offload any stored messages now that someone has connected to us.
+        if (typeof self.pendingMessages === "undefined")
+            return;
+        while (self.pendingMessages.length)
+            event.ports[0].postMessage(self.pendingMessages.shift());
+    };
+}
+
 function done()
 {
     isSuccessfullyParsed();
-    if (window.layoutTestController)
+    if (self.layoutTestController)
         layoutTestController.notifyDone()
 }
 
@@ -13,7 +37,7 @@
     done();
 }
 
-function unexpectedErrorCallback()
+function unexpectedErrorCallback(event)
 {
     testFailed("Error function called unexpectedly: (" + event.target.errorCode + ") " + event.target.webkitErrorMessage);
     done();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to