diff options
Diffstat (limited to 'mobile/android/tests/browser/robocop/testUnifiedTelemetryClientId.js')
-rw-r--r-- | mobile/android/tests/browser/robocop/testUnifiedTelemetryClientId.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/mobile/android/tests/browser/robocop/testUnifiedTelemetryClientId.js b/mobile/android/tests/browser/robocop/testUnifiedTelemetryClientId.js new file mode 100644 index 000000000..d574aaef1 --- /dev/null +++ b/mobile/android/tests/browser/robocop/testUnifiedTelemetryClientId.js @@ -0,0 +1,50 @@ +var { classes: Cc, interfaces: Ci, utils: Cu } = Components; + +Cu.import('resource://gre/modules/ClientID.jsm'); + +var java = new JavaBridge(this); +do_register_cleanup(() => { + java.disconnect(); +}); +do_test_pending(); + +var isClientIDSet; +var clientID; + +var isResetDone; + +function getAsyncClientId() { + isClientIDSet = false; + ClientID.getClientID().then(function (retClientID) { + // Ideally, we'd directly send the client ID back to Java but Java won't listen for + // js messages after we return from the containing function (bug 1253467). + // + // Note that my brief attempts to get synchronous Promise resolution (via Task.jsm) + // working failed - I have other things to focus on. + clientID = retClientID; + isClientIDSet = true; + }, function (fail) { + // Since Java doesn't listen to our messages (bug 1253467), I don't expect + // this throw to work correctly but we should timeout in Java. + do_throw('Could not retrieve client ID: ' + fail); + }); +} + +function pollGetAsyncClientId() { + java.asyncCall('blockingFromJsResponseString', isClientIDSet, clientID); +} + +function getAsyncReset() { + isResetDone = false; + ClientID._reset().then(function () { + isResetDone = true; + }); +} + +function pollGetAsyncReset() { + java.asyncCall('blockingFromJsResponseString', isResetDone, ''); +} + +function endTest() { + do_test_finished(); +} |