Commit 634d909f authored by falken@chromium.org's avatar falken@chromium.org

Service Worker: respondWith() invokes stopImmediatePropagation()

As per spec discussion:
https://github.com/slightlyoff/ServiceWorker/issues/51#issuecomment-51172079

BUG=432827

Review URL: https://codereview.chromium.org/731433002

git-svn-id: svn://svn.chromium.org/blink/trunk@185357 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 3f396706
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharness-helpers.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="resources/test-helpers.js"></script>
<script>
promise_test(function(t) {
var script =
'resources/fetch-event-respond-with-stops-propagation-worker.js';
var scope = 'resources/simple.html';
return service_worker_unregister_and_register(t, script, scope)
.then(function(registration) {
return wait_for_activated(t, registration);
})
.then(function() {
return with_iframe(scope);
})
.then(function(frame) {
var channel = new MessageChannel();
var saw_message = new Promise(function(resolve) {
channel.port1.onmessage = function(e) { resolve(e.data); }
});
var worker = frame.contentWindow.navigator.serviceWorker.controller;
frame.remove();
worker.postMessage({port: channel.port2}, [channel.port2]);
return saw_message;
})
.then(function(message) {
assert_equals(message, 'PASS');
return service_worker_unregister_and_done(t, scope);
})
}, 'respondWith() invokes stopImmediatePropagation()');
</script>
var result = null;
self.addEventListener('message', function(event) {
event.data.port.postMessage(result);
});
self.addEventListener('fetch', function(event) {
if (!result)
result = 'PASS';
event.respondWith(new Response());
});
self.addEventListener('fetch', function(event) {
result = 'FAIL: fetch event propagated';
});
......@@ -33,6 +33,7 @@ bool FetchEvent::isReload() const
void FetchEvent::respondWith(ScriptState* scriptState, const ScriptValue& value, ExceptionState& exceptionState)
{
stopImmediatePropagation();
m_observer->respondWith(scriptState, value, exceptionState);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment