test_anchor_area_referrer.html (4707B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test anchor and area policy attribute for Bug 1174913</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 8 9 <!-- 10 Testing that anchor and area referrer attributes are honoured correctly 11 * anchor tag with referrer attribute (generate-anchor-policy-test) 12 https://bugzilla.mozilla.org/show_bug.cgi?id=1174913 13 --> 14 15 <script type="application/javascript"> 16 17 SimpleTest.requestLongerTimeout(2); 18 19 const SJS = "://example.com/tests/dom/base/test/referrer_testserver.sjs?"; 20 const PARAMS = ["ATTRIBUTE_POLICY", "NEW_ATTRIBUTE_POLICY", "META_POLICY", "REL", "SCHEME_FROM", "SCHEME_TO"]; 21 22 const testCases = [ 23 {ACTION: ["generate-anchor-policy-test", "generate-area-policy-test"], 24 TESTS: [ 25 {ATTRIBUTE_POLICY: 'unsafe-url', 26 NAME: 'unsafe-url-with-origin-in-meta', 27 META_POLICY: 'origin', 28 DESC: "unsafe-url (anchor) with origin in meta", 29 RESULT: 'full'}, 30 {ATTRIBUTE_POLICY: 'origin', 31 NAME: 'origin-with-unsafe-url-in-meta', 32 META_POLICY: 'unsafe-url', 33 DESC: "origin (anchor) with unsafe-url in meta", 34 RESULT: 'origin'}, 35 {ATTRIBUTE_POLICY: 'no-referrer', 36 NAME: 'no-referrer-with-origin-in-meta', 37 META_POLICY: 'origin', 38 DESC: "no-referrer (anchor) with origin in meta", 39 RESULT: 'none'}, 40 {ATTRIBUTE_POLICY: 'same-origin', 41 NAME: 'same-origin-with-origin-in-meta', 42 META_POLICY: 'origin', 43 DESC: "same-origin with origin in meta", 44 RESULT: 'full'}, 45 {NAME: 'no-referrer-in-meta', 46 META_POLICY: 'no-referrer', 47 DESC: "no-referrer in meta", 48 RESULT: 'none'}, 49 50 // Test if element attr would override meta referr policy. 51 52 // 1. Downgrade. 53 {ATTRIBUTE_POLICY: 'no-referrer-when-downgrade', 54 NAME: 'origin-in-meta-downgrade-in-attr', 55 META_POLICY: 'origin', 56 DESC: 'origin in meta downgrade in attr', 57 SCHEME_FROM: 'https', 58 SCHEME_TO: 'http', 59 RESULT: 'none'}, 60 {ATTRIBUTE_POLICY: 'strict-origin', 61 NAME: 'origin-in-meta-strict-origin-in-attr', 62 META_POLICY: 'origin', 63 DESC: 'origin in meta strict-origin in attr', 64 SCHEME_FROM: 'https', 65 SCHEME_TO: 'http', 66 RESULT: 'none'}, 67 {ATTRIBUTE_POLICY: 'strict-origin-when-cross-origin', 68 NAME: 'origin-in-meta-strict-origin-when-cross-origin-in-attr', 69 META_POLICY: 'origin', 70 DESC: 'origin in meta strict-origin-when-cross-origin in attr', 71 SCHEME_FROM: 'https', 72 SCHEME_TO: 'http', 73 RESULT: 'none'}, 74 75 // 2. No downgrade. 76 {ATTRIBUTE_POLICY: 'no-referrer-when-downgrade', 77 NAME: 'origin-in-meta-downgrade-in-attr', 78 META_POLICY: 'origin', 79 DESC: 'origin in meta downgrade in attr', 80 SCHEME_FROM: 'https', 81 SCHEME_TO: 'https', 82 RESULT: 'full'}, 83 {ATTRIBUTE_POLICY: 'strict-origin', 84 NAME: 'origin-in-meta-strict-origin-in-attr', 85 META_POLICY: 'origin', 86 DESC: 'origin in meta strict-origin in attr', 87 SCHEME_FROM: 'https', 88 SCHEME_TO: 'https', 89 RESULT: 'origin'}, 90 {ATTRIBUTE_POLICY: 'strict-origin-when-cross-origin', 91 NAME: 'origin-in-meta-strict-origin-when-cross-origin-in-attr', 92 META_POLICY: 'origin', 93 DESC: 'origin in meta strict-origin-when-cross-origin in attr', 94 SCHEME_FROM: 'https', 95 SCHEME_TO: 'https', 96 RESULT: 'full'}, 97 {ATTRIBUTE_POLICY: 'strict-origin-when-cross-origin', 98 NAME: 'strict-origin-when-cross-origin-with-origin-in-meta', 99 META_POLICY: 'origin', 100 SCHEME_FROM: 'http', 101 SCHEME_TO: 'https', 102 DESC: "strict-origin-when-cross-origin with origin in meta", 103 RESULT: 'origin'}, 104 {ATTRIBUTE_POLICY: 'same-origin', 105 NAME: 'same-origin-with-origin-in-meta', 106 META_POLICY: 'origin', 107 SCHEME_FROM: 'http', 108 SCHEME_TO: 'https', 109 DESC: "same-origin with origin in meta", 110 RESULT: 'none'}, 111 112 // End of element attr overriding test.. 113 114 {ATTRIBUTE_POLICY: 'origin', 115 NAME: 'origin-with-no-meta', 116 META_POLICY: '', 117 DESC: "origin (anchor) with no meta", 118 RESULT: 'origin'}]} 119 ]; 120 </script> 121 <script type="application/javascript" src="/tests/dom/base/test/referrer_helper.js"></script> 122 </head> 123 <body onload="tests.next();"> 124 <iframe id="testframe"></iframe> 125 </body> 126 </html>