<!doctype html>
<body>
  <script src=/resources/testharness.js></script>
  <script src=/resources/testharnessreport.js></script>
  <script src=/browsing-topics/resources/header-util.sub.js></script>
  <script>
    promise_test(async t => {
      const xhr = new XMLHttpRequest();

      let xhr_response = new Promise((resolve, reject) => {
        xhr.onreadystatechange = function() {
          if (xhr.readyState == XMLHttpRequest.DONE) {
            // An empty result indicates that the request was eligible for
            // topics. Currently, the web-platform-tests framework does not
            // support actually handling the topics request.
            assert_equals(xhr.responseText, EMPTY_TOPICS_HEADER);
            resolve();
          }
        }
      });


      xhr.open('GET', './resources/check-topics-request-header.py');
      xhr.deprecatedBrowsingTopics = true;
      xhr.send();

      await xhr_response;
    }, 'test XHR that sets the deprecatedBrowsingTopics attribtue');
  </script>
</body>
