<!DOCTYPE html>
<title>Service Worker: Mixed content of fetch()</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/get-host-info.js?pipe=sub"></script>
<script src="resources/test-helpers.js"></script>
<body></body>
<script>
if (window.testRunner) {
  // In Chromium we need to change the setting to disallow displaying insecure
  // contents.
  testRunner.overridePreference("WebKitStrictMixedContentChecking", true);
}

async_test(function(t) {
    var host_info = get_host_info();
    window.addEventListener('message', t.step_func(on_message), false);
    with_iframe(
      host_info['HTTPS_ORIGIN'] + base_path() +
      'resources/fetch-mixed-content-iframe.html?target=outscope');
    function on_message(e) {
      assert_equals(e.data.results, 'finish');
      t.done();
    }
  }, 'Verify Mixed content of fetch() in a Service Worker');
</script>
