Here are the changes needed to achieve this:
* We tag each message posted to the framework with a context argument.
context can be one of "Window", "Worker" or "ServiceWorker". In the
places where we handle messages, we only handle the ones corresponding
to the context that we expect.
* We use Promise.all in order to interleave the execution of the tests.
This has the nice property of actually getting the tests run
simultaneously on multi-core machines.
* For ease of debugging test failures, we print the context from which
each test message is coming from.
* In order for the tests that are run in parallel to not step on each
other's toes, we introduce a global `context' variable that the test
script can use to create names that do not clash with concurrent
test runs. For example, instead of `caches.open("foo")', one must now
use: `caches.open("foo" + context)'.
* The existing tests are modified based on the above.
* When running the tests in parallel, the service worker may end up
controlling both frame.html and message_receiver.html. The hunk at
the end of worker_wrapper.js is intended to ensure that we will
always be communicating with message_receiver.html.
* An order argument has been added to runTests which can be set to
"sequential" in order to run the tests in different contexts in
parallel. If the argument is omitted, the default is "parallel".
An explanation of the Mozilla Source Code Directory Structure and links to
project pages with documentation can be found at:
https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure
For information on how to build Mozilla from the source code, see:
http://developer.mozilla.org/en/docs/Build_Documentation
To have your bug fix / feature added to Mozilla, you should create a patch and
submit it to Bugzilla (https://bugzilla.mozilla.org). Instructions are at:
http://developer.mozilla.org/en/docs/Creating_a_patch
http://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree
If you have a question about developing Mozilla, and can't find the solution
on http://developer.mozilla.org, you can try asking your question in a
mozilla.* Usenet group, or on IRC at irc.mozilla.org. [The Mozilla news groups
are accessible on Google Groups, or news.mozilla.org with a NNTP reader.]
You can download nightly development builds from the Mozilla FTP server.
Keep in mind that nightly builds, which are used by Mozilla developers for
testing, may be buggy. Firefox nightlies, for example, can be found at:
ftp://ftp.mozilla.org/pub/firefox/nightly/latest-trunk/
- or -
http://nightly.mozilla.org/