Bug 1461764 Add Telemetry to track cross-domain canvas use r?mstange
MozReview-Commit-ID: 6tZ8VK7xZgq
--- 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,