Index: third_party/WebKit/LayoutTests/http/tests/fetch/serviceworker-proxied/useragent-header-via-forwarding-worker.html |
diff --git a/third_party/WebKit/LayoutTests/http/tests/fetch/serviceworker-proxied/useragent-header-via-forwarding-worker.html b/third_party/WebKit/LayoutTests/http/tests/fetch/serviceworker-proxied/useragent-header-via-forwarding-worker.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..eab08944530fc1bc73370e91870abf245a9cc305 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/fetch/serviceworker-proxied/useragent-header-via-forwarding-worker.html |
@@ -0,0 +1,63 @@ |
+<!doctype html> |
+<script src = "/resources/testharness.js"></script> |
+<script src = "/resources/testharnessreport.js"></script> |
+<script src = "/serviceworker/resources/test-helpers.js"></script> |
+<script> |
+promise_test(test => { |
+ const SCOPE = '../resources/useragent-header-iframe.html'; |
+ const SCRIPT = '../resources/forwarding-worker.js'; |
horo
2016/08/24 01:38:33
missing this file?
|
+ |
+ let frame; |
+ |
+ let portToSW; |
+ |
+ function waitForMessageFromSW(expected_message) { |
+ return new Promise((resolve, reject) => { |
+ portToSW.onmessage = event => { |
+ try { |
+ assert_equals(event.data, expected_message); |
+ resolve(); |
+ } catch (e) { |
+ reject(e); |
+ } |
+ }; |
+ }); |
+ } |
+ |
+ return service_worker_unregister_and_register(test, SCRIPT, SCOPE) |
+ .then(r => { |
+ const worker = r.installing; |
+ |
+ const channel = new MessageChannel(); |
+ portToSW = channel.port1; |
+ const readyPromise = waitForMessageFromSW('READY'); |
+ worker.postMessage({port: channel.port2}, [channel.port2]); |
+ |
+ return Promise.all([wait_for_state(test, worker, 'activated'), readyPromise]); |
+ }) |
+ .then(() => { |
horo
2016/08/24 01:38:33
ditto
|
+ return with_iframe(SCOPE); |
+ }) |
+ .then(f => { |
+ frame = f; |
+ }) |
+ .then(() => { |
+ const onFetchPromise = waitForMessageFromSW('onfetch'); |
+ return Promise.all([frame.contentWindow.get_useragent(), onFetchPromise]); |
+ }) |
+ .then(v => { |
+ assert_true(v[0].length > 0); |
+ }) |
+ .then(() => { |
+ const onFetchPromise = waitForMessageFromSW('onfetch'); |
+ return Promise.all([frame.contentWindow.get_overridden_useragent(), onFetchPromise]); |
+ }) |
+ .then(v => { |
+ assert_equals(v[0], 'foobar'); |
+ }) |
+ .then(() => { |
+ frame.remove(); |
+ return service_worker_unregister(test, SCOPE); |
+ }); |
+ }, 'Check User-Agent header generation for requests proxied by the forwarding worker'); |
+</script> |