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

Unified Diff: Source/devtools/front_end/ResponsiveDesignView.js

Issue 298913004: [DevTools] Add Toolbox page to undocked DevTools frontend. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 7 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
Index: Source/devtools/front_end/ResponsiveDesignView.js
diff --git a/Source/devtools/front_end/ResponsiveDesignView.js b/Source/devtools/front_end/ResponsiveDesignView.js
deleted file mode 100644
index 246a458e8b8e5a217d124154508c143360c2b2c5..0000000000000000000000000000000000000000
--- a/Source/devtools/front_end/ResponsiveDesignView.js
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @constructor
- * @extends {WebInspector.VBox}
- * @implements {WebInspector.OverridesSupport.PageResizer}
- * @param {!WebInspector.InspectedPagePlaceholder} inspectedPagePlaceholder
- */
-WebInspector.ResponsiveDesignView = function(inspectedPagePlaceholder)
-{
- WebInspector.VBox.call(this);
- this.registerRequiredCSS("responsiveDesignView.css");
-
- this._container = new WebInspector.View();
- this._container.element.classList.add("responsive-design");
-
- this._canvas = this._container.element.createChild("canvas", "fill");
- this._resetButton = this._container.element.createChild("div", "responsive-design-reset-button");
- this._resetButton.addEventListener("click", this._reset.bind(this), false);
- this._resetButton.title = WebInspector.UIString("Fit available space");
-
- this._slidersContainer = this._container.element.createChild("div", "vbox responsive-design-sliders-container");
- var hbox = this._slidersContainer.createChild("div", "hbox flex-auto");
- this._heightSliderContainer = this._slidersContainer.createChild("div", "hbox responsive-design-slider-height");
- this._pageContainer = hbox.createChild("div", "vbox flex-auto");
- this._widthSliderContainer = hbox.createChild("div", "vbox responsive-design-slider-width");
-
- this._widthSlider = this._widthSliderContainer.createChild("div", "responsive-design-slider-thumb");
- this._createResizer(this._widthSlider, false);
- this._widthZeroButton = this._widthSlider.createChild("div", "responsive-design-zero-button");
- this._widthZeroButton.addEventListener("click", this._zeroButtonClicked.bind(this, false));
- this._heightSlider = this._heightSliderContainer.createChild("div", "responsive-design-slider-thumb");
- this._createResizer(this._heightSlider, true);
- this._heightZeroButton = this._heightSlider.createChild("div", "responsive-design-zero-button");
- this._heightZeroButton.addEventListener("click", this._zeroButtonClicked.bind(this, true));
-
- this._inspectedPagePlaceholder = inspectedPagePlaceholder;
- inspectedPagePlaceholder.show(this.element);
-
- this._enabled = false;
-
- WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.ZoomChanged, this._onZoomChanged, this);
- WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged, this._updateOverridesSupportOnDockSideChange, this);
- this._updateOverridesSupportOnDockSideChange();
-};
-
-// Measured in DIP.
-WebInspector.ResponsiveDesignView.SliderWidth = 19;
-WebInspector.ResponsiveDesignView.RulerWidth = 23;
-
-WebInspector.ResponsiveDesignView.prototype = {
- _updateOverridesSupportOnDockSideChange: function()
- {
- WebInspector.overridesSupport.setPageResizer(WebInspector.dockController.dockSide() !== WebInspector.DockController.State.Undocked ? this : null);
- },
-
- /**
- * WebInspector.OverridesSupport.PageResizer override.
- * @param {number} dipWidth
- * @param {number} dipHeight
- * @param {number} scale
- */
- enable: function(dipWidth, dipHeight, scale)
- {
- if (!this._enabled) {
- this._ignoreResize = true;
- this._enabled = true;
- this._inspectedPagePlaceholder.clearMinimumSizeAndMargins();
- this._inspectedPagePlaceholder.show(this._pageContainer);
- this._container.show(this.element);
- delete this._ignoreResize;
- }
-
- this._scale = scale;
- this._dipWidth = dipWidth;
- this._dipHeight = dipHeight;
- this._updateUI();
- },
-
- /**
- * WebInspector.OverridesSupport.PageResizer override.
- */
- disable: function()
- {
- if (!this._enabled)
- return;
-
- this._ignoreResize = true;
- this._enabled = false;
- this._scale = 0;
- this._inspectedPagePlaceholder.restoreMinimumSizeAndMargins();
- this._container.detach();
- this._inspectedPagePlaceholder.show(this.element);
- delete this._ignoreResize;
- },
-
- /**
- * WebInspector.OverridesSupport.PageResizer override.
- * @return {!Size}
- */
- availableDipSize: function()
- {
- if (typeof this._availableSize === "undefined") {
- var zoomFactor = WebInspector.zoomManager.zoomFactor();
- var rect = this.element.getBoundingClientRect();
- this._availableSize = new Size(rect.width * zoomFactor - WebInspector.ResponsiveDesignView.SliderWidth - WebInspector.ResponsiveDesignView.RulerWidth,
- rect.height * zoomFactor - WebInspector.ResponsiveDesignView.SliderWidth - WebInspector.ResponsiveDesignView.RulerWidth);
- }
- return this._availableSize;
- },
-
- /**
- * @param {!Element} element
- * @param {boolean} vertical
- * @return {!WebInspector.ResizerWidget}
- */
- _createResizer: function(element, vertical)
- {
- var resizer = new WebInspector.ResizerWidget();
- resizer.addElement(element);
- resizer.setVertical(vertical);
- resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeStart, this._onResizeStart, this);
- resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeUpdate, this._onResizeUpdate, this);
- resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeEnd, this._onResizeEnd, this);
- return resizer;
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _onResizeStart: function(event)
- {
- var available = this.availableDipSize();
- this._resizeStartSize = event.target.isVertical() ? (this._dipHeight || available.height) : (this._dipWidth || available.width);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _onResizeUpdate: function(event)
- {
- var cssOffset = event.data.currentPosition - event.data.startPosition;
- var dipOffset = cssOffset * WebInspector.zoomManager.zoomFactor();
- var newSize = this._resizeStartSize + dipOffset;
- var requested = new Size(this._dipWidth, this._dipHeight);
- if (event.target.isVertical())
- requested.height = Number.constrain(newSize, 1, this.availableDipSize().height);
- else
- requested.width = Number.constrain(newSize, 1, this.availableDipSize().width);
- this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, requested);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _onResizeEnd: function(event)
- {
- delete this._resizeStartSize;
- },
-
- /**
- * @param {boolean} isHeight
- */
- _zeroButtonClicked: function(isHeight)
- {
- var size = new Size(this._dipWidth, this._dipHeight);
- var available = this.availableDipSize();
- if (isHeight)
- size.height = this._dipHeight ? 0 : available.height;
- else
- size.width = this._dipWidth ? 0 : available.width;
- this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, size);
- },
-
- /**
- * Draws canvas of the specified css size in DevTools page space.
- * Canvas contains grid and rulers.
- * @param {number} cssCanvasWidth
- * @param {number} cssCanvasHeight
- */
- _drawCanvas: function(cssCanvasWidth, cssCanvasHeight)
- {
- if (!this._enabled)
- return;
-
- var canvas = this._canvas;
- var context = canvas.getContext("2d");
- canvas.style.width = cssCanvasWidth + "px";
- canvas.style.height = cssCanvasHeight + "px";
-
- var zoomFactor = WebInspector.zoomManager.zoomFactor();
- var dipCanvasWidth = cssCanvasWidth * zoomFactor;
- var dipCanvasHeight = cssCanvasHeight * zoomFactor;
-
- var deviceScaleFactor = window.devicePixelRatio;
- canvas.width = deviceScaleFactor * cssCanvasWidth;
- canvas.height = deviceScaleFactor * cssCanvasHeight;
- context.scale(canvas.width / dipCanvasWidth, canvas.height / dipCanvasHeight);
-
- context.font = "10px " + WebInspector.monospaceFontFamily();
-
- const gridSubStep = 10;
- const gridStep = 50;
- const rulerBackgroundColor = "rgb(54, 54, 54)";
- const backgroundColor = "rgb(102, 102, 102)";
- const lightLineColor = "rgb(132, 132, 132)";
- const darkLineColor = "rgb(114, 114, 114)";
- const textColor = "rgb(180, 180, 180)";
-
- var scale = this._scale || 1;
- var rulerWidth = WebInspector.ResponsiveDesignView.RulerWidth;
- var dipGridWidth = dipCanvasWidth / scale - rulerWidth;
- var dipGridHeight = dipCanvasHeight / scale - rulerWidth;
- rulerWidth /= scale;
- context.scale(scale, scale);
- context.translate(rulerWidth, rulerWidth);
-
- context.fillStyle = rulerBackgroundColor;
- context.fillRect(0, -rulerWidth, dipGridWidth, rulerWidth);
- context.fillRect(-rulerWidth, 0, rulerWidth, dipGridHeight);
-
- context.fillStyle = backgroundColor;
- context.fillRect(0, 0, dipGridWidth, dipGridHeight);
-
- context.translate(0.5, 0.5);
- context.fillStyle = textColor;
- context.lineWidth = 1;
-
- {
- // Draw vertical lines.
- for (var x = 0; x < dipGridWidth; x += gridSubStep) {
- var color = darkLineColor;
- var y = -rulerWidth / 6;
- if (!(x % (2 * gridSubStep)))
- y = -rulerWidth / 3;
- if (!(x % gridStep)) {
- if (x) {
- context.save();
- context.translate(x, 0);
- context.fillText(x, 2, -rulerWidth / 2);
- context.restore();
- }
- y = -rulerWidth;
- color = lightLineColor;
- }
- context.strokeStyle = color;
-
- context.beginPath();
- context.moveTo(x, y);
- context.lineTo(x, dipGridHeight);
- context.stroke();
- }
- }
-
- {
- // Draw horizontal lines.
- for (var y = 0; y < dipGridHeight; y += gridSubStep) {
- var color = darkLineColor;
- var x = -rulerWidth / 6;
- if (!(y % (2 * gridSubStep)))
- x = -rulerWidth / 3;
- if (!(y % gridStep)) {
- if (y) {
- context.save();
- context.translate(0, y);
- context.rotate(-Math.PI / 2);
- context.fillText(y, 2, -rulerWidth / 2);
- context.restore();
- }
- x = -rulerWidth;
- color = lightLineColor;
- }
- context.strokeStyle = color;
-
- context.beginPath();
- context.moveTo(x, y);
- context.lineTo(dipGridWidth, y);
- context.stroke();
- }
- context.restore();
- }
- },
-
- _updateUI: function()
- {
- if (!this._enabled)
- return;
-
- var zoomFactor = WebInspector.zoomManager.zoomFactor();
- var rect = this._canvas.parentElement.getBoundingClientRect();
- var availableDip = this.availableDipSize();
- var cssCanvasWidth = rect.width;
- var cssCanvasHeight = rect.height;
-
- this._widthSlider.classList.toggle("hidden", !!this._scale);
- this._heightSlider.classList.toggle("hidden", !!this._scale);
- this._widthSlider.classList.toggle("reversed", !this._dipWidth);
- this._heightSlider.classList.toggle("reversed", !this._dipHeight);
-
- if (this._cachedZoomFactor !== zoomFactor) {
- var cssRulerWidth = WebInspector.ResponsiveDesignView.RulerWidth / zoomFactor + "px";
- this._resetButton.style.width = cssRulerWidth;
- this._resetButton.style.height = cssRulerWidth;
- this._slidersContainer.style.left = cssRulerWidth;
- this._slidersContainer.style.top = cssRulerWidth;
-
- var cssSliderWidth = WebInspector.ResponsiveDesignView.SliderWidth / zoomFactor + "px";
- this._heightSliderContainer.style.flexBasis = cssSliderWidth;
- this._heightSliderContainer.style.marginBottom = "-" + cssSliderWidth;
- this._widthSliderContainer.style.flexBasis = cssSliderWidth;
- this._widthSliderContainer.style.marginRight = "-" + cssSliderWidth;
- }
-
- var cssWidth = this._dipWidth ? (this._dipWidth / zoomFactor + "px") : (availableDip.width / zoomFactor + "px");
- var cssHeight = this._dipHeight ? (this._dipHeight / zoomFactor + "px") : (availableDip.height / zoomFactor + "px");
- if (this._cachedCssWidth !== cssWidth || this._cachedCssHeight !== cssHeight) {
- this._slidersContainer.style.width = cssWidth;
- this._slidersContainer.style.height = cssHeight;
- this._inspectedPagePlaceholder.onResize();
- }
-
- if (this._cachedScale !== this._scale || this._cachedCssCanvasWidth !== cssCanvasWidth || this._cachedCssCanvasHeight !== cssCanvasHeight || this._cachedZoomFactor !== zoomFactor)
- this._drawCanvas(cssCanvasWidth, cssCanvasHeight);
-
- this._cachedScale = this._scale;
- this._cachedCssCanvasWidth = cssCanvasWidth;
- this._cachedCssCanvasHeight = cssCanvasHeight;
- this._cachedCssHeight = cssHeight;
- this._cachedCssWidth = cssWidth;
- this._cachedZoomFactor = zoomFactor;
- },
-
- onResize: function()
- {
- if (!this._enabled || this._ignoreResize)
- return;
- delete this._availableSize;
- this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.AvailableSizeChanged);
- this._updateUI();
- },
-
- _onZoomChanged: function()
- {
- this._updateUI();
- },
-
- /**
- * Resets emulated size to available space.
- */
- _reset: function()
- {
- this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, this.availableDipSize());
- },
-
- __proto__: WebInspector.VBox.prototype
-};

Powered by Google App Engine
This is Rietveld 408576698