<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/test-helpers.sub.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) {
          t.add_cleanup(function() {
              return service_worker_unregister(t, scope);
            });

          return wait_for_state(t, registration.installing, 'activated');
        })
      .then(function() {
          return with_iframe(scope);
        })
      .then(function(frame) {
          t.add_cleanup(function() { frame.remove(); });
          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;

          worker.postMessage({port: channel.port2}, [channel.port2]);
          return saw_message;
        })
      .then(function(message) {
          assert_equals(message, 'PASS');
        })
  }, 'respondWith() invokes stopImmediatePropagation()');
</script>
