Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(852)

Unified Diff: third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeView.js

Issue 1928453002: DevTools: account for client devicePixelRatio while capturing screenshots. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments addressed Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeView.js b/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeView.js
index 37f2b43e33b611a8f0f1f7ebf607df4cbf25948b..47ce70d66b4e49e382ca616bb0df84255b9def02 100644
--- a/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeView.js
+++ b/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeView.js
@@ -396,28 +396,52 @@ WebInspector.DeviceModeView.prototype = {
var canvas = createElement("canvas");
var ctx = canvas.getContext("2d");
var screenRect = this._model.screenRect();
- canvas.width = screenRect.width;
- canvas.height = screenRect.height;
+ var dpr = window.devicePixelRatio;
+ canvas.width = screenRect.width * dpr;
+ canvas.height = screenRect.height * dpr;
// Add any available screen images.
if (this._model.screenImage()) {
var screenImage = new Image();
screenImage.crossOrigin = "Anonymous";
screenImage.srcset = this._model.screenImage();
- ctx.drawImage(screenImage, 0, 0, screenRect.width, screenRect.height);
+ screenImage.onload = onImageLoad.bind(this);
+ screenImage.onerror = paintScreenshot.bind(this);
+ } else {
+ paintScreenshot.call(this);
+ }
+
+ /**
+ * @this {WebInspector.DeviceModeView}
+ */
+ function onImageLoad()
+ {
+ ctx.drawImage(screenImage, 0, 0, screenRect.width * dpr, screenRect.height * dpr);
+ paintScreenshot.call(this);
+ }
+
+ /**
+ * @this {WebInspector.DeviceModeView}
+ */
+ function paintScreenshot()
+ {
+ var pageImage = new Image();
+ pageImage.src = "data:image/png;base64," + content;
+ var visiblePageRect = this._model.visiblePageRect().scale(dpr);
+ ctx.drawImage(pageImage,
+ visiblePageRect.left,
+ visiblePageRect.top,
+ visiblePageRect.width,
+ visiblePageRect.height);
+ var mainFrame = mainTarget.resourceTreeModel.mainFrame;
+ var fileName = mainFrame ? mainFrame.url.trimURL().removeURLFragment() : "";
+ if (this._model.type() === WebInspector.DeviceModeModel.Type.Device)
+ fileName += WebInspector.UIString("(%s)", this._model.device().title);
+ // Trigger download.
+ var link = createElement("a");
+ link.download = fileName + ".png";
+ link.href = canvas.toDataURL("image/png");
+ link.click();
}
- var pageImage = new Image();
- pageImage.src = "data:image/png;base64," + content;
- var visiblePageRect = this._model.visiblePageRect();
- ctx.drawImage(pageImage, visiblePageRect.left, visiblePageRect.top, visiblePageRect.width, visiblePageRect.height);
- var mainFrame = mainTarget.resourceTreeModel.mainFrame;
- var fileName = mainFrame ? mainFrame.url.trimURL().removeURLFragment() : "";
- if (this._model.type() === WebInspector.DeviceModeModel.Type.Device)
- fileName += WebInspector.UIString("(%s)", this._model.device().title);
- // Trigger download.
- var link = createElement("a");
- link.download = fileName + ".png";
- link.href = canvas.toDataURL("image/png");
- link.click();
}
},
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698