blob: c480db34db7d3eca3f999bb5161cd7b6effb9dc3 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test for Basic 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 basic telemetry for prevalent resources in the SQLite Database is calculated correctly.");
jsTestIsAsync = true;
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 prevalentResourceUrl1 = "http://127.0.1.1:8000/temp";
const prevalentResourceUrl2 = "http://127.0.1.2:8000/temp";
const prevalentResourceUrl3 = "http://127.0.1.3:8000/temp";
const prevalentResourceUrl4 = "http://127.0.1.4:8000/temp";
function checkInsufficientClassificationAndContinue() {
if (!testRunner.isStatisticsPrevalentResource(prevalentResourceUrl1)) {
testFailed("Host 1 did not get classified as prevalent resource.");
setEnableFeature(false, finishJSTest);
} else if (!testRunner.isStatisticsPrevalentResource(prevalentResourceUrl2)) {
testFailed("Host 2 did not get classified as prevalent resource.");
setEnableFeature(false, finishJSTest);
} else {
testPassed("Hosts classified as prevalent resources.");
runTelemetryAndContinue();
}
}
function checkSufficientClassificationAndContinue() {
if (!testRunner.isStatisticsPrevalentResource(prevalentResourceUrl1)) {
testFailed("Host 1 did not get classified as prevalent resource.");
setEnableFeature(false, finishJSTest);
} else if (!testRunner.isStatisticsPrevalentResource(prevalentResourceUrl2)) {
testFailed("Host 2 did not get classified as prevalent resource.");
setEnableFeature(false, finishJSTest);
} else if (!testRunner.isStatisticsPrevalentResource(prevalentResourceUrl3)) {
testFailed("Host 3 did not get classified as prevalent resource.");
setEnableFeature(false, finishJSTest);
} else if (!testRunner.isStatisticsPrevalentResource(prevalentResourceUrl4)) {
testFailed("Host 4 did not get classified as prevalent resource.");
setEnableFeature(false, finishJSTest);
} else {
testPassed("Hosts classified as prevalent resources.");
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 setUpInsufficientStatisticsAndContinue() {
makeUrlPrevalent(prevalentResourceUrl1);
makeUrlPrevalent(prevalentResourceUrl2);
testRunner.installStatisticsDidScanDataRecordsCallback(checkInsufficientClassificationAndContinue);
testRunner.installStatisticsDidRunTelemetryCallback(checkInsufficientTelemetry);
testRunner.statisticsProcessStatisticsAndDataRecords();
}
function setUpSufficientStatisticsAndContinue() {
makeUrlPrevalent(prevalentResourceUrl3);
makeUrlPrevalent(prevalentResourceUrl4);
testRunner.setStatisticsHasHadUserInteraction(prevalentResourceUrl4, true, function() {
testRunner.installStatisticsDidScanDataRecordsCallback(checkSufficientClassificationAndContinue);
testRunner.installStatisticsDidRunTelemetryCallback(checkSufficientTelemetry);
testRunner.statisticsProcessStatisticsAndDataRecords();
});
}
function runTelemetryAndContinue() {
testRunner.statisticsSubmitTelemetry();
}
var testResult;
function checkInsufficientTelemetry(result) {
testResult = result;
shouldBe("testResult.numberOfPrevalentResources", "0");
shouldBe("testResult.numberOfPrevalentResourcesWithUserInteraction", "0");
shouldBe("testResult.numberOfPrevalentResourcesWithoutUserInteraction", "0");
shouldBe("testResult.topPrevalentResourceWithUserInteractionDaysSinceUserInteraction", "0");
shouldBe("testResult.medianDaysSinceUserInteractionPrevalentResourceWithUserInteraction", "0");
shouldBe("testResult.top3NumberOfPrevalentResourcesWithUI", "0");
shouldBe("testResult.top3MedianSubFrameWithoutUI", "0");
shouldBe("testResult.top3MedianSubResourceWithoutUI", "0");
shouldBe("testResult.top3MedianUniqueRedirectsWithoutUI", "0");
shouldBe("testResult.top3MedianDataRecordsRemovedWithoutUI", "0");
setUpSufficientStatisticsAndContinue();
}
function checkSufficientTelemetry(result) {
testResult = result;
shouldBe("testResult.numberOfPrevalentResources", "4");
shouldBe("testResult.numberOfPrevalentResourcesWithUserInteraction", "1");
shouldBe("testResult.numberOfPrevalentResourcesWithoutUserInteraction", "3");
shouldBe("testResult.topPrevalentResourceWithUserInteractionDaysSinceUserInteraction", "0");
shouldBe("testResult.medianDaysSinceUserInteractionPrevalentResourceWithUserInteraction", "0");
shouldBe("testResult.top3NumberOfPrevalentResourcesWithUI", "0");
shouldBe("testResult.top3MedianSubFrameWithoutUI", "4");
shouldBe("testResult.top3MedianSubResourceWithoutUI", "4");
shouldBe("testResult.top3MedianUniqueRedirectsWithoutUI", "4");
shouldBe("testResult.top3MedianDataRecordsRemovedWithoutUI", "0");
setEnableFeature(false, finishJSTest);
}
if (window.testRunner) {
setEnableFeature(true, function() {
testRunner.setStatisticsNotifyPagesWhenTelemetryWasCaptured(true);
setUpInsufficientStatisticsAndContinue();
});
}
</script>
</body>
</html>