/* vim:set ts=2 sw=2 sts=2 et: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ var EventUtils = {}; var PaintListener = {}; Services.scriptloader.loadSubScript( "chrome://mochikit/content/tests/SimpleTest/EventUtils.js", EventUtils ); function getRecordedKeypressCount() { let snapshot = Services.telemetry.getSnapshotForHistograms("main", false); var totalCount = 0; for (var prop in snapshot) { if (snapshot[prop].KEYPRESS_PRESENT_LATENCY) { dump("found snapshot"); totalCount += Object.values( snapshot[prop].KEYPRESS_PRESENT_LATENCY.values ).reduce((a, b) => a + b, 0); } } return totalCount; } add_task(async function () { await SpecialPowers.pushPrefEnv({ set: [["toolkit.telemetry.ipcBatchTimeout", 10]], }); let histogram = Services.telemetry.getHistogramById( "KEYPRESS_PRESENT_LATENCY" ); histogram.clear(); waitForExplicitFinish(); gURLBar.focus(); await SimpleTest.promiseFocus(window); EventUtils.sendChar("x"); await ContentTaskUtils.waitForCondition( () => { return getRecordedKeypressCount() > 0; }, "waiting for telemetry", 200, 600 ); let result = getRecordedKeypressCount(); ok(result == 1, "One keypress recorded"); gURLBar.focus(); await SimpleTest.promiseFocus(window); EventUtils.sendChar("x"); await ContentTaskUtils.waitForCondition( () => { return getRecordedKeypressCount() > 1; }, "waiting for telemetry", 200, 600 ); result = getRecordedKeypressCount(); ok(result == 2, "Two keypresses recorded"); });