Bug 1280234 - Add Mozilla-only telemetry WebExtension API. r= draft
authorTim Nguyen <ntim.bugs@gmail.com>
Fri, 19 Jan 2018 00:25:20 +0000
changeset 722407 1d89e63159120e0761d7dd724b08599928a4f4cc
parent 720144 47aae85fb8cdb69121abe6b7a7ce24eaaa047b7f
child 746617 2362a4406506c37aa50c66558046c6ad3c4ac357
push id96152
push userbmo:ntim.bugs@gmail.com
push dateFri, 19 Jan 2018 00:27:24 +0000
bugs1280234
milestone59.0a1
Bug 1280234 - Add Mozilla-only telemetry WebExtension API. r= MozReview-Commit-ID: BlF08SMRJsN
toolkit/components/extensions/ext-telemetry.js
toolkit/components/extensions/jar.mn
toolkit/components/extensions/schemas/jar.mn
toolkit/components/extensions/schemas/telemetry.json
new file mode 100644
--- /dev/null
+++ b/toolkit/components/extensions/ext-telemetry.js
@@ -0,0 +1,25 @@
+"use strict";
+
+const {utils: Cu} = Components;
+
+Cu.import("resource://gre/modules/TelemetryController.jsm");
+
+this.telemetry = class extends ExtensionAPI {
+  getAPI(context) {
+    let {extension} = context;
+    return {
+      telemetry: {
+        send(message, options = {
+          addClientId: true,
+          addEnvironment: true,
+        }) {
+          TelemetryController.submitExternalPing(
+            extension.id,
+            message,
+            options
+          );
+        },
+      },
+    };
+  }
+};
--- a/toolkit/components/extensions/jar.mn
+++ b/toolkit/components/extensions/jar.mn
@@ -24,16 +24,17 @@ toolkit.jar:
     content/extensions/ext-notifications.js
     content/extensions/ext-permissions.js
     content/extensions/ext-privacy.js
     content/extensions/ext-protocolHandlers.js
     content/extensions/ext-proxy.js
     content/extensions/ext-runtime.js
     content/extensions/ext-storage.js
     content/extensions/ext-tabs-base.js
+    content/extensions/ext-telemetry.js
     content/extensions/ext-theme.js
     content/extensions/ext-toolkit.js
     content/extensions/ext-toolkit.json
     content/extensions/ext-topSites.js
     content/extensions/ext-webRequest.js
     content/extensions/ext-webNavigation.js
     # Below is a separate group using the naming convention ext-c-*.js that run
     # in the child process.
--- a/toolkit/components/extensions/schemas/jar.mn
+++ b/toolkit/components/extensions/schemas/jar.mn
@@ -25,14 +25,15 @@ toolkit.jar:
     content/extensions/schemas/manifest.json
     content/extensions/schemas/native_manifest.json
     content/extensions/schemas/notifications.json
     content/extensions/schemas/permissions.json
     content/extensions/schemas/proxy.json
     content/extensions/schemas/privacy.json
     content/extensions/schemas/runtime.json
     content/extensions/schemas/storage.json
+    content/extensions/schemas/telemetry.json
     content/extensions/schemas/test.json
     content/extensions/schemas/theme.json
     content/extensions/schemas/top_sites.json
     content/extensions/schemas/types.json
     content/extensions/schemas/web_navigation.json
     content/extensions/schemas/web_request.json
new file mode 100644
--- /dev/null
+++ b/toolkit/components/extensions/schemas/telemetry.json
@@ -0,0 +1,22 @@
+[
+  {
+    "namespace": "telemetry",
+    "description": "Use the browser.telemetry API to send telemetry data to a telemetry service.",
+    "permissions": ["telemetry", "mozillaAddons"],
+    "functions": [{
+      "name": "send",
+      "type": "function",
+      "description": "Sends a ping to the Telemetry back-end.",
+      "parameters": [
+        {
+          "name": "message",
+          "type": "object"
+        },
+        {
+          "name": "options",
+          "type": "object"
+        }
+      ]
+    }]
+  }
+]