<!DOCTYPE html>
<html>
  <head>
    <script src="../resources/testharness.js"></script>
    <script src="../resources/testharnessreport.js"></script>
    <!-- The second language in the meta tag should be ignored. -->
    <meta http-equiv="content-language" content="en, es">
  </head>

  <body id="body" role="main">
    <p id="paragraph" lang="pl">Polish.
      <span id="span">Possibly in another language.</span>
    </p>

  <script>
    setup(() => {
      window.axBody = accessibilityController.accessibleElementById('body');
      window.axParagraph = accessibilityController.accessibleElementById('paragraph');
      window.axSpan = accessibilityController.accessibleElementById('span');
    });

    async_test((t) => {
      assert_equals(window.axBody.language, 'AXLanguage: en',
          'The meta tag has not been changed yet.');

      let meta = document.querySelector('meta[http-equiv="content-language"]');
      assert_not_equals(meta, undefined);
      meta.content = 'fr';

      assert_equals(window.axBody.language, 'AXLanguage: fr',
          'The contents of the meta tag have changed.');
      assert_equals(window.axParagraph.language, 'AXLanguage: pl',
          'The lang attribute should take priority over the meta tag.');
      assert_equals(window.axSpan.language, 'AXLanguage: pl',
          'The lang attribute should take priority over the meta tag.');

      meta.remove();
      let newMeta = document.createElement('meta');
      newMeta.httpEquiv = 'content-language';
      newMeta.content = 'ja';
      document.head.appendChild(newMeta);

      t.step_timeout(() => {
        assert_equals(window.axBody.language, 'AXLanguage: ja',
            'The whole of the meta tag has been replaced.');
        assert_equals(window.axParagraph.language, 'AXLanguage: pl',
            'The lang attribute should take priority over the meta tag.');
        assert_equals(window.axSpan.language, 'AXLanguage: pl',
            'The lang attribute should take priority over the meta tag.');

        newMeta.remove();
        meta.content = 'en';
        document.head.appendChild(meta);
        t.done();
      }, 0);
    }, 'Tests if dynamically changing the content-language meta tag is picked up by the accessibility component.');
    </script>
  </body>
</html>
