/** * @license * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview This file is a backwards-compatibility shim. * Before Polygerrit converted to ES Modules, it exposes some variables out onto * the global namespace. Plugins can depend on these variables and we must * 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 {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, } from './shared/gr-js-api-interface/gr-plugin-loader'; import {GrPluginActionContext} from './shared/gr-js-api-interface/gr-plugin-action-context'; import { getPluginNameFromUrl, getRestAPI, PLUGIN_LOADING_TIMEOUT_MS, PRELOADED_PROTOCOL, send, } from './shared/gr-js-api-interface/gr-api-utils'; 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'; import {GerritGlobal} from './shared/gr-js-api-interface/gr-gerrit'; 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; window._apiUtils = { getPluginNameFromUrl, send, getRestAPI, getBaseUrl, PRELOADED_PROTOCOL, PLUGIN_LOADING_TIMEOUT_MS, }; window.Gerrit = (window.Gerrit || {}) as GerritGlobal; window.Gerrit.Nav = GerritNav; window.Gerrit.getRootElement = getRootElement; window.Gerrit.Auth = appContext.authService; window.Gerrit._pluginLoader = getPluginLoader(); // 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, }); }