From 7d0addbab11fcc8a3783c5595b9f20d18d0bf278 Mon Sep 17 00:00:00 2001 From: David Rajchenbach-Teller Date: Mon, 11 Nov 2013 13:20:35 -0500 Subject: [PATCH] Bug 860493 - Add telemetry for history swipe animations. r=spohl,felipe --- .../base/content/browser-gestureSupport.js | 48 ++++++++++++------- toolkit/components/telemetry/Histograms.json | 12 +++++ 2 files changed, 43 insertions(+), 17 deletions(-) diff --git a/browser/base/content/browser-gestureSupport.js b/browser/base/content/browser-gestureSupport.js index d75ddb77aea..4c2e31baced 100644 --- a/browser/base/content/browser-gestureSupport.js +++ b/browser/base/content/browser-gestureSupport.js @@ -2,6 +2,8 @@ # 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/. +Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this); + // Simple gestures support // // As per bug #412486, web content must not be allowed to receive any @@ -941,24 +943,36 @@ let gHistorySwipeAnimation = { (gBrowser.webNavigation.sessionHistory.index < 0)) return; - let browser = gBrowser.selectedBrowser; - let r = browser.getBoundingClientRect(); - let canvas = document.createElementNS("http://www.w3.org/1999/xhtml", - "canvas"); - canvas.mozOpaque = true; - canvas.width = r.width; - canvas.height = r.height; - let ctx = canvas.getContext("2d"); - let zoom = browser.markupDocumentViewer.fullZoom; - ctx.scale(zoom, zoom); - ctx.drawWindow(browser.contentWindow, - 0, 0, r.width / zoom, r.height / zoom, "white", - ctx.DRAWWINDOW_DO_NOT_FLUSH | ctx.DRAWWINDOW_DRAW_VIEW | - ctx.DRAWWINDOW_ASYNC_DECODE_IMAGES | - ctx.DRAWWINDOW_USE_WIDGET_LAYERS); + let canvas = null; - this._installCurrentPageSnapshot(canvas); - this._assignSnapshotToCurrentBrowser(canvas); + TelemetryStopwatch.start("FX_GESTURE_TAKE_SNAPSHOT_OF_PAGE"); + try { + let browser = gBrowser.selectedBrowser; + let r = browser.getBoundingClientRect(); + canvas = document.createElementNS("http://www.w3.org/1999/xhtml", + "canvas"); + canvas.mozOpaque = true; + canvas.width = r.width; + canvas.height = r.height; + let ctx = canvas.getContext("2d"); + let zoom = browser.markupDocumentViewer.fullZoom; + ctx.scale(zoom, zoom); + ctx.drawWindow(browser.contentWindow, + 0, 0, r.width / zoom, r.height / zoom, "white", + ctx.DRAWWINDOW_DO_NOT_FLUSH | ctx.DRAWWINDOW_DRAW_VIEW | + ctx.DRAWWINDOW_ASYNC_DECODE_IMAGES | + ctx.DRAWWINDOW_USE_WIDGET_LAYERS); + } finally { + TelemetryStopwatch.finish("FX_GESTURE_TAKE_SNAPSHOT_OF_PAGE"); + } + + TelemetryStopwatch.start("FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE"); + try { + this._installCurrentPageSnapshot(canvas); + this._assignSnapshotToCurrentBrowser(canvas); + } finally { + TelemetryStopwatch.finish("FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE"); + } }, /** diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index bfd7e28f114..82f24633a8a 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -2627,6 +2627,18 @@ "n_buckets": 20, "description": "Gloda: indexing rate (message/s)" }, + "FX_GESTURE_TAKE_SNAPSHOT_OF_PAGE": { + "kind": "exponential", + "high": "1000", + "n_buckets": "30", + "description": "Firefox: Time taken to capture the page to a canvas, for reuse while swiping through history (ms)." + }, + "FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE": { + "kind": "exponential", + "high": "1000", + "n_buckets": "30", + "description": "Firefox: Time taken to store the image capture of the page to a canvas, for reuse while swiping through history (ms)." + }, "FX_TAB_ANIM_OPEN_MS": { "kind": "exponential", "high": "3000",