| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <script src="/js-test-resources/js-test.js"></script> |
| <script src="resources/util.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Tests for classification based on top frame redirect collusion."); |
| jsTestIsAsync = true; |
| |
| const hostUnderTest = "127.0.0.1:8000"; |
| const statisticsUrl = "http://" + hostUnderTest + "/temp"; |
| const topFrameOrigin1 = "http://127.0.0.2:8000/temp"; |
| const topFrameOrigin2 = "http://127.0.0.3:8000/temp"; |
| const topFrameOrigin3 = "http://127.0.0.4:8000/temp"; |
| const topFrameOrigin4 = "http://127.0.0.5:8000/temp"; |
| const topFrameOrigin5 = "http://localhost:8000/"; |
| |
| function runTest() { |
| testRunner.setStatisticsTopFrameUniqueRedirectFrom(statisticsUrl, topFrameOrigin1); |
| testRunner.setStatisticsTopFrameUniqueRedirectFrom(topFrameOrigin1, topFrameOrigin2); |
| testRunner.setStatisticsTopFrameUniqueRedirectFrom(topFrameOrigin2, topFrameOrigin3); |
| testRunner.setStatisticsTopFrameUniqueRedirectFrom(topFrameOrigin3, topFrameOrigin4); |
| |
| testRunner.setStatisticsPrevalentResource(statisticsUrl, true, function() { |
| if (!testRunner.isStatisticsPrevalentResource(statisticsUrl)) |
| testFailed("Host explicity set did not get set as prevalent resource."); |
| if (testRunner.isStatisticsPrevalentResource(topFrameOrigin1)) |
| testPassed("Colluding host 1 got set as prevalent resource."); |
| if (testRunner.isStatisticsVeryPrevalentResource(topFrameOrigin1)) |
| testFailed("Colluding host 1 got classified as very prevalent resource."); |
| if (testRunner.isStatisticsPrevalentResource(topFrameOrigin2)) |
| testPassed("Colluding host 2 got set as prevalent resource."); |
| if (testRunner.isStatisticsVeryPrevalentResource(topFrameOrigin2)) |
| testFailed("Colluding host 2 got classified as very prevalent resource."); |
| if (testRunner.isStatisticsPrevalentResource(topFrameOrigin3)) |
| testPassed("Colluding host 3 got set as prevalent resource."); |
| if (testRunner.isStatisticsVeryPrevalentResource(topFrameOrigin3)) |
| testFailed("Colluding host 3 got classified as very prevalent resource."); |
| if (testRunner.isStatisticsPrevalentResource(topFrameOrigin4)) |
| testPassed("Colluding host 4 got set as prevalent resource."); |
| if (testRunner.isStatisticsVeryPrevalentResource(topFrameOrigin4)) |
| testFailed("Colluding host 4 got classified as very prevalent resource."); |
| if (testRunner.isStatisticsPrevalentResource(topFrameOrigin5)) |
| testPassed("Colluding localhost got set as prevalent resource after actual navigational redirect."); |
| if (testRunner.isStatisticsVeryPrevalentResource(topFrameOrigin5)) |
| testFailed("Colluding localhost got classified as very prevalent resource."); |
| |
| setEnableFeature(false, finishJSTest); |
| }); |
| } |
| |
| if (document.location.hash === "" && window.testRunner && window.internals) { |
| setEnableFeature(true, function() { |
| testRunner.setStatisticsPrevalentResource(statisticsUrl, false, function() { |
| if (testRunner.isStatisticsPrevalentResource(statisticsUrl)) |
| testFailed("Host did not get set as non-prevalent resource."); |
| |
| document.location.href = topFrameOrigin5 + "resourceLoadStatistics/resources/redirect.php?redirectTo=http://127.0.0.1:8000/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html#continue"; |
| }); |
| }); |
| } else { |
| testRunner.statisticsNotifyObserver(); |
| runTest(); |
| } |
| </script> |
| </body> |
| </html> |