Bug 1253125 - Stop duplicating telemetry from inside tools. r=mratcliffe
MozReview-Commit-ID: IRidYhLsJpy
--- a/devtools/client/canvasdebugger/canvasdebugger.js
+++ b/devtools/client/canvasdebugger/canvasdebugger.js
@@ -13,19 +13,16 @@ Cu.import("resource://gre/modules/Consol
const { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
const promise = require("promise");
const Services = require("Services");
const EventEmitter = require("devtools/shared/event-emitter");
const { CallWatcherFront } = require("devtools/server/actors/call-watcher");
const { CanvasFront } = require("devtools/server/actors/canvas");
const DevToolsUtils = require("devtools/shared/DevToolsUtils");
-const Telemetry = require("devtools/client/shared/telemetry");
-const telemetry = new Telemetry();
-
const CANVAS_ACTOR_RECORDING_ATTEMPT = DevToolsUtils.testing ? 500 : 5000;
XPCOMUtils.defineLazyModuleGetter(this, "Task",
"resource://gre/modules/Task.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PluralForm",
"resource://gre/modules/PluralForm.jsm");
@@ -127,27 +124,25 @@ function shutdownCanvasDebugger() {
/**
* Functions handling target-related lifetime events.
*/
var EventsHandler = {
/**
* Listen for events emitted by the current tab target.
*/
initialize: function() {
- telemetry.toolOpened("canvasdebugger");
this._onTabNavigated = this._onTabNavigated.bind(this);
gTarget.on("will-navigate", this._onTabNavigated);
gTarget.on("navigate", this._onTabNavigated);
},
/**
* Remove events emitted by the current tab target.
*/
destroy: function() {
- telemetry.toolClosed("canvasdebugger");
gTarget.off("will-navigate", this._onTabNavigated);
gTarget.off("navigate", this._onTabNavigated);
},
/**
* Called for each location change in the debugged tab.
*/
_onTabNavigated: function(event) {
--- a/devtools/client/memory/initializer.js
+++ b/devtools/client/memory/initializer.js
@@ -10,47 +10,43 @@ Cu.import("resource://devtools/client/sh
const { require } = BrowserLoaderModule.BrowserLoader("resource://devtools/client/memory/", this);
const { Task } = require("resource://gre/modules/Task.jsm");
const { createFactory, createElement } = require("devtools/client/shared/vendor/react");
const ReactDOM = require("devtools/client/shared/vendor/react-dom");
const { Provider } = require("devtools/client/shared/vendor/react-redux");
const App = createFactory(require("devtools/client/memory/app"));
const Store = require("devtools/client/memory/store");
const { assert } = require("devtools/shared/DevToolsUtils");
-const Telemetry = require("devtools/client/shared/telemetry");
/**
* The current target, toolbox, MemoryFront, and HeapAnalysesClient, set by this tool's host.
*/
var gToolbox, gTarget, gFront, gHeapAnalysesClient;
/**
* Variables set by `initialize()`
*/
var gStore, gRoot, gApp, gProvider, unsubscribe, isHighlighted, telemetry;
var initialize = Task.async(function*() {
- telemetry = new Telemetry();
- telemetry.toolOpened("memory");
gRoot = document.querySelector("#app");
gStore = Store();
gApp = createElement(App, { toolbox: gToolbox, front: gFront, heapWorker: gHeapAnalysesClient });
gProvider = createElement(Provider, { store: gStore }, gApp);
ReactDOM.render(gProvider, gRoot);
unsubscribe = gStore.subscribe(onStateChange);
});
var destroy = Task.async(function*() {
const ok = ReactDOM.unmountComponentAtNode(gRoot);
assert(ok, "Should successfully unmount the memory tool's top level React component");
- telemetry.toolClosed("memory");
unsubscribe();
- gStore, gRoot, gApp, gProvider, unsubscribe, isHighlighted, telemetry = null;
+ gStore, gRoot, gApp, gProvider, unsubscribe, isHighlighted;
});
/**
* Fired on any state change, currently only handles toggling
* the highlighting of the tool when recording allocations.
*/
function onStateChange () {
let isRecording = gStore.getState().allocations.recording;
--- a/devtools/client/scratchpad/scratchpad.js
+++ b/devtools/client/scratchpad/scratchpad.js
@@ -40,17 +40,16 @@ const EDITOR_FONT_SIZE = "devtools.scrat
const ENABLE_AUTOCOMPLETION = "devtools.scratchpad.enableAutocompletion";
const TAB_SIZE = "devtools.editor.tabsize";
const FALLBACK_CHARSET_LIST = "intl.fallbackCharsetList.ISO-8859-1";
const VARIABLES_VIEW_URL = "chrome://devtools/content/shared/widgets/VariablesView.xul";
const {require, loader} = Cu.import("resource://devtools/shared/Loader.jsm", {});
-const Telemetry = require("devtools/client/shared/telemetry");
const Editor = require("devtools/client/sourceeditor/editor");
const TargetFactory = require("devtools/client/framework/target").TargetFactory;
const EventEmitter = require("devtools/shared/event-emitter");
const {DevToolsWorker} = require("devtools/shared/worker/worker");
const DevToolsUtils = require("devtools/shared/DevToolsUtils");
const promise = require("promise");
const Services = require("Services");
const {gDevTools} = require("devtools/client/framework/devtools");
@@ -87,21 +86,16 @@ XPCOMUtils.defineLazyGetter(this, "REMOT
Services.prefs.getIntPref("devtools.debugger.remote-timeout"));
XPCOMUtils.defineLazyModuleGetter(this, "ShortcutUtils",
"resource://gre/modules/ShortcutUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Reflect",
"resource://gre/modules/reflect.jsm");
-// Because we have no constructor / destructor where we can log metrics we need
-// to do so here.
-var telemetry = new Telemetry();
-telemetry.toolOpened("scratchpad");
-
var WebConsoleUtils = require("devtools/shared/webconsole/utils").Utils;
/**
* The scratchpad object handles the Scratchpad window functionality.
*/
var Scratchpad = {
_instanceId: null,
_initialWindowTitle: document.title,
@@ -1918,17 +1912,16 @@ var Scratchpad = {
this.promptSave((aShouldClose, aSaved, aStatus) => {
shouldClose = aShouldClose;
if (aSaved && !Components.isSuccessCode(aStatus)) {
shouldClose = false;
}
if (shouldClose) {
- telemetry.toolClosed("scratchpad");
window.close();
}
if (aCallback) {
aCallback(shouldClose);
}
});
--- a/devtools/client/shadereditor/shadereditor.js
+++ b/devtools/client/shadereditor/shadereditor.js
@@ -12,18 +12,16 @@ Cu.import("resource://devtools/client/sh
Cu.import("resource://gre/modules/Console.jsm");
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
const promise = require("promise");
const Services = require("Services");
const EventEmitter = require("devtools/shared/event-emitter");
const {Tooltip} = require("devtools/client/shared/widgets/Tooltip");
const Editor = require("devtools/client/sourceeditor/editor");
-const Telemetry = require("devtools/client/shared/telemetry");
-const telemetry = new Telemetry();
// The panel's window global is an EventEmitter firing the following events:
const EVENTS = {
// When new programs are received from the server.
NEW_PROGRAM: "ShaderEditor:NewProgram",
PROGRAMS_ADDED: "ShaderEditor:ProgramsAdded",
// When the vertex and fragment sources were shown in the editor.
@@ -82,34 +80,32 @@ function shutdownShaderEditor() {
/**
* Functions handling target-related lifetime events.
*/
var EventsHandler = {
/**
* Listen for events emitted by the current tab target.
*/
initialize: function() {
- telemetry.toolOpened("shadereditor");
this._onHostChanged = this._onHostChanged.bind(this);
this._onTabNavigated = this._onTabNavigated.bind(this);
this._onProgramLinked = this._onProgramLinked.bind(this);
this._onProgramsAdded = this._onProgramsAdded.bind(this);
gToolbox.on("host-changed", this._onHostChanged);
gTarget.on("will-navigate", this._onTabNavigated);
gTarget.on("navigate", this._onTabNavigated);
gFront.on("program-linked", this._onProgramLinked);
this.reloadButton = $("#requests-menu-reload-notice-button");
this.reloadButton.addEventListener("command", this._onReloadCommand);
},
/**
* Remove events emitted by the current tab target.
*/
destroy: function() {
- telemetry.toolClosed("shadereditor");
gToolbox.off("host-changed", this._onHostChanged);
gTarget.off("will-navigate", this._onTabNavigated);
gTarget.off("navigate", this._onTabNavigated);
gFront.off("program-linked", this._onProgramLinked);
this.reloadButton.removeEventListener("command", this._onReloadCommand);
},
/**
--- a/devtools/client/storage/ui.js
+++ b/devtools/client/storage/ui.js
@@ -12,18 +12,16 @@ loader.lazyRequireGetter(this, "TreeWidg
"devtools/client/shared/widgets/TreeWidget", true);
loader.lazyRequireGetter(this, "TableWidget",
"devtools/client/shared/widgets/TableWidget", true);
loader.lazyImporter(this, "ViewHelpers",
"resource://devtools/client/shared/widgets/ViewHelpers.jsm");
loader.lazyImporter(this, "VariablesView",
"resource://devtools/client/shared/widgets/VariablesView.jsm");
-const Telemetry = require("devtools/client/shared/telemetry");
-
/**
* Localization convenience methods.
*/
const STORAGE_STRINGS = "chrome://devtools/locale/storage.properties";
const L10N = new ViewHelpers.L10N(STORAGE_STRINGS);
const GENERIC_VARIABLES_VIEW_SETTINGS = {
lazyEmpty: true,
@@ -91,19 +89,16 @@ var StorageUI = this.StorageUI = functio
this.onUpdate = this.onUpdate.bind(this);
this.front.on("stores-update", this.onUpdate);
this.onCleared = this.onCleared.bind(this);
this.front.on("stores-cleared", this.onCleared);
this.handleKeypress = this.handleKeypress.bind(this);
this._panelDoc.addEventListener("keypress", this.handleKeypress);
-
- this._telemetry = new Telemetry();
- this._telemetry.toolOpened("storage");
};
exports.StorageUI = StorageUI;
StorageUI.prototype = {
storageTypes: null,
shouldResetColumns: true,
@@ -114,17 +109,16 @@ StorageUI.prototype = {
},
destroy: function() {
this.front.off("stores-update", this.onUpdate);
this.front.off("stores-cleared", this.onCleared);
this._panelDoc.removeEventListener("keypress", this.handleKeypress);
this.searchBox.removeEventListener("input", this.filterItems);
this.searchBox = null;
- this._telemetry.toolClosed("storage");
},
/**
* Empties and hides the object viewer sidebar
*/
hideSidebar: function() {
this.view.empty();
this.sidebar.hidden = true;
--- a/devtools/client/webaudioeditor/controller.js
+++ b/devtools/client/webaudioeditor/controller.js
@@ -37,17 +37,16 @@ function shutdownWebAudioEditor() {
/**
* Functions handling target-related lifetime events.
*/
var WebAudioEditorController = {
/**
* Listen for events emitted by the current tab target.
*/
initialize: Task.async(function* () {
- telemetry.toolOpened("webaudioeditor");
this._onTabNavigated = this._onTabNavigated.bind(this);
this._onThemeChange = this._onThemeChange.bind(this);
gTarget.on("will-navigate", this._onTabNavigated);
gTarget.on("navigate", this._onTabNavigated);
gFront.on("start-context", this._onStartContext);
gFront.on("create-node", this._onCreateNode);
gFront.on("connect-node", this._onConnectNode);
@@ -71,17 +70,16 @@ var WebAudioEditorController = {
AUDIO_NODE_DEFINITION = require("devtools/server/actors/utils/audionodes.json");
}
}),
/**
* Remove events emitted by the current tab target.
*/
destroy: function() {
- telemetry.toolClosed("webaudioeditor");
gTarget.off("will-navigate", this._onTabNavigated);
gTarget.off("navigate", this._onTabNavigated);
gFront.off("start-context", this._onStartContext);
gFront.off("create-node", this._onCreateNode);
gFront.off("connect-node", this._onConnectNode);
gFront.off("connect-param", this._onConnectParam);
gFront.off("disconnect-node", this._onDisconnectNode);
gFront.off("change-param", this._onChangeParam);
--- a/devtools/client/webaudioeditor/includes.js
+++ b/devtools/client/webaudioeditor/includes.js
@@ -13,18 +13,16 @@ const { loader, require } = Cu.import("r
var { console } = Cu.import("resource://gre/modules/Console.jsm", {});
var { EventTarget } = require("sdk/event/target");
const { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
const { Class } = require("sdk/core/heritage");
const EventEmitter = require("devtools/shared/event-emitter");
const STRINGS_URI = "chrome://devtools/locale/webaudioeditor.properties"
const L10N = new ViewHelpers.L10N(STRINGS_URI);
-const Telemetry = require("devtools/client/shared/telemetry");
-const telemetry = new Telemetry();
const DevToolsUtils = require("devtools/shared/DevToolsUtils");
const Services = require("Services");
const { gDevTools } = require("devtools/client/framework/devtools");
loader.lazyRequireGetter(this, "LineGraphWidget",
"devtools/client/shared/widgets/LineGraphWidget");
// `AUDIO_NODE_DEFINITION` defined in the controller's initialization,
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -6909,17 +6909,17 @@
"description": "Number of times the DevTools Tilt has been opened via the toolbox button.",
"releaseChannelCollection": "opt-out"
},
"DEVTOOLS_SCRATCHPAD_OPENED_COUNT": {
"alert_emails": ["dev-developer-tools@lists.mozilla.org"],
"expires_in_version": "never",
"kind": "count",
"bug_numbers": [1247985],
- "description": "Number of times the DevTools Scratchpad has been opened.",
+ "description": "Number of times the DevTools Scratchpad toolbox panel has been opened.",
"releaseChannelCollection": "opt-out"
},
"DEVTOOLS_SCRATCHPAD_WINDOW_OPENED_COUNT": {
"alert_emails": ["dev-developer-tools@lists.mozilla.org"],
"expires_in_version": "never",
"kind": "count",
"bug_numbers": [1214352, 1247985],
"description": "Number of times the DevTools Scratchpad standalone window has been opened.",