| const EMPTY_TOPICS_HEADER = '();p=P0000000000000000000000000000000'; |
| |
| function test_topics_iframe_navigation_header( |
| test, has_browsing_topics_attribute, is_same_origin, expect_topics_header_available_func) { |
| const same_origin_src = '/browsing-topics/resources/check-topics-request-header-notify-parent.py'; |
| const cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' + |
| same_origin_src; |
| |
| let frame = document.createElement('iframe'); |
| frame.src = is_same_origin ? same_origin_src : cross_origin_src; |
| |
| if (has_browsing_topics_attribute) { |
| frame.browsingTopics = true; |
| } |
| |
| window.addEventListener('message', test.step_func(function handler(evt) { |
| if (evt.source === frame.contentWindow) { |
| expect_topics_header_available_func(evt.data); |
| |
| document.body.removeChild(frame); |
| window.removeEventListener('message', handler); |
| test.done(); |
| } |
| })); |
| |
| document.body.appendChild(frame); |
| } |
| |
| function expect_topics_header_unavailable(data) { |
| assert_equals(data.topicsHeader, 'NO_TOPICS_HEADER'); |
| } |
| |
| function expect_topics_header_available(data) { |
| // 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(data.topicsHeader, EMPTY_TOPICS_HEADER); |
| } |