summaryrefslogtreecommitdiffstats
path: root/mobile/android/actors/tests/mochitests/test_geckoview_actor_telemetry.html
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/actors/tests/mochitests/test_geckoview_actor_telemetry.html')
-rw-r--r--mobile/android/actors/tests/mochitests/test_geckoview_actor_telemetry.html106
1 files changed, 106 insertions, 0 deletions
diff --git a/mobile/android/actors/tests/mochitests/test_geckoview_actor_telemetry.html b/mobile/android/actors/tests/mochitests/test_geckoview_actor_telemetry.html
new file mode 100644
index 0000000000..fa4e27b37a
--- /dev/null
+++ b/mobile/android/actors/tests/mochitests/test_geckoview_actor_telemetry.html
@@ -0,0 +1,106 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1816151
+-->
+<head>
+ <meta charset="utf-8">
+ <title>Tests for Telemetry in GeckoView Actors</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="head.js" type="application/javascript"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1816151">Mozilla Bug 1816151 for Window.Print() Telemetry</a>
+<script class="testbody" type="text/javascript">
+
+ const printScript = SpecialPowers.loadChromeScript(_ => {
+ /* eslint-env mozilla/chrome-script */
+ addMessageListener("print",() => {
+ const navigator = Services.wm.getMostRecentWindow("navigator:geckoview");
+ const printActor = navigator.window.moduleManager.getActor("GeckoViewPrintDelegate");
+ printActor.telemetryDotPrintRequested();
+ });
+ addMessageListener("completed",(message) => {
+ const navigator = Services.wm.getMostRecentWindow("navigator:geckoview");
+ const printActor = navigator.window.moduleManager.getActor("GeckoViewPrintDelegate");
+ printActor.telemetryDotPrintPdfCompleted(message);
+ });
+ });
+
+ add_task(async function test_windowDotPrintTelemetry() {
+ const telemetryStart = await GleanTest.dotprint.requested.testGetValue() ?? 0;
+
+ // Using the print actor directly because
+ // if window.print() is requested Android exits the TestRunnerActivity and starts a PrintActivity,
+ // which causes the test harness to stop unexpectedly
+ await printScript.sendAsyncMessage("print");
+
+ const requestPrintOnce = await GleanTest.dotprint.requested.testGetValue() ?? 0;
+ is(requestPrintOnce - telemetryStart, 1, "GeckoView Dot Print Telemetry Incremented Once");
+
+ await printScript.sendAsyncMessage("print");
+ const requestPrintTwice = await GleanTest.dotprint.requested.testGetValue() ?? 0;
+ is(requestPrintTwice - telemetryStart, 2, "GeckoView Dot Print Telemetry Incremented Twice");
+ });
+
+ add_task(async function test_windowDotPrintDialogOpenedTelemetry() {
+ const success = {isPdfSuccessful: true}
+ const telemetryStart = await GleanTest.dotprint.androidDialogRequested.testGetValue() ?? 0;
+ await printScript.sendAsyncMessage("completed", success);
+ const dialogSuccessOnce = await GleanTest.dotprint.androidDialogRequested.testGetValue() ?? 0;
+ is(dialogSuccessOnce - telemetryStart, 1, "GeckoView Dot Print Telemetry for Android Dialog Incremented Once");
+ await printScript.sendAsyncMessage("completed", success);
+ const dialogSuccessTwice = await GleanTest.dotprint.androidDialogRequested.testGetValue() ?? 0;
+ is(dialogSuccessTwice - telemetryStart, 2, "GeckoView Dot Print Telemetry for Android Dialog Incremented Twice");
+ });
+
+ add_task(async function test_windowDotPrintFailureTelemetry() {
+ // UNKNOWN Failure
+ const failureStart = await GleanTest.dotprint.failure.testGetValueLabel("unknown") ?? 0;
+ await printScript.sendAsyncMessage("completed", {isPdfSuccessful: false});
+ const printFailure = await GleanTest.dotprint.failure.testGetValueLabel("unknown") ?? 0;
+ is(printFailure - failureStart, 1, "GeckoView Dot Print Telemetry Fail Without a Specified Reason");
+
+ await printScript.sendAsyncMessage("completed", {});
+ const printFailureEmpty = await GleanTest.dotprint.failure.testGetValueLabel("unknown") ?? 0;
+ is(printFailureEmpty - failureStart, 2, "GeckoView Dot Print Telemetry Fail When Empty");
+
+ await printScript.sendAsyncMessage("completed", {isPdfSuccessful: false, errorReason: -10});
+ const printFailureUnk = await GleanTest.dotprint.failure.testGetValueLabel("unknown") ?? 0;
+ is(printFailureUnk - failureStart, 3, "GeckoView Dot Print Telemetry Fail With An Unknown Code");
+
+ // ERROR_PRINT_SETTINGS_SERVICE_NOT_AVAILABLE -1 Failure
+ const failure1Start = await GleanTest.dotprint.failure.testGetValueLabel("no_settings_service") ?? 0;
+ await printScript.sendAsyncMessage("completed", {isPdfSuccessful: false, errorReason: -1});
+ const failure1End = await GleanTest.dotprint.failure.testGetValueLabel("no_settings_service") ?? 0;
+ is(failure1End - failure1Start, 1, "GeckoView Dot Print Telemetry Fail With No Settings Service");
+
+ // ERROR_UNABLE_TO_CREATE_PRINT_SETTINGS -2 Failure
+ const failure2Start = await GleanTest.dotprint.failure.testGetValueLabel("no_settings") ?? 0;
+ await printScript.sendAsyncMessage("completed", {isPdfSuccessful: false, errorReason: -2});
+ const failure2End = await GleanTest.dotprint.failure.testGetValueLabel("no_settings") ?? 0;
+ is(failure2End - failure2Start, 1, "GeckoView Dot Print Telemetry Fail With No Settings");
+
+ // ERROR_UNABLE_TO_RETRIEVE_CANONICAL_BROWSING_CONTEXT -3 Failure
+ const failure3Start = await GleanTest.dotprint.failure.testGetValueLabel("no_canonical_context") ?? 0;
+ await printScript.sendAsyncMessage("completed", {isPdfSuccessful: false, errorReason: -3});
+ const failure3End = await GleanTest.dotprint.failure.testGetValueLabel("no_canonical_context") ?? 0;
+ is(failure3End - failure3Start, 1, "GeckoView Dot Print Telemetry Fail With No Canonical Context");
+
+ // ERROR_NO_ACTIVITY_CONTEXT_DELEGATE -4 Failure
+ const failure4Start = await GleanTest.dotprint.failure.testGetValueLabel("no_activity_context_delegate") ?? 0;
+ await printScript.sendAsyncMessage("completed", {isPdfSuccessful: false, errorReason: -4});
+ const failure4End = await GleanTest.dotprint.failure.testGetValueLabel("no_activity_context_delegate") ?? 0;
+ is(failure4End - failure4Start, 1, "GeckoView Dot Print Telemetry Fail With No Activity Context Delegate");
+
+ // ERROR_NO_ACTIVITY_CONTEXT -5 Failure
+ const failure5Start = await GleanTest.dotprint.failure.testGetValueLabel("no_activity_context") ?? 0;
+ await printScript.sendAsyncMessage("completed", {isPdfSuccessful: false, errorReason: -5});
+ const failure5End = await GleanTest.dotprint.failure.testGetValueLabel("no_activity_context") ?? 0;
+ is(failure5End - failure5Start, 1, "GeckoView Dot Print Telemetry Fail With No Activity Context");
+ });
+
+</script>
+</body>
+</html>