| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="UTF-8"> |
| <title>Test for Advanced Telemetry Generation</title> |
| <script src="/js-test-resources/js-test.js"></script> |
| <script src="resources/util.js"></script> |
| </head> |
| <body> |
| <script> |
| testRunner.setUseITPDatabase(true); |
| description("Tests that advanced telemetry for prevalent resources in the SQLite Database is calculated correctly."); |
| jsTestIsAsync = true; |
| |
| const topFrameUrl = "http://127.0.0.5:8000/temp"; |
| const topResourceUrl = "http://127.0.0.6:8000/temp"; |
| const toUniqueRedirectUrl = "http://127.0.0.7:8000/temp"; |
| |
| const topFrameUrl1 = "http://127.0.0.1:8000/temp"; |
| const topFrameUrl2 = "http://127.0.0.2:8000/temp"; |
| const topFrameUrl3 = "http://127.0.0.3:8000/temp"; |
| const topFrameUrl4 = "http://127.0.0.4:8000/temp"; |
| |
| |
| const url1 = "http://127.0.1.1:8000/temp"; |
| const url2 = "http://127.0.1.2:8000/temp"; |
| const url3 = "http://127.0.1.3:8000/temp"; |
| const url4 = "http://127.0.1.4:8000/temp"; |
| const url5 = "http://127.0.1.5:8000/temp"; |
| |
| const twoDaysOld = Math.round((new Date()).getTime() / 1000) - 180000; |
| |
| function checkClassificationAndContinue() { |
| if (!testRunner.isStatisticsPrevalentResource(url1)) { |
| testFailed("Host 1 did not get classified as prevalent resource."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsPrevalentResource(url2)) { |
| testFailed("Host 2 did not get classified as prevalent resource."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsPrevalentResource(url3)) { |
| testFailed("Host 3 did not get classified as prevalent resource."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsPrevalentResource(url4)) { |
| testFailed("Host 4 did not get classified as prevalent resource."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsPrevalentResource(url5)) { |
| testFailed("Host 5 did not get classified as prevalent resource."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsHasHadUserInteraction(url1)) { |
| testFailed("Host 1 did not get classified as having user interaction."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsHasHadUserInteraction(url2)) { |
| testFailed("Host 2 did not get classified as having user interaction."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsRegisteredAsSubFrameUnder(url1, topFrameUrl)) { |
| testFailed("Host 1 did not get set as subframe."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsRegisteredAsSubresourceUnder(url1, topResourceUrl)) { |
| testFailed("Host 1 did not get set as subresource."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsRegisteredAsSubFrameUnder(url2, topFrameUrl)) { |
| testFailed("Host 2 did not get set as subframe."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsRegisteredAsSubFrameUnder(url3, topFrameUrl)) { |
| testFailed("Host 3 did not get set as subframe."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsRegisteredAsSubresourceUnder(url3, topResourceUrl)) { |
| testFailed("Host 3 did not get set as subresource."); |
| setEnableFeature(false, finishJSTest); |
| } else if (!testRunner.isStatisticsRegisteredAsSubFrameUnder(url4, topFrameUrl)) { |
| testFailed("Host 4 did not get set as subframe."); |
| setEnableFeature(false, finishJSTest); |
| } else { |
| testPassed("Hosts classified correctly."); |
| runTelemetryAndContinue(); |
| } |
| } |
| |
| function makeUrlPrevalent(prevalentResourceUrl) { |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl1); |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl2); |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl3); |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl4); |
| |
| testRunner.setStatisticsSubresourceUniqueRedirectTo(prevalentResourceUrl, topFrameUrl1); |
| testRunner.setStatisticsSubresourceUniqueRedirectTo(prevalentResourceUrl, topFrameUrl2); |
| testRunner.setStatisticsSubresourceUniqueRedirectTo(prevalentResourceUrl, topFrameUrl3); |
| testRunner.setStatisticsSubresourceUniqueRedirectTo(prevalentResourceUrl, topFrameUrl4); |
| |
| testRunner.setStatisticsSubresourceUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl1); |
| testRunner.setStatisticsSubresourceUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl2); |
| testRunner.setStatisticsSubresourceUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl3); |
| testRunner.setStatisticsSubresourceUnderTopFrameOrigin(prevalentResourceUrl, topFrameUrl4); |
| } |
| |
| function setUpStatisticsAndContinue() { |
| // merge statistic arguments: hostName, topFrameDomain, lastSeen, hadUserInteraction, mostRecentUserInteraction, isGrandfathered, isPrevalent, isVeryPrevalent, dataRecordsRemoved |
| makeUrlPrevalent(url1); |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(url1, topFrameUrl); |
| testRunner.setStatisticsSubresourceUnderTopFrameOrigin(url1, topResourceUrl); |
| testRunner.setStatisticsSubresourceUniqueRedirectTo(url1, toUniqueRedirectUrl); |
| |
| makeUrlPrevalent(url2); |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(url2, topFrameUrl); |
| testRunner.setStatisticsSubresourceUniqueRedirectTo(url2, toUniqueRedirectUrl); |
| |
| makeUrlPrevalent(url3); |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(url3, topFrameUrl); |
| testRunner.setStatisticsSubresourceUnderTopFrameOrigin(url3, topResourceUrl); |
| testRunner.setStatisticsSubresourceUniqueRedirectTo(url3, toUniqueRedirectUrl); |
| |
| makeUrlPrevalent(url4); |
| testRunner.setStatisticsSubframeUnderTopFrameOrigin(url4, topFrameUrl); |
| testRunner.setStatisticsSubresourceUnderTopFrameOrigin(url4, topResourceUrl); |
| |
| makeUrlPrevalent(url5); |
| |
| // set URLs 1 and 2 to have user interaction. UI for url 2 will be set to be 2 days old. |
| testRunner.setStatisticsHasHadUserInteraction(url1, true, function() { |
| testRunner.setStatisticsMergeStatistic(url2, topFrameUrl, "", twoDaysOld, true, twoDaysOld, false, true, false, 0, function() { |
| testRunner.installStatisticsDidScanDataRecordsCallback(checkClassificationAndContinue); |
| testRunner.installStatisticsDidRunTelemetryCallback(checkTelemetry); |
| testRunner.statisticsProcessStatisticsAndDataRecords(); |
| }); |
| }); |
| } |
| |
| function runTelemetryAndContinue() { |
| testRunner.statisticsSubmitTelemetry(); |
| } |
| |
| var testResult; |
| function checkTelemetry(result) { |
| testResult = result; |
| shouldBe("testResult.numberOfPrevalentResources", "5"); |
| shouldBe("testResult.numberOfPrevalentResourcesWithUserInteraction", "2"); |
| shouldBe("testResult.numberOfPrevalentResourcesWithoutUserInteraction", "3"); |
| shouldBe("testResult.topPrevalentResourceWithUserInteractionDaysSinceUserInteraction", "0"); |
| shouldBe("testResult.medianDaysSinceUserInteractionPrevalentResourceWithUserInteraction", "1"); |
| shouldBe("testResult.top3NumberOfPrevalentResourcesWithUI", "2"); |
| shouldBe("testResult.top3MedianSubFrameWithoutUI", "5"); |
| shouldBe("testResult.top3MedianSubResourceWithoutUI", "5"); |
| shouldBe("testResult.top3MedianUniqueRedirectsWithoutUI", "4"); |
| shouldBe("testResult.top3MedianDataRecordsRemovedWithoutUI", "0"); |
| setEnableFeature(false, finishJSTest); |
| } |
| |
| if (window.testRunner) { |
| setEnableFeature(true, function() { |
| testRunner.setStatisticsNotifyPagesWhenTelemetryWasCaptured(true); |
| setUpStatisticsAndContinue(); |
| }); |
| } |
| </script> |
| </body> |
| </html> |