| Index: chrome/browser/resources/options/chromeos/display_options.js
|
| diff --git a/chrome/browser/resources/options/chromeos/display_options.js b/chrome/browser/resources/options/chromeos/display_options.js
|
| index 61f837db0215aa7f67e11e6bf625f7331996784a..c7ad5fc1e489e417eb1628123c154137693abd2d 100644
|
| --- a/chrome/browser/resources/options/chromeos/display_options.js
|
| +++ b/chrome/browser/resources/options/chromeos/display_options.js
|
| @@ -2,6 +2,40 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +/**
|
| + * @typedef {{
|
| + * availableColorProfiles: Array.<{profileId: number, name: string}>,
|
| + * colorProfile: number,
|
| + * height: number,
|
| + * id: string,
|
| + * isInternal: boolean,
|
| + * isPrimary: boolean,
|
| + * resolutions: Array.<{width: number, height: number, originalWidth: number,
|
| + * originalHeight: number, deviceScaleFactor: number, scale: number,
|
| + * refreshRate: number, isBest: boolean, selected: boolean}>,
|
| + * name: string,
|
| + * orientation: number,
|
| + * width: number,
|
| + * x: number,
|
| + * y: number
|
| + * }}
|
| + */
|
| +var DisplayInfo;
|
| +
|
| +cr.exportPath('options');
|
| +
|
| +/**
|
| + * Enumeration of secondary display layout. The value has to be same as the
|
| + * values in ash/display/display_controller.cc.
|
| + * @enum {number}
|
| + */
|
| +options.SecondaryDisplayLayout = {
|
| + TOP: 0,
|
| + RIGHT: 1,
|
| + BOTTOM: 2,
|
| + LEFT: 3
|
| +};
|
| +
|
| cr.define('options', function() {
|
| var Page = cr.ui.pageManager.Page;
|
| var PageManager = cr.ui.pageManager.PageManager;
|
| @@ -13,18 +47,6 @@ cr.define('options', function() {
|
| /** @const */ var MIN_OFFSET_OVERLAP = 5;
|
|
|
| /**
|
| - * Enumeration of secondary display layout. The value has to be same as the
|
| - * values in ash/display/display_controller.cc.
|
| - * @enum {number}
|
| - */
|
| - var SecondaryDisplayLayout = {
|
| - TOP: 0,
|
| - RIGHT: 1,
|
| - BOTTOM: 2,
|
| - LEFT: 3
|
| - };
|
| -
|
| - /**
|
| * Calculates the bounds of |element| relative to the page.
|
| * @param {HTMLElement} element The element to be known.
|
| * @return {Object} The object for the bounds, with x, y, width, and height.
|
| @@ -49,7 +71,8 @@ cr.define('options', function() {
|
| * Gets the position of |point| to |rect|, left, right, top, or bottom.
|
| * @param {Object} rect The base rectangle with x, y, width, and height.
|
| * @param {Object} point The point to check the position.
|
| - * @return {SecondaryDisplayLayout} The position of the calculated point.
|
| + * @return {options.SecondaryDisplayLayout} The position of the calculated
|
| + * point.
|
| */
|
| function getPositionToRectangle(rect, point) {
|
| // Separates the area into four (LEFT/RIGHT/TOP/BOTTOM) by the diagonals of
|
| @@ -60,14 +83,14 @@ cr.define('options', function() {
|
|
|
| if (point.y > topDownIntercept + point.x * diagonalSlope) {
|
| if (point.y > bottomUpIntercept - point.x * diagonalSlope)
|
| - return SecondaryDisplayLayout.BOTTOM;
|
| + return options.SecondaryDisplayLayout.BOTTOM;
|
| else
|
| - return SecondaryDisplayLayout.LEFT;
|
| + return options.SecondaryDisplayLayout.LEFT;
|
| } else {
|
| if (point.y > bottomUpIntercept - point.x * diagonalSlope)
|
| - return SecondaryDisplayLayout.RIGHT;
|
| + return options.SecondaryDisplayLayout.RIGHT;
|
| else
|
| - return SecondaryDisplayLayout.TOP;
|
| + return options.SecondaryDisplayLayout.TOP;
|
| }
|
| }
|
|
|
| @@ -97,11 +120,12 @@ cr.define('options', function() {
|
| * The current secondary display layout.
|
| * @private
|
| */
|
| - layout_: SecondaryDisplayLayout.RIGHT,
|
| + layout_: options.SecondaryDisplayLayout.RIGHT,
|
|
|
| /**
|
| * The array of current output displays. It also contains the display
|
| * rectangles currently rendered on screen.
|
| + * @type {Array.<DisplayInfo>}
|
| * @private
|
| */
|
| displays_: [],
|
| @@ -280,8 +304,8 @@ cr.define('options', function() {
|
| var primary = this.primaryDisplay_;
|
| var secondary = this.secondaryDisplay_;
|
| var offset;
|
| - if (this.layout_ == SecondaryDisplayLayout.LEFT ||
|
| - this.layout_ == SecondaryDisplayLayout.RIGHT) {
|
| + if (this.layout_ == options.SecondaryDisplayLayout.LEFT ||
|
| + this.layout_ == options.SecondaryDisplayLayout.RIGHT) {
|
| offset = secondary.div.offsetTop - primary.div.offsetTop;
|
| } else {
|
| offset = secondary.div.offsetLeft - primary.div.offsetLeft;
|
| @@ -370,41 +394,49 @@ cr.define('options', function() {
|
| height: baseDiv.offsetHeight
|
| };
|
| switch (getPositionToRectangle(baseBounds, newCenter)) {
|
| - case SecondaryDisplayLayout.RIGHT:
|
| + case options.SecondaryDisplayLayout.RIGHT:
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.LEFT : SecondaryDisplayLayout.RIGHT;
|
| + options.SecondaryDisplayLayout.LEFT :
|
| + options.SecondaryDisplayLayout.RIGHT;
|
| break;
|
| - case SecondaryDisplayLayout.LEFT:
|
| + case options.SecondaryDisplayLayout.LEFT:
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.RIGHT : SecondaryDisplayLayout.LEFT;
|
| + options.SecondaryDisplayLayout.RIGHT :
|
| + options.SecondaryDisplayLayout.LEFT;
|
| break;
|
| - case SecondaryDisplayLayout.TOP:
|
| + case options.SecondaryDisplayLayout.TOP:
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.BOTTOM : SecondaryDisplayLayout.TOP;
|
| + options.SecondaryDisplayLayout.BOTTOM :
|
| + options.SecondaryDisplayLayout.TOP;
|
| break;
|
| - case SecondaryDisplayLayout.BOTTOM:
|
| + case options.SecondaryDisplayLayout.BOTTOM:
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.TOP : SecondaryDisplayLayout.BOTTOM;
|
| + options.SecondaryDisplayLayout.TOP :
|
| + options.SecondaryDisplayLayout.BOTTOM;
|
| break;
|
| }
|
|
|
| - if (this.layout_ == SecondaryDisplayLayout.LEFT ||
|
| - this.layout_ == SecondaryDisplayLayout.RIGHT) {
|
| + if (this.layout_ == options.SecondaryDisplayLayout.LEFT ||
|
| + this.layout_ == options.SecondaryDisplayLayout.RIGHT) {
|
| if (newPosition.y > baseDiv.offsetTop + baseDiv.offsetHeight)
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.TOP : SecondaryDisplayLayout.BOTTOM;
|
| + options.SecondaryDisplayLayout.TOP :
|
| + options.SecondaryDisplayLayout.BOTTOM;
|
| else if (newPosition.y + draggingDiv.offsetHeight <
|
| baseDiv.offsetTop)
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.BOTTOM : SecondaryDisplayLayout.TOP;
|
| + options.SecondaryDisplayLayout.BOTTOM :
|
| + options.SecondaryDisplayLayout.TOP;
|
| } else {
|
| if (newPosition.x > baseDiv.offsetLeft + baseDiv.offsetWidth)
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.LEFT : SecondaryDisplayLayout.RIGHT;
|
| + options.SecondaryDisplayLayout.LEFT :
|
| + options.SecondaryDisplayLayout.RIGHT;
|
| else if (newPosition.x + draggingDiv.offsetWidth <
|
| baseDiv.offsetLeft)
|
| this.layout_ = this.dragging_.display.isPrimary ?
|
| - SecondaryDisplayLayout.RIGHT : SecondaryDisplayLayout.LEFT;
|
| + options.SecondaryDisplayLayout.RIGHT :
|
| + options.SecondaryDisplayLayout.LEFT;
|
| }
|
|
|
| var layoutToBase;
|
| @@ -412,38 +444,38 @@ cr.define('options', function() {
|
| layoutToBase = this.layout_;
|
| } else {
|
| switch (this.layout_) {
|
| - case SecondaryDisplayLayout.RIGHT:
|
| - layoutToBase = SecondaryDisplayLayout.LEFT;
|
| + case options.SecondaryDisplayLayout.RIGHT:
|
| + layoutToBase = options.SecondaryDisplayLayout.LEFT;
|
| break;
|
| - case SecondaryDisplayLayout.LEFT:
|
| - layoutToBase = SecondaryDisplayLayout.RIGHT;
|
| + case options.SecondaryDisplayLayout.LEFT:
|
| + layoutToBase = options.SecondaryDisplayLayout.RIGHT;
|
| break;
|
| - case SecondaryDisplayLayout.TOP:
|
| - layoutToBase = SecondaryDisplayLayout.BOTTOM;
|
| + case options.SecondaryDisplayLayout.TOP:
|
| + layoutToBase = options.SecondaryDisplayLayout.BOTTOM;
|
| break;
|
| - case SecondaryDisplayLayout.BOTTOM:
|
| - layoutToBase = SecondaryDisplayLayout.TOP;
|
| + case options.SecondaryDisplayLayout.BOTTOM:
|
| + layoutToBase = options.SecondaryDisplayLayout.TOP;
|
| break;
|
| }
|
| }
|
|
|
| switch (layoutToBase) {
|
| - case SecondaryDisplayLayout.RIGHT:
|
| + case options.SecondaryDisplayLayout.RIGHT:
|
| draggingDiv.style.left =
|
| baseDiv.offsetLeft + baseDiv.offsetWidth + 'px';
|
| draggingDiv.style.top = newPosition.y + 'px';
|
| break;
|
| - case SecondaryDisplayLayout.LEFT:
|
| + case options.SecondaryDisplayLayout.LEFT:
|
| draggingDiv.style.left =
|
| baseDiv.offsetLeft - draggingDiv.offsetWidth + 'px';
|
| draggingDiv.style.top = newPosition.y + 'px';
|
| break;
|
| - case SecondaryDisplayLayout.TOP:
|
| + case options.SecondaryDisplayLayout.TOP:
|
| draggingDiv.style.top =
|
| baseDiv.offsetTop - draggingDiv.offsetHeight + 'px';
|
| draggingDiv.style.left = newPosition.x + 'px';
|
| break;
|
| - case SecondaryDisplayLayout.BOTTOM:
|
| + case options.SecondaryDisplayLayout.BOTTOM:
|
| draggingDiv.style.top =
|
| baseDiv.offsetTop + baseDiv.offsetHeight + 'px';
|
| draggingDiv.style.left = newPosition.x + 'px';
|
| @@ -505,8 +537,8 @@ cr.define('options', function() {
|
| var baseDiv = this.dragging_.display.isPrimary ?
|
| this.secondaryDisplay_.div : this.primaryDisplay_.div;
|
| var draggingDiv = this.dragging_.display.div;
|
| - if (this.layout_ == SecondaryDisplayLayout.LEFT ||
|
| - this.layout_ == SecondaryDisplayLayout.RIGHT) {
|
| + if (this.layout_ == options.SecondaryDisplayLayout.LEFT ||
|
| + this.layout_ == options.SecondaryDisplayLayout.RIGHT) {
|
| var top = Math.max(draggingDiv.offsetTop,
|
| baseDiv.offsetTop - draggingDiv.offsetHeight +
|
| MIN_OFFSET_OVERLAP);
|
| @@ -824,8 +856,9 @@ cr.define('options', function() {
|
| /**
|
| * Called when the display arrangement has changed.
|
| * @param {boolean} mirroring Whether current mode is mirroring or not.
|
| - * @param {Array} displays The list of the display information.
|
| - * @param {SecondaryDisplayLayout} layout The layout strategy.
|
| + * @param {Array.<DisplayInfo>} displays The list of the display
|
| + * information.
|
| + * @param {options.SecondaryDisplayLayout} layout The layout strategy.
|
| * @param {number} offset The offset of the secondary display.
|
| * @private
|
| */
|
|
|