<!DOCTYPE html>
<html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/observe-entry.js"></script>

<body>
</body>
<script>
  const { HTTPS_ORIGIN } = get_host_info();

  promise_test(async t => {
    const iframe = document.createElement('iframe');
    iframe.src = `${HTTPS_ORIGIN}/resource-timing/resources/200.https.asis?1`;
    document.body.appendChild(iframe);
    t.add_cleanup(() => iframe.remove());
    const entry = await observe_entry(iframe.src);
    assert_not_equals(entry.secureConnectionStart, 0);
  }, 'secureConnectionStart is reported for iframes loaded over https in http context');

  promise_test(async t => {
    const object = document.createElement('object');
    object.data = `${HTTPS_ORIGIN}/resource-timing/resources/200.https.asis?2`;
    document.body.appendChild(object);
    t.add_cleanup(() => object.remove());
    const entry = await observe_entry(object.data);
    assert_not_equals(entry.secureConnectionStart, 0);
  }, 'secureConnectionStart is reported for object documents loaded over https in http context');
</script>

</html>
