<!doctype html>
<meta charset="utf-8">
<title>CSSOM: getComputedStyle returns no style for elements not in the tree</title>
<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle">
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="host">
  <div id="non-slotted">
    <div id="non-slotted-descendant"></div>
  </div>
</div>
<iframe srcdoc="<html></html>" style="display: none"></iframe>
<script>
function testNoComputedStyle(element, description, global) {
  test(function() {
    assert_true(!!element);
    let style = (global ? global : window).getComputedStyle(element);
    assert_true(!!style);
    assert_equals(style.length, 0);
    assert_equals(style.color, "");
  }, `getComputedStyle returns no style for ${description}`);
}

let detached = document.createElement('div');
testNoComputedStyle(detached, "detached element");

testNoComputedStyle(document.querySelector('iframe').contentDocument.documentElement,
                    "element in non-rendered iframe (display: none)");

testNoComputedStyle(document.querySelector('iframe').contentDocument.documentElement,
                    "element in non-rendered iframe (display: none) from iframe's window",
                    document.querySelector('iframe').contentWindow);

host.attachShadow({ mode: "open" });
testNoComputedStyle(document.getElementById('non-slotted'),
                    "element outside the flat tree");

testNoComputedStyle(document.getElementById('non-slotted-descendant'),
                    "descendant outside the flat tree");

let shadowRoot = detached.attachShadow({ mode: "open" });
shadowRoot.innerHTML = `
  <div id="detached-shadow-tree-descendant"></div>
`;
testNoComputedStyle(shadowRoot.getElementById('detached-shadow-tree-descendant'),
                    "shadow tree outside of flattened tree");
</script>
