<!DOCTYPE html>
<html>
  <head>
    <title>CSS Shadow Parts - Chaining Invalid Selector</title>
    <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
    <link href="http://www.google.com/" rel="author" title="Google">
    <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="support/shadow-helper.js"></script>
  </head>
  <body>
    <style>#c-e-outer::part(c-e-part)::part(partp) { color: red; }</style>
    <div>
      It's invalid to use 2 pseudoelements in a selector but if somehow it becomes valid,
      it should not expose the internal structure of the shadow tree.
    </div>
    <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
    <template id="custom-element-inner-template">
      <style>span { color: green; }</style>
      <span id="part" part="partp">This text</span>
    </template>
    <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
    <template id="custom-element-outer-template">
      The following text should be green:
      <custom-element-inner id="c-e-inner" part="c-e-part"></custom-element-inner>
    </template>
    <custom-element-outer id="c-e-outer"></custom-element-outer>
    <script>
      "use strict";
      const colorGreen = "rgb(0, 128, 0)";
      test(function() {
        const el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
        assert_equals(window.getComputedStyle(el).color, colorGreen);
      }, "::part cannot be chained to reach elements in the inner host");
      test(function() {
        assert_equals(document.getElementsByTagName("body")[0].style.length, 0);
      }, "Chained ::part selectors are dropped");
    </script>
  </body>
</html>
