Title: [118246] trunk/LayoutTests
Revision
118246
Author
[email protected]
Date
2012-05-23 14:37:04 -0700 (Wed, 23 May 2012)

Log Message

There are no shared worker filesystem tests
https://bugs.webkit.org/show_bug.cgi?id=83828

Reviewed by David Levin.

* fast/filesystem/resources/file-writer-events.js:
Minor tweak to prevent double-import of js-test-pre.js
* fast/filesystem/resources/shared-worker-stub.js: Added.
Stub that imports js-test-pre.js for shared workers, so that we don't
actually import the test script until postMessage has somewhere to go.
* fast/filesystem/workers/file-writer-events-shared-worker-expected.txt: Added.
* fast/filesystem/workers/file-writer-events-shared-worker.html: Added.
The new test, running the same old file-writer-events.js that runs in
document and worker context.
* fast/js/resources/js-test-pre.js:
Previously it looked like startWorker supported creating shared workers;
there was an option, but it was a lie.  If you used it, it was
completely broken.  This adds a functional minimal implementation.
(startWorker.worker.port.onmessage):
(startWorker):
(.self.onconnect.workerPort.onmessage):
(.self.onconnect):
(.description):
(.testFailed):
(.testPassed):
(.finishJSTest):
(.debug):
* platform/chromium/test_expectations.txt:
DumpRenderTree and test_shell don't support shared workers; you have to
run this by hand in Chrome.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (118245 => 118246)


--- trunk/LayoutTests/ChangeLog	2012-05-23 21:15:21 UTC (rev 118245)
+++ trunk/LayoutTests/ChangeLog	2012-05-23 21:37:04 UTC (rev 118246)
@@ -1,3 +1,36 @@
+2012-04-12  Eric Uhrhane  <[email protected]>
+
+        There are no shared worker filesystem tests
+        https://bugs.webkit.org/show_bug.cgi?id=83828
+
+        Reviewed by David Levin.
+
+        * fast/filesystem/resources/file-writer-events.js:
+        Minor tweak to prevent double-import of js-test-pre.js
+        * fast/filesystem/resources/shared-worker-stub.js: Added.
+        Stub that imports js-test-pre.js for shared workers, so that we don't
+        actually import the test script until postMessage has somewhere to go.
+        * fast/filesystem/workers/file-writer-events-shared-worker-expected.txt: Added.
+        * fast/filesystem/workers/file-writer-events-shared-worker.html: Added.
+        The new test, running the same old file-writer-events.js that runs in
+        document and worker context.
+        * fast/js/resources/js-test-pre.js:
+        Previously it looked like startWorker supported creating shared workers;
+        there was an option, but it was a lie.  If you used it, it was
+        completely broken.  This adds a functional minimal implementation.
+        (startWorker.worker.port.onmessage):
+        (startWorker):
+        (.self.onconnect.workerPort.onmessage):
+        (.self.onconnect):
+        (.description):
+        (.testFailed):
+        (.testPassed):
+        (.finishJSTest):
+        (.debug):
+        * platform/chromium/test_expectations.txt:
+        DumpRenderTree and test_shell don't support shared workers; you have to
+        run this by hand in Chrome.
+
 2012-05-23  Christophe Dumez  <[email protected]>
 
         [EFL] webintents/web-intents-delivery-reuse.html is failing on EFL port

Modified: trunk/LayoutTests/fast/filesystem/resources/file-writer-events.js (118245 => 118246)


--- trunk/LayoutTests/fast/filesystem/resources/file-writer-events.js	2012-05-23 21:15:21 UTC (rev 118245)
+++ trunk/LayoutTests/fast/filesystem/resources/file-writer-events.js	2012-05-23 21:37:04 UTC (rev 118246)
@@ -1,6 +1,7 @@
 if (this.importScripts) {
     importScripts('fs-worker-common.js');
-    importScripts('../../js/resources/js-test-pre.js');
+    if (!('description' in self))  // Shared workers will already have imported this, and importing twice would break it.
+        importScripts('../../js/resources/js-test-pre.js');
     importScripts('file-writer-utils.js');
 }
 

Added: trunk/LayoutTests/fast/filesystem/resources/shared-worker-stub.js (0 => 118246)


--- trunk/LayoutTests/fast/filesystem/resources/shared-worker-stub.js	                        (rev 0)
+++ trunk/LayoutTests/fast/filesystem/resources/shared-worker-stub.js	2012-05-23 21:37:04 UTC (rev 118246)
@@ -0,0 +1,3 @@
+// We don't start js-test-pre.js directly as the worker script because it screws
+// up the base of all relative paths passed to importScripts.
+importScripts('../../js/resources/js-test-pre.js');
Property changes on: trunk/LayoutTests/fast/filesystem/resources/shared-worker-stub.js
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker-expected.txt (0 => 118246)


--- trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker-expected.txt	2012-05-23 21:37:04 UTC (rev 118246)
@@ -0,0 +1,11 @@
+[Worker] Test that FileWriter produces proper progress events.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+Starting worker: ../resources/shared-worker-stub.js
+[Worker] starting test
+PASS [Worker] Saw all the right events.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Property changes on: trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker.html (0 => 118246)


--- trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker.html	                        (rev 0)
+++ trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker.html	2012-05-23 21:37:04 UTC (rev 118246)
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+    <title>File Writer Events Shared Worker</title>
+    <script src=""
+ </head>
+ <body>
+    <div id="description"></div>
+    <div id="console"></div>
+    <script>
+        var worker = startWorker("../resources/shared-worker-stub.js", true /* shared */);
+        worker.port.postMessage("IMPORT:file-writer-events.js");
+    </script>
+    <script src=""
+ </body>
+</html>
+
+
+
Property changes on: trunk/LayoutTests/fast/filesystem/workers/file-writer-events-shared-worker.html
___________________________________________________________________

Added: svn:eol-style

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


--- trunk/LayoutTests/fast/js/resources/js-test-pre.js	2012-05-23 21:15:21 UTC (rev 118245)
+++ trunk/LayoutTests/fast/js/resources/js-test-pre.js	2012-05-23 21:37:04 UTC (rev 118246)
@@ -485,9 +485,7 @@
 {
     self.jsTestIsAsync = true;
     debug('Starting worker: ' + testScriptURL);
-    var worker = shared ? new SharedWorker(testScriptURL) : new Worker(testScriptURL);
-    if (shared)
-        worker.port._onmessage_ = function(event) { worker.onmessage(event); };
+    var worker = shared ? new SharedWorker(testScriptURL, "Shared Worker") : new Worker(testScriptURL);
     worker._onmessage_ = function(event)
     {
         var workerPrefix = "[Worker] ";
@@ -515,23 +513,52 @@
         finishJSTest();
     }
 
+    if (shared) {
+        worker.port._onmessage_ = function(event) { worker.onmessage(event); };
+        worker.port.start();
+    }
     return worker;
 }
 
 if (isWorker()) {
+    var workerPort = self;
+    if (self.name == "Shared Worker") {
+        self._onconnect_ = function(e) {
+            workerPort = e.ports[0];
+            workerPort._onmessage_ = function(event)
+            {
+                
+                var colon = event.data.indexOf(":");
+                if (colon == -1) {
+                    testFailed("Unrecognized message to shared worker: " + event.data);
+                    return;
+                }
+                var code = event.data.substring(0, colon);
+                var payload = event.data.substring(colon + 1);
+                try {
+                    if (code == "IMPORT")
+                        importScripts(payload);
+                    else
+                        testFailed("Unrecognized message to shared worker: " + event.data);
+                } catch (ex) {
+                    testFailed("Caught exception in shared worker onmessage: " + ex);
+                }
+            };
+        };
+    }
     description = function(msg, quiet) {
-        postMessage('DESC:' + msg);
+        workerPort.postMessage('DESC:' + msg);
     }
     testFailed = function(msg) {
-        postMessage('FAIL:' + msg);
+        workerPort.postMessage('FAIL:' + msg);
     }
     testPassed = function(msg) {
-        postMessage('PASS:' + msg);
+        workerPort.postMessage('PASS:' + msg);
     }
     finishJSTest = function() {
-        postMessage('DONE:');
+        workerPort.postMessage('DONE:');
     }
     debug = function(msg) {
-        postMessage(msg);
+        workerPort.postMessage(msg);
     }
 }

Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (118245 => 118246)


--- trunk/LayoutTests/platform/chromium/test_expectations.txt	2012-05-23 21:15:21 UTC (rev 118245)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt	2012-05-23 21:37:04 UTC (rev 118246)
@@ -466,6 +466,7 @@
 WONTFIX SKIP : storage/domstorage/quota.html = PASS FAIL
 
 // test_shell does not support shared workers
+WONTFIX SKIP : fast/filesystem/workers/file-writer-events-shared-worker.html = TIMEOUT
 WONTFIX SKIP : fast/workers/shared-worker-context-gc.html = TIMEOUT
 WONTFIX SKIP : fast/workers/shared-worker-event-listener.html = TIMEOUT
 WONTFIX SKIP : fast/workers/shared-worker-exception.html = TIMEOUT
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to