Use imported DocsUrlBehavior
This change removes usage of global Gerrit.DocsUrlBehavior and
replace it with direct import. Also, the DocsUrlMixin is removed,
because it was introduced as a workaround for polylint tests and is no
longer needed.
This commit contains the fix for
https://gerrit-review.googlesource.com/c/gerrit/+/260133
(which was reverted by
https://gerrit-review.googlesource.com/c/gerrit/+/261692).
The fix affects only one file: docs-url-behavior.js
Change-Id: I09aa39036e40b4a824054088f2857b0eb54d3b39
diff --git a/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.js b/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.js
index a75d439..add1df4 100644
--- a/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.js
+++ b/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior.js
@@ -16,64 +16,48 @@
*/
import {BaseUrlBehavior} from '../base-url-behavior/base-url-behavior.js';
-(function(window) {
- 'use strict';
+const PROBE_PATH = '/Documentation/index.html';
+const DOCS_BASE_PATH = '/Documentation';
- const PROBE_PATH = '/Documentation/index.html';
- const DOCS_BASE_PATH = '/Documentation';
+let cachedPromise;
- let cachedPromise;
+/** @polymerBehavior DocsUrlBehavior */
+export const DocsUrlBehavior = [{
- window.Gerrit = window.Gerrit || {};
-
- /** @polymerBehavior Gerrit.DocsUrlBehavior */
- Gerrit.DocsUrlBehavior = [{
-
- /**
- * 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
- * URL.
- */
- getDocsBaseUrl(config, restApi) {
- if (!cachedPromise) {
- cachedPromise = new Promise(resolve => {
- if (config && config.gerrit && config.gerrit.doc_url) {
- resolve(config.gerrit.doc_url);
- } else {
- restApi.probePath(this.getBaseUrl() + PROBE_PATH).then(ok => {
- resolve(ok ? (this.getBaseUrl() + DOCS_BASE_PATH) : null);
- });
- }
- });
- }
- return cachedPromise;
- },
-
- /** For testing only. */
- _clearDocsBaseUrlCache() {
- cachedPromise = undefined;
- },
+ /**
+ * 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
+ * URL.
+ */
+ getDocsBaseUrl(config, restApi) {
+ if (!cachedPromise) {
+ cachedPromise = new Promise(resolve => {
+ if (config && config.gerrit && config.gerrit.doc_url) {
+ resolve(config.gerrit.doc_url);
+ } else {
+ restApi.probePath(this.getBaseUrl() + PROBE_PATH).then(ok => {
+ resolve(ok ? (this.getBaseUrl() + DOCS_BASE_PATH) : null);
+ });
+ }
+ });
+ }
+ return cachedPromise;
},
- BaseUrlBehavior,
- ];
- // eslint-disable-next-line no-unused-vars
- function defineEmptyMixin() {
- // This is a temporary function.
- // Polymer linter doesn't process correctly the following code:
- // class MyElement extends Polymer.mixinBehaviors([legacyBehaviors], ...) {...}
- // To workaround this issue, the mock mixin is declared in this method.
- // In the following changes, legacy behaviors will be converted to mixins.
+ /** For testing only. */
+ _clearDocsBaseUrlCache() {
+ cachedPromise = undefined;
+ },
+},
+BaseUrlBehavior,
+];
- /**
- * @polymer
- * @mixinFunction
- */
- Gerrit.DocsUrlMixin = base =>
- class extends base {
- };
- }
-})(window);
+// TODO(dmfilippov) Remove the following lines with assignments
+// Plugins can use the behavior because it was accessible with
+// the global Gerrit... variable. To avoid breaking changes in plugins
+// temporary assign global variables.
+window.Gerrit = window.Gerrit || {};
+window.Gerrit.DocsUrlBehavior = DocsUrlBehavior;
diff --git a/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior_test.html b/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior_test.html
index 36eec89..0efd80f 100644
--- a/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior_test.html
+++ b/polygerrit-ui/app/behaviors/docs-url-behavior/docs-url-behavior_test.html
@@ -29,8 +29,8 @@
<script type="module">
import '../../test/common-test-setup.js';
-import './docs-url-behavior.js';
import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';
+import {DocsUrlBehavior} from './docs-url-behavior.js';
suite('docs-url-behavior tests', () => {
let element;
@@ -38,7 +38,7 @@
// Define a Polymer element that uses this behavior.
Polymer({
is: 'docs-url-behavior-element',
- behaviors: [Gerrit.DocsUrlBehavior],
+ behaviors: [DocsUrlBehavior],
});
});
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 713583e..6ec8594 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
@@ -16,7 +16,6 @@
*/
import '../../../scripts/bundled-polymer.js';
-import '../../../behaviors/docs-url-behavior/docs-url-behavior.js';
import '../../../behaviors/fire-behavior/fire-behavior.js';
import '../../../behaviors/gr-admin-nav-behavior/gr-admin-nav-behavior.js';
import '../../plugins/gr-endpoint-decorator/gr-endpoint-decorator.js';
@@ -32,6 +31,7 @@
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-main-header_html.js';
import {BaseUrlBehavior} from '../../../behaviors/base-url-behavior/base-url-behavior.js';
+import {DocsUrlBehavior} from '../../../behaviors/docs-url-behavior/docs-url-behavior.js';
const DEFAULT_LINKS = [{
title: 'Changes',
@@ -87,14 +87,13 @@
/**
* @appliesMixin Gerrit.AdminNavMixin
- * @appliesMixin Gerrit.DocsUrlMixin
* @appliesMixin Gerrit.FireMixin
* @extends Polymer.Element
*/
class GrMainHeader extends mixinBehaviors( [
Gerrit.AdminNavBehavior,
BaseUrlBehavior,
- Gerrit.DocsUrlBehavior,
+ DocsUrlBehavior,
Gerrit.FireBehavior,
], GestureEventListeners(
LegacyElementMixin(
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 733fa56..e86ae99 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
@@ -17,7 +17,6 @@
import '../../../scripts/bundled-polymer.js';
import '@polymer/iron-input/iron-input.js';
-import '../../../behaviors/docs-url-behavior/docs-url-behavior.js';
import '@polymer/paper-toggle-button/paper-toggle-button.js';
import '../../../styles/gr-form-styles.js';
import '../../../styles/gr-menu-page-styles.js';
@@ -48,6 +47,7 @@
import {LegacyElementMixin} from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-settings-view_html.js';
+import {DocsUrlBehavior} from '../../../behaviors/docs-url-behavior/docs-url-behavior.js';
const PREFS_SECTION_FIELDS = [
'changes_per_page',
@@ -78,13 +78,12 @@
];
/**
- * @appliesMixin Gerrit.DocsUrlMixin
* @appliesMixin Gerrit.ChangeTableMixin
* @appliesMixin Gerrit.FireMixin
* @extends Polymer.Element
*/
class GrSettingsView extends mixinBehaviors( [
- Gerrit.DocsUrlBehavior,
+ DocsUrlBehavior,
Gerrit.ChangeTableBehavior,
Gerrit.FireBehavior,
], GestureEventListeners(