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

Side by Side Diff: Source/devtools/front_end/ResponsiveDesignView.js

Issue 351303003: [DevTools] Switch from DIP to CSS pixels in device mode. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.VBox} 7 * @extends {WebInspector.VBox}
8 * @implements {WebInspector.OverridesSupport.PageResizer} 8 * @implements {WebInspector.OverridesSupport.PageResizer}
9 * @param {!WebInspector.InspectedPagePlaceholder} inspectedPagePlaceholder 9 * @param {!WebInspector.InspectedPagePlaceholder} inspectedPagePlaceholder
10 */ 10 */
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 this._widthSlider.createChild("div", "responsive-design-thumb-handle"); 49 this._widthSlider.createChild("div", "responsive-design-thumb-handle");
50 this._createResizer(this._widthSlider, false); 50 this._createResizer(this._widthSlider, false);
51 this._heightSlider = this._heightSliderContainer.createChild("div", "respons ive-design-slider-thumb"); 51 this._heightSlider = this._heightSliderContainer.createChild("div", "respons ive-design-slider-thumb");
52 this._heightSlider.createChild("div", "responsive-design-thumb-handle"); 52 this._heightSlider.createChild("div", "responsive-design-thumb-handle");
53 this._createResizer(this._heightSlider, true); 53 this._createResizer(this._heightSlider, true);
54 54
55 this._inspectedPagePlaceholder = inspectedPagePlaceholder; 55 this._inspectedPagePlaceholder = inspectedPagePlaceholder;
56 inspectedPagePlaceholder.show(this.element); 56 inspectedPagePlaceholder.show(this.element);
57 57
58 this._enabled = false; 58 this._enabled = false;
59 this._viewport = { scrollX: 0, scrollY: 0, contentsWidth: 0, contentsHeight: 0, pageScaleFactor: 1 };
60 this._drawContentsSize = true;
61 this._viewportChangedThrottler = new WebInspector.Throttler(0);
59 62
60 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.Zo omChanged, this._onZoomChanged, this); 63 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.Zo omChanged, this._onZoomChanged, this);
61 WebInspector.overridesSupport.addEventListener(WebInspector.OverridesSupport .Events.EmulationStateChanged, this._emulationEnabledChanged, this); 64 WebInspector.overridesSupport.addEventListener(WebInspector.OverridesSupport .Events.EmulationStateChanged, this._emulationEnabledChanged, this);
62 this._mediaInspector.addEventListener(WebInspector.MediaQueryInspector.Event s.HeightUpdated, this.onResize, this); 65 this._mediaInspector.addEventListener(WebInspector.MediaQueryInspector.Event s.HeightUpdated, this.onResize, this);
66 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod el.EventTypes.ViewportChanged, this._viewportChanged, this);
67
63 this._emulationEnabledChanged(); 68 this._emulationEnabledChanged();
64 this._overridesWarningUpdated(); 69 this._overridesWarningUpdated();
65 }; 70 };
66 71
67 // Measured in DIP. 72 // Measured in DIP.
68 WebInspector.ResponsiveDesignView.SliderWidth = 19; 73 WebInspector.ResponsiveDesignView.SliderWidth = 19;
69 WebInspector.ResponsiveDesignView.RulerWidth = 22; 74 WebInspector.ResponsiveDesignView.RulerWidth = 22;
70 75
71 WebInspector.ResponsiveDesignView.prototype = { 76 WebInspector.ResponsiveDesignView.prototype = {
72 _invalidateCache: function() 77 _invalidateCache: function()
73 { 78 {
74 delete this._cachedScale; 79 delete this._cachedScale;
75 delete this._cachedCssCanvasWidth; 80 delete this._cachedCssCanvasWidth;
76 delete this._cachedCssCanvasHeight; 81 delete this._cachedCssCanvasHeight;
77 delete this._cachedCssHeight; 82 delete this._cachedCssHeight;
78 delete this._cachedCssWidth; 83 delete this._cachedCssWidth;
79 delete this._cachedZoomFactor; 84 delete this._cachedZoomFactor;
85 delete this._cachedViewport;
86 delete this._cachedDrawContentsSize;
80 delete this._availableSize; 87 delete this._availableSize;
81 }, 88 },
82 89
83 _emulationEnabledChanged: function() 90 _emulationEnabledChanged: function()
84 { 91 {
85 var enabled = WebInspector.overridesSupport.emulationEnabled(); 92 var enabled = WebInspector.overridesSupport.emulationEnabled();
86 this._mediaInspector.setEnabled(enabled); 93 this._mediaInspector.setEnabled(enabled);
87 if (enabled && !this._enabled) { 94 if (enabled && !this._enabled) {
88 this._invalidateCache(); 95 this._invalidateCache();
89 this._ignoreResize = true; 96 this._ignoreResize = true;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeUpdate, this._onResizeUpdate, this); 160 resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeUpdate, this._onResizeUpdate, this);
154 resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeEnd, th is._onResizeEnd, this); 161 resizer.addEventListener(WebInspector.ResizerWidget.Events.ResizeEnd, th is._onResizeEnd, this);
155 return resizer; 162 return resizer;
156 }, 163 },
157 164
158 /** 165 /**
159 * @param {!WebInspector.Event} event 166 * @param {!WebInspector.Event} event
160 */ 167 */
161 _onResizeStart: function(event) 168 _onResizeStart: function(event)
162 { 169 {
170 this._drawContentsSize = false;
lushnikov 2014/06/26 20:21:46 why is this needed? In fact, here and in _onResize
dgozman 2014/06/27 11:07:00 Yes it is. Contents size is lagging behind when yo
163 var available = this._availableDipSize(); 171 var available = this._availableDipSize();
164 this._slowPositionStart = null; 172 this._slowPositionStart = null;
165 this._resizeStartSize = event.target.isVertical() ? (this._dipHeight || available.height) : (this._dipWidth || available.width); 173 this._resizeStartSize = event.target.isVertical() ? (this._dipHeight || available.height) : (this._dipWidth || available.width);
166 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.FixedScaleRequested, true); 174 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.FixedScaleRequested, true);
175 this._updateUI();
167 }, 176 },
168 177
169 /** 178 /**
170 * @param {!WebInspector.Event} event 179 * @param {!WebInspector.Event} event
171 */ 180 */
172 _onResizeUpdate: function(event) 181 _onResizeUpdate: function(event)
173 { 182 {
174 if (event.data.shiftKey !== !!this._slowPositionStart) 183 if (event.data.shiftKey !== !!this._slowPositionStart)
175 this._slowPositionStart = event.data.shiftKey ? event.data.currentPo sition : null; 184 this._slowPositionStart = event.data.shiftKey ? event.data.currentPo sition : null;
176 var cssOffset = this._slowPositionStart ? (event.data.currentPosition - this._slowPositionStart) / 10 + this._slowPositionStart - event.data.startPositi on : event.data.currentPosition - event.data.startPosition; 185 var cssOffset = this._slowPositionStart ? (event.data.currentPosition - this._slowPositionStart) / 10 + this._slowPositionStart - event.data.startPositi on : event.data.currentPosition - event.data.startPosition;
177 var dipOffset = Math.round(cssOffset * WebInspector.zoomManager.zoomFact or()); 186 var dipOffset = Math.round(cssOffset * WebInspector.zoomManager.zoomFact or());
178 var newSize = this._resizeStartSize + dipOffset; 187 var newSize = this._resizeStartSize + dipOffset;
179 newSize = Math.round(newSize / (this._scale || 1)); 188 newSize = Math.round(newSize / (this._scale || 1));
180 newSize = Math.max(Math.min(newSize, WebInspector.OverridesSupport.MaxDe viceSize), 1); 189 newSize = Math.max(Math.min(newSize, WebInspector.OverridesSupport.MaxDe viceSize), 1);
181 var requested = {}; 190 var requested = {};
182 if (event.target.isVertical()) 191 if (event.target.isVertical())
183 requested.height = newSize; 192 requested.height = newSize;
184 else 193 else
185 requested.width = newSize; 194 requested.width = newSize;
186 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.ResizeRequested, requested); 195 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.ResizeRequested, requested);
187 }, 196 },
188 197
189 /** 198 /**
190 * @param {!WebInspector.Event} event 199 * @param {!WebInspector.Event} event
191 */ 200 */
192 _onResizeEnd: function(event) 201 _onResizeEnd: function(event)
193 { 202 {
203 this._drawContentsSize = true;
194 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.FixedScaleRequested, false); 204 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.FixedScaleRequested, false);
195 delete this._resizeStartSize; 205 delete this._resizeStartSize;
206 this._updateUI();
196 }, 207 },
197 208
198 /** 209 /**
199 * Draws canvas of the specified css size in DevTools page space. 210 * Draws canvas of the specified css size in DevTools page space.
200 * Canvas contains grid and rulers. 211 * Canvas contains grid and rulers.
201 * @param {number} cssCanvasWidth 212 * @param {number} cssCanvasWidth
202 * @param {number} cssCanvasHeight 213 * @param {number} cssCanvasHeight
203 */ 214 */
204 _drawCanvas: function(cssCanvasWidth, cssCanvasHeight) 215 _drawCanvas: function(cssCanvasWidth, cssCanvasHeight)
205 { 216 {
(...skipping 14 matching lines...) Expand all
220 canvas.height = deviceScaleFactor * cssCanvasHeight; 231 canvas.height = deviceScaleFactor * cssCanvasHeight;
221 context.scale(canvas.width / dipCanvasWidth, canvas.height / dipCanvasHe ight); 232 context.scale(canvas.width / dipCanvasWidth, canvas.height / dipCanvasHe ight);
222 context.font = "11px " + WebInspector.fontFamily(); 233 context.font = "11px " + WebInspector.fontFamily();
223 234
224 const rulerBackgroundColor = "rgb(0, 0, 0)"; 235 const rulerBackgroundColor = "rgb(0, 0, 0)";
225 const backgroundColor = "rgb(102, 102, 102)"; 236 const backgroundColor = "rgb(102, 102, 102)";
226 const lightLineColor = "rgb(132, 132, 132)"; 237 const lightLineColor = "rgb(132, 132, 132)";
227 const darkLineColor = "rgb(114, 114, 114)"; 238 const darkLineColor = "rgb(114, 114, 114)";
228 const rulerColor = "rgb(125, 125, 125)"; 239 const rulerColor = "rgb(125, 125, 125)";
229 const textColor = "rgb(186, 186, 186)"; 240 const textColor = "rgb(186, 186, 186)";
241 const contentsSizeColor = "rgba(128, 128, 128, 0.5)";
230 242
231 var scale = this._scale || 1; 243 var scale = (this._scale || 1) * this._viewport.pageScaleFactor;
232 var rulerScale = 1; 244 var rulerScale = 0.5;
233 while (Math.abs(rulerScale * scale - 1) > Math.abs((rulerScale + 1) * sc ale - 1)) 245 while (Math.abs(rulerScale * scale - 1) > Math.abs((rulerScale + 0.5) * scale - 1))
234 rulerScale++; 246 rulerScale += 0.5;
235 247
236 var gridStep = 50 * scale * rulerScale; 248 var gridStep = 50 * scale * rulerScale;
237 var gridSubStep = 10 * scale * rulerScale; 249 var gridSubStep = 10 * scale * rulerScale;
238 250
239 var rulerSubStep = 5 * scale * rulerScale; 251 var rulerSubStep = 5 * scale * rulerScale;
240 var rulerStepCount = 20; 252 var rulerStepCount = 20;
241 253
242 var rulerWidth = WebInspector.ResponsiveDesignView.RulerWidth; 254 var rulerWidth = WebInspector.ResponsiveDesignView.RulerWidth;
243 var dipGridWidth = dipCanvasWidth - rulerWidth; 255 var dipGridWidth = dipCanvasWidth - rulerWidth;
244 var dipGridHeight = dipCanvasHeight - rulerWidth; 256 var dipGridHeight = dipCanvasHeight - rulerWidth;
257 var dipScrollX = this._viewport.scrollX * scale;
258 var dipScrollY = this._viewport.scrollY * scale;
245 context.translate(rulerWidth, rulerWidth); 259 context.translate(rulerWidth, rulerWidth);
246 260
247 context.fillStyle = rulerBackgroundColor; 261 context.fillStyle = rulerBackgroundColor;
248 context.fillRect(-rulerWidth, -rulerWidth, dipGridWidth + rulerWidth, ru lerWidth); 262 context.fillRect(-rulerWidth, -rulerWidth, dipGridWidth + rulerWidth, ru lerWidth);
249 context.fillRect(-rulerWidth, 0, rulerWidth, dipGridHeight); 263 context.fillRect(-rulerWidth, 0, rulerWidth, dipGridHeight);
250 264
251 context.fillStyle = backgroundColor; 265 context.fillStyle = backgroundColor;
252 context.fillRect(0, 0, dipGridWidth, dipGridHeight); 266 context.fillRect(0, 0, dipGridWidth, dipGridHeight);
253 267
254 context.translate(0.5, 0.5); 268 context.translate(0.5, 0.5);
255 context.strokeStyle = rulerColor; 269 context.strokeStyle = rulerColor;
256 context.fillStyle = textColor; 270 context.fillStyle = textColor;
257 context.lineWidth = 1; 271 context.lineWidth = 1;
258 272
259 // Draw vertical ruler. 273 // Draw vertical ruler.
260 for (var x, index = 0; (x = index * rulerSubStep) < dipGridWidth; index+ +) { 274 context.save();
275 var minXIndex = Math.ceil(dipScrollX / rulerSubStep);
276 var maxXIndex = Math.floor((dipScrollX + dipGridWidth) / rulerSubStep);
277 context.translate(-dipScrollX, 0);
278 for (var index = minXIndex; index <= maxXIndex; index++) {
279 var x = index * rulerSubStep;
261 var y = -rulerWidth / 4; 280 var y = -rulerWidth / 4;
262 if (!(index % (rulerStepCount / 4))) 281 if (!(index % (rulerStepCount / 4)))
263 y = -rulerWidth / 2; 282 y = -rulerWidth / 2;
264 if (!(index % (rulerStepCount / 2))) 283 if (!(index % (rulerStepCount / 2)))
265 y = -rulerWidth + 2; 284 y = -rulerWidth + 2;
266 285
267 if (!(index % rulerStepCount)) { 286 if (!(index % rulerStepCount)) {
268 context.save(); 287 context.save();
269 context.translate(x, 0); 288 context.translate(x, 0);
270 context.fillText(Math.round(x / scale), 2, -rulerWidth / 2); 289 context.fillText(Math.round(x / scale), 2, -rulerWidth / 2);
271 context.restore(); 290 context.restore();
272 y = -rulerWidth; 291 y = -rulerWidth;
273 } 292 }
274 293
275 context.beginPath(); 294 context.beginPath();
276 context.moveTo(x, y); 295 context.moveTo(x, y);
277 context.lineTo(x, 0); 296 context.lineTo(x, 0);
278 context.stroke(); 297 context.stroke();
279 } 298 }
299 context.restore();
280 300
281 // Draw horizontal ruler. 301 // Draw horizontal ruler.
282 for (var y, index = 0; (y = index * rulerSubStep) < dipGridHeight; index ++) { 302 context.save();
303 var minYIndex = Math.ceil(dipScrollY / rulerSubStep);
304 var maxYIndex = Math.floor((dipScrollY + dipGridHeight) / rulerSubStep);
305 context.translate(0, -dipScrollY);
306 for (var index = minYIndex; index <= maxYIndex; index++) {
307 var y = index * rulerSubStep;
283 var x = -rulerWidth / 4; 308 var x = -rulerWidth / 4;
284 if (!(index % (rulerStepCount / 4))) 309 if (!(index % (rulerStepCount / 4)))
285 x = -rulerWidth / 2; 310 x = -rulerWidth / 2;
286 if (!(index % (rulerStepCount / 2))) 311 if (!(index % (rulerStepCount / 2)))
287 x = -rulerWidth + 2; 312 x = -rulerWidth + 2;
288 313
289 if (!(index % rulerStepCount)) { 314 if (!(index % rulerStepCount)) {
290 context.save(); 315 context.save();
291 context.translate(0, y); 316 context.translate(0, y);
292 context.rotate(-Math.PI / 2); 317 context.rotate(-Math.PI / 2);
293 context.fillText(Math.round(y / scale), 2, -rulerWidth / 2); 318 context.fillText(Math.round(y / scale), 2, -rulerWidth / 2);
294 context.restore(); 319 context.restore();
295 x = -rulerWidth; 320 x = -rulerWidth;
296 } 321 }
297 322
298 context.beginPath(); 323 context.beginPath();
299 context.moveTo(x, y); 324 context.moveTo(x, y);
300 context.lineTo(0, y); 325 context.lineTo(0, y);
301 context.stroke(); 326 context.stroke();
302 } 327 }
328 context.restore();
303 329
304 // Draw grid. 330 // Draw grid.
305 drawGrid(darkLineColor, gridSubStep); 331 drawGrid(dipScrollX, dipScrollY, darkLineColor, gridSubStep);
306 drawGrid(lightLineColor, gridStep); 332 drawGrid(dipScrollX, dipScrollY, lightLineColor, gridStep);
307 333
308 /** 334 /**
335 * @param {number} scrollX
336 * @param {number} scrollY
309 * @param {string} color 337 * @param {string} color
310 * @param {number} step 338 * @param {number} step
311 */ 339 */
312 function drawGrid(color, step) 340 function drawGrid(scrollX, scrollY, color, step)
313 { 341 {
314 context.strokeStyle = color; 342 context.strokeStyle = color;
315 for (var x = 0; x < dipGridWidth; x += step) { 343 var minX = Math.ceil(scrollX / step) * step;
344 var maxX = Math.floor((scrollX + dipGridWidth) / step) * step - minX ;
345 var minY = Math.ceil(scrollY / step) * step;
346 var maxY = Math.floor((scrollY + dipGridHeight) / step) * step - min Y;
347
348 context.save();
349 context.translate(minX - scrollX, 0);
350 for (var x = 0; x <= maxX; x += step) {
316 context.beginPath(); 351 context.beginPath();
317 context.moveTo(x, 0); 352 context.moveTo(x, 0);
318 context.lineTo(x, dipGridHeight); 353 context.lineTo(x, dipGridHeight);
319 context.stroke(); 354 context.stroke();
320 } 355 }
321 for (var y = 0; y < dipGridHeight; y += step) { 356 context.restore();
357
358 context.save();
359 context.translate(0, minY - scrollY);
360 for (var y = 0; y <= maxY; y += step) {
322 context.beginPath(); 361 context.beginPath();
323 context.moveTo(0, y); 362 context.moveTo(0, y);
324 context.lineTo(dipGridWidth, y); 363 context.lineTo(dipGridWidth, y);
325 context.stroke(); 364 context.stroke();
326 } 365 }
366 context.restore();
367 }
368
369 context.translate(-0.5, -0.5);
370
371 // Draw contents size.
372 if (this._drawContentsSize) {
373 context.fillStyle = contentsSizeColor;
374 var visibleContentsWidth = Math.max(0, Math.min(dipGridWidth, this._ viewport.contentsWidth * scale - dipScrollX));
375 var visibleContentsHeight = Math.max(0, Math.min(dipGridHeight, this ._viewport.contentsHeight * scale - dipScrollY));
376 context.fillRect(0, 0, visibleContentsWidth, visibleContentsHeight);
327 } 377 }
328 }, 378 },
329 379
330 _updateUI: function() 380 _updateUI: function()
331 { 381 {
332 if (!this._enabled || !this.isShowing()) 382 if (!this._enabled || !this.isShowing())
333 return; 383 return;
334 384
335 var zoomFactor = WebInspector.zoomManager.zoomFactor(); 385 var zoomFactor = WebInspector.zoomManager.zoomFactor();
336 var rect = this._canvas.parentElement.getBoundingClientRect(); 386 var rect = this._canvas.parentElement.getBoundingClientRect();
337 var availableDip = this._availableDipSize(); 387 var availableDip = this._availableDipSize();
338 var cssCanvasWidth = rect.width; 388 var cssCanvasWidth = rect.width;
339 var cssCanvasHeight = rect.height; 389 var cssCanvasHeight = rect.height;
340 390
341 this._mediaInspector.setAxisTransform(WebInspector.ResponsiveDesignView. RulerWidth / zoomFactor, this._scale); 391 this._mediaInspector.setAxisTransform(WebInspector.ResponsiveDesignView. RulerWidth / zoomFactor, this._viewport.scrollX, this._scale * this._viewport.pa geScaleFactor);
342 392
343 if (this._cachedZoomFactor !== zoomFactor) { 393 if (this._cachedZoomFactor !== zoomFactor) {
344 var cssRulerWidth = WebInspector.ResponsiveDesignView.RulerWidth / z oomFactor + "px"; 394 var cssRulerWidth = WebInspector.ResponsiveDesignView.RulerWidth / z oomFactor + "px";
345 this._rulerGlasspane.style.height = cssRulerWidth; 395 this._rulerGlasspane.style.height = cssRulerWidth;
346 this._rulerGlasspane.style.left = cssRulerWidth; 396 this._rulerGlasspane.style.left = cssRulerWidth;
347 this._slidersContainer.style.left = cssRulerWidth; 397 this._slidersContainer.style.left = cssRulerWidth;
348 this._slidersContainer.style.top = cssRulerWidth; 398 this._slidersContainer.style.top = cssRulerWidth;
349 this._warningMessage.style.height = cssRulerWidth; 399 this._warningMessage.style.height = cssRulerWidth;
350 400
351 var cssSliderWidth = WebInspector.ResponsiveDesignView.SliderWidth / zoomFactor + "px"; 401 var cssSliderWidth = WebInspector.ResponsiveDesignView.SliderWidth / zoomFactor + "px";
352 this._heightSliderContainer.style.flexBasis = cssSliderWidth; 402 this._heightSliderContainer.style.flexBasis = cssSliderWidth;
353 this._heightSliderContainer.style.marginBottom = "-" + cssSliderWidt h; 403 this._heightSliderContainer.style.marginBottom = "-" + cssSliderWidt h;
354 this._widthSliderContainer.style.flexBasis = cssSliderWidth; 404 this._widthSliderContainer.style.flexBasis = cssSliderWidth;
355 this._widthSliderContainer.style.marginRight = "-" + cssSliderWidth; 405 this._widthSliderContainer.style.marginRight = "-" + cssSliderWidth;
356 } 406 }
357 407
358 var cssWidth = this._dipWidth ? (this._dipWidth / zoomFactor + "px") : ( availableDip.width / zoomFactor + "px"); 408 var cssWidth = this._dipWidth ? (this._dipWidth / zoomFactor + "px") : ( availableDip.width / zoomFactor + "px");
359 this._widthSliderContainer.classList.toggle("hidden", !this._dipWidth); 409 this._widthSliderContainer.classList.toggle("hidden", !this._dipWidth);
360 this._heightSliderContainer.classList.toggle("hidden", !this._dipHeight) ; 410 this._heightSliderContainer.classList.toggle("hidden", !this._dipHeight) ;
361 var cssHeight = this._dipHeight ? (this._dipHeight / zoomFactor + "px") : (availableDip.height / zoomFactor + "px"); 411 var cssHeight = this._dipHeight ? (this._dipHeight / zoomFactor + "px") : (availableDip.height / zoomFactor + "px");
362 if (this._cachedCssWidth !== cssWidth || this._cachedCssHeight !== cssHe ight) { 412 if (this._cachedCssWidth !== cssWidth || this._cachedCssHeight !== cssHe ight) {
363 this._slidersContainer.style.width = cssWidth; 413 this._slidersContainer.style.width = cssWidth;
364 this._slidersContainer.style.height = cssHeight; 414 this._slidersContainer.style.height = cssHeight;
365 this._inspectedPagePlaceholder.onResize(); 415 this._inspectedPagePlaceholder.onResize();
366 } 416 }
367 417
368 if (this._cachedScale !== this._scale || this._cachedCssCanvasWidth !== cssCanvasWidth || this._cachedCssCanvasHeight !== cssCanvasHeight || this._cache dZoomFactor !== zoomFactor) 418 var viewportChanged = !this._cachedViewport
419 || this._cachedViewport.scrollX !== this._viewport.scrollX || this._ cachedViewport.scrollY !== this._viewport.scrollY
420 || this._cachedViewport.contentsWidth !== this._viewport.contentsWid th || this._cachedViewport.contentsHeight !== this._viewport.contentsHeight
421 || this._cachedViewport.pageScaleFactor !== this._viewport.pageScale Factor;
lushnikov 2014/06/26 20:21:46 isn't this a double? worth using "fuzzy equals".
422 if (viewportChanged || this._drawContentsSize !== this._cachedDrawConten tsSize || this._cachedScale !== this._scale || this._cachedCssCanvasWidth !== cs sCanvasWidth || this._cachedCssCanvasHeight !== cssCanvasHeight || this._cachedZ oomFactor !== zoomFactor)
369 this._drawCanvas(cssCanvasWidth, cssCanvasHeight); 423 this._drawCanvas(cssCanvasWidth, cssCanvasHeight);
370 424
371 this._cachedScale = this._scale; 425 this._cachedScale = this._scale;
372 this._cachedCssCanvasWidth = cssCanvasWidth; 426 this._cachedCssCanvasWidth = cssCanvasWidth;
373 this._cachedCssCanvasHeight = cssCanvasHeight; 427 this._cachedCssCanvasHeight = cssCanvasHeight;
374 this._cachedCssHeight = cssHeight; 428 this._cachedCssHeight = cssHeight;
375 this._cachedCssWidth = cssWidth; 429 this._cachedCssWidth = cssWidth;
376 this._cachedZoomFactor = zoomFactor; 430 this._cachedZoomFactor = zoomFactor;
431 this._cachedViewport = this._viewport;
432 this._cachedDrawContentsSize = this._drawContentsSize;
377 }, 433 },
378 434
379 onResize: function() 435 onResize: function()
380 { 436 {
381 if (!this._enabled || this._ignoreResize) 437 if (!this._enabled || this._ignoreResize)
382 return; 438 return;
383 var oldSize = this._availableSize; 439 var oldSize = this._availableSize;
384 delete this._availableSize; 440 delete this._availableSize;
385 var newSize = this._availableDipSize(); 441 var newSize = this._availableDipSize();
386 if (!newSize.isEqual(oldSize)) 442 if (!newSize.isEqual(oldSize))
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 this._warningMessage.querySelector("span").textContent = message; 582 this._warningMessage.querySelector("span").textContent = message;
527 this._invalidateCache(); 583 this._invalidateCache();
528 this.onResize(); 584 this.onResize();
529 }, 585 },
530 586
531 _showEmulationInDrawer: function() 587 _showEmulationInDrawer: function()
532 { 588 {
533 WebInspector.overridesSupport.reveal(); 589 WebInspector.overridesSupport.reveal();
534 }, 590 },
535 591
592 /**
593 * @param {!WebInspector.Event} event
594 */
595 _viewportChanged: function(event)
596 {
597 var viewport = /** @type {?PageAgent.Viewport} */ (event.data);
598 if (viewport) {
599 this._viewport = viewport;
600 this._viewportChangedThrottler.schedule(this._updateUIThrottled.bind (this));
601 }
602 },
603
604 /**
605 * @param {!WebInspector.Throttler.FinishCallback} finishCallback
606 */
607 _updateUIThrottled: function(finishCallback)
608 {
609 this._updateUI();
610 finishCallback();
611 },
612
536 __proto__: WebInspector.VBox.prototype 613 __proto__: WebInspector.VBox.prototype
537 }; 614 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698