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

Side by Side Diff: chrome/browser/resources/vr_shell/vr_shell_ui.js

Issue 2428383006: Decouple VR Shell DPR and CSS size from Physical Displays. (Closed)
Patch Set: Address bshe comments + minor fix Created 4 years 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 var vrShellUi = (function() { 5 var vrShellUi = (function() {
6 'use strict'; 6 'use strict';
7 7
8 let scene = new ui.Scene(); 8 let scene = new ui.Scene();
9 let sceneManager; 9 let sceneManager;
10 10
11 let uiRootElement = document.querySelector('#ui'); 11 let uiRootElement = document.querySelector('#ui');
12 let uiStyle = window.getComputedStyle(uiRootElement); 12 let uiStyle = window.getComputedStyle(uiRootElement);
13 let scaleFactor = uiStyle.getPropertyValue('--scaleFactor');
14 /** @const */ var ANIM_DURATION = 150; 13 /** @const */ var ANIM_DURATION = 150;
15 14
15 // This value should match the one in VrShellImpl.java
16 /** @const */ var UI_DPR = 1.2;
17
16 function getStyleFloat(style, property) { 18 function getStyleFloat(style, property) {
17 let value = parseFloat(style.getPropertyValue(property)); 19 let value = parseFloat(style.getPropertyValue(property));
18 return isNaN(value) ? 0 : value; 20 return isNaN(value) ? 0 : value;
19 } 21 }
20 22
21 class ContentQuad { 23 class ContentQuad {
22 constructor() { 24 constructor() {
23 /** @const */ this.SCREEN_HEIGHT = 1.6; 25 /** @const */ this.SCREEN_HEIGHT = 1.6;
24 /** @const */ this.SCREEN_RATIO = 16 / 9; 26 /** @const */ this.SCREEN_RATIO = 16 / 9;
25 /** @const */ this.BROWSING_SCREEN_DISTANCE = 2.0; 27 /** @const */ this.BROWSING_SCREEN_DISTANCE = 2.0;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 let domElement = document.querySelector(domId); 65 let domElement = document.querySelector(domId);
64 66
65 // Pull copy rectangle from the position of the element. 67 // Pull copy rectangle from the position of the element.
66 let rect = domElement.getBoundingClientRect(); 68 let rect = domElement.getBoundingClientRect();
67 let pixelX = Math.floor(rect.left); 69 let pixelX = Math.floor(rect.left);
68 let pixelY = Math.floor(rect.top); 70 let pixelY = Math.floor(rect.top);
69 let pixelWidth = Math.ceil(rect.right) - pixelX; 71 let pixelWidth = Math.ceil(rect.right) - pixelX;
70 let pixelHeight = Math.ceil(rect.bottom) - pixelY; 72 let pixelHeight = Math.ceil(rect.bottom) - pixelY;
71 73
72 let element = new api.UiElement(pixelX, pixelY, pixelWidth, pixelHeight); 74 let element = new api.UiElement(pixelX, pixelY, pixelWidth, pixelHeight);
73 element.setSize(scaleFactor * pixelWidth / 1000, 75 element.setSize(pixelWidth / 1000, pixelHeight / 1000);
74 scaleFactor * pixelHeight / 1000);
75 76
76 // Pull additional custom properties from CSS. 77 // Pull additional custom properties from CSS.
77 let style = window.getComputedStyle(domElement); 78 let style = window.getComputedStyle(domElement);
78 element.setTranslation( 79 element.setTranslation(
79 getStyleFloat(style, '--tranX'), 80 getStyleFloat(style, '--tranX'),
80 getStyleFloat(style, '--tranY'), 81 getStyleFloat(style, '--tranY'),
81 getStyleFloat(style, '--tranZ')); 82 getStyleFloat(style, '--tranZ'));
82 83
83 this.uiElementId = scene.addElement(element); 84 this.uiElementId = scene.addElement(element);
84 this.uiAnimationId = -1; 85 this.uiAnimationId = -1;
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 this.menuMode = menuMode; 408 this.menuMode = menuMode;
408 this.cinemaMode = cinemaMode; 409 this.cinemaMode = cinemaMode;
409 410
410 this.contentQuad.setEnabled(mode == api.Mode.STANDARD && !menuMode); 411 this.contentQuad.setEnabled(mode == api.Mode.STANDARD && !menuMode);
411 this.contentQuad.setCinemaMode(cinemaMode); 412 this.contentQuad.setCinemaMode(cinemaMode);
412 // TODO(crbug/643815): Set aspect ratio on content quad when available. 413 // TODO(crbug/643815): Set aspect ratio on content quad when available.
413 // TODO(amp): Don't show controls in CINEMA mode once MENU mode lands. 414 // TODO(amp): Don't show controls in CINEMA mode once MENU mode lands.
414 this.controls.setEnabled(mode == api.Mode.STANDARD && !menuMode); 415 this.controls.setEnabled(mode == api.Mode.STANDARD && !menuMode);
415 this.omnibox.setEnabled(mode == api.Mode.STANDARD && !menuMode); 416 this.omnibox.setEnabled(mode == api.Mode.STANDARD && !menuMode);
416 this.secureOriginWarnings.setEnabled(mode == api.Mode.WEB_VR); 417 this.secureOriginWarnings.setEnabled(mode == api.Mode.WEB_VR);
418
419 api.setUiCssSize(uiRootElement.clientWidth, uiRootElement.clientHeight,
420 UI_DPR);
417 } 421 }
418 422
419 setSecureOrigin(secure) { 423 setSecureOrigin(secure) {
420 this.secureOriginWarnings.setSecureOrigin(secure); 424 this.secureOriginWarnings.setSecureOrigin(secure);
421 this.omnibox.setSecureOrigin(secure); 425 this.omnibox.setSecureOrigin(secure);
422 } 426 }
423 427
424 setReloadUiEnabled(enabled) { 428 setReloadUiEnabled(enabled) {
425 this.controls.setReloadUiEnabled(enabled); 429 this.controls.setReloadUiEnabled(enabled);
426 } 430 }
(...skipping 26 matching lines...) Expand all
453 scene.flush(); 457 scene.flush();
454 } 458 }
455 459
456 return { 460 return {
457 initialize: initialize, 461 initialize: initialize,
458 command: command, 462 command: command,
459 }; 463 };
460 })(); 464 })();
461 465
462 document.addEventListener('DOMContentLoaded', vrShellUi.initialize); 466 document.addEventListener('DOMContentLoaded', vrShellUi.initialize);
OLDNEW
« no previous file with comments | « chrome/browser/resources/vr_shell/vr_shell_ui.css ('k') | chrome/browser/resources/vr_shell/vr_shell_ui_api.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698