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

Unified Diff: chrome/browser/resources/options/chromeos/display_options.js

Issue 1612873002: Fix types in display_options.js (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_576375_display2
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9b48940611521d9274ec246d3f855b94b6817886..fb3f4ca9da01540b00324b8e6089273178464da9 100644
--- a/chrome/browser/resources/options/chromeos/display_options.js
+++ b/chrome/browser/resources/options/chromeos/display_options.js
@@ -5,6 +5,29 @@
cr.exportPath('options');
/**
+ * Enumeration of display layout. These values must match the C++ values in
+ * ash::DisplayController.
+ * @enum {number}
+ */
+options.DisplayLayoutType = {
+ TOP: 0,
+ RIGHT: 1,
+ BOTTOM: 2,
+ LEFT: 3
+};
+
+/**
+ * Enumeration of multi display mode. These values must match the C++ values in
+ * ash::DisplayManager.
+ * @enum {number}
+ */
+options.MultiDisplayMode = {
+ EXTENDED: 0,
+ MIRRORING: 1,
+ UNIFIED: 2,
+};
+
+/**
* @typedef {{
* left: number,
* top: number,
@@ -16,6 +39,14 @@ options.DisplayBounds;
/**
* @typedef {{
+ * x: number,
+ * y: number
+ * }}
+ */
+options.DisplayPosition;
+
+/**
+ * @typedef {{
* width: number,
* height: number,
* originalWidth: number,
@@ -40,7 +71,7 @@ options.ColorProfile;
/**
* @typedef {{
* availableColorProfiles: !Array<!options.ColorProfile>,
- * bounds: options.DisplayBounds,
+ * bounds: !options.DisplayBounds,
* colorProfileId: number,
* div: ?Element,
* id: string,
@@ -49,34 +80,11 @@ options.ColorProfile;
* resolutions: !Array<!options.DisplayMode>,
* name: string,
* rotation: number,
- * originalPosition: ?{x: number, y: number}
+ * originalPosition: ?options.DisplayPosition
* }}
*/
options.DisplayInfo;
-/**
- * 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
-};
-
-/**
- * Enumeration of multi display mode. The value has to be same as the
- * values in ash/display/display_manager..
- * @enum {number}
- */
-options.MultiDisplayMode = {
- EXTENDED: 0,
- MIRRORING: 1,
- UNIFIED: 2,
-};
-
cr.define('options', function() {
var Page = cr.ui.pageManager.Page;
var PageManager = cr.ui.pageManager.PageManager;
@@ -88,50 +96,28 @@ cr.define('options', function() {
/** @const */ var MIN_OFFSET_OVERLAP = 5;
/**
- * 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.
- */
- function getBoundsInPage(element) {
- var bounds = {
- x: element.offsetLeft,
- y: element.offsetTop,
- width: element.offsetWidth,
- height: element.offsetHeight
- };
- var parent = element.offsetParent;
- while (parent && parent != document.body) {
- bounds.x += parent.offsetLeft;
- bounds.y += parent.offsetTop;
- parent = parent.offsetParent;
- }
- return bounds;
- }
stevenjb 2016/01/21 03:56:17 Unused
-
- /**
* 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 {options.SecondaryDisplayLayout} The position of the calculated
- * point.
+ * @param {!options.DisplayBounds} rect The base rectangle.
+ * @param {!options.DisplayPosition} point The point to check the position.
+ * @return {options.DisplayLayoutType} The position of the calculated point.
*/
function getPositionToRectangle(rect, point) {
// Separates the area into four (LEFT/RIGHT/TOP/BOTTOM) by the diagonals of
// the rect, and decides which area the display should reside.
var diagonalSlope = rect.height / rect.width;
- var topDownIntercept = rect.y - rect.x * diagonalSlope;
- var bottomUpIntercept = rect.y + rect.height + rect.x * diagonalSlope;
+ var topDownIntercept = rect.top - rect.left * diagonalSlope;
+ var bottomUpIntercept = rect.top + rect.height + rect.left * diagonalSlope;
if (point.y > topDownIntercept + point.x * diagonalSlope) {
if (point.y > bottomUpIntercept - point.x * diagonalSlope)
- return options.SecondaryDisplayLayout.BOTTOM;
+ return options.DisplayLayoutType.BOTTOM;
else
- return options.SecondaryDisplayLayout.LEFT;
+ return options.DisplayLayoutType.LEFT;
} else {
if (point.y > bottomUpIntercept - point.x * diagonalSlope)
- return options.SecondaryDisplayLayout.RIGHT;
+ return options.DisplayLayoutType.RIGHT;
else
- return options.SecondaryDisplayLayout.TOP;
+ return options.DisplayLayoutType.TOP;
}
}
@@ -153,27 +139,31 @@ cr.define('options', function() {
/**
* Whether the current output status is mirroring displays or not.
+ * @type {boolean}
* @private
*/
mirroring_: false,
/**
* Whether the unified desktop is enable or not.
+ * @type {boolean}
* @private
*/
unifiedDesktopEnabled_: false,
/**
* Whether the unified desktop option should be present.
+ * @type {boolean}
* @private
*/
showUnifiedDesktopOption_: false,
/**
* The current secondary display layout.
+ * @type {options.DisplayLayoutType}
* @private
*/
- layout_: options.SecondaryDisplayLayout.RIGHT,
+ layout_: options.DisplayLayoutType.RIGHT,
/**
* The array of current output displays. It also contains the display
@@ -184,11 +174,11 @@ cr.define('options', function() {
displays_: [],
/**
- * The index for the currently focused display in the options UI. null if
- * no one has focus.
+ * The index of the currently focused display, or -1 for none.
+ * @type {number}
* @private
*/
- focusedIndex_: null,
+ focusedIndex_: -1,
/**
* The primary display edit info.
@@ -205,7 +195,17 @@ cr.define('options', function() {
secondaryDisplay_: null,
/**
+ * Drag info.
+ * @type {?{display: !options.DisplayInfo,
+ * originalLocation: !options.DisplayPosition,
+ * eventLocation: !options.DisplayPosition}}
+ * @private
+ */
+ dragging_: null,
+
+ /**
* The container div element which contains all of the display rectangles.
+ * @type {?Element}
* @private
*/
displaysView_: null,
@@ -213,6 +213,7 @@ cr.define('options', function() {
/**
* The scale factor of the actual display size to the drawn display
* rectangle size.
+ * @type {number}
* @private
*/
visualScale_: VISUAL_SCALE,
@@ -221,12 +222,14 @@ cr.define('options', function() {
* The location where the last touch event happened. This is used to
* prevent unnecessary dragging events happen. Set to null unless it's
* during touch events.
+ * @type {?options.DisplayPosition}
* @private
*/
lastTouchLocation_: null,
/**
* Whether the display settings can be shown.
+ * @type {boolean}
* @private
*/
enabled_: true,
@@ -257,7 +260,7 @@ cr.define('options', function() {
}).bind(this);
$('display-options-orientation-selection').onchange = (function(ev) {
var displayIndex =
- (this.focusedIndex_ === null) ? 0 : this.focusedIndex_;
+ (this.focusedIndex_ == -1) ? 0 : this.focusedIndex_;
var rotation = parseInt(ev.target.value, 10);
chrome.send('setRotation', [this.displays_[displayIndex].id, rotation]);
}).bind(this);
@@ -299,9 +302,7 @@ cr.define('options', function() {
},
/** @override */
- canShowPage: function() {
- return this.enabled_;
- },
+ canShowPage: function() { return this.enabled_; },
/**
* Enables or disables the page. When disabled, the page will not be able to
@@ -401,8 +402,8 @@ cr.define('options', function() {
var primary = this.primaryDisplay_;
var secondary = this.secondaryDisplay_;
var offset;
- if (this.layout_ == options.SecondaryDisplayLayout.LEFT ||
- this.layout_ == options.SecondaryDisplayLayout.RIGHT) {
+ if (this.layout_ == options.DisplayLayoutType.LEFT ||
+ this.layout_ == options.DisplayLayoutType.RIGHT) {
offset = secondary.div.offsetTop - primary.div.offsetTop;
} else {
offset = secondary.div.offsetLeft - primary.div.offsetLeft;
@@ -441,7 +442,8 @@ cr.define('options', function() {
/**
* Processes the actual dragging of display rectangle.
* @param {Event} e The event which triggers this drag.
- * @param {Object} eventLocation The location where the event happens.
+ * @param {options.DisplayPosition} eventLocation The location where the
+ * event happens.
* @private
*/
processDragging_: function(e, eventLocation) {
@@ -479,61 +481,59 @@ cr.define('options', function() {
newPosition.y = this.snapToEdge_(newPosition.y, draggingDiv.offsetHeight,
baseDiv.offsetTop, baseDiv.offsetHeight);
- var newCenter = {
+ var newCenter = /** {!options.DisplayPosition} */({
x: newPosition.x + draggingDiv.offsetWidth / 2,
y: newPosition.y + draggingDiv.offsetHeight / 2
- };
+ });
- var baseBounds = {
- x: baseDiv.offsetLeft,
- y: baseDiv.offsetTop,
+ var baseBounds = /** {!options.DisplayBounds} */({
+ left: baseDiv.offsetLeft,
+ top: baseDiv.offsetTop,
width: baseDiv.offsetWidth,
height: baseDiv.offsetHeight
- };
+ });
switch (getPositionToRectangle(baseBounds, newCenter)) {
- case options.SecondaryDisplayLayout.RIGHT:
+ case options.DisplayLayoutType.RIGHT:
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.LEFT :
- options.SecondaryDisplayLayout.RIGHT;
+ options.DisplayLayoutType.LEFT :
+ options.DisplayLayoutType.RIGHT;
break;
- case options.SecondaryDisplayLayout.LEFT:
+ case options.DisplayLayoutType.LEFT:
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.RIGHT :
- options.SecondaryDisplayLayout.LEFT;
+ options.DisplayLayoutType.RIGHT :
+ options.DisplayLayoutType.LEFT;
break;
- case options.SecondaryDisplayLayout.TOP:
+ case options.DisplayLayoutType.TOP:
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.BOTTOM :
- options.SecondaryDisplayLayout.TOP;
+ options.DisplayLayoutType.BOTTOM :
+ options.DisplayLayoutType.TOP;
break;
- case options.SecondaryDisplayLayout.BOTTOM:
+ case options.DisplayLayoutType.BOTTOM:
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.TOP :
- options.SecondaryDisplayLayout.BOTTOM;
+ options.DisplayLayoutType.TOP :
+ options.DisplayLayoutType.BOTTOM;
break;
}
- if (this.layout_ == options.SecondaryDisplayLayout.LEFT ||
- this.layout_ == options.SecondaryDisplayLayout.RIGHT) {
+ if (this.layout_ == options.DisplayLayoutType.LEFT ||
+ this.layout_ == options.DisplayLayoutType.RIGHT) {
if (newPosition.y > baseDiv.offsetTop + baseDiv.offsetHeight)
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.TOP :
- options.SecondaryDisplayLayout.BOTTOM;
- else if (newPosition.y + draggingDiv.offsetHeight <
- baseDiv.offsetTop)
+ options.DisplayLayoutType.TOP :
+ options.DisplayLayoutType.BOTTOM;
+ else if (newPosition.y + draggingDiv.offsetHeight < baseDiv.offsetTop)
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.BOTTOM :
- options.SecondaryDisplayLayout.TOP;
+ options.DisplayLayoutType.BOTTOM :
+ options.DisplayLayoutType.TOP;
} else {
if (newPosition.x > baseDiv.offsetLeft + baseDiv.offsetWidth)
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.LEFT :
- options.SecondaryDisplayLayout.RIGHT;
- else if (newPosition.x + draggingDiv.offsetWidth <
- baseDiv.offsetLeft)
+ options.DisplayLayoutType.LEFT :
+ options.DisplayLayoutType.RIGHT;
+ else if (newPosition.x + draggingDiv.offsetWidth < baseDiv.offsetLeft)
this.layout_ = this.dragging_.display.isPrimary ?
- options.SecondaryDisplayLayout.RIGHT :
- options.SecondaryDisplayLayout.LEFT;
+ options.DisplayLayoutType.RIGHT :
+ options.DisplayLayoutType.LEFT;
}
var layoutToBase;
@@ -541,38 +541,38 @@ cr.define('options', function() {
layoutToBase = this.layout_;
} else {
switch (this.layout_) {
- case options.SecondaryDisplayLayout.RIGHT:
- layoutToBase = options.SecondaryDisplayLayout.LEFT;
+ case options.DisplayLayoutType.RIGHT:
+ layoutToBase = options.DisplayLayoutType.LEFT;
break;
- case options.SecondaryDisplayLayout.LEFT:
- layoutToBase = options.SecondaryDisplayLayout.RIGHT;
+ case options.DisplayLayoutType.LEFT:
+ layoutToBase = options.DisplayLayoutType.RIGHT;
break;
- case options.SecondaryDisplayLayout.TOP:
- layoutToBase = options.SecondaryDisplayLayout.BOTTOM;
+ case options.DisplayLayoutType.TOP:
+ layoutToBase = options.DisplayLayoutType.BOTTOM;
break;
- case options.SecondaryDisplayLayout.BOTTOM:
- layoutToBase = options.SecondaryDisplayLayout.TOP;
+ case options.DisplayLayoutType.BOTTOM:
+ layoutToBase = options.DisplayLayoutType.TOP;
break;
}
}
switch (layoutToBase) {
- case options.SecondaryDisplayLayout.RIGHT:
+ case options.DisplayLayoutType.RIGHT:
draggingDiv.style.left =
baseDiv.offsetLeft + baseDiv.offsetWidth + 'px';
draggingDiv.style.top = newPosition.y + 'px';
break;
- case options.SecondaryDisplayLayout.LEFT:
+ case options.DisplayLayoutType.LEFT:
draggingDiv.style.left =
baseDiv.offsetLeft - draggingDiv.offsetWidth + 'px';
draggingDiv.style.top = newPosition.y + 'px';
break;
- case options.SecondaryDisplayLayout.TOP:
+ case options.DisplayLayoutType.TOP:
draggingDiv.style.top =
baseDiv.offsetTop - draggingDiv.offsetHeight + 'px';
draggingDiv.style.left = newPosition.x + 'px';
break;
- case options.SecondaryDisplayLayout.BOTTOM:
+ case options.DisplayLayoutType.BOTTOM:
draggingDiv.style.top =
baseDiv.offsetTop + baseDiv.offsetHeight + 'px';
draggingDiv.style.left = newPosition.x + 'px';
@@ -583,16 +583,15 @@ cr.define('options', function() {
},
/**
- * start dragging of a display rectangle.
- * @param {HTMLElement} target The event target.
- * @param {Object} eventLocation The object to hold the location where
- * this event happens.
+ * Start dragging of a display rectangle.
+ * @param {!HTMLElement} target The event target.
+ * @param {!options.DisplayPosition} eventLocation The event location.
* @private
*/
startDragging_: function(target, eventLocation) {
var oldFocusedIndex = this.focusedIndex_;
var willUpdateDisplayDescription = false;
- this.focusedIndex_ = null;
+ this.focusedIndex_ = -1;
for (var i = 0; i < this.displays_.length; i++) {
var display = this.displays_[i];
if (display.div == target ||
@@ -637,24 +636,25 @@ cr.define('options', function() {
if (this.dragging_) {
// Make sure the dragging location is connected.
var baseDiv = this.dragging_.display.isPrimary ?
- this.secondaryDisplay_.div : this.primaryDisplay_.div;
+ this.secondaryDisplay_.div :
+ this.primaryDisplay_.div;
var draggingDiv = this.dragging_.display.div;
- if (this.layout_ == options.SecondaryDisplayLayout.LEFT ||
- this.layout_ == options.SecondaryDisplayLayout.RIGHT) {
- var top = Math.max(draggingDiv.offsetTop,
- baseDiv.offsetTop - draggingDiv.offsetHeight +
- MIN_OFFSET_OVERLAP);
- top = Math.min(top,
- baseDiv.offsetTop + baseDiv.offsetHeight -
- MIN_OFFSET_OVERLAP);
+ if (this.layout_ == options.DisplayLayoutType.LEFT ||
+ this.layout_ == options.DisplayLayoutType.RIGHT) {
+ var top = Math.max(
+ draggingDiv.offsetTop, baseDiv.offsetTop -
+ draggingDiv.offsetHeight + MIN_OFFSET_OVERLAP);
+ top = Math.min(
+ top,
+ baseDiv.offsetTop + baseDiv.offsetHeight - MIN_OFFSET_OVERLAP);
draggingDiv.style.top = top + 'px';
} else {
- var left = Math.max(draggingDiv.offsetLeft,
- baseDiv.offsetLeft - draggingDiv.offsetWidth +
- MIN_OFFSET_OVERLAP);
- left = Math.min(left,
- baseDiv.offsetLeft + baseDiv.offsetWidth -
- MIN_OFFSET_OVERLAP);
+ var left = Math.max(
+ draggingDiv.offsetLeft, baseDiv.offsetLeft -
+ draggingDiv.offsetWidth + MIN_OFFSET_OVERLAP);
+ left = Math.min(
+ left,
+ baseDiv.offsetLeft + baseDiv.offsetWidth - MIN_OFFSET_OVERLAP);
draggingDiv.style.left = left + 'px';
}
var originalPosition = this.dragging_.display.originalPosition;
@@ -711,7 +711,7 @@ cr.define('options', function() {
/**
* Updates the description of selected display section for the selected
* display.
- * @param {Object} display The selected display object.
+ * @param {options.DisplayInfo} display The selected display object.
* @private
*/
updateSelectedDisplaySectionForDisplay_: function(display) {
@@ -804,7 +804,7 @@ cr.define('options', function() {
if (this.mirroring_) {
this.updateSelectedDisplaySectionMirroring_();
- } else if (this.focusedIndex_ == null ||
+ } else if (this.focusedIndex_ == -1 ||
this.displays_[this.focusedIndex_] == null) {
this.updateSelectedDisplaySectionNoSelected_();
} else {
@@ -981,25 +981,25 @@ cr.define('options', function() {
// dragging. See crbug.com/386401
var bounds = this.secondaryDisplay_.bounds;
switch (this.layout_) {
- case options.SecondaryDisplayLayout.TOP:
+ case options.DisplayLayoutType.TOP:
secondaryDiv.style.left =
Math.floor(bounds.left * this.visualScale_) + offset.x + 'px';
secondaryDiv.style.top =
primaryDiv.offsetTop - secondaryDiv.offsetHeight + 'px';
break;
- case options.SecondaryDisplayLayout.RIGHT:
+ case options.DisplayLayoutType.RIGHT:
secondaryDiv.style.left =
primaryDiv.offsetLeft + primaryDiv.offsetWidth + 'px';
secondaryDiv.style.top =
Math.floor(bounds.top * this.visualScale_) + offset.y + 'px';
break;
- case options.SecondaryDisplayLayout.BOTTOM:
+ case options.DisplayLayoutType.BOTTOM:
secondaryDiv.style.left =
Math.floor(bounds.left * this.visualScale_) + offset.x + 'px';
secondaryDiv.style.top =
primaryDiv.offsetTop + primaryDiv.offsetHeight + 'px';
break;
- case options.SecondaryDisplayLayout.LEFT:
+ case options.DisplayLayoutType.LEFT:
secondaryDiv.style.left =
primaryDiv.offsetLeft - secondaryDiv.offsetWidth + 'px';
secondaryDiv.style.top =
@@ -1018,7 +1018,7 @@ cr.define('options', function() {
* @param {options.MultiDisplayMode} mode multi display mode.
* @param {Array<options.DisplayInfo>} displays The list of the display
* information.
- * @param {options.SecondaryDisplayLayout} layout The layout strategy.
+ * @param {options.DisplayLayoutType} layout The layout strategy.
* @param {number} offset The offset of the secondary display.
* @private
*/
@@ -1042,7 +1042,7 @@ cr.define('options', function() {
// Focus to the first display next to the primary one when |displays| list
// is updated.
if (mirroring) {
- this.focusedIndex_ = null;
+ this.focusedIndex_ = -1;
} else if (this.mirroring_ != mirroring ||
this.unifiedDesktopEnabled_ != unifiedDesktopEnabled ||
this.displays_.length != displays.length) {
« 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