author | Patrick Brosset <pbrosset@mozilla.com> |
Mon, 26 Jan 2015 02:35:00 -0500 | |
changeset 225831 | d1c55bb95e672872b3c7406abfe0bc3a1bc97096 |
parent 225830 | ce22415015105c37f032671e302730cb22c89668 |
child 225832 | 394aac76bf6155eea3350e3890d5ece12fc14808 |
push id | 28176 |
push user | ryanvm@gmail.com |
push date | Mon, 26 Jan 2015 21:48:45 +0000 |
treeherder | mozilla-central@38e4719e71af [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jwalker |
bugs | 1034512 |
milestone | 38.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/devtools/shared/test/browser.ini +++ b/browser/devtools/shared/test/browser.ini @@ -61,17 +61,19 @@ skip-if = e10s # Layouthelpers test shou [browser_spectrum.js] [browser_theme.js] [browser_tableWidget_basic.js] [browser_tableWidget_keyboard_interaction.js] [browser_tableWidget_mouse_interaction.js] skip-if = buildapp == 'mulet' [browser_telemetry_button_eyedropper.js] [browser_telemetry_button_paintflashing.js] +skip-if = e10s # Bug 937167 - e10s paintflashing [browser_telemetry_button_responsive.js] +skip-if = e10s # Bug 1067145 - e10s responsiveview [browser_telemetry_button_scratchpad.js] [browser_telemetry_button_tilt.js] skip-if = e10s # Bug 1086492 - Disable tilt for e10s # Bug 937166 - Make tilt work in E10S mode [browser_telemetry_sidebar.js] [browser_telemetry_toolbox.js] [browser_telemetry_toolboxtabs_canvasdebugger.js] [browser_telemetry_toolboxtabs_inspector.js]
--- a/browser/devtools/shared/test/browser_telemetry_button_eyedropper.js +++ b/browser/devtools/shared/test/browser_telemetry_button_eyedropper.js @@ -1,110 +1,57 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_button_eyedropper.js</p><div>test</div>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_button_eyedropper.js</p><div>test</div>"; -let promise = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}).Promise; -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); +let {EyedropperManager} = require("devtools/eyedropper/eyedropper"); -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); -let { EyedropperManager } = require("devtools/eyedropper/eyedropper"); - + let target = TargetFactory.forTab(gBrowser.selectedTab); + let toolbox = yield gDevTools.showToolbox(target, "inspector"); + info("inspector opened"); -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } + info("testing the eyedropper button"); + testButton(toolbox, Telemetry); + + stopRecordingTelemetryLogs(Telemetry); + yield gDevTools.closeToolbox(target); + gBrowser.removeCurrentTab(); +}); - this.telemetryInfo[histogramId].push(value); - } - }; +function testButton(toolbox, Telemetry) { + let button = toolbox.doc.querySelector("#command-button-eyedropper"); + ok(button, "Captain, we have the eyedropper button"); - testButton("command-button-eyedropper"); + info("clicking the button to open the eyedropper"); + button.click(); + + checkResults("_EYEDROPPER_", Telemetry); } -function testButton(id) { - info("Testing " + id); - - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, "inspector").then(function(toolbox) { - info("inspector opened"); - - let button = toolbox.doc.querySelector("#" + id); - ok(button, "Captain, we have the button"); - - // open the eyedropper - button.click(); - - checkResults("_EYEDROPPER_"); - }).then(null, console.error); -} - -function clickButton(node, clicks) { - for (let i = 0; i < clicks; i++) { - info("Clicking button " + node.id); - node.click(); - } -} - -function checkResults(histIdFocus) { +function checkResults(histIdFocus, Telemetry) { let result = Telemetry.prototype.telemetryInfo; for (let [histId, value] of Iterator(result)) { if (histId.startsWith("DEVTOOLS_INSPECTOR_") || !histId.contains(histIdFocus)) { // Inspector stats are tested in // browser_telemetry_toolboxtabs_{toolname}.js so we skip them here // because we only open the inspector once for this test. continue; } if (histId.endsWith("OPENED_PER_USER_FLAG")) { ok(value.length === 1 && value[0] === true, "Per user value " + histId + " has a single value of true"); } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length == 1, histId + " has one entry"); + is(value.length, 1, histId + " has one entry"); - let okay = value.every(function(element) { - return element === true; - }); - + let okay = value.every(element => element === true); ok(okay, "All " + histId + " entries are === true"); } } - - finishUp(); } - -function finishUp() { - gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_button_paintflashing.js +++ b/browser/devtools/shared/test/browser_telemetry_button_paintflashing.js @@ -1,81 +1,64 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_button_paintflashing.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_button_paintflashing.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let promise = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}).Promise; -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - }; - - testButton("command-button-paintflashing"); -} - -function testButton(id) { - info("Testing " + id); +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); let target = TargetFactory.forTab(gBrowser.selectedTab); + let toolbox = yield gDevTools.showToolbox(target, "inspector"); + info("inspector opened"); - gDevTools.showToolbox(target, "inspector").then(function(toolbox) { - info("inspector opened"); + info("testing the paintflashing button"); + yield testButton(toolbox, Telemetry); - let button = toolbox.doc.querySelector("#" + id); - ok(button, "Captain, we have the button"); + stopRecordingTelemetryLogs(Telemetry); + yield gDevTools.closeToolbox(target); + gBrowser.removeCurrentTab(); +}); - delayedClicks(button, 4).then(function() { - checkResults("_PAINTFLASHING_"); - }); - }).then(null, console.error); +function* testButton(toolbox, Telemetry) { + info("Testing command-button-paintflashing"); + + let button = toolbox.doc.querySelector("#command-button-paintflashing"); + ok(button, "Captain, we have the button"); + + yield delayedClicks(button, 4); + checkResults("_PAINTFLASHING_", Telemetry); } function delayedClicks(node, clicks) { - let deferred = promise.defer(); - let clicked = 0; - - // See TOOL_DELAY for why we need setTimeout here - setTimeout(function delayedClick() { - info("Clicking button " + node.id); - node.click(); - clicked++; + return new Promise(resolve => { + let clicked = 0; - if (clicked >= clicks) { - deferred.resolve(node); - } else { - setTimeout(delayedClick, TOOL_DELAY); - } - }, TOOL_DELAY); + // See TOOL_DELAY for why we need setTimeout here + setTimeout(function delayedClick() { + info("Clicking button " + node.id); + node.click(); + clicked++; - return deferred.promise; + if (clicked >= clicks) { + resolve(node); + } else { + setTimeout(delayedClick, TOOL_DELAY); + } + }, TOOL_DELAY); + }); } -function checkResults(histIdFocus) { +function checkResults(histIdFocus, Telemetry) { let result = Telemetry.prototype.telemetryInfo; for (let [histId, value] of Iterator(result)) { if (histId.startsWith("DEVTOOLS_INSPECTOR_") || !histId.contains(histIdFocus)) { // Inspector stats are tested in // browser_telemetry_toolboxtabs_{toolname}.js so we skip them here // because we only open the inspector once for this test. @@ -98,34 +81,9 @@ function checkResults(histIdFocus) { let okay = value.every(function(element) { return element > 0; }); ok(okay, "All " + histId + " entries have time > 0"); } } - - finishUp(); } - -function finishUp() { - gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_button_responsive.js +++ b/browser/devtools/shared/test/browser_telemetry_button_responsive.js @@ -1,81 +1,64 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_button_responsive.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_button_responsive.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let promise = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}).Promise; -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - }; - - testButton("command-button-responsive"); -} - -function testButton(id) { - info("Testing " + id); +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); let target = TargetFactory.forTab(gBrowser.selectedTab); + let toolbox = yield gDevTools.showToolbox(target, "inspector"); + info("inspector opened"); - gDevTools.showToolbox(target, "inspector").then(function(toolbox) { - info("inspector opened"); + info("testing the responsivedesign button"); + yield testButton(toolbox, Telemetry); - let button = toolbox.doc.querySelector("#" + id); - ok(button, "Captain, we have the button"); + stopRecordingTelemetryLogs(Telemetry); + yield gDevTools.closeToolbox(target); + gBrowser.removeCurrentTab(); +}); - delayedClicks(button, 4).then(function() { - checkResults("_RESPONSIVE_"); - }); - }).then(null, console.error); +function* testButton(toolbox, Telemetry) { + info("Testing command-button-responsive"); + + let button = toolbox.doc.querySelector("#command-button-responsive"); + ok(button, "Captain, we have the button"); + + yield delayedClicks(button, 4); + checkResults("_RESPONSIVE_", Telemetry); } function delayedClicks(node, clicks) { - let deferred = promise.defer(); - let clicked = 0; - - // See TOOL_DELAY for why we need setTimeout here - setTimeout(function delayedClick() { - info("Clicking button " + node.id); - node.click(); - clicked++; + return new Promise(resolve => { + let clicked = 0; - if (clicked >= clicks) { - deferred.resolve(node); - } else { - setTimeout(delayedClick, TOOL_DELAY); - } - }, TOOL_DELAY); + // See TOOL_DELAY for why we need setTimeout here + setTimeout(function delayedClick() { + info("Clicking button " + node.id); + node.click(); + clicked++; - return deferred.promise; + if (clicked >= clicks) { + resolve(node); + } else { + setTimeout(delayedClick, TOOL_DELAY); + } + }, TOOL_DELAY); + }); } -function checkResults(histIdFocus) { +function checkResults(histIdFocus, Telemetry) { let result = Telemetry.prototype.telemetryInfo; for (let [histId, value] of Iterator(result)) { if (histId.startsWith("DEVTOOLS_INSPECTOR_") || !histId.contains(histIdFocus)) { // Inspector stats are tested in // browser_telemetry_toolboxtabs_{toolname}.js so we skip them here // because we only open the inspector once for this test. @@ -98,34 +81,9 @@ function checkResults(histIdFocus) { let okay = value.every(function(element) { return element > 0; }); ok(okay, "All " + histId + " entries have time > 0"); } } - - finishUp(); } - -function finishUp() { - gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_button_scratchpad.js +++ b/browser/devtools/shared/test/browser_telemetry_button_scratchpad.js @@ -1,116 +1,102 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -/////////////////// -// -// Whitelisting this test. -// As part of bug 1077403, the leaking uncaught rejection should be fixed. -// -thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Protocol error (unknownError): Error: Got an invalid root window in DocumentWalker"); - -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_button_scratchpad.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_button_scratchpad.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let promise = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}).Promise; -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -let numScratchpads = 0; - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - }; - - Services.ww.registerNotification(windowObserver); - testButton("command-button-scratchpad"); -} - -function testButton(id) { - info("Testing " + id); +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); let target = TargetFactory.forTab(gBrowser.selectedTab); + let toolbox = yield gDevTools.showToolbox(target, "inspector"); + info("inspector opened"); - gDevTools.showToolbox(target, "inspector").then(function(toolbox) { - info("inspector opened"); + let onAllWindowsOpened = trackScratchpadWindows(); + + info("testing the scratchpad button"); + yield testButton(toolbox, Telemetry); + yield onAllWindowsOpened; + + checkResults("_SCRATCHPAD_", Telemetry); + + stopRecordingTelemetryLogs(Telemetry); + yield gDevTools.closeToolbox(target); + gBrowser.removeCurrentTab(); +}); + +function trackScratchpadWindows() { + info("register the window observer to track when scratchpad windows open"); + + let numScratchpads = 0; - let button = toolbox.doc.querySelector("#" + id); - ok(button, "Captain, we have the button"); + return new Promise(resolve => { + Services.ww.registerNotification(function observer(subject, topic) { + if (topic == "domwindowopened") { + let win = subject.QueryInterface(Ci.nsIDOMWindow); + win.addEventListener("load", function onLoad() { + win.removeEventListener("load", onLoad, false); + + if (win.Scratchpad) { + win.Scratchpad.addObserver({ + onReady: function() { + win.Scratchpad.removeObserver(this); + numScratchpads++; + win.close(); - delayedClicks(button, 4).then(null, console.error); - }).then(null, console.error); + info("another scratchpad was opened and closed, count is now " + numScratchpads); + + if (numScratchpads === 4) { + Services.ww.unregisterNotification(observer); + info("4 scratchpads have been opened and closed, checking results"); + resolve(); + } + }, + }); + } + }, false); + } + }); + }); } -function windowObserver(aSubject, aTopic, aData) { - if (aTopic == "domwindowopened") { - let win = aSubject.QueryInterface(Ci.nsIDOMWindow); - win.addEventListener("load", function onLoad() { - win.removeEventListener("load", onLoad, false); - - if (win.Scratchpad) { - win.Scratchpad.addObserver({ - onReady: function() { - win.Scratchpad.removeObserver(this); - numScratchpads++; - win.close(); +function* testButton(toolbox, Telemetry) { + info("Testing command-button-scratchpad"); + let button = toolbox.doc.querySelector("#command-button-scratchpad"); + ok(button, "Captain, we have the button"); - info("another scratchpad was opened and closed, count is now " + numScratchpads); - - if (numScratchpads === 4) { - Services.ww.unregisterNotification(windowObserver); - info("4 scratchpads have been opened and closed, checking results"); - checkResults("_SCRATCHPAD_"); - } - }, - }); - } - }, false); - } + yield delayedClicks(button, 4); } function delayedClicks(node, clicks) { - let deferred = promise.defer(); - let clicked = 0; - - // See TOOL_DELAY for why we need setTimeout here - setTimeout(function delayedClick() { - info("Clicking button " + node.id); - node.click(); - clicked++; + return new Promise(resolve => { + let clicked = 0; - if (clicked >= clicks) { - deferred.resolve(node); - } else { - setTimeout(delayedClick, TOOL_DELAY); - } - }, TOOL_DELAY); + // See TOOL_DELAY for why we need setTimeout here + setTimeout(function delayedClick() { + info("Clicking button " + node.id); + node.click(); + clicked++; - return deferred.promise; + if (clicked >= clicks) { + resolve(node); + } else { + setTimeout(delayedClick, TOOL_DELAY); + } + }, TOOL_DELAY); + }); } -function checkResults(histIdFocus) { +function checkResults(histIdFocus, Telemetry) { let result = Telemetry.prototype.telemetryInfo; for (let [histId, value] of Iterator(result)) { if (histId.startsWith("DEVTOOLS_INSPECTOR_") || !histId.contains(histIdFocus)) { // Inspector stats are tested in // browser_telemetry_toolboxtabs_{toolname}.js so we skip them here // because we only open the inspector once for this test. @@ -133,34 +119,9 @@ function checkResults(histIdFocus) { let okay = value.every(function(element) { return element > 0; }); ok(okay, "All " + histId + " entries have time > 0"); } } - - finishUp(); } - -function finishUp() { - gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = numScratchpads = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_button_tilt.js +++ b/browser/devtools/shared/test/browser_telemetry_button_tilt.js @@ -1,81 +1,64 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_button_tilt.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_button_tilt.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let promise = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}).Promise; -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - }; - - testButton("command-button-tilt"); -} - -function testButton(id) { - info("Testing " + id); +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); let target = TargetFactory.forTab(gBrowser.selectedTab); + let toolbox = yield gDevTools.showToolbox(target, "inspector"); + info("inspector opened"); - gDevTools.showToolbox(target, "inspector").then(function(toolbox) { - info("inspector opened"); + info("testing the tilt button"); + yield testButton(toolbox, Telemetry); - let button = toolbox.doc.querySelector("#" + id); - ok(button, "Captain, we have the button"); + stopRecordingTelemetryLogs(Telemetry); + yield gDevTools.closeToolbox(target); + gBrowser.removeCurrentTab(); +}); - delayedClicks(button, 4).then(function() { - checkResults("_TILT_"); - }); - }).then(null, console.error); +function* testButton(toolbox, Telemetry) { + info("Testing command-button-tilt"); + + let button = toolbox.doc.querySelector("#command-button-tilt"); + ok(button, "Captain, we have the button"); + + yield delayedClicks(button, 4) + checkResults("_TILT_", Telemetry); } function delayedClicks(node, clicks) { - let deferred = promise.defer(); - let clicked = 0; - - // See TOOL_DELAY for why we need setTimeout here - setTimeout(function delayedClick() { - info("Clicking button " + node.id); - node.click(); - clicked++; + return new Promise(resolve => { + let clicked = 0; - if (clicked >= clicks) { - deferred.resolve(node); - } else { - setTimeout(delayedClick, TOOL_DELAY); - } - }, TOOL_DELAY); + // See TOOL_DELAY for why we need setTimeout here + setTimeout(function delayedClick() { + info("Clicking button " + node.id); + node.click(); + clicked++; - return deferred.promise; + if (clicked >= clicks) { + resolve(node); + } else { + setTimeout(delayedClick, TOOL_DELAY); + } + }, TOOL_DELAY); + }); } -function checkResults(histIdFocus) { +function checkResults(histIdFocus, Telemetry) { let result = Telemetry.prototype.telemetryInfo; for (let [histId, value] of Iterator(result)) { if (histId.startsWith("DEVTOOLS_INSPECTOR_") || !histId.contains(histIdFocus)) { // Inspector stats are tested in // browser_telemetry_toolboxtabs_{toolname}.js so we skip them here // because we only open the inspector once for this test. @@ -98,34 +81,9 @@ function checkResults(histIdFocus) { let okay = value.every(function(element) { return element > 0; }); ok(okay, "All " + histId + " entries have time > 0"); } } - - finishUp(); } - -function finishUp() { - gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_sidebar.js +++ b/browser/devtools/shared/test/browser_telemetry_sidebar.js @@ -2,71 +2,59 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_sidebar.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); + let target = TargetFactory.forTab(gBrowser.selectedTab); + let toolbox = yield gDevTools.showToolbox(target, "inspector"); + info("inspector opened"); -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } + yield testSidebar(toolbox); + checkResults(Telemetry); - this.telemetryInfo[histogramId].push(value); - } - }; + stopRecordingTelemetryLogs(Telemetry); + yield gDevTools.closeToolbox(target); + gBrowser.removeCurrentTab(); +}); - testSidebar(); -} - -function testSidebar() { +function* testSidebar(toolbox) { info("Testing sidebar"); - let target = TargetFactory.forTab(gBrowser.selectedTab); + let inspector = toolbox.getCurrentPanel(); + let sidebarTools = ["ruleview", "computedview", "fontinspector", + "layoutview", "animationinspector"]; - gDevTools.showToolbox(target, "inspector").then(function(toolbox) { - let inspector = toolbox.getCurrentPanel(); - let sidebarTools = ["ruleview", "computedview", "fontinspector", - "layoutview", "animationinspector"]; + // Concatenate the array with itself so that we can open each tool twice. + sidebarTools.push.apply(sidebarTools, sidebarTools); - // Concatenate the array with itself so that we can open each tool twice. - sidebarTools.push.apply(sidebarTools, sidebarTools); - + return new Promise(resolve => { // See TOOL_DELAY for why we need setTimeout here setTimeout(function selectSidebarTab() { let tool = sidebarTools.pop(); if (tool) { inspector.sidebar.select(tool); setTimeout(function() { setTimeout(selectSidebarTab, TOOL_DELAY); }, TOOL_DELAY); } else { - checkResults(); + resolve(); } }, TOOL_DELAY); }); } -function checkResults() { +function checkResults(Telemetry) { let result = Telemetry.prototype.telemetryInfo; for (let [histId, value] of Iterator(result)) { if (histId.startsWith("DEVTOOLS_INSPECTOR_")) { // Inspector stats are tested in browser_telemetry_toolboxtabs.js so we // skip them here because we only open the inspector once for this test. continue; } @@ -89,34 +77,9 @@ function checkResults() { let okay = value.every(function(element) { return element > 0; }); ok(okay, "All " + histId + " entries have time > 0"); } } - - finishUp(); } - -function finishUp() { - gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_toolbox.js +++ b/browser/devtools/shared/test/browser_telemetry_toolbox.js @@ -1,103 +1,20 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolbox.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_toolbox.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/commonjs/sdk/core/promise.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - }; - - openToolboxThreeTimes(); -} - -let pass = 0; -function openToolboxThreeTimes() { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, "inspector").then(function(toolbox) { - info("Toolbox opened"); - - toolbox.once("destroyed", function() { - if (pass++ === 3) { - checkResults(); - } else { - openToolboxThreeTimes(); - } - }); - // We use a timeout to check the toolbox's active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, console.error); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } + yield openAndCloseToolbox(3, TOOL_DELAY, "inspector"); + checkTelemetryResults(Telemetry); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_canvasdebugger.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_canvasdebugger.js @@ -1,117 +1,27 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_canvasdebugger.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_toolboxtabs_canvasdebugger.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); -let originalPref = Services.prefs.getBoolPref("devtools.canvasdebugger.enabled"); -Services.prefs.setBoolPref("devtools.canvasdebugger.enabled", true); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("canvasdebugger", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); +add_task(function*() { + info("Activate the canvasdebugger"); + let originalPref = Services.prefs.getBoolPref("devtools.canvasdebugger.enabled"); + Services.prefs.setBoolPref("devtools.canvasdebugger.enabled", true); - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; - - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); + yield openAndCloseToolbox(2, TOOL_DELAY, "canvasdebugger"); + checkTelemetryResults(Telemetry); - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} - -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; + info("De-activate the canvasdebugger"); Services.prefs.setBoolPref("devtools.canvasdebugger.enabled", originalPref); - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_inspector.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_inspector.js @@ -1,114 +1,20 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_inspector.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_toolboxtabs_inspector.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("inspector", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); - - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} + yield openAndCloseToolbox(2, TOOL_DELAY, "inspector"); + checkTelemetryResults(Telemetry); -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js @@ -1,114 +1,20 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_jsdebugger.js</p>"; +const TEST_URI = "data:text/html;charset=utf-8," + + "<p>browser_telemetry_toolboxtabs_jsdebugger.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("jsdebugger", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); - - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} + yield openAndCloseToolbox(2, TOOL_DELAY, "jsdebugger"); + checkTelemetryResults(Telemetry); -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js @@ -2,113 +2,18 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_jsprofiler.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("jsprofiler", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); - - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} + yield openAndCloseToolbox(2, TOOL_DELAY, "jsprofiler"); + checkTelemetryResults(Telemetry); -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_netmonitor.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_netmonitor.js @@ -2,113 +2,19 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_netmonitor.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("netmonitor", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); - - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} + yield openAndCloseToolbox(2, TOOL_DELAY, "netmonitor"); + checkTelemetryResults(Telemetry); -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; +}); - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_options.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_options.js @@ -2,113 +2,18 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_options.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("options", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); - - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} + yield openAndCloseToolbox(2, TOOL_DELAY, "options"); + checkTelemetryResults(Telemetry); -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_shadereditor.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_shadereditor.js @@ -1,124 +1,33 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ /////////////////// // // Whitelisting this test. -// As part of bug 1077403, the leaking uncaught rejection should be fixed. +// As part of bug 1077403, the leaking uncaught rejection should be fixed. // thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Shader Editor is still waiting for a WebGL context to be created."); const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_shadereditor.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); -let originalPref = Services.prefs.getBoolPref("devtools.shadereditor.enabled"); -Services.prefs.setBoolPref("devtools.shadereditor.enabled", true); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("shadereditor", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); +add_task(function*() { + info("Active the sharer editor"); + let originalPref = Services.prefs.getBoolPref("devtools.shadereditor.enabled"); + Services.prefs.setBoolPref("devtools.shadereditor.enabled", true); - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; - - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); + yield openAndCloseToolbox(2, TOOL_DELAY, "shadereditor"); + checkTelemetryResults(Telemetry); - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} - -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; + info("De-activate the sharer editor"); Services.prefs.setBoolPref("devtools.shadereditor.enabled", originalPref); - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_storage.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_storage.js @@ -2,118 +2,24 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_storage.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -let STORAGE_PREF = "devtools.storage.enabled"; -Services.prefs.setBoolPref(STORAGE_PREF, true); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("storage", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); +add_task(function*() { + info("Activating the storage inspector"); + Services.prefs.setBoolPref("devtools.storage.enabled", true); - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; - - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); + yield openAndCloseToolbox(2, TOOL_DELAY, "storage"); + checkTelemetryResults(Telemetry); - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} - -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - Services.prefs.clearUserPref(STORAGE_PREF); - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} + info("De-activating the storage inspector"); + Services.prefs.clearUserPref("devtools.storage.enabled"); +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_styleeditor.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_styleeditor.js @@ -2,113 +2,19 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_styleeditor.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("styleeditor", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); - - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} + yield openAndCloseToolbox(2, TOOL_DELAY, "styleeditor"); + checkTelemetryResults(Telemetry); -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; +}); - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -}
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_webaudioeditor.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_webaudioeditor.js @@ -2,117 +2,25 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_webaudioeditor.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -let originalPref = Services.prefs.getBoolPref("devtools.webaudioeditor.enabled"); -Services.prefs.setBoolPref("devtools.webaudioeditor.enabled", true); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("webaudioeditor", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); +add_task(function*() { + info("Activating the webaudioeditor"); + let originalPref = Services.prefs.getBoolPref("devtools.webaudioeditor.enabled"); + Services.prefs.setBoolPref("devtools.webaudioeditor.enabled", true); - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; - - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); + yield openAndCloseToolbox(2, TOOL_DELAY, "webaudioeditor"); + checkTelemetryResults(Telemetry); - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} - -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - + info("De-activating the webaudioeditor"); Services.prefs.setBoolPref("devtools.webaudioeditor.enabled", originalPref); - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/browser_telemetry_toolboxtabs_webconsole.js +++ b/browser/devtools/shared/test/browser_telemetry_toolboxtabs_webconsole.js @@ -2,113 +2,18 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ const TEST_URI = "data:text/html;charset=utf-8,<p>browser_telemetry_toolboxtabs_styleeditor_webconsole.js</p>"; // Because we need to gather stats for the period of time that a tool has been // opened we make use of setTimeout() to create tool active times. const TOOL_DELAY = 200; -let {Promise: promise} = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {}); -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let require = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools.require; -let Telemetry = require("devtools/shared/telemetry"); - -function init() { - Telemetry.prototype.telemetryInfo = {}; - Telemetry.prototype._oldlog = Telemetry.prototype.log; - Telemetry.prototype.log = function(histogramId, value) { - if (!this.telemetryInfo) { - // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) - return; - } - if (histogramId) { - if (!this.telemetryInfo[histogramId]) { - this.telemetryInfo[histogramId] = []; - } - - this.telemetryInfo[histogramId].push(value); - } - } - - openToolboxTabTwice("webconsole", false); -} - -function openToolboxTabTwice(id, secondPass) { - let target = TargetFactory.forTab(gBrowser.selectedTab); - - gDevTools.showToolbox(target, id).then(function(toolbox) { - info("Toolbox tab " + id + " opened"); - - toolbox.once("destroyed", function() { - if (secondPass) { - checkResults(); - } else { - openToolboxTabTwice(id, true); - } - }); - // We use a timeout to check the tools active time - setTimeout(function() { - gDevTools.closeToolbox(target); - }, TOOL_DELAY); - }).then(null, reportError); -} - -function checkResults() { - let result = Telemetry.prototype.telemetryInfo; +add_task(function*() { + yield promiseTab(TEST_URI); + let Telemetry = loadTelemetryAndRecordLogs(); - for (let [histId, value] of Iterator(result)) { - if (histId.endsWith("OPENED_PER_USER_FLAG")) { - ok(value.length === 1 && value[0] === true, - "Per user value " + histId + " has a single value of true"); - } else if (histId.endsWith("OPENED_BOOLEAN")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element === true; - }); - - ok(okay, "All " + histId + " entries are === true"); - } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { - ok(value.length > 1, histId + " has more than one entry"); - - let okay = value.every(function(element) { - return element > 0; - }); - - ok(okay, "All " + histId + " entries have time > 0"); - } - } - - finishUp(); -} + yield openAndCloseToolbox(2, TOOL_DELAY, "webconsole"); + checkTelemetryResults(Telemetry); -function reportError(error) { - let stack = " " + error.stack.replace(/\n?.*?@/g, "\n JS frame :: "); - - ok(false, "ERROR: " + error + " at " + error.fileName + ":" + - error.lineNumber + "\n\nStack trace:" + stack); - finishUp(); -} - -function finishUp() { + stopRecordingTelemetryLogs(Telemetry); gBrowser.removeCurrentTab(); - - Telemetry.prototype.log = Telemetry.prototype._oldlog; - delete Telemetry.prototype._oldlog; - delete Telemetry.prototype.telemetryInfo; - - TargetFactory = Services = promise = require = null; - - finish(); -} - -function test() { - waitForExplicitFinish(); - gBrowser.selectedTab = gBrowser.addTab(); - gBrowser.selectedBrowser.addEventListener("load", function() { - gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(init, content); - }, true); - - content.location = TEST_URI; -} +});
--- a/browser/devtools/shared/test/head.js +++ b/browser/devtools/shared/test/head.js @@ -1,17 +1,18 @@ /* 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/. */ let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}); +let {TargetFactory, require} = devtools; let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {}); -let TargetFactory = devtools.TargetFactory; +let {gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {}); const {DOMHelpers} = Cu.import("resource:///modules/devtools/DOMHelpers.jsm", {}); -const {Hosts} = devtools.require("devtools/framework/toolbox-hosts"); +const {Hosts} = require("devtools/framework/toolbox-hosts"); gDevTools.testing = true; SimpleTest.registerCleanupFunction(() => { gDevTools.testing = false; }); const TEST_URI_ROOT = "http://example.com/browser/browser/devtools/shared/test/"; const OPTIONS_VIEW_URL = TEST_URI_ROOT + "doc_options-view.xul"; @@ -143,8 +144,98 @@ function* createHost(type = "bottom", sr yield new Promise(resolve => { let domHelper = new DOMHelpers(iframe.contentWindow); iframe.setAttribute("src", src); domHelper.onceDOMReady(resolve); }); return [host, iframe.contentWindow, iframe.contentDocument]; } + +/** + * Load the Telemetry utils, then stub Telemetry.prototype.log in order to + * record everything that's logged in it. + * Store all recordings on Telemetry.telemetryInfo. + * @return {Telemetry} + */ +function loadTelemetryAndRecordLogs() { + info("Mock the Telemetry log function to record logged information"); + + let Telemetry = require("devtools/shared/telemetry"); + Telemetry.prototype.telemetryInfo = {}; + Telemetry.prototype._oldlog = Telemetry.prototype.log; + Telemetry.prototype.log = function(histogramId, value) { + if (!this.telemetryInfo) { + // Can be removed when Bug 992911 lands (see Bug 1011652 Comment 10) + return; + } + if (histogramId) { + if (!this.telemetryInfo[histogramId]) { + this.telemetryInfo[histogramId] = []; + } + + this.telemetryInfo[histogramId].push(value); + } + }; + + return Telemetry; +} + +/** + * Stop recording the Telemetry logs and put back the utils as it was before. + */ +function stopRecordingTelemetryLogs(Telemetry) { + Telemetry.prototype.log = Telemetry.prototype._oldlog; + delete Telemetry.prototype._oldlog; + delete Telemetry.prototype.telemetryInfo; +} + +/** + * Check the correctness of the data recorded in Telemetry after + * loadTelemetryAndRecordLogs was called. + */ +function checkTelemetryResults(Telemetry) { + let result = Telemetry.prototype.telemetryInfo; + + for (let [histId, value] of Iterator(result)) { + if (histId.endsWith("OPENED_PER_USER_FLAG")) { + ok(value.length === 1 && value[0] === true, + "Per user value " + histId + " has a single value of true"); + } else if (histId.endsWith("OPENED_BOOLEAN")) { + ok(value.length > 1, histId + " has more than one entry"); + + let okay = value.every(function(element) { + return element === true; + }); + + ok(okay, "All " + histId + " entries are === true"); + } else if (histId.endsWith("TIME_ACTIVE_SECONDS")) { + ok(value.length > 1, histId + " has more than one entry"); + + let okay = value.every(function(element) { + return element > 0; + }); + + ok(okay, "All " + histId + " entries have time > 0"); + } + } +} + +/** + * Open and close the toolbox in the current browser tab, several times, waiting + * some amount of time in between. + * @param {Number} nbOfTimes + * @param {Number} usageTime in milliseconds + * @param {String} toolId + */ +function* openAndCloseToolbox(nbOfTimes, usageTime, toolId) { + for (let i = 0; i < nbOfTimes; i ++) { + info("Opening toolbox " + (i + 1)); + let target = TargetFactory.forTab(gBrowser.selectedTab); + yield gDevTools.showToolbox(target, toolId) + + // We use a timeout to check the toolbox's active time + yield new Promise(resolve => setTimeout(resolve, usageTime)); + + info("Closing toolbox " + (i + 1)); + yield gDevTools.closeToolbox(target); + } +}