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

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

Issue 1952283004: DevTools: fix incorrect device orientation bug (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.VBox} 7 * @extends {WebInspector.VBox}
8 */ 8 */
9 WebInspector.SensorsView = function() 9 WebInspector.SensorsView = function()
10 { 10 {
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 309
310 cellElement.appendChild(createTextButton(WebInspector.UIString("Reset"), this._resetDeviceOrientation.bind(this), "accelerometer-reset-button")); 310 cellElement.appendChild(createTextButton(WebInspector.UIString("Reset"), this._resetDeviceOrientation.bind(this), "accelerometer-reset-button"));
311 return fieldsetElement; 311 return fieldsetElement;
312 }, 312 },
313 313
314 /** 314 /**
315 * @param {!WebInspector.DeviceOrientation} deviceOrientation 315 * @param {!WebInspector.DeviceOrientation} deviceOrientation
316 */ 316 */
317 _setBoxOrientation: function(deviceOrientation) 317 _setBoxOrientation: function(deviceOrientation)
318 { 318 {
319 var matrix = new WebKitCSSMatrix(); 319 var matrix = this._screenSpaceMatrix(true);
320 this._boxMatrix = matrix.rotate(90-deviceOrientation.beta, deviceOrienta tion.gamma, -deviceOrientation.alpha); 320 this._boxMatrix = matrix.rotate(-deviceOrientation.beta, deviceOrientati on.gamma, -deviceOrientation.alpha);
321
321 this._boxElement.classList.add("is-animating"); 322 this._boxElement.classList.add("is-animating");
322 this._boxElement.style.webkitTransform = this._boxMatrix.toString(); 323 this._boxElement.style.webkitTransform = this._boxMatrix.toString();
323 }, 324 },
324 325
325 /** 326 /**
327 * @param {boolean=} toScreenSpace
328 * @return {!CSSMatrix}
329 */
330 _screenSpaceMatrix: function(toScreenSpace)
331 {
332 // The default orientation [0, 0, 0] represents a device with
333 // screen facing up. This transformation shifts the
334 // orientation displayed in the 3D preview to be front-facing
335 // instead of top-down.
336 var betaRotate = toScreenSpace ? 90 : -90;
337 var matrix = new WebKitCSSMatrix();
338 return matrix.rotate(betaRotate, 0, 0);
339 },
340
341 /**
326 * @param {!MouseEvent} event 342 * @param {!MouseEvent} event
327 * @return {boolean} 343 * @return {boolean}
328 */ 344 */
329 _onBoxDrag: function(event) 345 _onBoxDrag: function(event)
330 { 346 {
331 var mouseMoveVector = this._calculateRadiusVector(event.x, event.y); 347 var mouseMoveVector = this._calculateRadiusVector(event.x, event.y);
332 if (!mouseMoveVector) 348 if (!mouseMoveVector)
333 return true; 349 return true;
334 350
335 event.consume(true); 351 event.consume(true);
336 var axis, angle; 352 var axis, angle;
337 if (event.shiftKey) { 353 if (event.shiftKey) {
338 axis = new WebInspector.Geometry.Vector(0, 0, 1); 354 axis = new WebInspector.Geometry.Vector(0, 0, -1);
339 angle = (this._mouseDownVector.x - mouseMoveVector.x)*WebInspector.S ensorsView.ShiftDragOrientationSpeed; 355 angle = (this._mouseDownVector.x - mouseMoveVector.x)*WebInspector.S ensorsView.ShiftDragOrientationSpeed;
340 } else { 356 } else {
341 axis = WebInspector.Geometry.crossProduct(this._mouseDownVector, mou seMoveVector); 357 axis = WebInspector.Geometry.crossProduct(this._mouseDownVector, mou seMoveVector);
342 axis.normalize(); 358 axis.normalize();
343 angle = WebInspector.Geometry.calculateAngle(this._mouseDownVector, mouseMoveVector); 359 angle = WebInspector.Geometry.calculateAngle(this._mouseDownVector, mouseMoveVector);
344 } 360 }
345 var matrix = new WebKitCSSMatrix(); 361 var matrix = new WebKitCSSMatrix();
346 var rotationMatrix = matrix.rotateAxisAngle(axis.x, axis.y, axis.z, angl e); 362 var rotationMatrix = matrix.rotateAxisAngle(axis.x, axis.y, axis.z, angl e);
347 this._currentMatrix = rotationMatrix.multiply(this._boxMatrix); 363 this._currentMatrix = rotationMatrix.multiply(this._boxMatrix);
364 this._boxElement.style.webkitTransform = this._currentMatrix;
lushnikov 2016/05/06 18:04:47 let's use transform here
luoe 2016/05/06 18:14:32 Done.
348 365
349 var mat90 = new WebKitCSSMatrix(); 366 var transformFromScreen = this._screenSpaceMatrix();
350 mat90.rotate(90); 367 var correctedMatrix = this._currentMatrix.multiply(transformFromScreen);
351 this._boxElement.style.webkitTransform = mat90.multiply(this._currentMat rix); 368 var eulerAngles = WebInspector.Geometry.EulerAngles.fromRotationMatrix(c orrectedMatrix);
352 var eulerAngles = WebInspector.Geometry.EulerAngles.fromRotationMatrix(t his._currentMatrix);
353 var newOrientation = new WebInspector.DeviceOrientation(-eulerAngles.alp ha, -eulerAngles.beta, eulerAngles.gamma); 369 var newOrientation = new WebInspector.DeviceOrientation(-eulerAngles.alp ha, -eulerAngles.beta, eulerAngles.gamma);
354 this._setDeviceOrientation(newOrientation, WebInspector.SensorsView.Devi ceOrientationModificationSource.UserDrag); 370 this._setDeviceOrientation(newOrientation, WebInspector.SensorsView.Devi ceOrientationModificationSource.UserDrag);
355 this._setSelectElementLabel(this._orientationSelectElement, WebInspector .SensorsView.NonPresetOptions.Custom); 371 this._setSelectElementLabel(this._orientationSelectElement, WebInspector .SensorsView.NonPresetOptions.Custom);
356 return false; 372 return false;
357 }, 373 },
358 374
359 /** 375 /**
360 * @param {!MouseEvent} event 376 * @param {!MouseEvent} event
361 * @return {boolean} 377 * @return {boolean}
362 */ 378 */
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 * @return {boolean} 514 * @return {boolean}
499 */ 515 */
500 handleAction: function(context, actionId) 516 handleAction: function(context, actionId)
501 { 517 {
502 WebInspector.inspectorView.showViewInDrawer("sensors"); 518 WebInspector.inspectorView.showViewInDrawer("sensors");
503 return true; 519 return true;
504 } 520 }
505 } 521 }
506 522
507 WebInspector.SensorsView.ShiftDragOrientationSpeed = 16; 523 WebInspector.SensorsView.ShiftDragOrientationSpeed = 16;
OLDNEW
« 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