<!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>
