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

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

Issue 2493373002: DevTools: rename WebInspector into modules. (Closed)
Patch Set: for bots Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
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 WebInspector.DeviceModeView = class extends WebInspector.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);
11 this.element.classList.add('device-mode-view'); 11 this.element.classList.add('device-mode-view');
12 this.registerRequiredCSS('emulation/deviceModeView.css'); 12 this.registerRequiredCSS('emulation/deviceModeView.css');
13 WebInspector.Tooltip.addNativeOverrideContainer(this.contentElement); 13 UI.Tooltip.addNativeOverrideContainer(this.contentElement);
14 14
15 this._model = new WebInspector.DeviceModeModel(this._updateUI.bind(this)); 15 this._model = new Emulation.DeviceModeModel(this._updateUI.bind(this));
16 this._mediaInspector = new WebInspector.MediaQueryInspector( 16 this._mediaInspector = new Emulation.MediaQueryInspector(
17 () => this._model.appliedDeviceSize().width, this._model.setWidth.bind(t his._model)); 17 () => this._model.appliedDeviceSize().width, this._model.setWidth.bind(t his._model));
18 this._showMediaInspectorSetting = WebInspector.settings.moduleSetting('showM ediaQueryInspector'); 18 this._showMediaInspectorSetting = Common.settings.moduleSetting('showMediaQu eryInspector');
19 this._showMediaInspectorSetting.addChangeListener(this._updateUI, this); 19 this._showMediaInspectorSetting.addChangeListener(this._updateUI, this);
20 this._showRulersSetting = WebInspector.settings.moduleSetting('emulation.sho wRulers'); 20 this._showRulersSetting = Common.settings.moduleSetting('emulation.showRuler s');
21 this._showRulersSetting.addChangeListener(this._updateUI, this); 21 this._showRulersSetting.addChangeListener(this._updateUI, this);
22 22
23 this._topRuler = new WebInspector.DeviceModeView.Ruler(true, this._model.set WidthAndScaleToFit.bind(this._model)); 23 this._topRuler = new Emulation.DeviceModeView.Ruler(true, this._model.setWid thAndScaleToFit.bind(this._model));
24 this._topRuler.element.classList.add('device-mode-ruler-top'); 24 this._topRuler.element.classList.add('device-mode-ruler-top');
25 this._leftRuler = 25 this._leftRuler =
26 new WebInspector.DeviceModeView.Ruler(false, this._model.setHeightAndSca leToFit.bind(this._model)); 26 new Emulation.DeviceModeView.Ruler(false, this._model.setHeightAndScaleT oFit.bind(this._model));
27 this._leftRuler.element.classList.add('device-mode-ruler-left'); 27 this._leftRuler.element.classList.add('device-mode-ruler-left');
28 this._createUI(); 28 this._createUI();
29 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.Zo omChanged, this._zoomChanged, this); 29 UI.zoomManager.addEventListener(UI.ZoomManager.Events.ZoomChanged, this._zoo mChanged, this);
30 } 30 }
31 31
32 _createUI() { 32 _createUI() {
33 this._toolbar = 33 this._toolbar =
34 new WebInspector.DeviceModeToolbar(this._model, this._showMediaInspector Setting, this._showRulersSetting); 34 new Emulation.DeviceModeToolbar(this._model, this._showMediaInspectorSet ting, this._showRulersSetting);
35 this.contentElement.appendChild(this._toolbar.element()); 35 this.contentElement.appendChild(this._toolbar.element());
36 36
37 this._contentClip = this.contentElement.createChild('div', 'device-mode-cont ent-clip vbox'); 37 this._contentClip = this.contentElement.createChild('div', 'device-mode-cont ent-clip vbox');
38 this._responsivePresetsContainer = this._contentClip.createChild('div', 'dev ice-mode-presets-container'); 38 this._responsivePresetsContainer = this._contentClip.createChild('div', 'dev ice-mode-presets-container');
39 this._populatePresetsContainer(); 39 this._populatePresetsContainer();
40 this._mediaInspectorContainer = this._contentClip.createChild('div', 'device -mode-media-container'); 40 this._mediaInspectorContainer = this._contentClip.createChild('div', 'device -mode-media-container');
41 this._contentArea = this._contentClip.createChild('div', 'device-mode-conten t-area'); 41 this._contentArea = this._contentClip.createChild('div', 'device-mode-conten t-area');
42 42
43 this._outlineImage = this._contentArea.createChild('img', 'device-mode-outli ne-image hidden fill'); 43 this._outlineImage = this._contentArea.createChild('img', 'device-mode-outli ne-image hidden fill');
44 this._outlineImage.addEventListener('load', this._onImageLoaded.bind(this, t his._outlineImage, true), false); 44 this._outlineImage.addEventListener('load', this._onImageLoaded.bind(this, t his._outlineImage, true), false);
(...skipping 19 matching lines...) Expand all
64 this._createResizer(this._rightResizerElement, 2, 0); 64 this._createResizer(this._rightResizerElement, 2, 0);
65 65
66 this._leftResizerElement = this._screenArea.createChild('div', 'device-mode- resizer device-mode-left-resizer'); 66 this._leftResizerElement = this._screenArea.createChild('div', 'device-mode- resizer device-mode-left-resizer');
67 this._leftResizerElement.createChild('div', ''); 67 this._leftResizerElement.createChild('div', '');
68 this._createResizer(this._leftResizerElement, -2, 0); 68 this._createResizer(this._leftResizerElement, -2, 0);
69 69
70 this._bottomResizerElement = this._screenArea.createChild('div', 'device-mod e-resizer device-mode-bottom-resizer'); 70 this._bottomResizerElement = this._screenArea.createChild('div', 'device-mod e-resizer device-mode-bottom-resizer');
71 this._bottomResizerElement.createChild('div', ''); 71 this._bottomResizerElement.createChild('div', '');
72 this._createResizer(this._bottomResizerElement, 0, 1); 72 this._createResizer(this._bottomResizerElement, 0, 1);
73 this._bottomResizerElement.addEventListener('dblclick', this._model.setHeigh t.bind(this._model, 0), false); 73 this._bottomResizerElement.addEventListener('dblclick', this._model.setHeigh t.bind(this._model, 0), false);
74 this._bottomResizerElement.title = WebInspector.UIString('Double-click for f ull height'); 74 this._bottomResizerElement.title = Common.UIString('Double-click for full he ight');
75 75
76 this._pageArea = this._screenArea.createChild('div', 'device-mode-page-area' ); 76 this._pageArea = this._screenArea.createChild('div', 'device-mode-page-area' );
77 this._pageArea.createChild('content'); 77 this._pageArea.createChild('content');
78 } 78 }
79 79
80 _populatePresetsContainer() { 80 _populatePresetsContainer() {
81 var sizes = [320, 375, 425, 768, 1024, 1440, 2560]; 81 var sizes = [320, 375, 425, 768, 1024, 1440, 2560];
82 var titles = [ 82 var titles = [
83 WebInspector.UIString('Mobile S'), WebInspector.UIString('Mobile M'), WebI nspector.UIString('Mobile L'), 83 Common.UIString('Mobile S'), Common.UIString('Mobile M'), Common.UIString( 'Mobile L'),
84 WebInspector.UIString('Tablet'), WebInspector.UIString('Laptop'), WebInspe ctor.UIString('Laptop L'), 84 Common.UIString('Tablet'), Common.UIString('Laptop'), Common.UIString('Lap top L'),
85 WebInspector.UIString('4K') 85 Common.UIString('4K')
86 ]; 86 ];
87 this._presetBlocks = []; 87 this._presetBlocks = [];
88 var inner = this._responsivePresetsContainer.createChild('div', 'device-mode -presets-container-inner'); 88 var inner = this._responsivePresetsContainer.createChild('div', 'device-mode -presets-container-inner');
89 for (var i = sizes.length - 1; i >= 0; --i) { 89 for (var i = sizes.length - 1; i >= 0; --i) {
90 var outer = inner.createChild('div', 'fill device-mode-preset-bar-outer'); 90 var outer = inner.createChild('div', 'fill device-mode-preset-bar-outer');
91 var block = outer.createChild('div', 'device-mode-preset-bar'); 91 var block = outer.createChild('div', 'device-mode-preset-bar');
92 block.createChild('span').textContent = titles[i] + ' \u2013 ' + sizes[i] + 'px'; 92 block.createChild('span').textContent = titles[i] + ' \u2013 ' + sizes[i] + 'px';
93 block.addEventListener('click', applySize.bind(this, sizes[i]), false); 93 block.addEventListener('click', applySize.bind(this, sizes[i]), false);
94 block.__width = sizes[i]; 94 block.__width = sizes[i];
95 this._presetBlocks.push(block); 95 this._presetBlocks.push(block);
96 } 96 }
97 97
98 /** 98 /**
99 * @param {number} width 99 * @param {number} width
100 * @param {!Event} e 100 * @param {!Event} e
101 * @this {WebInspector.DeviceModeView} 101 * @this {Emulation.DeviceModeView}
102 */ 102 */
103 function applySize(width, e) { 103 function applySize(width, e) {
104 this._model.emulate(WebInspector.DeviceModeModel.Type.Responsive, null, nu ll); 104 this._model.emulate(Emulation.DeviceModeModel.Type.Responsive, null, null) ;
105 this._model.setSizeAndScaleToFit(width, 0); 105 this._model.setSizeAndScaleToFit(width, 0);
106 e.consume(); 106 e.consume();
107 } 107 }
108 } 108 }
109 109
110 /** 110 /**
111 * @param {!Element} element 111 * @param {!Element} element
112 * @param {number} widthFactor 112 * @param {number} widthFactor
113 * @param {number} heightFactor 113 * @param {number} heightFactor
114 * @return {!WebInspector.ResizerWidget} 114 * @return {!UI.ResizerWidget}
115 */ 115 */
116 _createResizer(element, widthFactor, heightFactor) { 116 _createResizer(element, widthFactor, heightFactor) {
117 var resizer = new WebInspector.ResizerWidget(); 117 var resizer = new UI.ResizerWidget();
118 resizer.addElement(element); 118 resizer.addElement(element);
119 var cursor = widthFactor ? 'ew-resize' : 'ns-resize'; 119 var cursor = widthFactor ? 'ew-resize' : 'ns-resize';
120 if (widthFactor * heightFactor > 0) 120 if (widthFactor * heightFactor > 0)
121 cursor = 'nwse-resize'; 121 cursor = 'nwse-resize';
122 if (widthFactor * heightFactor < 0) 122 if (widthFactor * heightFactor < 0)
123 cursor = 'nesw-resize'; 123 cursor = 'nesw-resize';
124 resizer.setCursor(cursor); 124 resizer.setCursor(cursor);
125 resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeStart, this ._onResizeStart, this); 125 resizer.addEventListener(UI.ResizerWidget.Events.ResizeStart, this._onResize Start, this);
126 resizer.addEventListener( 126 resizer.addEventListener(
127 WebInspector.ResizerWidget.Events.ResizeUpdate, this._onResizeUpdate.bin d(this, widthFactor, heightFactor)); 127 UI.ResizerWidget.Events.ResizeUpdate, this._onResizeUpdate.bind(this, wi dthFactor, heightFactor));
128 resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeEnd, this._ onResizeEnd, this); 128 resizer.addEventListener(UI.ResizerWidget.Events.ResizeEnd, this._onResizeEn d, this);
129 return resizer; 129 return resizer;
130 } 130 }
131 131
132 /** 132 /**
133 * @param {!WebInspector.Event} event 133 * @param {!Common.Event} event
134 */ 134 */
135 _onResizeStart(event) { 135 _onResizeStart(event) {
136 this._slowPositionStart = null; 136 this._slowPositionStart = null;
137 /** @type {!Size} */ 137 /** @type {!Size} */
138 this._resizeStart = this._model.screenRect().size(); 138 this._resizeStart = this._model.screenRect().size();
139 } 139 }
140 140
141 /** 141 /**
142 * @param {number} widthFactor 142 * @param {number} widthFactor
143 * @param {number} heightFactor 143 * @param {number} heightFactor
144 * @param {!WebInspector.Event} event 144 * @param {!Common.Event} event
145 */ 145 */
146 _onResizeUpdate(widthFactor, heightFactor, event) { 146 _onResizeUpdate(widthFactor, heightFactor, event) {
147 if (event.data.shiftKey !== !!this._slowPositionStart) 147 if (event.data.shiftKey !== !!this._slowPositionStart)
148 this._slowPositionStart = event.data.shiftKey ? {x: event.data.currentX, y : event.data.currentY} : null; 148 this._slowPositionStart = event.data.shiftKey ? {x: event.data.currentX, y : event.data.currentY} : null;
149 149
150 var cssOffsetX = event.data.currentX - event.data.startX; 150 var cssOffsetX = event.data.currentX - event.data.startX;
151 var cssOffsetY = event.data.currentY - event.data.startY; 151 var cssOffsetY = event.data.currentY - event.data.startY;
152 if (this._slowPositionStart) { 152 if (this._slowPositionStart) {
153 cssOffsetX = 153 cssOffsetX =
154 (event.data.currentX - this._slowPositionStart.x) / 10 + this._slowPos itionStart.x - event.data.startX; 154 (event.data.currentX - this._slowPositionStart.x) / 10 + this._slowPos itionStart.x - event.data.startX;
155 cssOffsetY = 155 cssOffsetY =
156 (event.data.currentY - this._slowPositionStart.y) / 10 + this._slowPos itionStart.y - event.data.startY; 156 (event.data.currentY - this._slowPositionStart.y) / 10 + this._slowPos itionStart.y - event.data.startY;
157 } 157 }
158 158
159 if (widthFactor) { 159 if (widthFactor) {
160 var dipOffsetX = cssOffsetX * WebInspector.zoomManager.zoomFactor(); 160 var dipOffsetX = cssOffsetX * UI.zoomManager.zoomFactor();
161 var newWidth = this._resizeStart.width + dipOffsetX * widthFactor; 161 var newWidth = this._resizeStart.width + dipOffsetX * widthFactor;
162 newWidth = Math.round(newWidth / this._model.scale()); 162 newWidth = Math.round(newWidth / this._model.scale());
163 if (newWidth >= WebInspector.DeviceModeModel.MinDeviceSize && 163 if (newWidth >= Emulation.DeviceModeModel.MinDeviceSize &&
164 newWidth <= WebInspector.DeviceModeModel.MaxDeviceSize) 164 newWidth <= Emulation.DeviceModeModel.MaxDeviceSize)
165 this._model.setWidth(newWidth); 165 this._model.setWidth(newWidth);
166 } 166 }
167 167
168 if (heightFactor) { 168 if (heightFactor) {
169 var dipOffsetY = cssOffsetY * WebInspector.zoomManager.zoomFactor(); 169 var dipOffsetY = cssOffsetY * UI.zoomManager.zoomFactor();
170 var newHeight = this._resizeStart.height + dipOffsetY * heightFactor; 170 var newHeight = this._resizeStart.height + dipOffsetY * heightFactor;
171 newHeight = Math.round(newHeight / this._model.scale()); 171 newHeight = Math.round(newHeight / this._model.scale());
172 if (newHeight >= WebInspector.DeviceModeModel.MinDeviceSize && 172 if (newHeight >= Emulation.DeviceModeModel.MinDeviceSize &&
173 newHeight <= WebInspector.DeviceModeModel.MaxDeviceSize) 173 newHeight <= Emulation.DeviceModeModel.MaxDeviceSize)
174 this._model.setHeight(newHeight); 174 this._model.setHeight(newHeight);
175 } 175 }
176 } 176 }
177 177
178 /** 178 /**
179 * @param {!WebInspector.Event} event 179 * @param {!Common.Event} event
180 */ 180 */
181 _onResizeEnd(event) { 181 _onResizeEnd(event) {
182 delete this._resizeStart; 182 delete this._resizeStart;
183 WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.Resized ViewInResponsiveMode); 183 Host.userMetrics.actionTaken(Host.UserMetrics.Action.ResizedViewInResponsive Mode);
184 } 184 }
185 185
186 _updateUI() { 186 _updateUI() {
187 /** 187 /**
188 * @param {!Element} element 188 * @param {!Element} element
189 * @param {!WebInspector.Rect} rect 189 * @param {!Common.Rect} rect
190 */ 190 */
191 function applyRect(element, rect) { 191 function applyRect(element, rect) {
192 element.style.left = rect.left + 'px'; 192 element.style.left = rect.left + 'px';
193 element.style.top = rect.top + 'px'; 193 element.style.top = rect.top + 'px';
194 element.style.width = rect.width + 'px'; 194 element.style.width = rect.width + 'px';
195 element.style.height = rect.height + 'px'; 195 element.style.height = rect.height + 'px';
196 } 196 }
197 197
198 if (!this.isShowing()) 198 if (!this.isShowing())
199 return; 199 return;
200 200
201 var zoomFactor = WebInspector.zoomManager.zoomFactor(); 201 var zoomFactor = UI.zoomManager.zoomFactor();
202 var callDoResize = false; 202 var callDoResize = false;
203 var showRulers = this._showRulersSetting.get() && this._model.type() !== Web Inspector.DeviceModeModel.Type.None; 203 var showRulers = this._showRulersSetting.get() && this._model.type() !== Emu lation.DeviceModeModel.Type.None;
204 var contentAreaResized = false; 204 var contentAreaResized = false;
205 var updateRulers = false; 205 var updateRulers = false;
206 206
207 var cssScreenRect = this._model.screenRect().scale(1 / zoomFactor); 207 var cssScreenRect = this._model.screenRect().scale(1 / zoomFactor);
208 if (!cssScreenRect.isEqual(this._cachedCssScreenRect)) { 208 if (!cssScreenRect.isEqual(this._cachedCssScreenRect)) {
209 applyRect(this._screenArea, cssScreenRect); 209 applyRect(this._screenArea, cssScreenRect);
210 updateRulers = true; 210 updateRulers = true;
211 callDoResize = true; 211 callDoResize = true;
212 this._cachedCssScreenRect = cssScreenRect; 212 this._cachedCssScreenRect = cssScreenRect;
213 } 213 }
214 214
215 var cssVisiblePageRect = this._model.visiblePageRect().scale(1 / zoomFactor) ; 215 var cssVisiblePageRect = this._model.visiblePageRect().scale(1 / zoomFactor) ;
216 if (!cssVisiblePageRect.isEqual(this._cachedCssVisiblePageRect)) { 216 if (!cssVisiblePageRect.isEqual(this._cachedCssVisiblePageRect)) {
217 applyRect(this._pageArea, cssVisiblePageRect); 217 applyRect(this._pageArea, cssVisiblePageRect);
218 callDoResize = true; 218 callDoResize = true;
219 this._cachedCssVisiblePageRect = cssVisiblePageRect; 219 this._cachedCssVisiblePageRect = cssVisiblePageRect;
220 } 220 }
221 221
222 var outlineRect = this._model.outlineRect().scale(1 / zoomFactor); 222 var outlineRect = this._model.outlineRect().scale(1 / zoomFactor);
223 if (!outlineRect.isEqual(this._cachedOutlineRect)) { 223 if (!outlineRect.isEqual(this._cachedOutlineRect)) {
224 applyRect(this._outlineImage, outlineRect); 224 applyRect(this._outlineImage, outlineRect);
225 callDoResize = true; 225 callDoResize = true;
226 this._cachedOutlineRect = outlineRect; 226 this._cachedOutlineRect = outlineRect;
227 } 227 }
228 this._contentClip.classList.toggle('device-mode-outline-visible', !!this._mo del.outlineImage()); 228 this._contentClip.classList.toggle('device-mode-outline-visible', !!this._mo del.outlineImage());
229 229
230 var resizable = this._model.type() === WebInspector.DeviceModeModel.Type.Res ponsive; 230 var resizable = this._model.type() === Emulation.DeviceModeModel.Type.Respon sive;
231 if (resizable !== this._cachedResizable) { 231 if (resizable !== this._cachedResizable) {
232 this._rightResizerElement.classList.toggle('hidden', !resizable); 232 this._rightResizerElement.classList.toggle('hidden', !resizable);
233 this._leftResizerElement.classList.toggle('hidden', !resizable); 233 this._leftResizerElement.classList.toggle('hidden', !resizable);
234 this._bottomResizerElement.classList.toggle('hidden', !resizable); 234 this._bottomResizerElement.classList.toggle('hidden', !resizable);
235 this._bottomRightResizerElement.classList.toggle('hidden', !resizable); 235 this._bottomRightResizerElement.classList.toggle('hidden', !resizable);
236 this._bottomLeftResizerElement.classList.toggle('hidden', !resizable); 236 this._bottomLeftResizerElement.classList.toggle('hidden', !resizable);
237 this._cachedResizable = resizable; 237 this._cachedResizable = resizable;
238 } 238 }
239 239
240 var mediaInspectorVisible = 240 var mediaInspectorVisible =
241 this._showMediaInspectorSetting.get() && this._model.type() !== WebInspe ctor.DeviceModeModel.Type.None; 241 this._showMediaInspectorSetting.get() && this._model.type() !== Emulatio n.DeviceModeModel.Type.None;
242 if (mediaInspectorVisible !== this._cachedMediaInspectorVisible) { 242 if (mediaInspectorVisible !== this._cachedMediaInspectorVisible) {
243 if (mediaInspectorVisible) 243 if (mediaInspectorVisible)
244 this._mediaInspector.show(this._mediaInspectorContainer); 244 this._mediaInspector.show(this._mediaInspectorContainer);
245 else 245 else
246 this._mediaInspector.detach(); 246 this._mediaInspector.detach();
247 contentAreaResized = true; 247 contentAreaResized = true;
248 callDoResize = true; 248 callDoResize = true;
249 this._cachedMediaInspectorVisible = mediaInspectorVisible; 249 this._cachedMediaInspectorVisible = mediaInspectorVisible;
250 } 250 }
251 251
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 305
306 /** 306 /**
307 * @param {!Element} element 307 * @param {!Element} element
308 * @param {boolean} success 308 * @param {boolean} success
309 */ 309 */
310 _onImageLoaded(element, success) { 310 _onImageLoaded(element, success) {
311 element.classList.toggle('hidden', !success); 311 element.classList.toggle('hidden', !success);
312 } 312 }
313 313
314 _contentAreaResized() { 314 _contentAreaResized() {
315 var zoomFactor = WebInspector.zoomManager.zoomFactor(); 315 var zoomFactor = UI.zoomManager.zoomFactor();
316 var rect = this._contentArea.getBoundingClientRect(); 316 var rect = this._contentArea.getBoundingClientRect();
317 var availableSize = new Size(Math.max(rect.width * zoomFactor, 1), Math.max( rect.height * zoomFactor, 1)); 317 var availableSize = new Size(Math.max(rect.width * zoomFactor, 1), Math.max( rect.height * zoomFactor, 1));
318 var preferredSize = new Size( 318 var preferredSize = new Size(
319 Math.max((rect.width - 2 * this._handleWidth) * zoomFactor, 1), 319 Math.max((rect.width - 2 * this._handleWidth) * zoomFactor, 1),
320 Math.max((rect.height - this._handleHeight) * zoomFactor, 1)); 320 Math.max((rect.height - this._handleHeight) * zoomFactor, 1));
321 this._model.setAvailableSize(availableSize, preferredSize); 321 this._model.setAvailableSize(availableSize, preferredSize);
322 } 322 }
323 323
324 _measureHandles() { 324 _measureHandles() {
325 var hidden = this._rightResizerElement.classList.contains('hidden'); 325 var hidden = this._rightResizerElement.classList.contains('hidden');
(...skipping 27 matching lines...) Expand all
353 */ 353 */
354 wasShown() { 354 wasShown() {
355 this._measureHandles(); 355 this._measureHandles();
356 this._toolbar.restore(); 356 this._toolbar.restore();
357 } 357 }
358 358
359 /** 359 /**
360 * @override 360 * @override
361 */ 361 */
362 willHide() { 362 willHide() {
363 this._model.emulate(WebInspector.DeviceModeModel.Type.None, null, null); 363 this._model.emulate(Emulation.DeviceModeModel.Type.None, null, null);
364 } 364 }
365 365
366 captureScreenshot() { 366 captureScreenshot() {
367 var mainTarget = WebInspector.targetManager.mainTarget(); 367 var mainTarget = SDK.targetManager.mainTarget();
368 if (!mainTarget) 368 if (!mainTarget)
369 return; 369 return;
370 WebInspector.DOMModel.muteHighlight(); 370 SDK.DOMModel.muteHighlight();
371 371
372 var zoomFactor = WebInspector.zoomManager.zoomFactor(); 372 var zoomFactor = UI.zoomManager.zoomFactor();
373 var rect = this._contentArea.getBoundingClientRect(); 373 var rect = this._contentArea.getBoundingClientRect();
374 var availableSize = new Size(Math.max(rect.width * zoomFactor, 1), Math.max( rect.height * zoomFactor, 1)); 374 var availableSize = new Size(Math.max(rect.width * zoomFactor, 1), Math.max( rect.height * zoomFactor, 1));
375 var outlineVisible = this._model.deviceOutlineSetting().get(); 375 var outlineVisible = this._model.deviceOutlineSetting().get();
376 376
377 if (availableSize.width < this._model.screenRect().width || 377 if (availableSize.width < this._model.screenRect().width ||
378 availableSize.height < this._model.screenRect().height) { 378 availableSize.height < this._model.screenRect().height) {
379 WebInspector.inspectorView.minimize(); 379 UI.inspectorView.minimize();
380 this._model.deviceOutlineSetting().set(false); 380 this._model.deviceOutlineSetting().set(false);
381 } 381 }
382 382
383 mainTarget.pageAgent().captureScreenshot(screenshotCaptured.bind(this)); 383 mainTarget.pageAgent().captureScreenshot(screenshotCaptured.bind(this));
384 384
385 /** 385 /**
386 * @param {?Protocol.Error} error 386 * @param {?Protocol.Error} error
387 * @param {string} content 387 * @param {string} content
388 * @this {WebInspector.DeviceModeView} 388 * @this {Emulation.DeviceModeView}
389 */ 389 */
390 function screenshotCaptured(error, content) { 390 function screenshotCaptured(error, content) {
391 this._model.deviceOutlineSetting().set(outlineVisible); 391 this._model.deviceOutlineSetting().set(outlineVisible);
392 var dpr = window.devicePixelRatio; 392 var dpr = window.devicePixelRatio;
393 var outlineRect = this._model.outlineRect().scale(dpr); 393 var outlineRect = this._model.outlineRect().scale(dpr);
394 var screenRect = this._model.screenRect().scale(dpr); 394 var screenRect = this._model.screenRect().scale(dpr);
395 screenRect.left -= outlineRect.left; 395 screenRect.left -= outlineRect.left;
396 screenRect.top -= outlineRect.top; 396 screenRect.top -= outlineRect.top;
397 var visiblePageRect = this._model.visiblePageRect().scale(dpr); 397 var visiblePageRect = this._model.visiblePageRect().scale(dpr);
398 visiblePageRect.left += screenRect.left; 398 visiblePageRect.left += screenRect.left;
399 visiblePageRect.top += screenRect.top; 399 visiblePageRect.top += screenRect.top;
400 outlineRect.left = 0; 400 outlineRect.left = 0;
401 outlineRect.top = 0; 401 outlineRect.top = 0;
402 402
403 WebInspector.DOMModel.unmuteHighlight(); 403 SDK.DOMModel.unmuteHighlight();
404 WebInspector.inspectorView.restore(); 404 UI.inspectorView.restore();
405 405
406 if (error) { 406 if (error) {
407 console.error(error); 407 console.error(error);
408 return; 408 return;
409 } 409 }
410 410
411 // Create a canvas to splice the images together. 411 // Create a canvas to splice the images together.
412 var canvas = createElement('canvas'); 412 var canvas = createElement('canvas');
413 var ctx = canvas.getContext('2d'); 413 var ctx = canvas.getContext('2d');
414 canvas.width = outlineRect.width; 414 canvas.width = outlineRect.width;
415 canvas.height = outlineRect.height; 415 canvas.height = outlineRect.height;
416 ctx.imageSmoothingEnabled = false; 416 ctx.imageSmoothingEnabled = false;
417 417
418 var promise = Promise.resolve(); 418 var promise = Promise.resolve();
419 if (this._model.outlineImage()) 419 if (this._model.outlineImage())
420 promise = promise.then(paintImage.bind(null, this._model.outlineImage(), outlineRect)); 420 promise = promise.then(paintImage.bind(null, this._model.outlineImage(), outlineRect));
421 promise = promise.then(drawBorder); 421 promise = promise.then(drawBorder);
422 if (this._model.screenImage()) 422 if (this._model.screenImage())
423 promise = promise.then(paintImage.bind(null, this._model.screenImage(), screenRect)); 423 promise = promise.then(paintImage.bind(null, this._model.screenImage(), screenRect));
424 promise.then(paintScreenshot.bind(this)); 424 promise.then(paintScreenshot.bind(this));
425 425
426 /** 426 /**
427 * @param {string} src 427 * @param {string} src
428 * @param {!WebInspector.Rect} rect 428 * @param {!Common.Rect} rect
429 * @return {!Promise<undefined>} 429 * @return {!Promise<undefined>}
430 */ 430 */
431 function paintImage(src, rect) { 431 function paintImage(src, rect) {
432 var callback; 432 var callback;
433 var promise = new Promise(fulfill => callback = fulfill); 433 var promise = new Promise(fulfill => callback = fulfill);
434 var image = new Image(); 434 var image = new Image();
435 image.crossOrigin = 'Anonymous'; 435 image.crossOrigin = 'Anonymous';
436 image.srcset = src; 436 image.srcset = src;
437 image.onload = onImageLoad; 437 image.onload = onImageLoad;
438 image.onerror = callback; 438 image.onerror = callback;
439 return promise; 439 return promise;
440 440
441 function onImageLoad() { 441 function onImageLoad() {
442 ctx.drawImage(image, rect.left, rect.top, rect.width, rect.height); 442 ctx.drawImage(image, rect.left, rect.top, rect.width, rect.height);
443 callback(); 443 callback();
444 } 444 }
445 } 445 }
446 446
447 function drawBorder() { 447 function drawBorder() {
448 ctx.strokeStyle = 'hsla(0, 0%, 98%, 0.5)'; 448 ctx.strokeStyle = 'hsla(0, 0%, 98%, 0.5)';
449 ctx.lineWidth = 1; 449 ctx.lineWidth = 1;
450 ctx.setLineDash([10, 10]); 450 ctx.setLineDash([10, 10]);
451 ctx.strokeRect(screenRect.left + 1, screenRect.top + 1, screenRect.width - 2, screenRect.height - 2); 451 ctx.strokeRect(screenRect.left + 1, screenRect.top + 1, screenRect.width - 2, screenRect.height - 2);
452 } 452 }
453 453
454 /** 454 /**
455 * @this {WebInspector.DeviceModeView} 455 * @this {Emulation.DeviceModeView}
456 */ 456 */
457 function paintScreenshot() { 457 function paintScreenshot() {
458 var pageImage = new Image(); 458 var pageImage = new Image();
459 pageImage.src = 'data:image/png;base64,' + content; 459 pageImage.src = 'data:image/png;base64,' + content;
460 ctx.drawImage( 460 ctx.drawImage(
461 pageImage, visiblePageRect.left, visiblePageRect.top, Math.min(pageI mage.naturalWidth, screenRect.width), 461 pageImage, visiblePageRect.left, visiblePageRect.top, Math.min(pageI mage.naturalWidth, screenRect.width),
462 Math.min(pageImage.naturalHeight, screenRect.height)); 462 Math.min(pageImage.naturalHeight, screenRect.height));
463 var url = mainTarget && mainTarget.inspectedURL(); 463 var url = mainTarget && mainTarget.inspectedURL();
464 var fileName = url ? url.trimURL().removeURLFragment() : ''; 464 var fileName = url ? url.trimURL().removeURLFragment() : '';
465 if (this._model.type() === WebInspector.DeviceModeModel.Type.Device) 465 if (this._model.type() === Emulation.DeviceModeModel.Type.Device)
466 fileName += WebInspector.UIString('(%s)', this._model.device().title); 466 fileName += Common.UIString('(%s)', this._model.device().title);
467 // Trigger download. 467 // Trigger download.
468 var link = createElement('a'); 468 var link = createElement('a');
469 link.download = fileName + '.png'; 469 link.download = fileName + '.png';
470 link.href = canvas.toDataURL('image/png'); 470 link.href = canvas.toDataURL('image/png');
471 link.click(); 471 link.click();
472 } 472 }
473 } 473 }
474 } 474 }
475 }; 475 };
476 476
477 /** 477 /**
478 * @unrestricted 478 * @unrestricted
479 */ 479 */
480 WebInspector.DeviceModeView.Ruler = class extends WebInspector.VBox { 480 Emulation.DeviceModeView.Ruler = class extends UI.VBox {
481 /** 481 /**
482 * @param {boolean} horizontal 482 * @param {boolean} horizontal
483 * @param {function(number)} applyCallback 483 * @param {function(number)} applyCallback
484 */ 484 */
485 constructor(horizontal, applyCallback) { 485 constructor(horizontal, applyCallback) {
486 super(); 486 super();
487 this.element.classList.add('device-mode-ruler'); 487 this.element.classList.add('device-mode-ruler');
488 this._contentElement = 488 this._contentElement =
489 this.element.createChild('div', 'device-mode-ruler-content').createChild ('div', 'device-mode-ruler-inner'); 489 this.element.createChild('div', 'device-mode-ruler-content').createChild ('div', 'device-mode-ruler-inner');
490 this._horizontal = horizontal; 490 this._horizontal = horizontal;
491 this._scale = 1; 491 this._scale = 1;
492 this._count = 0; 492 this._count = 0;
493 this._throttler = new WebInspector.Throttler(0); 493 this._throttler = new Common.Throttler(0);
494 this._applyCallback = applyCallback; 494 this._applyCallback = applyCallback;
495 } 495 }
496 496
497 /** 497 /**
498 * @param {number} scale 498 * @param {number} scale
499 */ 499 */
500 render(scale) { 500 render(scale) {
501 this._scale = scale; 501 this._scale = scale;
502 this._throttler.schedule(this._update.bind(this)); 502 this._throttler.schedule(this._update.bind(this));
503 } 503 }
504 504
505 /** 505 /**
506 * @override 506 * @override
507 */ 507 */
508 onResize() { 508 onResize() {
509 this._throttler.schedule(this._update.bind(this)); 509 this._throttler.schedule(this._update.bind(this));
510 } 510 }
511 511
512 /** 512 /**
513 * @return {!Promise.<?>} 513 * @return {!Promise.<?>}
514 */ 514 */
515 _update() { 515 _update() {
516 var zoomFactor = WebInspector.zoomManager.zoomFactor(); 516 var zoomFactor = UI.zoomManager.zoomFactor();
517 var size = this._horizontal ? this._contentElement.offsetWidth : this._conte ntElement.offsetHeight; 517 var size = this._horizontal ? this._contentElement.offsetWidth : this._conte ntElement.offsetHeight;
518 518
519 if (this._scale !== this._renderedScale || zoomFactor !== this._renderedZoom Factor) { 519 if (this._scale !== this._renderedScale || zoomFactor !== this._renderedZoom Factor) {
520 this._contentElement.removeChildren(); 520 this._contentElement.removeChildren();
521 this._count = 0; 521 this._count = 0;
522 this._renderedScale = this._scale; 522 this._renderedScale = this._scale;
523 this._renderedZoomFactor = zoomFactor; 523 this._renderedZoomFactor = zoomFactor;
524 } 524 }
525 525
526 var dipSize = size * zoomFactor / this._scale; 526 var dipSize = size * zoomFactor / this._scale;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 return Promise.resolve(); 567 return Promise.resolve();
568 } 568 }
569 569
570 /** 570 /**
571 * @param {number} size 571 * @param {number} size
572 */ 572 */
573 _onMarkerClick(size) { 573 _onMarkerClick(size) {
574 this._applyCallback.call(null, size); 574 this._applyCallback.call(null, size);
575 } 575 }
576 }; 576 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698