summaryrefslogtreecommitdiffstats
path: root/b2g/components/Screenshot.jsm
diff options
context:
space:
mode:
Diffstat (limited to 'b2g/components/Screenshot.jsm')
-rw-r--r--b2g/components/Screenshot.jsm43
1 files changed, 43 insertions, 0 deletions
diff --git a/b2g/components/Screenshot.jsm b/b2g/components/Screenshot.jsm
new file mode 100644
index 000000000..e6f809375
--- /dev/null
+++ b/b2g/components/Screenshot.jsm
@@ -0,0 +1,43 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+'use strict';
+
+const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
+
+Cu.import('resource://gre/modules/XPCOMUtils.jsm');
+
+XPCOMUtils.defineLazyModuleGetter(this, "SystemAppProxy", "resource://gre/modules/SystemAppProxy.jsm");
+
+this.EXPORTED_SYMBOLS = ['Screenshot'];
+
+var Screenshot = {
+ get: function screenshot_get() {
+ let systemAppFrame = SystemAppProxy.getFrame();
+ let window = systemAppFrame.ownerDocument.defaultView;
+ let document = window.document;
+
+ var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');
+ var docRect = document.body.getBoundingClientRect();
+ var width = docRect.width;
+ var height = docRect.height;
+
+ // Convert width and height from CSS pixels (potentially fractional)
+ // to device pixels (integer).
+ var scale = window.devicePixelRatio;
+ canvas.setAttribute('width', Math.round(width * scale));
+ canvas.setAttribute('height', Math.round(height * scale));
+
+ var context = canvas.getContext('2d');
+ var flags =
+ context.DRAWWINDOW_DRAW_CARET |
+ context.DRAWWINDOW_DRAW_VIEW |
+ context.DRAWWINDOW_USE_WIDGET_LAYERS;
+ context.scale(scale, scale);
+ context.drawWindow(window, 0, 0, width, height, 'rgb(255,255,255)', flags);
+
+ return canvas.mozGetAsFile('screenshot', 'image/png');
+ }
+};
+this.Screenshot = Screenshot;