Bug 1461764 Add Telemetry to track cross-domain canvas use r?mstange draft
authorTom Ritter <tom@mozilla.com>
Tue, 05 Jun 2018 16:31:30 -0500
changeset 804387 2d2537a6d2f79baefdc0c635eea1ee5d08d63c54
parent 803743 d8f180ab74921fd07a66d6868914a48e5f9ea797
push id112364
push userbmo:tom@mozilla.com
push dateTue, 05 Jun 2018 21:30:55 +0000
reviewersmstange
bugs1461764
milestone62.0a1
Bug 1461764 Add Telemetry to track cross-domain canvas use r?mstange MozReview-Commit-ID: 6tZ8VK7xZgq
dom/html/HTMLCanvasElement.cpp
toolkit/components/telemetry/Histograms.json
--- a/dom/html/HTMLCanvasElement.cpp
+++ b/dom/html/HTMLCanvasElement.cpp
@@ -396,16 +396,21 @@ NS_IMPL_ISUPPORTS(HTMLCanvasElementObser
 HTMLCanvasElement::HTMLCanvasElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
   : nsGenericHTMLElement(aNodeInfo),
     mResetLayer(true) ,
     mWriteOnly(false)
 {}
 
 HTMLCanvasElement::~HTMLCanvasElement()
 {
+  uint64_t canvasSize = (uint64_t)GetSize().width * (uint64_t)GetSize().height;
+  Telemetry::Accumulate(Telemetry::CANVAS_CROSSDOMAIN,
+    (IsWriteOnly() ? NS_LITERAL_CSTRING("tainted") : NS_LITERAL_CSTRING("not tainted")),
+    (canvasSize > UINT32_MAX ? UINT32_MAX : (uint32_t)canvasSize));
+
   if (mContextObserver) {
     mContextObserver->Destroy();
     mContextObserver = nullptr;
   }
 
   ResetPrintCallback();
   if (mRequestedFrameRefreshObserver) {
     mRequestedFrameRefreshObserver->DetachFromRefreshDriver();
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -1377,16 +1377,29 @@
   "CANVAS_WEBGL2_SUCCESS": {
     "record_in_processes": ["main", "content"],
     "alert_emails": ["jmuizelaar@mozilla.com"],
     "expires_in_version": "never",
     "kind": "boolean",
     "description": "WebGL2 creation success",
     "bug_numbers": [1247327]
   },
+  "CANVAS_CROSSDOMAIN": {
+    "record_in_processes": ["content"],
+    "alert_emails": ["tom@mozilla.com", "senglehardt@mozilla.com"],
+    "expires_in_version": "never",
+    "kind": "exponential",
+    "keyed": true,
+    "keys": ["not tainted", "tainted"],
+    "low": 1,
+    "high": 30000,
+    "n_buckets": 5,
+    "bug_numbers": [1461764],
+    "description": "Cross-domain canvas"
+  },
   "TOTAL_CONTENT_PAGE_LOAD_TIME": {
     "record_in_processes": ["main", "content"],
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 100,
     "high": 30000,
     "n_buckets": 100,