file_resource_timing_nocors.html (6913B)
1 <!-- 2 Any copyright is dedicated to the Public Domain. 3 http://creativecommons.org/publicdomain/zero/1.0/ 4 --> 5 6 <!DOCTYPE html> 7 <html> 8 <head> 9 <meta charset="utf-8"> 10 <link rel="stylesheet" type="text/css" href="http://mochi.test:8888/tests/SimpleTest/test.css?resource-timing-nocors"/> 11 12 <!-- 13 This document has the origin http://mochi.test:8888. 14 15 The resource timing of any all sub-resources should be reported, except for 16 any sub-resources of any cross-origin resources that are loaded. 17 18 Note that the resource timing of the original cross-origin resource should 19 itself be reported. The goal here is to not reveal which sub-resources are 20 loaded by any cross-origin resources (the fact that any given cross-origin 21 resource itself is loaded is known to the original origin). 22 23 In the comments below, the following annotations apply: 24 25 [r] - this resource should be reported by performance.getEntries() 26 [!] - this resource should be excluded from performance.getEntries() 27 --> 28 29 30 <!-- 1. [r] http://mochi.test:8888 , generateCss.sjs?A 31 [r] http://mochi.test:8888 , generateCss.sjs?B 32 --> 33 <link rel="stylesheet" type="text/css" href="generateCss.sjs?A"/> 34 35 36 <!-- 2. [r] http://example.com , generateCss.sjs?C 37 [!] http://example.com , generateCss.sjs?D 38 --> 39 <link rel="stylesheet" type="text/css" href="http://example.com/tests/dom/tests/mochitest/general/generateCss.sjs?C"/> 40 41 42 <!-- 3. [r] http://example.com , generateCss.sjs?E 43 [!] http://mochi.test:8888 , generateCss.sjs?F 44 --> 45 <link rel="stylesheet" type="text/css" href="http://example.com/tests/dom/tests/mochitest/general/generateCss.sjs?E"/> 46 47 48 <!-- 4. [r] http://mochi.test:8888 , generateCss.sjs?G 49 [r] http://mochi.test:8888 , generateCss.sjs?H 50 [r] http://example.com , generateCss.sjs?I 51 [!] http://example.com , generateCss.sjs?J 52 [r] http://example.org , generateCss.sjs?K 53 [!] http://example.org , generateCss.sjs?L 54 [!] http://example.org , generateCss.sjs?M 55 --> 56 <link rel="stylesheet" type="text/css" href="generateCss.sjs?G"/> 57 58 59 <!-- 6. background-image: url() 60 [r] http://example.net , generateCss.sjs?O 61 [!] http://example.net , red.png 62 --> 63 <link rel="stylesheet" type="text/css" href="http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?O"/> 64 65 66 <!-- 7. @font-face 67 [r] http://example.net , generateCss.sjs?P 68 [!] http://example.net , Ahem.tff 69 --> 70 <link rel="stylesheet" type="text/css" href="http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?P"/> 71 72 73 <!-- 8. cursor: url() 74 [r] http://example.net , generateCss.sjs?Q 75 [!] http://example.net , over.png 76 --> 77 <link rel="stylesheet" type="text/css" href="http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?Q"/> 78 79 80 <!-- 9. mask: url(res.svg#mask) 81 TODO: I don't think this is working properly. Must fix. 82 [r] http://example.net , generateCss.sjs?R 83 [!] http://example.net , file_use_counter_svg_fill_pattern_data.svg 84 --> 85 <link rel="stylesheet" type="text/css" href="http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?R"/> 86 87 88 <!-- TODO: add test that we _do_ include subresources if the cross-origin sheet was fetched via CORS --> 89 90 91 <script type="application/javascript"> 92 93 function ok(cond, message) { 94 window.opener.ok(cond, message) 95 } 96 97 function is(received, expected, message) { 98 window.opener.is(received, expected, message); 99 } 100 101 function isnot(received, notExpected, message) { 102 window.opener.isnot(received, notExpected, message); 103 } 104 105 var allResources = { 106 "http://mochi.test:8888/tests/SimpleTest/test.css?resource-timing-nocors" : "link", 107 108 // 1 109 "http://mochi.test:8888/tests/dom/tests/mochitest/general/generateCss.sjs?A" : "link", 110 "http://mochi.test:8888/tests/dom/tests/mochitest/general/generateCss.sjs?B" : "css", 111 112 // 2 113 "http://example.com/tests/dom/tests/mochitest/general/generateCss.sjs?C" : "link", 114 115 // 3 116 "http://example.com/tests/dom/tests/mochitest/general/generateCss.sjs?E" : "link", 117 118 // 4 119 "http://mochi.test:8888/tests/dom/tests/mochitest/general/generateCss.sjs?G" : "link", 120 "http://mochi.test:8888/tests/dom/tests/mochitest/general/generateCss.sjs?H" : "css", 121 "http://example.com/tests/dom/tests/mochitest/general/generateCss.sjs?I" : "css", 122 "http://example.org/tests/dom/tests/mochitest/general/generateCss.sjs?K" : "css", 123 124 // 6 125 "http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?O" : "link", 126 127 // 7 128 "http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?P" : "link", 129 130 // 8 131 "http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?Q" : "link", 132 133 // 9 134 "http://example.net/tests/dom/tests/mochitest/general/generateCss.sjs?R" : "link", 135 }; 136 137 window.onload = function() { 138 let entries = performance.getEntriesByType('resource'); 139 for (let entry of entries) { 140 //dump(entry.name + " || "+ entry.initiatorType+ "\n"); 141 if (!(entry.name in allResources)) { 142 if (entry.name.substr(-4) == ".ttf") { 143 // TODO: fix hiding of font files 144 continue; 145 } 146 ok(false, "Did not expect timing for resource: " + entry.name); 147 continue; 148 } 149 let resType = allResources[entry.name]; 150 is(entry.initiatorType, resType, 151 "Expected matching initiatorType for: " + entry.name); 152 delete allResources[entry.name]; 153 } 154 155 for (let res in allResources) { 156 ok(false, "Expect timing for resource: " + res); 157 } 158 159 window.opener.finishTests(); 160 } 161 162 </script> 163 </head> 164 <body> 165 <a target="_blank" 166 href="https://bugzilla.mozilla.org/show_bug.cgi?id=1180145" 167 title="Resource timing NO-CORS CSS"> 168 Bug #1180145 - Resource Timing NO-CORS CSS 169 </a> 170 <p id="display"></p> 171 <div id="content"> 172 </div> 173 174 <div class="c1"> BLUE </div> 175 <div class="c2"> RED </div> 176 <div class="c3"> Font </div> 177 <div class="c4"> CURSOR </div> 178 <div class="c5"> <img id="image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="> </div> 179 <div class="c6"> </div> 180 </body> 181 </html>