Merge "Remove requesting DETAILED_LABELS for the dashboard"
diff --git a/java/com/google/gerrit/server/config/ConfigUtil.java b/java/com/google/gerrit/server/config/ConfigUtil.java
index 43c05e0..27ded63 100644
--- a/java/com/google/gerrit/server/config/ConfigUtil.java
+++ b/java/com/google/gerrit/server/config/ConfigUtil.java
@@ -16,6 +16,7 @@
import static java.util.Objects.requireNonNull;
+import com.google.common.flogger.FluentLogger;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
@@ -30,6 +31,8 @@
import org.eclipse.jgit.lib.Config;
public class ConfigUtil {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
@SuppressWarnings("unchecked")
private static <T> T[] allValuesOf(T defaultValue) {
try {
@@ -138,7 +141,12 @@
} else {
for (String string : values) {
if (string != null) {
- list.add(getEnum(section, subsection, setting, string, all));
+ try {
+ list.add(getEnum(section, subsection, setting, string, all));
+ } catch (IllegalArgumentException ex) {
+ // It's better to ignore a wrongly configured enum, rather than fail to load Gerrit.
+ logger.atWarning().log(ex.getMessage());
+ }
}
}
}
diff --git a/plugins/gitiles b/plugins/gitiles
index e929d29..a33c8b8 160000
--- a/plugins/gitiles
+++ b/plugins/gitiles
@@ -1 +1 @@
-Subproject commit e929d29973ac732a096d1920b8060eafdd04316e
+Subproject commit a33c8b8d61b778f8ca84196b1a7cc1fd4fe24946
diff --git a/polygerrit-ui/app/.eslintrc.js b/polygerrit-ui/app/.eslintrc.js
index 9834ddc..c8de2eb 100644
--- a/polygerrit-ui/app/.eslintrc.js
+++ b/polygerrit-ui/app/.eslintrc.js
@@ -272,6 +272,7 @@
}],
// The following rules is required to match internal google rules
"@typescript-eslint/restrict-plus-operands": "error",
+ "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
// https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unsupported-features/node-builtins.md
"node/no-unsupported-features/node-builtins": "off",
// Disable no-invalid-this for ts files, because it incorrectly reports
diff --git a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts
index caa0521..c4ed683 100644
--- a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts
+++ b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts
@@ -348,6 +348,7 @@
// If not, it sets target='_blank' on the menu item. The server
// makes assumptions that work for the GWT UI, but not PolyGerrit,
// so we'll just disable it altogether for now.
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
const {target, ...headerLink} = {...linkObj};
// Normalize all urls to PolyGerrit style.
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts
index 2f85a0b..912d59e 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts
@@ -306,7 +306,7 @@
return this.getContentTdByLine(line, side, row);
}
- getLineElByNumber(lineNumber: string | number, side?: Side) {
+ getLineElByNumber(lineNumber: LineNumber, side?: Side) {
const sideSelector = side ? '.' + side : '';
return this.diffElement.querySelector(
`.lineNum[data-value="${lineNumber}"]${sideSelector}`
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.ts b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.ts
index 08a567b..c788d76 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight.ts
@@ -30,6 +30,7 @@
import {GrSelectionActionBox} from '../gr-selection-action-box/gr-selection-action-box';
import {GrDiffBuilderElement} from '../gr-diff-builder/gr-diff-builder-element';
import {FILE} from '../gr-diff/gr-diff-line';
+import {getRange, getSide} from '../gr-diff/gr-diff-utils';
interface SidedRange {
side: Side;
@@ -199,13 +200,9 @@
}
_indexForThreadEl(threadEl: HTMLElement) {
- const side = threadEl.getAttribute('comment-side') as Side;
- const rangeString = threadEl.getAttribute('range');
- if (!rangeString) return undefined;
- const range = JSON.parse(rangeString) as CommentRange;
-
- if (!range) return undefined;
-
+ const side = getSide(threadEl);
+ const range = getRange(threadEl);
+ if (!side || !range) return undefined;
return this._indexOfCommentRange(side, range);
}
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
index 4b4f429..2223734 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
@@ -24,7 +24,12 @@
import {PolymerElement} from '@polymer/polymer/polymer-element';
import {htmlTemplate} from './gr-diff-host_html';
import {GerritNav} from '../../core/gr-navigation/gr-navigation';
-import {rangesEqual} from '../gr-diff/gr-diff-utils';
+import {
+ getLine,
+ getRange,
+ getSide,
+ rangesEqual,
+} from '../gr-diff/gr-diff-utils';
import {appContext} from '../../../services/app-context';
import {
getParentIndex,
@@ -808,11 +813,7 @@
throw new Error(`Unknown side: ${commentSide}`);
}
function matchesRange(threadEl: GrCommentThread) {
- const rangeAtt = threadEl.getAttribute('range');
- const threadRange = rangeAtt
- ? (JSON.parse(rangeAtt) as CommentRange)
- : undefined;
- return rangesEqual(threadRange, range);
+ return rangesEqual(getRange(threadEl), range);
}
const filteredThreadEls = this._filterThreadElsForLocation(
@@ -830,21 +831,18 @@
) {
function matchesLeftLine(threadEl: GrCommentThread) {
return (
- threadEl.getAttribute('comment-side') === Side.LEFT &&
- threadEl.getAttribute('line-num') === String(lineInfo.beforeNumber)
+ getSide(threadEl) === Side.LEFT &&
+ getLine(threadEl) === lineInfo.beforeNumber
);
}
function matchesRightLine(threadEl: GrCommentThread) {
return (
- threadEl.getAttribute('comment-side') === Side.RIGHT &&
- threadEl.getAttribute('line-num') === String(lineInfo.afterNumber)
+ getSide(threadEl) === Side.RIGHT &&
+ getLine(threadEl) === lineInfo.afterNumber
);
}
function matchesFileComment(threadEl: GrCommentThread) {
- return (
- threadEl.getAttribute('comment-side') === side &&
- threadEl.getAttribute('line-num') === FILE
- );
+ return getSide(threadEl) === side && getLine(threadEl) === FILE;
}
// Select the appropriate matchers for the desired side and line
@@ -855,7 +853,7 @@
if (side === Side.RIGHT) {
matchers.push(matchesRightLine);
}
- if (lineInfo.afterNumber === 'FILE' || lineInfo.beforeNumber === 'FILE') {
+ if (lineInfo.afterNumber === FILE || lineInfo.beforeNumber === FILE) {
matchers.push(matchesFileComment);
}
return threadEls.filter(threadEl =>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts
index 03740ba..08c8226 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts
@@ -30,6 +30,7 @@
import {DiffInfo} from '../../../types/diff';
import {Side} from '../../../constants/constants';
import {GrDiffBuilderElement} from '../gr-diff-builder/gr-diff-builder-element';
+import {getSide, isThreadEl} from '../gr-diff/gr-diff-utils';
/**
* Possible CSS classes indicating the state of selection. Dynamically added/
@@ -96,10 +97,10 @@
}
_handleDownOnRangeComment(node: Element) {
- if (node?.nodeName?.toLowerCase() === 'gr-comment-thread') {
+ if (isThreadEl(node)) {
this._setClasses([
SelectionClass.COMMENT,
- node.getAttribute('comment-side') === Side.LEFT
+ getSide(node) === Side.LEFT
? SelectionClass.LEFT
: SelectionClass.RIGHT,
]);
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts
index eb11588..11d3ce3 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts
@@ -83,8 +83,9 @@
const numHidden = hiddenEnd - hiddenStart;
- // Only collapse if there is more than 1 line to be hidden.
- if (numHidden > 1) {
+ // Showing a context control row for less than 4 lines does not make much,
+ // because then that row would consume as much space as the collapsed code.
+ if (numHidden > 3) {
if (hiddenStart) {
[before, hidden] = _splitCommonGroups(hidden, hiddenStart);
}
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js
index 3423834..8182941 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js
@@ -122,17 +122,19 @@
new GrDiffLine(GrDiffLineType.ADD, 0, 11),
new GrDiffLine(GrDiffLineType.REMOVE, 10),
new GrDiffLine(GrDiffLineType.ADD, 0, 12),
+ new GrDiffLine(GrDiffLineType.REMOVE, 11),
+ new GrDiffLine(GrDiffLineType.ADD, 0, 13),
]),
new GrDiffGroup(GrDiffGroupType.BOTH, [
- new GrDiffLine(GrDiffLineType.BOTH, 11, 13),
new GrDiffLine(GrDiffLineType.BOTH, 12, 14),
new GrDiffLine(GrDiffLineType.BOTH, 13, 15),
+ new GrDiffLine(GrDiffLineType.BOTH, 14, 16),
]),
];
});
test('hides hidden groups in context control', () => {
- const collapsedGroups = hideInContextControl(groups, 3, 6);
+ const collapsedGroups = hideInContextControl(groups, 3, 7);
assert.equal(collapsedGroups.length, 3);
assert.equal(collapsedGroups[0], groups[0]);
@@ -145,7 +147,7 @@
});
test('splits partially hidden groups', () => {
- const collapsedGroups = hideInContextControl(groups, 4, 7);
+ const collapsedGroups = hideInContextControl(groups, 4, 8);
assert.equal(collapsedGroups.length, 4);
assert.equal(collapsedGroups[0], groups[0]);
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts
index 8984dc8..b13b3c5 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts
@@ -17,6 +17,7 @@
import {CommentRange} from '../../../types/common';
import {FILE, LineNumber} from './gr-diff-line';
+import {Side} from '../../../constants/constants';
/**
* Compare two ranges. Either argument may be falsy, but will only return
@@ -46,3 +47,47 @@
const lineNumber = Number(lineNumberStr);
return Number.isInteger(lineNumber) ? lineNumber : null;
}
+
+export function getLine(threadEl: HTMLElement): LineNumber {
+ const lineAtt = threadEl.getAttribute('line-num');
+ if (!lineAtt || lineAtt === 'FILE') return FILE;
+ const line = Number(lineAtt);
+ if (isNaN(line)) throw new Error(`cannot parse line number: ${lineAtt}`);
+ if (line < 1) throw new Error(`line number smaller than 1: ${line}`);
+ return line;
+}
+
+export function getSide(threadEl: HTMLElement): Side | undefined {
+ const sideAtt = threadEl.getAttribute('comment-side');
+ if (!sideAtt) {
+ console.warn('comment thread without side');
+ return undefined;
+ }
+ if (sideAtt !== Side.LEFT && sideAtt !== Side.RIGHT)
+ throw Error(`unexpected value for side: ${sideAtt}`);
+ return sideAtt as Side;
+}
+
+export function getRange(threadEl: HTMLElement): CommentRange | undefined {
+ const rangeAtt = threadEl.getAttribute('range');
+ if (!rangeAtt) return undefined;
+ const range = JSON.parse(rangeAtt) as CommentRange;
+ if (!range.start_line) throw new Error(`invalid range: ${rangeAtt}`);
+ return range;
+}
+
+// TODO: This type should be exposed to gr-diff clients in a separate type file.
+// For Gerrit these are instances of GrCommentThread, but other gr-diff users
+// have different HTML elements in use for comment threads.
+// TODO: Also document the required HTML attritbutes that thread elements must
+// have, e.g. 'comment-side', 'range', 'line-num', 'data-value'.
+export interface GrDiffThreadElement extends HTMLElement {
+ rootId: string;
+}
+
+export function isThreadEl(node: Node): node is GrDiffThreadElement {
+ return (
+ node.nodeType === Node.ELEMENT_NODE &&
+ (node as Element).classList.contains('comment-thread')
+ );
+}
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
index ae3e016..472a6bd 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
@@ -27,8 +27,16 @@
import {GestureEventListeners} from '@polymer/polymer/lib/mixins/gesture-event-listeners';
import {LegacyElementMixin} from '@polymer/polymer/lib/legacy/legacy-element-mixin';
import {htmlTemplate} from './gr-diff_html';
-import {FILE, LineNumber} from './gr-diff-line';
-import {getLineNumber, rangesEqual} from './gr-diff-utils';
+import {LineNumber} from './gr-diff-line';
+import {
+ getLine,
+ getLineNumber,
+ getRange,
+ getSide,
+ GrDiffThreadElement,
+ isThreadEl,
+ rangesEqual,
+} from './gr-diff-utils';
import {getHiddenScroll} from '../../../scripts/hiddenscroll';
import {isMergeParent, patchNumEquals} from '../../../utils/patch-set-util';
import {customElement, observe, property} from '@polymer/decorators';
@@ -53,7 +61,7 @@
PolymerDomWrapper,
} from '../../../types/types';
import {CommentRangeLayer} from '../gr-ranged-comment-layer/gr-ranged-comment-layer';
-import {DiffViewMode, Side, CommentSide} from '../../../constants/constants';
+import {CommentSide, DiffViewMode, Side} from '../../../constants/constants';
import {KeyLocations} from '../gr-diff-processor/gr-diff-processor';
import {FlattenedNodesObserver} from '@polymer/polymer/lib/utils/flattened-nodes-observer';
import {PolymerDeepPropertyChange} from '@polymer/polymer/interfaces';
@@ -67,27 +75,6 @@
const FULL_CONTEXT = -1;
const LIMITED_CONTEXT = 10;
-function getSide(threadEl: GrCommentThread): Side {
- const sideAtt = threadEl.getAttribute('comment-side');
- if (!sideAtt) throw Error('comment thread without side');
- if (sideAtt !== 'left' && sideAtt !== 'right')
- throw Error(`unexpected value for side: ${sideAtt}`);
- return sideAtt as Side;
-}
-
-function isThreadEl(node: Node): node is GrCommentThread {
- return (
- node.nodeType === Node.ELEMENT_NODE &&
- (node as Element).classList.contains('comment-thread')
- );
-}
-
-// TODO(TS): Replace by proper GrCommentThread once converted.
-type GrCommentThread = PolymerElement & {
- rootId: string;
- range: CommentRange;
-};
-
const COMMIT_MSG_PATH = '/COMMIT_MSG';
/**
* 72 is the unofficial length standard for git commit messages.
@@ -380,17 +367,16 @@
// TODO(brohlfs): Rewrite gr-diff to be agnostic of GrCommentThread, because
// other users of gr-diff may use different comment widgets.
_updateRanges(
- addedThreadEls: GrCommentThread[],
- removedThreadEls: GrCommentThread[]
+ addedThreadEls: GrDiffThreadElement[],
+ removedThreadEls: GrDiffThreadElement[]
) {
function commentRangeFromThreadEl(
- threadEl: GrCommentThread
+ threadEl: GrDiffThreadElement
): CommentRangeLayer | undefined {
const side = getSide(threadEl);
-
- const rangeAtt = threadEl.getAttribute('range');
- if (!rangeAtt) return undefined;
- const range = JSON.parse(rangeAtt) as CommentRange;
+ if (!side) return undefined;
+ const range = getRange(threadEl);
+ if (!range) return undefined;
return {side, range, hovering: false, rootId: threadEl.rootId};
}
@@ -433,12 +419,13 @@
for (const threadEl of threadEls) {
const side = getSide(threadEl);
- const lineNum = threadEl.getAttribute('line-num') || FILE;
- const commentRange = threadEl.range || {};
+ if (!side) continue;
+ const lineNum = getLine(threadEl);
+ const commentRange = getRange(threadEl);
keyLocations[side][lineNum] = true;
// Add start_line as well if exists,
// the being and end of the range should not be collapsed.
- if (commentRange.start_line) {
+ if (commentRange?.start_line) {
keyLocations[side][commentRange.start_line] = true;
}
}
@@ -446,7 +433,7 @@
}
// Dispatch events that are handled by the gr-diff-highlight.
- _redispatchHoverEvents(addedThreadEls: GrCommentThread[]) {
+ _redispatchHoverEvents(addedThreadEls: HTMLElement[]) {
for (const threadEl of addedThreadEls) {
threadEl.addEventListener('mouseenter', () => {
threadEl.dispatchEvent(
@@ -891,10 +878,11 @@
// for each line from the start.
let lastEl;
for (const threadEl of addedThreadEls) {
- const lineNumString = threadEl.getAttribute('line-num') || 'FILE';
+ const lineNum = getLine(threadEl);
const commentSide = getSide(threadEl);
+ if (!commentSide) continue;
const lineEl = this.$.diffBuilder.getLineElByNumber(
- lineNumString,
+ lineNum,
commentSide
);
// When the line the comment refers to does not exist, log an error
@@ -904,7 +892,7 @@
console.error(
'thread attached to line ',
commentSide,
- lineNumString,
+ lineNum,
' which does not exist.'
);
continue;
diff --git a/polygerrit-ui/app/elements/gr-app-global-var-init.ts b/polygerrit-ui/app/elements/gr-app-global-var-init.ts
index fac5f45..7a27b03 100644
--- a/polygerrit-ui/app/elements/gr-app-global-var-init.ts
+++ b/polygerrit-ui/app/elements/gr-app-global-var-init.ts
@@ -22,61 +22,13 @@
* expose these variables until plugins switch to direct import from polygerrit.
*/
-import {
- getAccountDisplayName,
- getDisplayName,
- getGroupDisplayName,
- getUserName,
-} from '../utils/display-name-util';
import {GrAnnotation} from './diff/gr-diff-highlight/gr-annotation';
-import {GrAttributeHelper} from './plugins/gr-attribute-helper/gr-attribute-helper';
import {GrDiffLine, GrDiffLineType} from './diff/gr-diff/gr-diff-line';
import {GrDiffGroup, GrDiffGroupType} from './diff/gr-diff/gr-diff-group';
-import {GrDiffBuilder} from './diff/gr-diff-builder/gr-diff-builder';
-import {GrDiffBuilderSideBySide} from './diff/gr-diff-builder/gr-diff-builder-side-by-side';
-import {GrDiffBuilderImage} from './diff/gr-diff-builder/gr-diff-builder-image';
-import {GrDiffBuilderUnified} from './diff/gr-diff-builder/gr-diff-builder-unified';
-import {GrDiffBuilderBinary} from './diff/gr-diff-builder/gr-diff-builder-binary';
-import {GrChangeActionsInterface} from './shared/gr-js-api-interface/gr-change-actions-js-api';
-import {GrChangeReplyInterface} from './shared/gr-js-api-interface/gr-change-reply-js-api';
-import {GrEditConstants} from './edit/gr-edit-constants';
-import {
- GrDomHooksManager,
- GrDomHook,
-} from './plugins/gr-dom-hooks/gr-dom-hooks';
-import {GrEtagDecorator} from './shared/gr-rest-api-interface/gr-etag-decorator';
-import {GrThemeApi} from './plugins/gr-theme-api/gr-theme-api';
-import {
- SiteBasedCache,
- FetchPromisesCache,
- GrRestApiHelper,
-} from './shared/gr-rest-api-interface/gr-rest-apis/gr-rest-api-helper';
-import {GrLinkTextParser} from './shared/gr-linked-text/link-text-parser';
-import {
- getPluginEndpoints,
- GrPluginEndpoints,
-} from './shared/gr-js-api-interface/gr-plugin-endpoints';
-import {GrReviewerUpdatesParser} from './shared/gr-rest-api-interface/gr-reviewer-updates-parser';
-import {GrPopupInterface} from './plugins/gr-popup-interface/gr-popup-interface';
-import {GrCountStringFormatter} from './shared/gr-count-string-formatter/gr-count-string-formatter';
-import {
- GrReviewerSuggestionsProvider,
- SUGGESTIONS_PROVIDERS_USERS_TYPES,
-} from '../scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider';
+import {getPluginEndpoints} from './shared/gr-js-api-interface/gr-plugin-endpoints';
import {util} from '../scripts/util';
import {page} from '../utils/page-wrapper-utils';
import {appContext} from '../services/app-context';
-import {GrAdminApi} from './plugins/gr-admin-api/gr-admin-api';
-import {GrAnnotationActionsContext} from './shared/gr-js-api-interface/gr-annotation-actions-context';
-import {GrAnnotationActionsInterface} from './shared/gr-js-api-interface/gr-annotation-actions-js-api';
-import {GrChangeMetadataApi} from './plugins/gr-change-metadata-api/gr-change-metadata-api';
-import {GrEmailSuggestionsProvider} from '../scripts/gr-email-suggestions-provider/gr-email-suggestions-provider';
-import {GrGroupSuggestionsProvider} from '../scripts/gr-group-suggestions-provider/gr-group-suggestions-provider';
-import {GrEventHelper} from './plugins/gr-event-helper/gr-event-helper';
-import {GrPluginRestApi} from './shared/gr-js-api-interface/gr-plugin-rest-api';
-import {GrRepoApi} from './plugins/gr-repo-api/gr-repo-api';
-import {GrSettingsApi} from './plugins/gr-settings-api/gr-settings-api';
-import {GrStylesApi} from './plugins/gr-styles-api/gr-styles-api';
import {
getPluginLoader,
PluginLoader,
@@ -92,60 +44,18 @@
import {getBaseUrl} from '../utils/url-util';
import {GerritNav} from './core/gr-navigation/gr-navigation';
import {getRootElement} from '../scripts/rootElement';
-import {rangesEqual} from './diff/gr-diff/gr-diff-utils';
import {RevisionInfo} from './shared/revision-info/revision-info';
-import {CoverageType} from '../types/types';
-import {_setHiddenScroll, getHiddenScroll} from '../scripts/hiddenscroll';
export function initGlobalVariables() {
- window.GrDisplayNameUtils = {
- getUserName,
- getDisplayName,
- getAccountDisplayName,
- getGroupDisplayName,
- };
window.GrAnnotation = GrAnnotation;
- window.GrAttributeHelper = GrAttributeHelper;
window.GrDiffLine = GrDiffLine;
window.GrDiffLineType = GrDiffLineType;
window.GrDiffGroup = GrDiffGroup;
window.GrDiffGroupType = GrDiffGroupType;
- window.GrDiffBuilder = GrDiffBuilder;
- window.GrDiffBuilderSideBySide = GrDiffBuilderSideBySide;
- window.GrDiffBuilderImage = GrDiffBuilderImage;
- window.GrDiffBuilderUnified = GrDiffBuilderUnified;
- window.GrDiffBuilderBinary = GrDiffBuilderBinary;
- window.GrChangeActionsInterface = GrChangeActionsInterface;
- window.GrChangeReplyInterface = GrChangeReplyInterface;
- window.GrEditConstants = GrEditConstants;
- window.GrDomHooksManager = GrDomHooksManager;
- window.GrDomHook = GrDomHook;
- window.GrEtagDecorator = GrEtagDecorator;
- window.GrThemeApi = GrThemeApi;
- window.SiteBasedCache = SiteBasedCache;
- window.FetchPromisesCache = FetchPromisesCache;
- window.GrRestApiHelper = GrRestApiHelper;
- window.GrLinkTextParser = GrLinkTextParser;
- window.GrPluginEndpoints = GrPluginEndpoints;
- window.GrReviewerUpdatesParser = GrReviewerUpdatesParser;
- window.GrPopupInterface = GrPopupInterface;
- window.GrCountStringFormatter = GrCountStringFormatter;
- window.GrReviewerSuggestionsProvider = GrReviewerSuggestionsProvider;
window.util = util;
window.page = page;
window.Auth = appContext.authService;
window.EventEmitter = appContext.eventEmitter;
- window.GrAdminApi = GrAdminApi;
- window.GrAnnotationActionsContext = GrAnnotationActionsContext;
- window.GrAnnotationActionsInterface = GrAnnotationActionsInterface;
- window.GrChangeMetadataApi = GrChangeMetadataApi;
- window.GrEmailSuggestionsProvider = GrEmailSuggestionsProvider;
- window.GrGroupSuggestionsProvider = GrGroupSuggestionsProvider;
- window.GrEventHelper = GrEventHelper;
- window.GrPluginRestApi = GrPluginRestApi;
- window.GrRepoApi = GrRepoApi;
- window.GrSettingsApi = GrSettingsApi;
- window.GrStylesApi = GrStylesApi;
window.PluginLoader = PluginLoader;
window.GrPluginActionContext = GrPluginActionContext;
@@ -167,14 +77,5 @@
// TODO: should define as a getter
window.Gerrit._endpoints = getPluginEndpoints();
- // TODO(TS): seems not used, probably just remove
- window.Gerrit.slotToContent = (slot: any) => slot;
- window.Gerrit.rangesEqual = rangesEqual;
- window.Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES = SUGGESTIONS_PROVIDERS_USERS_TYPES;
window.Gerrit.RevisionInfo = RevisionInfo;
- window.Gerrit.CoverageType = CoverageType;
- Object.defineProperty(window.Gerrit, 'hiddenscroll', {
- get: getHiddenScroll,
- set: _setHiddenScroll,
- });
}
diff --git a/polygerrit-ui/app/types/globals.ts b/polygerrit-ui/app/types/globals.ts
index d208d4f..628cee4 100644
--- a/polygerrit-ui/app/types/globals.ts
+++ b/polygerrit-ui/app/types/globals.ts
@@ -36,12 +36,7 @@
Auth?: unknown;
_pluginLoader?: unknown;
_endpoints?: unknown;
- slotToContent?: unknown;
- rangesEqual?: unknown;
- SUGGESTIONS_PROVIDERS_USERS_TYPES?: unknown;
RevisionInfo?: unknown;
- CoverageType?: unknown;
- hiddenscroll?: unknown;
flushPreinstalls?: () => void;
};
// TODO(TS): define polymer type
@@ -69,49 +64,16 @@
// TODO(TS): should clean up those and removing them may break certain plugin behaviors
// TODO(TS): as @brohlfs suggested, to avoid importing anything from elements/ to types/
// use any for them for now
- GrDisplayNameUtils: unknown;
GrAnnotation: unknown;
- GrAttributeHelper: unknown;
GrDiffLine: unknown;
GrDiffLineType: unknown;
GrDiffGroup: unknown;
GrDiffGroupType: unknown;
- GrDiffBuilder: unknown;
- GrDiffBuilderSideBySide: unknown;
- GrDiffBuilderImage: unknown;
- GrDiffBuilderUnified: unknown;
- GrDiffBuilderBinary: unknown;
- GrChangeActionsInterface: unknown;
- GrChangeReplyInterface: unknown;
- GrEditConstants: unknown;
- GrDomHooksManager: unknown;
- GrDomHook: unknown;
- GrEtagDecorator: unknown;
- GrThemeApi: unknown;
- SiteBasedCache: unknown;
- FetchPromisesCache: unknown;
- GrRestApiHelper: unknown;
- GrLinkTextParser: unknown;
- GrPluginEndpoints: unknown;
- GrReviewerUpdatesParser: unknown;
- GrPopupInterface: unknown;
- GrCountStringFormatter: unknown;
- GrReviewerSuggestionsProvider: unknown;
util: unknown;
Auth: unknown;
EventEmitter: unknown;
- GrAdminApi: unknown;
- GrAnnotationActionsContext: unknown;
- GrAnnotationActionsInterface: unknown;
- GrChangeMetadataApi: unknown;
- GrEmailSuggestionsProvider: unknown;
- GrGroupSuggestionsProvider: unknown;
- GrEventHelper: unknown;
- GrPluginRestApi: unknown;
- GrRepoApi: unknown;
- GrSettingsApi: unknown;
- GrStylesApi: unknown;
PluginLoader: unknown;
+ // Heads up! There is a known plugin dependency on GrPluginActionContext.
GrPluginActionContext: unknown;
_apiUtils: {};
}