Annotation updates
Change-Id: I146f76b9dcc1a92e18acec01481ad280fb431868
diff --git a/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior.html b/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior.html
index fce06c9..cda8c530 100644
--- a/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior.html
+++ b/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior.html
@@ -22,6 +22,7 @@
/** @polymerBehavior Gerrit.BaseUrlBehavior */
Gerrit.BaseUrlBehavior = {
+ /** @return {string} */
getBaseUrl() {
return window.CANONICAL_PATH || '';
},
diff --git a/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior_test.html b/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior_test.html
index 706d499..b7c29dc 100644
--- a/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior_test.html
+++ b/polygerrit-ui/app/behaviors/base-url-behavior/base-url-behavior_test.html
@@ -22,7 +22,7 @@
<script src="../../bower_components/web-component-tester/browser.js"></script>
<link rel="import" href="../../test/common-test-setup.html"/>
<script>
- /** @type {String} */
+ /** @type {string} */
window.CANONICAL_PATH = '/r';
</script>
<link rel="import" href="base-url-behavior.html">
diff --git a/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.html b/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.html
index 394ec74..07ce55e 100644
--- a/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.html
+++ b/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.html
@@ -32,7 +32,7 @@
* Get the docs base URL from either the server config or by probing.
* @param {Object} config The server config.
* @param {!Object} restApi A REST API instance
- * @return {!Promise<String>} A promise that resolves with the docs base
+ * @return {!Promise<string>} A promise that resolves with the docs base
* URL.
*/
getDocsBaseUrl(config, restApi) {
diff --git a/polygerrit-ui/app/behaviors/gr-change-table-behavior/gr-change-table-behavior.html b/polygerrit-ui/app/behaviors/gr-change-table-behavior/gr-change-table-behavior.html
index af266b4..7037b53 100644
--- a/polygerrit-ui/app/behaviors/gr-change-table-behavior/gr-change-table-behavior.html
+++ b/polygerrit-ui/app/behaviors/gr-change-table-behavior/gr-change-table-behavior.html
@@ -40,6 +40,7 @@
/**
* Returns the complement to the given column array
* @param {Array} columns
+ * @return {!Array}
*/
getComplementColumns(columns) {
return this.columnNames.filter(column => {
@@ -47,6 +48,11 @@
});
},
+ /**
+ * @param {string} columnToCheck
+ * @param {!Array} columnsToDisplay
+ * @return {boolean}
+ */
isColumnHidden(columnToCheck, columnsToDisplay) {
return !columnsToDisplay.includes(columnToCheck);
},
diff --git a/polygerrit-ui/app/behaviors/gr-list-view-behavior/gr-list-view-behavior.html b/polygerrit-ui/app/behaviors/gr-list-view-behavior/gr-list-view-behavior.html
index 98749be..597300e 100644
--- a/polygerrit-ui/app/behaviors/gr-list-view-behavior/gr-list-view-behavior.html
+++ b/polygerrit-ui/app/behaviors/gr-list-view-behavior/gr-list-view-behavior.html
@@ -35,11 +35,19 @@
return this.getBaseUrl() + path + this.encodeURL(item, true);
},
+ /**
+ * @param {Object} params
+ * @return {string}
+ */
getFilterValue(params) {
- if (!params) { return null; }
- return params.filter || null;
+ if (!params) { return ''; }
+ return params.filter || '';
},
+ /**
+ * @param {Object} params
+ * @return {number}
+ */
getOffsetValue(params) {
if (params && params.offset) {
return params.offset;
diff --git a/polygerrit-ui/app/behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html b/polygerrit-ui/app/behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html
index 74e2ee4..5110a28 100644
--- a/polygerrit-ui/app/behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html
+++ b/polygerrit-ui/app/behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html
@@ -39,7 +39,9 @@
* this function checks for patchNum equality.
*
* @param {string|number} a
- * @param {string|number} b
+ * @param {string|number|undefined} b Undefined sometimes because
+ * computeLatestPatchNum can return undefined.
+ * @return {boolean}
*/
patchNumEquals(a, b) {
return a + '' === b + '';
@@ -180,6 +182,7 @@
return patchNums;
},
+ /** @return {number|undefined} */
computeLatestPatchNum(allPatchSets) {
if (!allPatchSets || !allPatchSets.length) { return undefined; }
if (allPatchSets[allPatchSets.length - 1].num ===
diff --git a/polygerrit-ui/app/behaviors/gr-path-list-behavior/gr-path-list-behavior.html b/polygerrit-ui/app/behaviors/gr-path-list-behavior/gr-path-list-behavior.html
index 0d4e7f1..d63b961 100644
--- a/polygerrit-ui/app/behaviors/gr-path-list-behavior/gr-path-list-behavior.html
+++ b/polygerrit-ui/app/behaviors/gr-path-list-behavior/gr-path-list-behavior.html
@@ -20,6 +20,11 @@
window.Gerrit = window.Gerrit || {};
/** @polymerBehavior Gerrit.PathListBehavior */
Gerrit.PathListBehavior = {
+ /**
+ * @param {string} a
+ * @param {string} b
+ * @return {number}
+ */
specialFilePathCompare(a, b) {
// The commit message always goes first.
const COMMIT_MESSAGE_PATH = '/COMMIT_MSG';
diff --git a/polygerrit-ui/app/behaviors/gr-tooltip-behavior/gr-tooltip-behavior.js b/polygerrit-ui/app/behaviors/gr-tooltip-behavior/gr-tooltip-behavior.js
index 0cc3466..451fc22 100644
--- a/polygerrit-ui/app/behaviors/gr-tooltip-behavior/gr-tooltip-behavior.js
+++ b/polygerrit-ui/app/behaviors/gr-tooltip-behavior/gr-tooltip-behavior.js
@@ -33,7 +33,7 @@
return 'ontouchstart' in document.documentElement;
},
},
- _tooltip: Element,
+ _tooltip: Object,
_titleText: String,
_hasSetupTooltipListeners: {
type: Boolean,
diff --git a/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html b/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html
index 9c414fc4..bd996760 100644
--- a/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html
+++ b/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html
@@ -22,6 +22,8 @@
// Must be declared outside behavior implementation to be accessed inside
// behavior functions.
+
+ /** @return {!Object} */
const getKeyboardEvent = function(e) {
e = Polymer.dom(e.detail ? e.detail.keyboardEvent : e);
// When e is a keyboardEvent, e.event is not null.
@@ -55,6 +57,7 @@
},
// Alias for getKeyboardEvent.
+ /** @return {!Object} */
getKeyboardEvent(e) {
return getKeyboardEvent(e);
},
diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html
index f5e17c9..928de04 100644
--- a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html
+++ b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html
@@ -101,6 +101,9 @@
return v.toString(16);
},
+ /**
+ * @return {string}
+ */
changeBaseURL(changeNum, patchNum) {
let v = this.getBaseUrl() + '/changes/' + changeNum;
if (patchNum) {
diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html
index 5c0d76a..968b855 100644
--- a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html
+++ b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html
@@ -22,7 +22,7 @@
<script src="../../bower_components/web-component-tester/browser.js"></script>
<link rel="import" href="../../test/common-test-setup.html"/>
<script>
- /** @type {String} */
+ /** @type {string} */
window.CANONICAL_PATH = '/r';
</script>
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.js b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.js
index 276a925..ed36e3d 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.js
+++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.js
@@ -40,6 +40,7 @@
is: 'gr-admin-view',
properties: {
+ /** @type {?} */
params: Object,
path: String,
adminView: String,
@@ -126,7 +127,7 @@
linkCopy.subsection = {
name: this._groupName,
view: 'gr-group',
- url: `/admin/groups/${this.encodeURL(this._groupId, true)}`,
+ url: `/admin/groups/${this.encodeURL(this._groupId + '', true)}`,
children: [],
};
if (this._groupOwner) {
@@ -135,8 +136,8 @@
name: 'Audit Log',
detailType: 'audit-log',
view: 'gr-group-audit-log',
- url: `/admin/groups/${this.encodeURL(this._groupId, true)}` +
- ',audit-log',
+ url: '/admin/groups/' +
+ `${this.encodeURL(this._groupId + '', true)},audit-log`,
}
);
}
@@ -198,6 +199,11 @@
return this._computeRelativeURL(link.url);
},
+ /**
+ * @param {string} itemView
+ * @param {Object} params
+ * @param {string=} opt_detailType
+ */
_computeSelectedClass(itemView, params, opt_detailType) {
if (params.detailType && params.detailType !== opt_detailType) {
return '';
diff --git a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.js b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.js
index 90cfd6b..de1d0f8 100644
--- a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.js
+++ b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.js
@@ -68,7 +68,7 @@
page.show(this._computeItemUrl(this.itemDetail));
}
});
- } else if (this.itemDetail === DETAIL_TYPES.tag) {
+ } else if (this.itemDetail === DETAIL_TYPES.tags) {
return this.$.restAPI.createProjectTag(this.projectName,
this._itemName, {revision: USE_HEAD})
.then(itemRegistered => {
diff --git a/polygerrit-ui/app/elements/admin/gr-create-project-dialog/gr-create-project-dialog.js b/polygerrit-ui/app/elements/admin/gr-create-project-dialog/gr-create-project-dialog.js
index 837e2ce..94f782d 100644
--- a/polygerrit-ui/app/elements/admin/gr-create-project-dialog/gr-create-project-dialog.js
+++ b/polygerrit-ui/app/elements/admin/gr-create-project-dialog/gr-create-project-dialog.js
@@ -25,12 +25,13 @@
value: false,
},
+ /** @type {?} */
_projectConfig: {
type: Object,
value: () => { return {}; },
},
_projectCreated: {
- type: Object,
+ type: Boolean,
value: false,
},
diff --git a/polygerrit-ui/app/elements/admin/gr-group/gr-group.js b/polygerrit-ui/app/elements/admin/gr-group/gr-group.js
index a91ad2e..cf4f132 100644
--- a/polygerrit-ui/app/elements/admin/gr-group/gr-group.js
+++ b/polygerrit-ui/app/elements/admin/gr-group/gr-group.js
@@ -61,6 +61,7 @@
value: false,
observer: '_loggedInChanged',
},
+ /** @type {?} */
_groupConfig: Object,
_groupName: Object,
_groupOwner: {
diff --git a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.js b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.js
index 624ff57..d441407 100644
--- a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.js
+++ b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.js
@@ -28,7 +28,10 @@
/**
* Offset of currently visible query results.
*/
- _offset: Number,
+ _offset: {
+ type: Number,
+ value: 0,
+ },
_path: {
type: String,
readOnly: true,
@@ -51,7 +54,10 @@
type: Boolean,
value: true,
},
- _filter: String,
+ _filter: {
+ type: String,
+ value: '',
+ },
},
behaviors: [
diff --git a/polygerrit-ui/app/elements/admin/gr-project-detail-list/gr-project-detail-list.js b/polygerrit-ui/app/elements/admin/gr-project-detail-list/gr-project-detail-list.js
index b155090..eec277e 100644
--- a/polygerrit-ui/app/elements/admin/gr-project-detail-list/gr-project-detail-list.js
+++ b/polygerrit-ui/app/elements/admin/gr-project-detail-list/gr-project-detail-list.js
@@ -73,6 +73,8 @@
_filter: String,
_refName: String,
_hasNewItemName: Boolean,
+ _isEditing: Boolean,
+ _revisedRef: String,
},
behaviors: [
diff --git a/polygerrit-ui/app/elements/admin/gr-project/gr-project.js b/polygerrit-ui/app/elements/admin/gr-project/gr-project.js
index 1c0db91..b8a638a 100644
--- a/polygerrit-ui/app/elements/admin/gr-project/gr-project.js
+++ b/polygerrit-ui/app/elements/admin/gr-project/gr-project.js
@@ -67,6 +67,7 @@
value: false,
observer: '_loggedInChanged',
},
+ /** @type {?} */
_projectConfig: Object,
_readOnly: {
type: Boolean,
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js
index 189a942..e9a0419 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js
@@ -22,6 +22,8 @@
labelNames: {
type: Array,
},
+
+ /** @type {?} */
change: Object,
changeURL: {
type: String,
@@ -31,6 +33,7 @@
type: Boolean,
value: false,
},
+ showNumber: Boolean,
},
behaviors: [
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js
index 91282f0..30fc679 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js
@@ -54,6 +54,11 @@
/**
* State persisted across restamps of the element.
+ *
+ * Need sub-property declaration since it is used in template before
+ * assignment.
+ * @type {{ selectedChangeIndex: (number|undefined) }}
+ *
*/
viewState: {
type: Object,
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.html b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.html
index 7277fd2..ce97f47 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.html
@@ -99,7 +99,6 @@
needs-review$="[[_computeItemNeedsReview(account, change, showReviewedState)]]"
change="[[change]]"
visible-change-table-columns="[[visibleChangeTableColumns]]"
- show-number="[[showNumber]]"
show-star="[[showStar]]"
label-names="[[labelNames]]"></gr-change-list-item>
</template>
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js
index af5a3b0..02ff1ae 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js
@@ -86,6 +86,7 @@
value() { return document.body; },
},
changeTableColumns: Array,
+ visibleChangeTableColumns: Array,
},
behaviors: [
diff --git a/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.js b/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.js
index 4e39304..69550b9 100644
--- a/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.js
+++ b/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.js
@@ -49,6 +49,7 @@
type: Object,
value() { return {}; },
},
+ /** @type {{ selectedChangeIndex: number }} */
viewState: Object,
params: {
type: Object,
diff --git a/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js b/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js
index 4e403e6..c2dbf3f 100644
--- a/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js
+++ b/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js
@@ -34,6 +34,9 @@
change: Object,
filter: Function,
placeholder: String,
+ /**
+ * Needed for template checking since value is initially set to null.
+ * @type {?Object} */
pendingConfirmation: {
type: Object,
value: null,
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
index f8dad01..e9e60e0 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
@@ -18,7 +18,7 @@
const ERR_COMMIT_EMPTY = 'The commit message can’t be empty.';
const ERR_REVISION_ACTIONS = 'Couldn’t load revision actions.';
/**
- * @enum {number}
+ * @enum {string}
*/
const LabelStatus = {
/**
@@ -44,6 +44,7 @@
* project owner or site administrator.
*/
IMPOSSIBLE: 'IMPOSSIBLE',
+ OPTIONAL: 'OPTIONAL',
};
// TODO(davido): Add the rest of the change actions.
@@ -139,6 +140,7 @@
*/
properties: {
+ /** @type {{ branch: string, project: string }} */
change: Object,
actions: {
type: Object,
@@ -169,6 +171,7 @@
type: String,
value: '',
},
+ /** @type {?} */
revisionActions: {
type: Object,
value() { return {}; },
@@ -180,7 +183,7 @@
},
_actionLoadingMessage: {
type: String,
- value: null,
+ value: '',
},
_allActionValues: {
type: Array,
@@ -417,7 +420,7 @@
this.hidden = this._keyCount(actionsChangeRecord) === 0 &&
this._keyCount(revisionActionsChangeRecord) === 0 &&
additionalActions.length === 0;
- this._actionLoadingMessage = null;
+ this._actionLoadingMessage = '';
this._disabledMenuActions = [];
const revisionActions = revisionActionsChangeRecord.base || {};
@@ -449,7 +452,7 @@
* Get highest score for last missing permitted label for current change.
* Returns null if no labels permitted or more than one label missing.
*
- * @return {{label: string, score: string}}
+ * @return {{label: string, score: string}|null}
*/
_getTopMissingApproval() {
if (!this.change ||
@@ -668,9 +671,8 @@
},
/**
- * Returns true if hasParent is defined (can be either true or false).
- * returns false otherwise.
- * @return {boolean} hasParent
+ * _hasKnownChainState set to true true if hasParent is defined (can be
+ * either true or false). set to false otherwise.
*/
_computeChainState(hasParent) {
this._hasKnownChainState = true;
@@ -778,7 +780,7 @@
if (this._getActionOverflowIndex(type, key) !== -1) {
this.push('_disabledMenuActions', key === '/' ? 'delete' : key);
return function() {
- this._actionLoadingMessage = null;
+ this._actionLoadingMessage = '';
this._disabledMenuActions = [];
}.bind(this);
}
@@ -788,12 +790,18 @@
buttonEl.setAttribute('loading', true);
buttonEl.disabled = true;
return function() {
- this._actionLoadingMessage = null;
+ this._actionLoadingMessage = '';
buttonEl.removeAttribute('loading');
buttonEl.disabled = false;
}.bind(this);
},
+ /**
+ * @param {string} endpoint
+ * @param {!Object|undefined} action
+ * @param {boolean} revAction
+ * @param {!Object|string=} opt_payload
+ */
_fireAction(endpoint, action, revAction, opt_payload) {
const cleanupFn =
this._setLoadingOnButtonWithKey(action.__type, action.__key);
@@ -861,6 +869,14 @@
});
},
+ /**
+ * @param {string} method
+ * @param {string|!Object|undefined} payload
+ * @param {string} actionEndpoint
+ * @param {boolean} revisionAction
+ * @param {?Function} cleanupFn
+ * @param {?Function=} opt_errorFn
+ */
_send(method, payload, actionEndpoint, revisionAction, cleanupFn,
opt_errorFn) {
return this.fetchIsLatestKnown(this.change, this.$.restAPI)
@@ -918,19 +934,19 @@
/**
* Merge sources of change actions into a single ordered array of action
* values.
- * @param {splices} changeActionsRecord
- * @param {splices} revisionActionsRecord
- * @param {splices} primariesRecord
- * @param {splices} additionalActionsRecord
- * @param {Object} change The change object.
- * @return {Array}
+ * @param {!Array} changeActionsRecord
+ * @param {!Array} revisionActionsRecord
+ * @param {!Array} primariesRecord
+ * @param {!Array} additionalActionsRecord
+ * @param {!Object} change The change object.
+ * @return {!Array}
*/
_computeAllActions(changeActionsRecord, revisionActionsRecord,
primariesRecord, additionalActionsRecord, change) {
const revisionActionValues = this._getActionValues(revisionActionsRecord,
primariesRecord, additionalActionsRecord, ActionType.REVISION);
const changeActionValues = this._getActionValues(changeActionsRecord,
- primariesRecord, additionalActionsRecord, ActionType.CHANGE, change);
+ primariesRecord, additionalActionsRecord, ActionType.CHANGE);
const quickApprove = this._getQuickApproveAction();
if (quickApprove) {
changeActionValues.unshift(quickApprove);
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
index 11fcc4e..017f166 100644
--- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
+++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
@@ -34,9 +34,13 @@
*/
properties: {
+ /** @type {?} */
change: Object,
commitInfo: Object,
mutable: Boolean,
+ /**
+ * @type {{ note_db_enabled: string }}
+ */
serverConfig: Object,
_topicReadOnly: {
type: Boolean,
@@ -235,6 +239,13 @@
return false;
},
+ /**
+ * Closure annotation for Polymer.prototype.splice is off.
+ * For now, supressing annotations.
+ *
+ * TODO(beckysiegel) submit Polymer PR
+ *
+ * @suppress {checkTypes} */
_onDeleteVote(e) {
e.preventDefault();
const target = Polymer.dom(e).rootTarget;
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index 1d8025e..f80a1f2 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -68,6 +68,7 @@
type: Object,
observer: '_paramsChanged',
},
+ /** @type {?} */
viewState: {
type: Object,
notify: true,
@@ -80,6 +81,7 @@
type: Object,
value() { return document.body; },
},
+ /** @type {?} */
_serverConfig: {
type: Object,
observer: '_startUpdateCheckTimer',
@@ -99,10 +101,12 @@
computed: '_computeCanStartReview(_loggedIn, _change, _account)',
},
_comments: Object,
+ /** @type {?} */
_change: {
type: Object,
observer: '_changeChanged',
},
+ /** @type {?} */
_commitInfo: Object,
_files: Object,
_changeNum: String,
@@ -119,6 +123,7 @@
computed: '_computeHideEditCommitMessage(_loggedIn, ' +
'_editingCommitMessage, _change)',
},
+ /** @type {?string} */
_latestCommitMessage: {
type: String,
value: '',
@@ -129,6 +134,7 @@
computed:
'_computeChangeIdCommitMessageError(_latestCommitMessage, _change)',
},
+ /** @type {?} */
_patchRange: {
type: Object,
observer: '_updateSelected',
@@ -147,6 +153,7 @@
value: false,
},
_loading: Boolean,
+ /** @type {?} */
_projectConfig: Object,
_rebaseOnCurrent: Boolean,
_replyButtonLabel: {
@@ -180,6 +187,7 @@
type: Boolean,
value: true,
},
+ /** @type {?number} */
_updateCheckTimerHandle: Number,
_sortedRevisions: Array,
_editLoaded: {
@@ -715,7 +723,7 @@
const t = labels[labelName];
if (!t) { return result; }
const approvals = t.all || [];
- for (label of approvals) {
+ for (const label of approvals) {
if (label.value && label.value != labels[labelName].default_value) {
let labelClassName;
let labelValPrefix = '';
@@ -853,6 +861,9 @@
});
},
+ /**
+ * @param {string=} opt_section
+ */
_openReplyDialog(opt_section) {
this.$.replyOverlay.open().then(() => {
this.$.replyOverlay.setFocusStops(this.$.replyDialog.getFocusStops());
@@ -946,7 +957,10 @@
this._latestCommitMessage = null;
}
const lineHeight = getComputedStyle(this).lineHeight;
- this._lineHeight = lineHeight.slice(0, lineHeight.length - 2);
+
+ // Slice returns a number as a string, convert to an int.
+ this._lineHeight =
+ parseInt(lineHeight.slice(0, lineHeight.length - 2), 10);
this._change = change;
if (!this._patchRange || !this._patchRange.patchNum ||
@@ -1122,9 +1136,9 @@
/**
- * @param {Object} revisions The revisions object keyed by revision hashes
- * @param {Object} patchSet A revision already fetched from {revisions}
- * @return {string} the SHA hash corresponding to the revision.
+ * @param {!Object} revisions The revisions object keyed by revision hashes
+ * @param {?Object} patchSet A revision already fetched from {revisions}
+ * @return {string|undefined} the SHA hash corresponding to the revision.
*/
_getPatchsetHash(revisions, patchSet) {
for (const rev in revisions) {
@@ -1304,7 +1318,9 @@
},
_cancelUpdateCheckTimer() {
- this.cancelAsync(this._updateCheckTimerHandle);
+ if (this._updateCheckTimerHandle) {
+ this.cancelAsync(this._updateCheckTimerHandle);
+ }
this._updateCheckTimerHandle = null;
},
diff --git a/polygerrit-ui/app/elements/change/gr-comment-list/gr-comment-list.js b/polygerrit-ui/app/elements/change/gr-comment-list/gr-comment-list.js
index 703f386..72f1bfe 100644
--- a/polygerrit-ui/app/elements/change/gr-comment-list/gr-comment-list.js
+++ b/polygerrit-ui/app/elements/change/gr-comment-list/gr-comment-list.js
@@ -32,6 +32,8 @@
patchNum: Number,
commentLinks: Object,
projectName: String,
+ /** @type {?} */
+ projectConfig: Object,
},
_computeFilesFromComments(comments) {
diff --git a/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.js b/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.js
index 6cb7a9b..eb0fa17 100644
--- a/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.js
+++ b/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.js
@@ -30,6 +30,10 @@
*/
properties: {
+ /**
+ * Weird API usage requires this to be String or Null. Add this so
+ * the closure compiler doesn't complain.
+ * @type {?string} */
base: String,
branch: String,
hasParent: Boolean,
@@ -62,7 +66,7 @@
this.fire('cancel', null, {bubbles: false});
},
- _handleRebaseOnOther(e) {
+ _handleRebaseOnOther() {
this.$.parentInput.focus();
},
@@ -73,15 +77,15 @@
* rebased on top of the target branch. Leaving out the base implies that it
* should be rebased on top of its current parent.
*/
- _handleRebaseOnTip(e) {
+ _handleRebaseOnTip() {
this.base = '';
},
- _handleRebaseOnParent(e) {
+ _handleRebaseOnParent() {
this.base = null;
},
- _handleEnterChangeNumberTap(e) {
+ _handleEnterChangeNumberTap() {
this.$.rebaseOnOtherInput.checked = true;
},
diff --git a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
index 66ba86f..41242f2 100644
--- a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
+++ b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
@@ -24,8 +24,10 @@
*/
properties: {
+ /** @type {{ revisions: Array }} */
change: Object,
patchNum: String,
+ /** @type {?} */
config: Object,
_schemes: {
@@ -82,28 +84,55 @@
return commands;
},
+ /**
+ * @param {!Object} change
+ * @param {number|string} patchNum
+ *
+ * @return {string}
+ */
_computeZipDownloadLink(change, patchNum) {
return this._computeDownloadLink(change, patchNum, true);
},
+ /**
+ * @param {!Object} change
+ * @param {number|string} patchNum
+ *
+ * @return {string}
+ */
_computeZipDownloadFilename(change, patchNum) {
return this._computeDownloadFilename(change, patchNum, true);
},
- _computeDownloadLink(change, patchNum, zip) {
+ /**
+ * @param {!Object} change
+ * @param {number|string} patchNum
+ * @param {boolean=} opt_zip
+ *
+ * @return {string} Not sure why there was a mismatch
+ */
+ _computeDownloadLink(change, patchNum, opt_zip) {
return this.changeBaseURL(change._number, patchNum) + '/patch?' +
- (zip ? 'zip' : 'download');
+ (opt_zip ? 'zip' : 'download');
},
- _computeDownloadFilename(change, patchNum, zip) {
- let shortRev;
+
+ /**
+ * @param {!Object} change
+ * @param {number|string} patchNum
+ * @param {boolean=} opt_zip
+ *
+ * @return {string}
+ */
+ _computeDownloadFilename(change, patchNum, opt_zip) {
+ let shortRev = '';
for (const rev in change.revisions) {
if (this.patchNumEquals(change.revisions[rev]._number, patchNum)) {
shortRev = rev.substr(0, 7);
break;
}
}
- return shortRev + '.diff.' + (zip ? 'zip' : 'base64');
+ return shortRev + '.diff.' + (opt_zip ? 'zip' : 'base64');
},
_computeArchiveDownloadLink(change, patchNum, format) {
diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
index 49c14e4..7164a16 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
+++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
@@ -35,6 +35,7 @@
is: 'gr-file-list',
properties: {
+ /** @type {?} */
patchRange: {
type: Object,
observer: '_updateSelected',
@@ -54,6 +55,7 @@
type: Object,
value() { return document.body; },
},
+ /** @type {?} */
change: Object,
diffViewMode: {
type: String,
@@ -80,6 +82,7 @@
notify: true,
observer: '_updateDiffPreferences',
},
+ /** @type {?} */
_userPrefs: Object,
_localPrefs: Object,
_showInlineDiffs: Boolean,
@@ -87,6 +90,7 @@
type: Number,
notify: true,
},
+ /** @type {?} */
_patchChange: {
type: Object,
computed: '_calculatePatchChange(_files)',
@@ -283,7 +287,7 @@
}
},
- _expandAllDiffs(e) {
+ _expandAllDiffs() {
this._showInlineDiffs = true;
// Find the list of paths that are in the file list, but not in the
@@ -300,7 +304,7 @@
this.splice(...['_expandedFilePaths', 0, 0].concat(newPaths));
},
- _collapseAllDiffs(e) {
+ _collapseAllDiffs() {
this._showInlineDiffs = false;
this._expandedFilePaths = [];
this.$.diffCursor.handleDiffUpdate();
@@ -330,6 +334,12 @@
});
},
+ /**
+ * @param {!Array} comments
+ * @param {number} patchNum
+ * @param {string} path
+ * @param {string=} opt_noun
+ */
_computeCountString(comments, patchNum, path, opt_noun) {
if (!comments) { return ''; }
@@ -345,8 +355,8 @@
* Computes a string counting the number of unresolved comment threads in a
* given file and path.
*
- * @param {Object} comments
- * @param {Object} drafts
+ * @param {!Object} comments
+ * @param {!Object} drafts
* @param {number} patchNum
* @param {string} path
* @return {string}
@@ -642,6 +652,9 @@
diff.patchRange.patchNum, this.patchRange.basePatchNum);
},
+ /**
+ * @param {number=} opt_index
+ */
_openSelectedFile(opt_index) {
if (opt_index != null) {
this.$.fileCursor.setCursorAtIndex(opt_index);
@@ -816,7 +829,7 @@
*
* Use side-by-side if there is no view mode or preferences.
*
- * @return {String}
+ * @return {string}
*/
_getDiffViewMode(diffViewMode, userPrefs) {
if (diffViewMode) {
@@ -858,7 +871,7 @@
* entries in the expanded list, then render each diff corresponding in
* order by waiting for the previous diff to finish before starting the next
* one.
- * @param {splice} record The splice record in the expanded paths list.
+ * @param {!Array} record The splice record in the expanded paths list.
*/
_expandedPathsChanged(record) {
if (!record) { return; }
@@ -890,9 +903,9 @@
* Given an array of paths and a NodeList of diff elements, render the diff
* for each path in order, awaiting the previous render to complete before
* continung.
- * @param {!Array<!String>} paths
- * @param {!NodeList<!GrDiffElement>} diffElements
- * @param {Number} initialCount The total number of paths in the pass. This
+ * @param {!Array<string>} paths
+ * @param {!NodeList<!Object>} diffElements (GrDiffElement)
+ * @param {number} initialCount The total number of paths in the pass. This
* is used to generate log messages.
* @return {!Promise}
*/
@@ -918,9 +931,9 @@
/**
* In the given NodeList of diff elements, find the diff for the given path.
- * @param {!String} path
- * @param {!NodeList<!GrDiffElement>} diffElements
- * @return {!GrDiffElement}
+ * @param {string} path
+ * @param {!NodeList<!Object>} diffElements (GrDiffElement)
+ * @return {!Object|undefined} (GrDiffElement)
*/
_findDiffByPath(path, diffElements) {
for (let i = 0; i < diffElements.length; i++) {
@@ -941,13 +954,13 @@
* Update the loading class for the file list rows. The update is inside a
* debouncer so that the file list doesn't flash gray when the API requests
* are reasonably fast.
- * @param {string} loading
+ * @param {boolean} loading
*/
_loadingChanged(loading) {
this.debounce('loading-change', () => {
// Only show set the loading if there have been files loaded to show. In
// this way, the gray loading style is not shown on initial loads.
- this.classList.toggle('loading', loading && this._files.length);
+ this.classList.toggle('loading', loading && !!this._files.length);
}, LOADING_DEBOUNCE_INTERVAL);
},
diff --git a/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js b/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js
index 29019de..d5506ad 100644
--- a/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js
+++ b/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js
@@ -17,6 +17,9 @@
Polymer({
is: 'gr-label-score-row',
properties: {
+ /**
+ * @type {{ name: string }}
+ */
label: Object,
labels: Object,
name: {
@@ -54,12 +57,12 @@
_computeBlankItems(permittedLabels, label, side) {
if (!permittedLabels || !permittedLabels[label]) { return []; }
const startPosition = this.labelValues[parseInt(
- permittedLabels[label][0])];
+ permittedLabels[label][0], 10)];
if (side === 'start') {
return new Array(startPosition);
}
const endPosition = this.labelValues[parseInt(
- permittedLabels[label][permittedLabels[label].length - 1])];
+ permittedLabels[label][permittedLabels[label].length - 1], 10)];
return new Array(Object.keys(this.labelValues).length - endPosition - 1);
},
diff --git a/polygerrit-ui/app/elements/change/gr-label-scores/gr-label-scores.js b/polygerrit-ui/app/elements/change/gr-label-scores/gr-label-scores.js
index 3b53a99..b3642a5 100644
--- a/polygerrit-ui/app/elements/change/gr-label-scores/gr-label-scores.js
+++ b/polygerrit-ui/app/elements/change/gr-label-scores/gr-label-scores.js
@@ -25,6 +25,7 @@
type: Object,
observer: '_computeColumns',
},
+ /** @type {?} */
change: Object,
_labelValues: Object,
},
diff --git a/polygerrit-ui/app/elements/change/gr-message/gr-message.js b/polygerrit-ui/app/elements/change/gr-message/gr-message.js
index e6a761a..5c49c1c 100644
--- a/polygerrit-ui/app/elements/change/gr-message/gr-message.js
+++ b/polygerrit-ui/app/elements/change/gr-message/gr-message.js
@@ -39,6 +39,7 @@
properties: {
changeNum: Number,
+ /** @type {?} */
message: Object,
author: {
type: Object,
@@ -79,6 +80,10 @@
observer: '_projectNameChanged',
},
_commentLinks: Object,
+ /**
+ * @type {{ commentlinks: Array }}
+ */
+ projectConfig: Object,
// Computed property needed to trigger Polymer value observing.
_expanded: {
type: Object,
diff --git a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
index df2a5ed..4ef0428 100644
--- a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
+++ b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
@@ -22,6 +22,7 @@
hasParent: {
type: Boolean,
notify: true,
+ value: false,
},
patchNum: String,
parentChange: Object,
@@ -39,6 +40,7 @@
computed: '_computeConnectedRevisions(change, patchNum, ' +
'_relatedResponse.changes)',
},
+ /** @type {?} */
_relatedResponse: {
type: Object,
value() { return {changes: []}; },
@@ -124,9 +126,9 @@
* Determines whether or not the given change has a parent change. If there
* is a relation chain, and the change id is not the last item of the
* relation chain, there is a parent.
- * @param {Number} currentChangeId
- * @param {Array} relatedChanges
- * @return {Boolean}
+ * @param {number} currentChangeId
+ * @param {!Array} relatedChanges
+ * @return {boolean}
*/
_calculateHasParent(currentChangeId, relatedChanges) {
return relatedChanges.length > 0 &&
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
index b743c7c..abac809 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
@@ -74,6 +74,9 @@
*/
properties: {
+ /**
+ * @type {{ _number: number, removable_reviewers: Array }}
+ */
change: Object,
patchNum: String,
canBeStarted: {
@@ -95,12 +98,14 @@
value: '',
},
diffDrafts: Object,
+ /** @type {!Function} */
filterReviewerSuggestion: {
type: Function,
value() {
return this._filterReviewerSuggestionGenerator(false);
},
},
+ /** @type {!Function} */
filterCCSuggestion: {
type: Function,
value() {
@@ -108,7 +113,13 @@
},
},
permittedLabels: Object,
+ /**
+ * @type {{ note_db_enabled: boolean }}
+ */
serverConfig: Object,
+ /**
+ * @type {{ commentlinks: Array }}
+ */
projectConfig: Object,
knownLatestState: String,
underReview: {
@@ -118,6 +129,7 @@
_account: Object,
_ccs: Array,
+ /** @type {?Object} */
_ccPendingConfirmation: {
type: Object,
observer: '_reviewerPendingConfirmationUpdated',
@@ -127,12 +139,14 @@
computed: '_computeMessagePlaceholder(canBeStarted)',
},
_owner: Object,
+ /** @type {?} */
_pendingConfirmationDetails: Object,
_includeComments: {
type: Boolean,
value: true,
},
_reviewers: Array,
+ /** @type {?Object} */
_reviewerPendingConfirmation: {
type: Object,
observer: '_reviewerPendingConfirmationUpdated',
@@ -296,8 +310,8 @@
* Resets the state of the _reviewersPendingRemove object, and removes
* accounts if necessary.
*
- * @param {Boolean} isCancel true if the action is a cancel.
- * @param {Object} opt_accountIdsTransferred map of account IDs that must
+ * @param {boolean} isCancel true if the action is a cancel.
+ * @param {Object=} opt_accountIdsTransferred map of account IDs that must
* not be removed, because they have been readded in another state.
*/
_purgeReviewersPendingRemove(isCancel, opt_accountIdsTransferred) {
@@ -322,8 +336,11 @@
* Removes an account from the change, both on the backend and the client.
* Does nothing if the account is a pending addition.
*
- * @param {Object} account
- * @param {ReviewerTypes} type
+ * @param {!Object} account
+ * @param {string} type
+ *
+ * * TODO(beckysiegel) submit Polymer PR
+ * @suppress {checkTypes}
*/
_removeAccount(account, type) {
if (account._pendingAdd) { return; }
@@ -605,8 +622,8 @@
* Generates a function to filter out reviewer/CC entries. When isCCs is
* truthy, the function filters out entries that already exist in this._ccs.
* When falsy, the function filters entries that exist in this._reviewers.
- * @param {Boolean} isCCs
- * @return {Function}
+ * @param {boolean} isCCs
+ * @return {!Function}
*/
_filterReviewerSuggestionGenerator(isCCs) {
return suggestion => {
diff --git a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js
index 2d740d5..e07437b 100644
--- a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js
+++ b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js
@@ -47,7 +47,7 @@
if (cfg && cfg.auth && cfg.auth.switch_account_url) {
this._switchAccountUrl = cfg.auth.switch_account_url;
} else {
- this._switchAccountUrl = null;
+ this._switchAccountUrl = '';
}
this._hasAvatars = !!(cfg && cfg.plugin && cfg.plugin.has_avatars);
});
diff --git a/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.js b/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.js
index 5fdbcfd..0a2b974 100644
--- a/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.js
+++ b/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.js
@@ -36,7 +36,9 @@
*/
knownAccountId: Number,
- _alertElement: Element,
+ /** @type {?Object} */
+ _alertElement: Object,
+ /** @type {?number} */
_hideAlertHandle: Number,
_refreshingCredentials: {
type: Boolean,
@@ -116,12 +118,18 @@
return this.$.restAPI.getLoggedIn();
},
+ /**
+ * @param {string} text
+ * @param {?string=} opt_actionText
+ * @param {?Function=} opt_actionCallback
+ * @param {?boolean=} opt_dismissOnNavigation
+ */
_showAlert(text, opt_actionText, opt_actionCallback,
- dismissOnNavigation) {
+ opt_dismissOnNavigation) {
if (this._alertElement) { return; }
this._clearHideAlertHandle();
- if (dismissOnNavigation) {
+ if (opt_dismissOnNavigation) {
// Persist alert until navigation.
this.listen(document, 'location-change', '_hideAlert');
} else {
diff --git a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.js b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.js
index b065000..c7a3815 100644
--- a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.js
+++ b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.js
@@ -72,6 +72,7 @@
notify: true,
},
+ /** @type {?Object} */
_account: Object,
_adminLinks: {
type: Array,
@@ -125,11 +126,12 @@
},
_handleLocationChange(e) {
- if (this.getBaseUrl()) {
+ const baseUrl = this.getBaseUrl();
+ if (baseUrl) {
// Strip the canonical path from the path since needing canonical in
// the path is uneeded and breaks the url.
- this._loginURL = this.getBaseUrl() + '/login/' + encodeURIComponent(
- '/' + window.location.pathname.substring(this.getBaseUrl().length) +
+ this._loginURL = baseUrl + '/login/' + encodeURIComponent(
+ '/' + window.location.pathname.substring(baseUrl.length) +
window.location.search +
window.location.hash);
} else {
diff --git a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.html b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.html
index 3083789..c61514c 100644
--- a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.html
+++ b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.html
@@ -85,6 +85,10 @@
*/
_upgradeUrl: uninitialized,
+ /**
+ * @param {number=} patchNum
+ * @param {number|string=} basePatchNum
+ */
_checkPatchRange(patchNum, basePatchNum) {
if (basePatchNum && !patchNum) {
throw new Error('Cannot use base patch number without patch number.');
@@ -195,7 +199,6 @@
* @param {number=} opt_patchNum
* @param {number|string=} opt_basePatchNum The string 'PARENT' can be
* used for none.
- * @return {string}
*/
navigateToChange(change, opt_patchNum, opt_basePatchNum) {
this._navigate(this.getUrlForChange(change, opt_patchNum,
@@ -203,8 +206,8 @@
},
/**
- * @param {!Object} change The change object.
- * @param {!string} path The file path.
+ * @param {{ _number: number, project: string }} change The change object.
+ * @param {string} path The file path.
* @param {number=} opt_patchNum
* @param {number|string=} opt_basePatchNum The string 'PARENT' can be
* used for none.
@@ -247,7 +250,7 @@
/**
* @param {!Object} change The change object.
- * @param {!string} path The file path.
+ * @param {string} path The file path.
* @param {number=} opt_patchNum
* @param {number|string=} opt_basePatchNum The string 'PARENT' can be
* used for none.
@@ -270,7 +273,7 @@
/**
* Navigate to an arbitrary relative URL.
- * @param {!string} relativeUrl
+ * @param {string} relativeUrl
*/
navigateToRelativeUrl(relativeUrl) {
if (!relativeUrl.startsWith('/')) {
diff --git a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.js b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.js
index d33ed23..ef39e1f 100644
--- a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.js
+++ b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api.js
@@ -20,9 +20,13 @@
is: 'gr-comment-api',
properties: {
+ /** @type {number} */
_changeNum: Number,
+ /** @type {!Object|undefined} */
_comments: Object,
+ /** @type {!Object|undefined} */
_drafts: Object,
+ /** @type {!Object|undefined} */
_robotComments: Object,
},
@@ -35,7 +39,7 @@
* number. The returned promise resolves when the comments have loaded, but
* does not yield the comment data.
*
- * @param {!number} changeNum
+ * @param {number} changeNum
* @return {!Promise}
*/
loadAll(changeNum) {
@@ -91,7 +95,7 @@
* @param {!string} path
* @param {!Object} patchRange The patch-range object containing patchNum
* and basePatchNum properties to represent the range.
- * @param {Object} opt_projectConfig Optional project config object to
+ * @param {Object=} opt_projectConfig Optional project config object to
* include in the meta sub-object.
* @return {Object}
*/
@@ -160,7 +164,7 @@
* Whether the given comment should be included in the given patch range.
* @param {!Object} comment
* @param {!Object} range
- * @return {boolean}
+ * @return {boolean|undefined}
*/
_isInPatchRange(comment, range) {
return this._isInBaseOfPatchRange(comment, range) ||
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html
index 22e5080..f11b573 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html
@@ -393,7 +393,7 @@
},
/**
- * @return {Boolean} whether any of the lines in _groups are longer
+ * @return {boolean} whether any of the lines in _groups are longer
* than SYNTAX_MAX_LINE_LENGTH.
*/
_anyLineTooLong() {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js
index a9438bb7..40fcf0d 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js
@@ -153,12 +153,12 @@
/**
* Find line elements or line objects by a range of line numbers and a side.
*
- * @param {Number} start The first line number
- * @param {Number} end The last line number
- * @param {String} opt_side The side of the range. Either 'left' or 'right'.
- * @param {Array<GrDiffLine>} out_lines The output list of line objects. Use
+ * @param {number} start The first line number
+ * @param {number} end The last line number
+ * @param {string} opt_side The side of the range. Either 'left' or 'right'.
+ * @param {!Array<GrDiffLine>} out_lines The output list of line objects. Use
* null if not desired.
- * @param {Array<HTMLElement>} out_elements The output list of line elements.
+ * @param {!Array<HTMLElement>} out_elements The output list of line elements.
* Use null if not desired.
*/
GrDiffBuilder.prototype.findLinesByRange = function(start, end, opt_side,
@@ -443,7 +443,7 @@
/**
* Returns the text length after normalizing unicode and tabs.
- * @return {Number} The normalized length of the text.
+ * @return {number} The normalized length of the text.
*/
GrDiffBuilder.prototype._textLength = function(text, tabSize) {
text = text.replace(REGEX_ASTRAL_SYMBOL, '_');
@@ -536,9 +536,9 @@
* elements in place of tab characters. In each case tab elements are given
* the width needed to reach the next tab-stop.
*
- * @param {String} A line of text potentially containing tab characters.
- * @param {Number} The width for tabs.
- * @return {String} An HTML string potentially containing tab elements.
+ * @param {string} A line of text potentially containing tab characters.
+ * @param {number} The width for tabs.
+ * @return {string} An HTML string potentially containing tab elements.
*/
GrDiffBuilder.prototype._addTabWrappers = function(line, tabSize) {
if (!line.length) { return ''; }
@@ -600,7 +600,7 @@
* Finds the next DIV.contentText element following the given element, and on
* the same side. Will only search within a group.
* @param {HTMLElement} content
- * @param {String} side Either 'left' or 'right'
+ * @param {string} side Either 'left' or 'right'
* @return {HTMLElement}
*/
GrDiffBuilder.prototype._getNextContentOnSide = function(content, side) {
@@ -610,8 +610,8 @@
/**
* Determines whether the given group is either totally an addition or totally
* a removal.
- * @param {GrDiffGroup} group
- * @return {Boolean}
+ * @param {!Object} group (GrDiffGroup)
+ * @return {boolean}
*/
GrDiffBuilder.prototype._isTotal = function(group) {
return group.type === GrDiffGroup.Type.DELTA &&
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.js b/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.js
index d8dccad..e9ab3d6 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.js
@@ -213,6 +213,9 @@
return !!comment.__draft;
},
+ /**
+ * @param {boolean=} opt_quote
+ */
_processCommentReply(opt_quote) {
const comment = this._lastComment;
let quoteStr;
@@ -273,6 +276,10 @@
return d;
},
+ /**
+ * @param {number=} opt_lineNum
+ * @param {!Object=} opt_range
+ */
_newDraft(opt_lineNum, opt_range) {
const d = {
__draft: true,
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
index dcba80d..4f0ebcc 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
@@ -53,6 +53,7 @@
properties: {
changeNum: String,
+ /** @type {?} */
comment: {
type: Object,
notify: true,
@@ -88,6 +89,7 @@
value: true,
observer: '_toggleCollapseClass',
},
+ /** @type {?} */
projectConfig: Object,
robotButtonDisabled: Boolean,
_isAdmin: {
@@ -215,6 +217,11 @@
}
},
+ /**
+ * @param {!Object=} opt_mixin
+ *
+ * @return {!Object}
+ */
_getEventPayload(opt_mixin) {
return Object.assign({}, opt_mixin, {
comment: this.comment,
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js
index e47db8f..b14ea7f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js
@@ -43,6 +43,7 @@
type: String,
value: DiffSides.RIGHT,
},
+ /** @type {!HTMLElement|undefined} */
diffRow: {
type: Object,
notify: true,
@@ -61,6 +62,8 @@
* If set, the cursor will attempt to move to the line number (instead of
* the first chunk) the next time the diff renders. It is set back to null
* when used.
+ *
+ * @type (?number)
*/
initialLineNumber: {
type: Number,
@@ -147,6 +150,11 @@
this._fixSide();
},
+ /**
+ * @param {number} number
+ * @param {string} side
+ * @param {string=} opt_path
+ */
moveToLineNumber(number, side, opt_path) {
const row = this._findRowByNumberAndFile(number, side, opt_path);
if (row) {
@@ -157,7 +165,7 @@
/**
* Get the line number element targeted by the cursor row and side.
- * @return {DOMElement}
+ * @return {?Element|undefined}
*/
getTargetLineElement() {
let lineElSelector = '.lineNum';
@@ -221,7 +229,7 @@
* Get a short address for the location of the cursor. Such as '123' for
* line 123 of the revision, or 'b321' for line 321 of the base patch.
* Returns an empty string if an address is not available.
- * @return {String}
+ * @return {string}
*/
getAddress() {
if (!this.diffRow) { return ''; }
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.js b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.js
index 9afbf2b..e18f6ca 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.js
@@ -28,8 +28,8 @@
/**
* The DOM API textContent.length calculation is broken when the text
* contains Unicode. See https://mathiasbynens.be/notes/javascript-unicode .
- * @param {Text} A text node.
- * @return {Number} The length of the text.
+ * @param {!Text} node text node.
+ * @return {number} The length of the text.
*/
getLength(node) {
return this.getStringLength(node.textContent);
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.js b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.js
index 3288608..2490509 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.js
@@ -20,6 +20,11 @@
properties: {
comments: Object,
loggedIn: Boolean,
+ /**
+ * querySelector can return null, so needs to be nullable.
+ *
+ * @type {?HTMLElement}
+ * */
_cachedDiffBuilder: Object,
isAttached: Boolean,
},
@@ -99,7 +104,7 @@
* Merges multiple ranges, accounts for triple click, accounts for
* syntax highligh, convert native DOM Range objects to Gerrit concepts
* (line, side, etc).
- * @return {{
+ * @return {({
* start: {
* node: Node,
* side: string,
@@ -112,7 +117,7 @@
* line: Number,
* column: Number
* }
- * }}
+ * })|null|!Object}
*/
_getNormalizedRange() {
const selection = window.getSelection();
@@ -134,6 +139,7 @@
/**
* Normalize a specific DOM Range.
+ * @return {!Object} fixed normalized range
*/
_normalizeRange(domRange) {
const range = GrRangeNormalizer.normalize(domRange);
@@ -195,12 +201,12 @@
*
* @param {Node} node td.content child
* @param {number} offset offset within node
- * @return {{
+ * @return {({
* node: Node,
* side: string,
* line: Number,
* column: Number
- * }}
+ * }|undefined)}
*/
_normalizeSelectionSide(node, offset) {
let column;
@@ -251,6 +257,7 @@
return;
}
const domRange = window.getSelection().getRangeAt(0);
+ /** @type {?} */
const start = normalizedRange.start;
if (!start) {
return;
@@ -280,7 +287,9 @@
if (start.line === end.line) {
actionBox.placeAbove(domRange);
} else if (start.node instanceof Text) {
- actionBox.placeAbove(start.node.splitText(start.column));
+ if (start.column) {
+ actionBox.placeAbove(start.node.splitText(start.column));
+ }
start.node.parentElement.normalize(); // Undo splitText from above.
} else if (start.node.classList.contains('content') &&
start.node.firstChild) {
@@ -325,7 +334,7 @@
* Traverse Element from right to left, call callback for each node.
* Stops if callback returns true.
*
- * @param {!Node} startNode
+ * @param {!Element} startNode
* @param {function(Node):boolean} callback
* @param {Object=} opt_flags If flags.left is true, traverse left.
*/
@@ -350,7 +359,7 @@
* Get length of a node. If the node is a content node, then only give the
* length of its .contentText child.
*
- * @param {!Node} node
+ * @param {?Element} node this is sometimes passed as null.
* @return {number}
*/
_getLength(node) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-range-normalizer.js b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-range-normalizer.js
index 0b0131e..1ea5037 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-range-normalizer.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-range-normalizer.js
@@ -27,8 +27,8 @@
* highlighting, the containers are remapped to the .contentText divs that
* contain the entire line of code.
*
- * @param {Object} range - the standard DOM selector range.
- * @return {Object} A modified version of the range that correctly accounts
+ * @param {!Object} range - the standard DOM selector range.
+ * @return {!Object} A modified version of the range that correctly accounts
* for syntax highlighting.
*/
normalize(range) {
@@ -94,8 +94,8 @@
/**
* The DOM API textContent.length calculation is broken when the text
* contains Unicode. See https://mathiasbynens.be/notes/javascript-unicode .
- * @param {Text} A text node.
- * @return {Number} The length of the text.
+ * @param {text} node A text node.
+ * @return {number} The length of the text.
*/
_getLength(node) {
return node.textContent.replace(REGEX_ASTRAL_SYMBOL, '_').length;
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js b/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js
index 20833d0..f5944c3 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js
@@ -32,6 +32,7 @@
reflectToAttribute: true,
},
+ /** @type {?} */
_newPrefs: Object,
_newLocalPrefs: Object,
},
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.js b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.js
index 07b8429..bca6bea 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.js
@@ -77,6 +77,7 @@
value: 64,
},
+ /** @type {number|undefined} */
_nextStepHandle: Number,
_isScrolling: Boolean,
},
@@ -225,14 +226,14 @@
/**
* Take rows of a shared diff section and produce an array of corresponding
* (potentially collapsed) groups.
- * @param {Array<String>} rows
- * @param {Number} context
- * @param {Number} startLineNumLeft
- * @param {Number} startLineNumRight
- * @param {String} opt_sectionEnd String representing whether this is the
+ * @param {!Array<string>} rows
+ * @param {number} context
+ * @param {number} startLineNumLeft
+ * @param {number} startLineNumRight
+ * @param {?string=} opt_sectionEnd String representing whether this is the
* first section or the last section or neither. Use the values 'first',
* 'last' and null respectively.
- * @return {Array<GrDiffGroup>}
+ * @return {!Array<!Object>} Array of GrDiffGroup
*/
_sharedGroupsFromRows(rows, context, startLineNumLeft,
startLineNumRight, opt_sectionEnd) {
@@ -288,11 +289,11 @@
/**
* Take the rows of a delta diff section and produce the corresponding
* group.
- * @param {Array<String>} rowsAdded
- * @param {Array<String>} rowsRemoved
- * @param {Number} startLineNumLeft
- * @param {Number} startLineNumRight
- * @return {GrDiffGroup}
+ * @param {!Array<string>} rowsAdded
+ * @param {!Array<string>} rowsRemoved
+ * @param {number} startLineNumLeft
+ * @param {number} startLineNumRight
+ * @return {!Object} (Gr-Diff-Group)
*/
_deltaGroupFromRows(rowsAdded, rowsRemoved, startLineNumLeft,
startLineNumRight, highlights) {
@@ -309,7 +310,7 @@
},
/**
- * @return {Array<GrDiffLine>}
+ * @return {!Array<!Object>} Array of GrDiffLines
*/
_deltaLinesFromRows(lineType, rows, startLineNum,
opt_highlights) {
@@ -348,8 +349,8 @@
* In order to show comments out of the bounds of the selected context,
* treat them as separate chunks within the model so that the content (and
* context surrounding it) renders correctly.
- * @param {Object} content The diff content object.
- * @return {Object} A new diff content object with regions split up.
+ * @param {?} content The diff content object. (has to be iterable)
+ * @return {!Object} A new diff content object with regions split up.
*/
_splitCommonGroupsWithComments(content) {
const result = [];
@@ -492,7 +493,7 @@
* If a group is an addition or a removal, break it down into smaller groups
* of that type using the MAX_GROUP_SIZE. If the group is a shared section
* or a delta it is returned as the single element of the result array.
- * @param {!Object} A raw chunk from a diff response.
+ * @param {!Object} group A raw chunk from a diff response.
* @return {!Array<!Array<!Object>>}
*/
_breakdownGroup(group) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.js b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.js
index ecddba2..3280b68 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.js
@@ -31,6 +31,7 @@
properties: {
diff: Object,
+ /** @type {?Object} */
_cachedDiffBuilder: Object,
_linesCache: {
type: Object,
@@ -144,14 +145,14 @@
* true, it returns only the text of comments within the selection.
* Otherwise it returns the text of the selected diff region.
*
- * @param {!string} The side that is selected.
- * @param {boolean} Whether or not a comment is selected.
+ * @param {!string} side The side that is selected.
+ * @param {boolean} commentSelected Whether or not a comment is selected.
* @return {string} The selected text.
*/
_getSelectedText(side, commentSelected) {
const sel = window.getSelection();
if (sel.rangeCount != 1) {
- return; // No multi-select support yet.
+ return ''; // No multi-select support yet.
}
if (commentSelected) {
return this._getCommentLines(sel, side);
@@ -170,10 +171,10 @@
/**
* Query the diff object for the selected lines.
*
- * @param {int} startLineNum
- * @param {int} startOffset
- * @param {int} endLineNum
- * @param {int} endOffset
+ * @param {number} startLineNum
+ * @param {number} startOffset
+ * @param {number} endLineNum
+ * @param {number} endOffset
* @param {!string} side The side that is currently selected.
* @return {string} The selected diff text.
*/
@@ -192,7 +193,7 @@
* Query the diff object for the lines from a particular side.
*
* @param {!string} side The side that is currently selected.
- * @return {Array.string} An array of strings indexed by line number.
+ * @return {!Array<string>} An array of strings indexed by line number.
*/
_getDiffLines(side) {
if (this._linesCache[side]) {
@@ -254,9 +255,9 @@
* of the text content within that selection.
* Using a domNode that isn't in the selection returns an empty string.
*
- * @param {Element} domNode The root DOM node.
- * @param {Selection} sel The selection.
- * @param {Range} range The normalized selection range.
+ * @param {!Node} domNode The root DOM node.
+ * @param {!Selection} sel The selection.
+ * @param {!Range} range The normalized selection range.
* @return {string} The text within the selection.
*/
_getTextContentForRange(domNode, sel, range) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
index c12f700..5ec81e5 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
@@ -55,6 +55,9 @@
type: Object,
value() { return document.body; },
},
+ /**
+ * @type {{ diffMode: (string|undefined) }}
+ */
changeViewState: {
type: Object,
notify: true,
@@ -63,6 +66,13 @@
},
_patchRange: Object,
+ /**
+ * @type {{
+ * subject: string,
+ * project: string,
+ * revisions: string,
+ * }}
+ */
_change: Object,
_changeNum: String,
_diff: Object,
@@ -400,7 +410,7 @@
/**
* @param {?string} path The path of the current file being shown.
- * @param {Array.<string>} fileList The list of files in this change and
+ * @param {!Array<string>} fileList The list of files in this change and
* patch range.
* @param {number} direction Either 1 (next file) or -1 (prev file).
* @param {(number|boolean)} opt_noUp Whether to return to the change view
@@ -433,12 +443,12 @@
* * null - When no navigation is possible for the given direction.
*
* @param {?string} path The path of the current file being shown.
- * @param {Array.<string>} fileList The list of files in this change and
+ * @param {!Array<string>} fileList The list of files in this change and
* patch range.
* @param {number} direction Either 1 (next file) or -1 (prev file).
- * @param {(number|boolean)} opt_noUp Whether to return to the change view
+ * @param {?number|boolean=} opt_noUp Whether to return to the change view
* when advancing the file goes outside the bounds of fileList.
- * @return {Object}
+ * @return {?Object}
*/
_getNavLinkPath(path, fileList, direction, opt_noUp) {
if (!path || fileList.length === 0) { return null; }
@@ -589,6 +599,10 @@
* When the latest patch of the change is selected (and there is no base
* patch) then the patch range need not appear in the URL. Return a patch
* range object with undefined values when a range is not needed.
+ *
+ * @param {!Object} patchRange
+ * @param {!Object} revisions
+ * @return {!Object}
*/
_getChangeUrlRange(patchRange, revisions) {
let patchNum = undefined;
@@ -702,7 +716,7 @@
*
* Use side-by-side if the user is not logged in.
*
- * @return {String}
+ * @return {string}
*/
_getDiffViewMode() {
if (this.changeViewState.diffMode) {
@@ -721,7 +735,7 @@
_onLineSelected(e, detail) {
this.$.cursor.moveToLineNumber(detail.number, detail.side);
- history.replaceState(null, null, '#' + this.$.cursor.getAddress());
+ history.replaceState(null, '', '#' + this.$.cursor.getAddress());
},
_computeDownloadLink(changeNum, patchRange, path) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
index 728a766..0f30171 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -106,7 +106,9 @@
type: String,
value: '',
},
+ /** @type {?Object} */
_baseImage: Object,
+ /** @type {?Object} */
_revisionImage: Object,
/**
@@ -114,6 +116,8 @@
* been bypassed. If the value is null, then the safety has not been
* bypassed. If the value is a number, then that number represents the
* context preference to use when rendering the bypassed diff.
+ *
+ * @type (number|null)
*/
_safetyBypass: {
type: Number,
@@ -147,6 +151,7 @@
}
},
+ /** @return {!Promise} */
reload() {
this.$.diffBuilder.cancel();
this._safetyBypass = null;
@@ -168,6 +173,7 @@
});
},
+ /** @return {!Array<!HTMLElement>} */
getCursorStops() {
if (this.hidden && this.noAutoRender) {
return [];
@@ -176,6 +182,7 @@
return Polymer.dom(this.root).querySelectorAll('.diff-row');
},
+ /** @return {boolean} */
isRangeSelected() {
return this.$.highlights.isRangeSelected();
},
@@ -184,15 +191,18 @@
this.toggleClass('no-left');
},
+ /** @return {boolean}} */
_canRender() {
- return this.changeNum && this.patchRange && this.path &&
+ return !!this.changeNum && !!this.patchRange && !!this.path &&
!this.noAutoRender;
},
+ /** @return {!Array<!HTMLElement>} */
_getCommentThreads() {
return Polymer.dom(this.root).querySelectorAll('gr-diff-comment-thread');
},
+ /** @return {string} */
_computeContainerClass(loggedIn, viewMode, displayLine) {
const classes = ['diffContainer'];
switch (viewMode) {
@@ -263,7 +273,7 @@
const side = e.detail.side;
const lineNum = range.endLine;
const lineEl = this.$.diffBuilder.getLineElByNumber(lineNum, side);
- this._isValidElForComment(el).then(valid => {
+ this._isValidElForComment(lineEl).then(valid => {
if (!valid) { return; }
this._createComment(lineEl, lineNum, side, range);
@@ -288,6 +298,12 @@
});
},
+ /**
+ * @param {!Object} lineEl
+ * @param {number=} opt_lineNum
+ * @param {string=} opt_side
+ * @param {!Object=} opt_range
+ */
_createComment(lineEl, opt_lineNum, opt_side, opt_range) {
const contentText = this.$.diffBuilder.getContentByLineEl(lineEl);
const contentEl = contentText.parentElement;
@@ -309,14 +325,21 @@
return contentEl.querySelector('gr-diff-comment-thread-group');
},
+ /**
+ * @param {!Object} contentEl
+ * @param {number} patchNum
+ * @param {string} commentSide
+ * @param {boolean} isOnParent
+ * @param {!Object=} opt_range
+ */
_getOrCreateThreadAtLineRange(contentEl, patchNum, commentSide,
- isOnParent, range) {
- const rangeToCheck = range ?
+ isOnParent, opt_range) {
+ const rangeToCheck = opt_range ?
'range-' +
- range.startLine + '-' +
- range.startChar + '-' +
- range.endLine + '-' +
- range.endChar + '-' +
+ opt_range.startLine + '-' +
+ opt_range.startChar + '-' +
+ opt_range.endLine + '-' +
+ opt_range.endChar + '-' +
commentSide : 'line-' + commentSide;
// Check if thread group exists.
@@ -338,6 +361,7 @@
return threadEl;
},
+ /** @return {number} */
_getPatchNumByLineAndContent(lineEl, contentEl) {
let patchNum = this.patchRange.patchNum;
if ((lineEl.classList.contains(DiffSide.LEFT) ||
@@ -348,6 +372,7 @@
return patchNum;
},
+ /** @return {boolean} */
_getIsParentCommentByLineAndContent(lineEl, contentEl) {
let isOnParent = false;
if ((lineEl.classList.contains(DiffSide.LEFT) ||
@@ -358,6 +383,7 @@
return isOnParent;
},
+ /** @return {string} */
_getCommentSideByLineAndContent(lineEl, contentEl) {
let side = 'right';
if (lineEl.classList.contains(DiffSide.LEFT) ||
@@ -374,7 +400,7 @@
_handleCommentDiscard(e) {
const comment = e.detail.comment;
- this._removeComment(comment, e.detail.patchNum);
+ this._removeComment(comment);
},
_removeComment(comment) {
@@ -389,6 +415,12 @@
this.set(['comments', side, idx], comment);
},
+ /**
+ * Closure annotation for Polymer.prototype.push is off. Submitted PR:
+ * https://github.com/Polymer/polymer/pull/4776
+ * but for not supressing annotations.
+ *
+ * @suppress {checkTypes} */
_handleCommentUpdate(e) {
const comment = e.detail.comment;
const side = e.detail.comment.__commentSide;
@@ -413,6 +445,7 @@
}
},
+ /** @return {number} */
_findCommentIndex(comment, side) {
if (!comment.id || !this.comments[side]) {
return -1;
@@ -422,6 +455,7 @@
});
},
+ /** @return {number} */
_findDraftIndex(comment, side) {
if (!comment.__draftID || !this.comments[side]) {
return -1;
@@ -517,6 +551,7 @@
this.fire('page-error', {response});
},
+ /** @return {!Promise<!Object>} */
_getDiff() {
return this.$.restAPI.getDiff(
this.changeNum,
@@ -532,10 +567,12 @@
});
},
+ /** @return {!Promise} */
_getLoggedIn() {
return this.$.restAPI.getLoggedIn();
},
+ /** @return {boolean} */
_computeIsImageDiff() {
if (!this._diff) { return false; }
@@ -547,6 +584,7 @@
return this._diff.binary && (isA || isB);
},
+ /** @return {!Promise} */
_loadDiffAssets() {
if (this.isImageDiff) {
return this._getImages().then(images => {
@@ -560,6 +598,7 @@
}
},
+ /** @return {!Promise} */
_getImages() {
return this.$.restAPI.getImagesForDiff(this.changeNum, this._diff,
this.patchRange);
@@ -572,6 +611,7 @@
}
},
+ /** @return {!Array} */
_computeDiffHeaderItems(diffInfoRecord) {
const diffInfo = diffInfoRecord.base;
if (!diffInfo || !diffInfo.diff_header || diffInfo.binary) { return []; }
@@ -583,6 +623,7 @@
});
},
+ /** @return {boolean} */
_computeDiffHeaderHidden(items) {
return items.length === 0;
},
@@ -591,7 +632,7 @@
* The number of lines in the diff. For delta chunks that are different
* sizes on the left and the right, the longer side is used.
* @param {!Object} diff
- * @return {Number}
+ * @return {number}
*/
_diffLength(diff) {
return diff.content.reduce((sum, sec) => {
@@ -616,6 +657,7 @@
this._renderDiffTable();
},
+ /** @return {string} */
_computeWarningClass(showWarning) {
return showWarning ? 'warn' : '';
},
diff --git a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js
index 9a4000f..d6052de 100644
--- a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js
+++ b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js
@@ -23,6 +23,7 @@
properties: {
availablePatches: Array,
changeNum: String,
+ /** @type {{ meta_a: !Array, meta_b: !Array}} */
filesWeblinks: Object,
path: String,
patchRange: {
diff --git a/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js b/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js
index aa55414..3de18be 100644
--- a/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js
+++ b/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js
@@ -43,9 +43,9 @@
/**
* Layer method to add annotations to a line.
- * @param {HTMLElement} el The DIV.contentText element to apply the
+ * @param {!HTMLElement} el The DIV.contentText element to apply the
* annotation to.
- * @param {GrDiffLine} line The line object.
+ * @param {!Object} line The line object. (GrDiffLine)
*/
annotate(el, line) {
let ranges = [];
@@ -79,9 +79,9 @@
/**
* Notify Layer listeners of changes to annotations.
- * @param {Number} start The line where the update starts.
- * @param {Number} end The line where the update ends.
- * @param {String} side The side of the update. ('left' or 'right')
+ * @param {number} start The line where the update starts.
+ * @param {number} end The line where the update ends.
+ * @param {string} side The side of the update. ('left' or 'right')
*/
_notifyUpdateRange(start, end, side) {
for (const listener of this._listeners) {
@@ -133,8 +133,9 @@
* Take a list of comments and return a sparse list mapping line numbers to
* partial ranges. Uses an end-character-index of -1 to indicate the end of
* the line.
- * @param {Array<Object>} commentList The list of comments.
- * @return {Object} The sparse list.
+ * @param {?} commentList The list of comments.
+ * Getting this param to match closure requirements caused problems.
+ * @return {!Object} The sparse list.
*/
_computeCommentMap(commentList) {
const result = {};
diff --git a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.js b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.js
index 2c1167c..91e6287 100644
--- a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.js
+++ b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.js
@@ -114,6 +114,7 @@
type: Array,
value() { return []; },
},
+ /** @type {?number} */
_processHandle: Number,
_hljs: Object,
},
@@ -126,7 +127,7 @@
* Annotation layer method to add syntax annotations to the given element
* for the given line.
* @param {!HTMLElement} el
- * @param {!GrDiffLine} line
+ * @param {!Object} line (GrDiffLine)
*/
annotate(el, line) {
if (!this.enabled) { return; }
diff --git a/polygerrit-ui/app/elements/gr-app.js b/polygerrit-ui/app/elements/gr-app.js
index ba168e4..84aa438 100644
--- a/polygerrit-ui/app/elements/gr-app.js
+++ b/polygerrit-ui/app/elements/gr-app.js
@@ -31,6 +31,9 @@
*/
properties: {
+ /**
+ * @type {{ query: string, view: string }}
+ */
params: Object,
keyEventTarget: {
type: Object,
@@ -41,6 +44,9 @@
type: Object,
observer: '_accountChanged',
},
+ /**
+ * @type {{ plugin: Object }}
+ */
_serverConfig: Object,
_version: String,
_showChangeListView: Boolean,
@@ -50,7 +56,9 @@
_showSettingsView: Boolean,
_showAdminView: Boolean,
_showCLAView: Boolean,
+ /** @type {?} */
_viewState: Object,
+ /** @type {?} */
_lastError: Object,
_lastSearchPage: String,
_path: String,
diff --git a/polygerrit-ui/app/elements/plugins/gr-plugin-host/gr-plugin-host.js b/polygerrit-ui/app/elements/plugins/gr-plugin-host/gr-plugin-host.js
index 03b6d56..db6651c 100644
--- a/polygerrit-ui/app/elements/plugins/gr-plugin-host/gr-plugin-host.js
+++ b/polygerrit-ui/app/elements/plugins/gr-plugin-host/gr-plugin-host.js
@@ -41,6 +41,12 @@
this._importHtmlPlugins(htmlPlugins);
},
+ /**
+ * @suppress {checkTypes}
+ * States that it expects no more than 3 parameters, but that's not true.
+ * @todo (beckysiegel) check Polymer annotations and submit change.
+ */
+
_importHtmlPlugins(plugins) {
for (const url of plugins) {
this.importHref(
diff --git a/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info.js b/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info.js
index 010b136..5d7f8a6 100644
--- a/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info.js
+++ b/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info.js
@@ -51,6 +51,7 @@
type: Boolean,
value: false,
},
+ /** @type {?} */
_account: Object,
_serverConfig: Object,
},
diff --git a/polygerrit-ui/app/elements/settings/gr-email-editor/gr-email-editor.js b/polygerrit-ui/app/elements/settings/gr-email-editor/gr-email-editor.js
index 8490c1e..c8d3319 100644
--- a/polygerrit-ui/app/elements/settings/gr-email-editor/gr-email-editor.js
+++ b/polygerrit-ui/app/elements/settings/gr-email-editor/gr-email-editor.js
@@ -29,6 +29,7 @@
type: Array,
value() { return []; },
},
+ /** @type {?string} */
_newPreferred: {
type: String,
value: null,
@@ -61,7 +62,7 @@
},
_handleDeleteButton(e) {
- const index = parseInt(e.target.getAttribute('data-index'));
+ const index = parseInt(e.target.getAttribute('data-index'), 10);
const email = this._emails[index];
this.push('_emailsToRemove', email);
this.splice('_emails', index, 1);
diff --git a/polygerrit-ui/app/elements/settings/gr-http-password/gr-http-password.js b/polygerrit-ui/app/elements/settings/gr-http-password/gr-http-password.js
index d9c19e2..3dc92d1 100644
--- a/polygerrit-ui/app/elements/settings/gr-http-password/gr-http-password.js
+++ b/polygerrit-ui/app/elements/settings/gr-http-password/gr-http-password.js
@@ -50,7 +50,7 @@
},
_generatedPasswordOverlayClosed() {
- this._generatedPassword = null;
+ this._generatedPassword = '';
},
});
})();
diff --git a/polygerrit-ui/app/elements/settings/gr-registration-dialog/gr-registration-dialog.js b/polygerrit-ui/app/elements/settings/gr-registration-dialog/gr-registration-dialog.js
index 319143a..71d80eb 100644
--- a/polygerrit-ui/app/elements/settings/gr-registration-dialog/gr-registration-dialog.js
+++ b/polygerrit-ui/app/elements/settings/gr-registration-dialog/gr-registration-dialog.js
@@ -30,6 +30,7 @@
*/
properties: {
+ /** @type {?} */
_account: Object,
_saving: Boolean,
},
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js
index c20cf82..5c56826 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js
@@ -56,8 +56,10 @@
},
_accountNameMutable: Boolean,
_accountInfoChanged: Boolean,
+ /** @type {?} */
_diffPrefs: Object,
_changeTableColumnsNotDisplayed: Array,
+ /** @type {?} */
_localPrefs: {
type: Object,
value() { return {}; },
@@ -107,8 +109,11 @@
type: String,
value: null,
},
+ /** @type {?} */
_serverConfig: Object,
+ /** @type {?string} */
_docsBaseUrl: String,
+ _emailsChanged: Boolean,
/**
* For testing purposes.
diff --git a/polygerrit-ui/app/elements/settings/gr-ssh-editor/gr-ssh-editor.js b/polygerrit-ui/app/elements/settings/gr-ssh-editor/gr-ssh-editor.js
index d9f02d5..d5067aa 100644
--- a/polygerrit-ui/app/elements/settings/gr-ssh-editor/gr-ssh-editor.js
+++ b/polygerrit-ui/app/elements/settings/gr-ssh-editor/gr-ssh-editor.js
@@ -24,6 +24,7 @@
notify: true,
},
_keys: Array,
+ /** @type {?} */
_keyToView: Object,
_newKey: {
type: String,
diff --git a/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.js b/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.js
index 0071e15..0346b9b 100644
--- a/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.js
+++ b/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.js
@@ -18,6 +18,9 @@
is: 'gr-account-label',
properties: {
+ /**
+ * @type {{ name: string, status: string }}
+ */
account: Object,
avatarImageSize: {
type: Number,
diff --git a/polygerrit-ui/app/elements/shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown.js b/polygerrit-ui/app/elements/shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown.js
index 68800a1..12fb074 100644
--- a/polygerrit-ui/app/elements/shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown.js
+++ b/polygerrit-ui/app/elements/shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown.js
@@ -102,13 +102,13 @@
}
},
- cursorDown(e) {
+ cursorDown() {
if (!this.hidden) {
this.$.cursor.next();
}
},
- cursorUp(e) {
+ cursorUp() {
if (!this.hidden) {
this.$.cursor.previous();
}
diff --git a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js
index 65ab22a..c3031e2 100644
--- a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js
+++ b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js
@@ -48,7 +48,7 @@
* suggestion entry. The "value" property will be emitted if that
* suggestion is selected.
*
- * @type {function(String): Promise<Array<Object>>}
+ * @type {function(string): Promise<?>}
*/
query: {
type: Function,
@@ -95,7 +95,7 @@
value: false,
},
- value: Object,
+ value: String,
/**
* Multi mode appends autocompleted entries to the value.
@@ -115,6 +115,7 @@
value: false,
},
+ /** @type {?} */
_suggestions: {
type: Array,
value() { return []; },
@@ -170,7 +171,7 @@
/**
* Set the text of the input without triggering the suggestion dropdown.
- * @param {String} text The new text for the input.
+ * @param {string} text The new text for the input.
*/
setText(text) {
this._disableSuggestions = true;
@@ -270,6 +271,9 @@
}
},
+ /**
+ * @param {boolean=} opt_tabComplete
+ */
_handleInputCommit(opt_tabComplete) {
this._selected = this.$.suggestions.getCursorTarget();
this._commit(opt_tabComplete);
@@ -308,11 +312,11 @@
/**
* Commits the suggestion, optionally firing the commit event.
*
- * @param {Boolean} silent Allows for silent committing of an autocomplete
- * suggestion in order to handle cases like tab-to-complete without
- * firing the commit event.
+ * @param {boolean=} opt_silent Allows for silent committing of an
+ * autocomplete suggestion in order to handle cases like tab-to-complete
+ * without firing the commit event.
*/
- _commit(silent) {
+ _commit(opt_silent) {
// Allow values that are not in suggestion list iff suggestions are empty.
if (this._suggestions.length > 0) {
this._updateValue(this._selected, this._suggestions);
@@ -334,7 +338,7 @@
}
this._suggestions = [];
- if (!silent) {
+ if (!opt_silent) {
this.fire('commit', {value});
}
},
diff --git a/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js b/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js
index f3c3767..5009a6f 100644
--- a/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js
+++ b/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js
@@ -18,6 +18,7 @@
is: 'gr-change-star',
properties: {
+ /** @type {?} */
change: {
type: Object,
notify: true,
diff --git a/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager.js b/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager.js
index c259a3c..c0ea5a8 100644
--- a/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager.js
+++ b/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager.js
@@ -30,6 +30,9 @@
},
observer: '_updateIndex',
},
+ /**
+ * @type (?Object)
+ */
target: {
type: Object,
notify: true,
@@ -37,6 +40,7 @@
},
/**
* The height of content intended to be included with the target.
+ * @type (?number)
*/
_targetHeight: Number,
@@ -61,6 +65,8 @@
* The scroll behavior for the cursor. Values are 'never' and
* 'keep-visible'. 'keep-visible' will only scroll if the cursor is beyond
* the viewport.
+ * TODO (beckysiegel) figure out why it can be undefined
+ * @type (string|undefined)
*/
scrollBehavior: {
type: String,
@@ -90,8 +96,8 @@
/**
* Set the cursor to an arbitrary element.
- * @param {DOMElement} element
- * @param {boolean} opt_noScroll prevent any potential scrolling in response
+ * @param {!HTMLElement} element
+ * @param {boolean=} opt_noScroll prevent any potential scrolling in response
* setting the cursor.
*/
setCursor(element, opt_noScroll) {
@@ -137,11 +143,11 @@
/**
* Move the cursor forward or backward by delta. Noop if moving past either
* end of the stop list.
- * @param {Number} delta either -1 or 1.
- * @param {Function} opt_condition Optional stop condition. If a condition
+ * @param {number} delta either -1 or 1.
+ * @param {!Function=} opt_condition Optional stop condition. If a condition
* is passed the cursor will continue to move in the specified direction
* until the condition is met.
- * @param {Function} opt_getTargetHeight Optional function to calculate the
+ * @param {!Function=} opt_getTargetHeight Optional function to calculate the
* height of the target's 'section'. The height of the target itself is
* sometimes different, used by the diff cursor.
* @private
@@ -191,9 +197,9 @@
/**
* Get the next stop index indicated by the delta direction.
- * @param {Number} delta either -1 or 1.
- * @param {Function} opt_condition Optional stop condition.
- * @return {Number} the new index.
+ * @param {number} delta either -1 or 1.
+ * @param {!Function=} opt_condition Optional stop condition.
+ * @return {number} the new index.
* @private
*/
_getNextindex(delta, opt_condition) {
@@ -239,7 +245,7 @@
/**
* Calculate where the element is relative to the window.
- * @param {object} target Target to scroll to.
+ * @param {!Object} target Target to scroll to.
* @return {number} Distance to top of the target.
*/
_getTop(target) {
diff --git a/polygerrit-ui/app/elements/shared/gr-download-commands/gr-download-commands.js b/polygerrit-ui/app/elements/shared/gr-download-commands/gr-download-commands.js
index 7c114c6..d5eaa0f 100644
--- a/polygerrit-ui/app/elements/shared/gr-download-commands/gr-download-commands.js
+++ b/polygerrit-ui/app/elements/shared/gr-download-commands/gr-download-commands.js
@@ -23,6 +23,7 @@
value: false,
observer: '_loggedInChanged',
},
+ schemes: Array,
selectedScheme: {
type: String,
notify: true,
diff --git a/polygerrit-ui/app/elements/shared/gr-editable-label/gr-editable-label.js b/polygerrit-ui/app/elements/shared/gr-editable-label/gr-editable-label.js
index 7ccc3ab..a78e94c 100644
--- a/polygerrit-ui/app/elements/shared/gr-editable-label/gr-editable-label.js
+++ b/polygerrit-ui/app/elements/shared/gr-editable-label/gr-editable-label.js
@@ -96,6 +96,11 @@
this._inputText = this.value;
},
+ /**
+ * @suppress {checkTypes}
+ * Closure doesn't think 'e' is an Event.
+ * TODO(beckysiegel) figure out why.
+ */
_handleEnter(e) {
e = this.getKeyboardEvent(e);
const target = Polymer.dom(e).rootTarget;
@@ -105,6 +110,11 @@
}
},
+ /**
+ * @suppress {checkTypes}
+ * Closure doesn't think 'e' is an Event.
+ * TODO(beckysiegel) figure out why.
+ */
_handleEsc(e) {
e = this.getKeyboardEvent(e);
const target = Polymer.dom(e).rootTarget;
diff --git a/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.js b/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.js
index d2436e7..d2392e1 100644
--- a/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.js
+++ b/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.js
@@ -171,7 +171,9 @@
if (inParagraph) {
// Add the finished paragraph block to the result.
inParagraph = false;
- out.push(block);
+ if (block !== null) {
+ out.push(block);
+ }
}
inList = true;
block = {type: 'list', items: []};
@@ -193,7 +195,7 @@
}
block.items.push(line);
}
- if (block != null) {
+ if (block !== null) {
out.push(block);
}
},
@@ -223,12 +225,16 @@
p.startsWith('- ') || p.startsWith('* ');
},
- _makeLinkedText(content, isPre) {
+ /**
+ * @param {string} content
+ * @param {boolean=} opt_isPre
+ */
+ _makeLinkedText(content, opt_isPre) {
const text = document.createElement('gr-linked-text');
text.config = this.config;
text.content = content;
text.pre = true;
- if (isPre) {
+ if (opt_isPre) {
text.classList.add('pre');
}
return text;
diff --git a/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js b/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
index 6e780ab..12e6008 100644
--- a/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
+++ b/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
@@ -1698,7 +1698,7 @@
/**
* Alias for _changeBaseURL.then(send).
- * @TODO(beckysiegel) clean up comments
+ * @todo(beckysiegel) clean up comments
* @param {string|number} changeNum
* @param {string} method
* @param {?string|number} patchNum gets passed as null.
@@ -1720,7 +1720,7 @@
/**
* Alias for _changeBaseURL.then(fetchJSON).
- * @TODO(beckysiegel) clean up comments
+ * @todo(beckysiegel) clean up comments
* @param {string|number} changeNum
* @param {string} endpoint
* @param {?string|number=} opt_patchNum gets passed as null.
diff --git a/polygerrit-ui/app/elements/shared/gr-storage/gr-storage.js b/polygerrit-ui/app/elements/shared/gr-storage/gr-storage.js
index 2e7f17c..7f61edd 100644
--- a/polygerrit-ui/app/elements/shared/gr-storage/gr-storage.js
+++ b/polygerrit-ui/app/elements/shared/gr-storage/gr-storage.js
@@ -25,6 +25,7 @@
properties: {
_lastCleanup: Number,
+ /** @type {?Storage} */
_storage: {
type: Object,
value() {
diff --git a/polygerrit-ui/app/elements/shared/gr-textarea/gr-textarea.js b/polygerrit-ui/app/elements/shared/gr-textarea/gr-textarea.js
index 1bc565d..a172a09 100644
--- a/polygerrit-ui/app/elements/shared/gr-textarea/gr-textarea.js
+++ b/polygerrit-ui/app/elements/shared/gr-textarea/gr-textarea.js
@@ -82,6 +82,7 @@
type: Boolean,
value: false,
},
+ /** @type(?number) */
_colonIndex: Number,
_currentSearchString: {
type: String,
@@ -193,7 +194,7 @@
},
_getText(value) {
- return this.text.substr(0, this._colonIndex) +
+ return this.text.substr(0, this._colonIndex || 0) +
value + this.text.substr(this.$.textarea.selectionStart) + ' ';
},
@@ -272,7 +273,7 @@
this._currentSearchString.length + this._colonIndex + 1 ||
this._currentSearchString === ' ' ||
this._currentSearchString === '\n' ||
- !e.detail.value[this._colonIndex] === ':' ||
+ !(e.detail.value[this._colonIndex] === ':') ||
!this._suggestions.length) {
this._resetEmojiDropdown();
// Otherwise open the dropdown and set the position to be just below the
diff --git a/polygerrit-ui/app/scripts/util.js b/polygerrit-ui/app/scripts/util.js
index 07b543f..22b483d 100644
--- a/polygerrit-ui/app/scripts/util.js
+++ b/polygerrit-ui/app/scripts/util.js
@@ -47,7 +47,7 @@
* Example
* // returns 'text.html'
* util.truncatePath.('text.html');
- * @return {String} Returns the truncated value of a URL.
+ * @return {string} Returns the truncated value of a URL.
*/
util.truncatePath = function(path) {
const pathPieces = path.split('/');