| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 /** | 4 /** |
| 5 * @unrestricted | 5 * @unrestricted |
| 6 */ | 6 */ |
| 7 Emulation.DeviceModeView = class extends UI.VBox { | 7 Emulation.DeviceModeView = class extends UI.VBox { |
| 8 constructor() { | 8 constructor() { |
| 9 super(true); | 9 super(true); |
| 10 this.setMinimumSize(150, 150); | 10 this.setMinimumSize(150, 150); |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 } | 353 } |
| 354 | 354 |
| 355 /** | 355 /** |
| 356 * @override | 356 * @override |
| 357 */ | 357 */ |
| 358 willHide() { | 358 willHide() { |
| 359 this._model.emulate(Emulation.DeviceModeModel.Type.None, null, null); | 359 this._model.emulate(Emulation.DeviceModeModel.Type.None, null, null); |
| 360 } | 360 } |
| 361 | 361 |
| 362 captureScreenshot() { | 362 captureScreenshot() { |
| 363 var mainTarget = SDK.targetManager.mainTarget(); | 363 var target = this._model.target(); |
| 364 if (!mainTarget) | 364 if (!target) |
| 365 return; |
| 366 var screenCaptureModel = target.model(SDK.ScreenCaptureModel); |
| 367 if (!screenCaptureModel) |
| 365 return; | 368 return; |
| 366 SDK.DOMModel.muteHighlight(); | 369 SDK.DOMModel.muteHighlight(); |
| 367 | 370 |
| 368 var zoomFactor = UI.zoomManager.zoomFactor(); | 371 var zoomFactor = UI.zoomManager.zoomFactor(); |
| 369 var rect = this._contentArea.getBoundingClientRect(); | 372 var rect = this._contentArea.getBoundingClientRect(); |
| 370 var availableSize = new UI.Size(Math.max(rect.width * zoomFactor, 1), Math.m
ax(rect.height * zoomFactor, 1)); | 373 var availableSize = new UI.Size(Math.max(rect.width * zoomFactor, 1), Math.m
ax(rect.height * zoomFactor, 1)); |
| 371 var outlineVisible = this._model.deviceOutlineSetting().get(); | 374 var outlineVisible = this._model.deviceOutlineSetting().get(); |
| 372 | 375 |
| 373 if (availableSize.width < this._model.screenRect().width || | 376 if (availableSize.width < this._model.screenRect().width || |
| 374 availableSize.height < this._model.screenRect().height) { | 377 availableSize.height < this._model.screenRect().height) { |
| 375 UI.inspectorView.minimize(); | 378 UI.inspectorView.minimize(); |
| 376 this._model.deviceOutlineSetting().set(false); | 379 this._model.deviceOutlineSetting().set(false); |
| 377 } | 380 } |
| 378 | 381 |
| 379 mainTarget.pageAgent().captureScreenshot('png', 100, screenshotCaptured.bind
(this)); | 382 screenCaptureModel.captureScreenshot('png', 100).then(screenshotCaptured.bin
d(this)); |
| 380 | 383 |
| 381 /** | 384 /** |
| 382 * @param {?Protocol.Error} error | 385 * @param {?string} content |
| 383 * @param {string} content | |
| 384 * @this {Emulation.DeviceModeView} | 386 * @this {Emulation.DeviceModeView} |
| 385 */ | 387 */ |
| 386 function screenshotCaptured(error, content) { | 388 function screenshotCaptured(content) { |
| 387 this._model.deviceOutlineSetting().set(outlineVisible); | 389 this._model.deviceOutlineSetting().set(outlineVisible); |
| 388 var dpr = window.devicePixelRatio; | 390 var dpr = window.devicePixelRatio; |
| 389 var outlineRect = this._model.outlineRect().scale(dpr); | 391 var outlineRect = this._model.outlineRect().scale(dpr); |
| 390 var screenRect = this._model.screenRect().scale(dpr); | 392 var screenRect = this._model.screenRect().scale(dpr); |
| 391 screenRect.left -= outlineRect.left; | 393 screenRect.left -= outlineRect.left; |
| 392 screenRect.top -= outlineRect.top; | 394 screenRect.top -= outlineRect.top; |
| 393 var visiblePageRect = this._model.visiblePageRect().scale(dpr); | 395 var visiblePageRect = this._model.visiblePageRect().scale(dpr); |
| 394 visiblePageRect.left += screenRect.left; | 396 visiblePageRect.left += screenRect.left; |
| 395 visiblePageRect.top += screenRect.top; | 397 visiblePageRect.top += screenRect.top; |
| 396 outlineRect.left = 0; | 398 outlineRect.left = 0; |
| 397 outlineRect.top = 0; | 399 outlineRect.top = 0; |
| 398 | 400 |
| 399 SDK.DOMModel.unmuteHighlight(); | 401 SDK.DOMModel.unmuteHighlight(); |
| 400 UI.inspectorView.restore(); | 402 UI.inspectorView.restore(); |
| 401 | 403 |
| 402 if (error) { | 404 if (content === null) |
| 403 console.error(error); | |
| 404 return; | 405 return; |
| 405 } | |
| 406 | 406 |
| 407 // Create a canvas to splice the images together. | 407 // Create a canvas to splice the images together. |
| 408 var canvas = createElement('canvas'); | 408 var canvas = createElement('canvas'); |
| 409 var ctx = canvas.getContext('2d'); | 409 var ctx = canvas.getContext('2d'); |
| 410 canvas.width = outlineRect.width; | 410 canvas.width = outlineRect.width; |
| 411 canvas.height = outlineRect.height; | 411 canvas.height = outlineRect.height; |
| 412 ctx.imageSmoothingEnabled = false; | 412 ctx.imageSmoothingEnabled = false; |
| 413 | 413 |
| 414 var promise = Promise.resolve(); | 414 var promise = Promise.resolve(); |
| 415 if (this._model.outlineImage()) | 415 if (this._model.outlineImage()) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 450 /** | 450 /** |
| 451 * @this {Emulation.DeviceModeView} | 451 * @this {Emulation.DeviceModeView} |
| 452 */ | 452 */ |
| 453 function paintScreenshot() { | 453 function paintScreenshot() { |
| 454 var pageImage = new Image(); | 454 var pageImage = new Image(); |
| 455 pageImage.src = 'data:image/png;base64,' + content; | 455 pageImage.src = 'data:image/png;base64,' + content; |
| 456 pageImage.onload = () => { | 456 pageImage.onload = () => { |
| 457 ctx.drawImage( | 457 ctx.drawImage( |
| 458 pageImage, visiblePageRect.left, visiblePageRect.top, Math.min(pag
eImage.naturalWidth, screenRect.width), | 458 pageImage, visiblePageRect.left, visiblePageRect.top, Math.min(pag
eImage.naturalWidth, screenRect.width), |
| 459 Math.min(pageImage.naturalHeight, screenRect.height)); | 459 Math.min(pageImage.naturalHeight, screenRect.height)); |
| 460 var url = mainTarget && mainTarget.inspectedURL(); | 460 var url = target.inspectedURL(); |
| 461 var fileName = url ? url.trimURL().removeURLFragment() : ''; | 461 var fileName = url ? url.trimURL().removeURLFragment() : ''; |
| 462 if (this._model.type() === Emulation.DeviceModeModel.Type.Device) | 462 if (this._model.type() === Emulation.DeviceModeModel.Type.Device) |
| 463 fileName += Common.UIString('(%s)', this._model.device().title); | 463 fileName += Common.UIString('(%s)', this._model.device().title); |
| 464 // Trigger download. | 464 // Trigger download. |
| 465 var link = createElement('a'); | 465 var link = createElement('a'); |
| 466 link.download = fileName + '.png'; | 466 link.download = fileName + '.png'; |
| 467 link.href = canvas.toDataURL('image/png'); | 467 link.href = canvas.toDataURL('image/png'); |
| 468 link.click(); | 468 link.click(); |
| 469 }; | 469 }; |
| 470 } | 470 } |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 565 return Promise.resolve(); | 565 return Promise.resolve(); |
| 566 } | 566 } |
| 567 | 567 |
| 568 /** | 568 /** |
| 569 * @param {number} size | 569 * @param {number} size |
| 570 */ | 570 */ |
| 571 _onMarkerClick(size) { | 571 _onMarkerClick(size) { |
| 572 this._applyCallback.call(null, size); | 572 this._applyCallback.call(null, size); |
| 573 } | 573 } |
| 574 }; | 574 }; |
| OLD | NEW |