<!DOCTYPE html>
<html>
  <head>
    <title>CSS Shadow Parts - Invalidation change exportparts forward</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(part-forwarded) { color: red; }</style>
    <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"><custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded"></custom-element-inner></template>
    The following text should be green:
    <custom-element-outer id="c-e-outer"></custom-element-outer>
    <script>
      "use strict";
      test(function() {
        const part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
        const before = window.getComputedStyle(part).color;
        getElementByShadowIds(document, ["c-e-outer", "c-e-inner"]).setAttribute("exportparts", "new-exportparts");
        const after = window.getComputedStyle(part).color;
        assert_not_equals(before, after);
      }, "Part in selected host changed color");
    </script>
  </body>
</html>
