mirror of
https://github.com/servo/servo.git
synced 2025-07-13 18:33:40 +01:00
68 lines
2.6 KiB
Python
Executable file
68 lines
2.6 KiB
Python
Executable file
#!/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 = \
|
|
'<meta name="referrer" content="%s">' % delivery_value
|
|
elif delivery_method == 'http-rp':
|
|
meta = \
|
|
"<!-- No meta: Referrer policy delivered via HTTP headers. -->"
|
|
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())
|