#!/usr/bin/env python import os import sys sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'common', 'security-features', 'tools')) import generate class ReferrerPolicyConfig(object): def __init__(self): self.selection_pattern = '%(delivery_method)s/' + \ '%(origin)s/' + \ '%(source_protocol)s-%(target_protocol)s/' + \ '%(subresource)s/' + \ '%(redirection)s/' self.test_file_path_pattern = '%(spec_name)s/' + self.selection_pattern + \ '%(name)s.%(source_protocol)s.html' self.test_description_template = '''The referrer URL is %(referrer_url)s when a document served over %(source_protocol)s requires an %(target_protocol)s sub-resource via %(subresource)s using the %(delivery_method)s delivery method with %(redirection)s and when the target request is %(origin)s.''' self.test_page_title_template = 'Referrer-Policy: %s' self.helper_js = '/referrer-policy/generic/referrer-policy-test-case.js?pipe=sub' # For debug target only. self.sanity_checker_js = '/referrer-policy/generic/sanity-checker.js' self.spec_json_js = '/referrer-policy/spec_json.js' self.test_case_name = 'ReferrerPolicyTestCase' script_directory = os.path.dirname(os.path.abspath(__file__)) self.spec_directory = os.path.abspath(os.path.join(script_directory, '..', '..')) def handleDelivery(self, selection, spec): delivery_method = selection['delivery_method'] delivery_value = spec['referrer_policy'] meta = '' headers = [] if delivery_value != None: if delivery_method == 'meta-referrer': meta = \ '' % delivery_value elif delivery_method == 'http-rp': meta = \ "" headers.append('Referrer-Policy: ' + '%s' % delivery_value) # TODO(kristijanburnik): Limit to WPT origins. headers.append('Access-Control-Allow-Origin: *') elif delivery_method == 'attr-referrer': # attr-referrer is supported by the JS test wrapper. pass elif delivery_method == 'rel-noreferrer': # rel=noreferrer is supported by the JS test wrapper. pass else: raise ValueError('Not implemented delivery_method: ' \ + delivery_method) return {"meta": meta, "headers": headers} if __name__ == '__main__': generate.main(ReferrerPolicyConfig())