Index: LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js |
diff --git a/LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js b/LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js |
deleted file mode 100644 |
index 4129f8f8178f4f42f0aa135c383b31962ea1c99b..0000000000000000000000000000000000000000 |
--- a/LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js |
+++ /dev/null |
@@ -1,112 +0,0 @@ |
-/* |
- * worker-test-harness should be considered a temporary polyfill around |
- * testharness.js for supporting Service Worker based tests. It should not be |
- * necessary once the test harness is able to drive worker based tests natively. |
- * See https://github.com/w3c/testharness.js/pull/82 for status of effort to |
- * update upstream testharness.js. Once the upstreaming is complete, tests that |
- * reference worker-test-harness should be updated to directly import |
- * testharness.js. |
- */ |
- |
-// The following are necessary to appease attempts by testharness to access the |
-// DOM. |
-self.document = {getElementsByTagName: function() { return []; }}; |
-self.window = self; |
-self.parent = self; |
- |
-// An onload event handler is used to indicate to the testharness that the |
-// document has finished loading. At this point the test suite would be |
-// considered complete if there are no more pending tests and the test isn't |
-// marked as requring an explicit done() call. |
-// |
-// Since ServiceWorkers don't have an onload event, we monkey-patch |
-// addEventListener to rewire the event to be fired at oninstall which is |
-// functionally equivalent to onload. |
-(function() { |
- var previous_addEventListener = self.addEventListener; |
- self.addEventListener = function() { |
- if (arguments.length > 0 && arguments[0] == 'load') { |
- arguments[0] = 'install'; |
- } |
- previous_addEventListener.apply(this, arguments); |
- }; |
-})(); |
- |
-importScripts('/resources/testharness.js'); |
- |
-(function() { |
- // This prevents the worker from attempting to display test results using the |
- // DOM. |
- setup({output: false}); |
- |
- // Once the test are considered complete, this logic packages up all the |
- // results into a promise resolution so that it can be passed back to the |
- // client document when it connects. |
- var completion_promise = new Promise(function(resolve, reject) { |
- add_completion_callback(function(tests, harness_status) { |
- var results = { |
- tests: tests.map(function(test) { |
- return test.structured_clone(); |
- }), |
- status: harness_status.structured_clone() |
- }; |
- resolve(results); |
- }); |
- }); |
- |
- // The 'fetch_results' message is sent by the client document to signal that |
- // it is now ready to receive test results. It also includes a MessagePort |
- // which the worker should use to communicate. |
- self.addEventListener('message', function(ev) { |
- var message = ev.data; |
- if (message.type == 'fetch_results') { |
- var port = ev.ports[0]; |
- completion_promise.then(function(results) { |
- var message = { |
- type: 'complete', |
- tests: results.tests, |
- status: results.status |
- }; |
- port.postMessage(message); |
- }); |
- } |
- }); |
-})(); |
- |
-// 'promise_test' is a new kind of testharness test that handles some |
-// boilerplate for testing with promises. |
-function promise_test(func, name, properties) { |
- properties = properties || {}; |
- var test = async_test(name, properties); |
- Promise.resolve(test.step(func, test, test)) |
- .then(function() { test.done(); }) |
- .catch(test.step_func(function(value) { |
- throw value; |
- })); |
-} |
- |
-// Returns a promise that fulfills after the provided |promise| is fulfilled. |
-// The |test| succeeds only if |promise| rejects with an exception matching |
-// |code|. Accepted values for |code| follow those accepted for assert_throws(). |
-// The optional |description| describes the test being performed. |
-// E.g.: |
-// assert_promise_rejects( |
-// new Promise(...), // something that should throw an exception. |
-// 'NotFoundError', |
-// 'Should throw NotFoundError.'); |
-// |
-// assert_promise_rejects( |
-// new Promise(...), |
-// new TypeError(), |
-// 'Should throw TypeError'); |
-function assert_promise_rejects(promise, code, description) { |
- return promise.then( |
- function() { |
- throw 'assert_promise_rejects: ' + description + ' Promise did not throw.'; |
- }, |
- function(e) { |
- if (code !== undefined) { |
- assert_throws(code, function() { throw e; }, description); |
- } |
- }); |
-} |