Get rid of global Gerrit.Nav
* Replace the global Gerrit.Nav variable with named imports.
* Update gr-app-global-var-init.js
Note: This is not a recommended approach. The change focuses on
removing global variable. See todo in gr-navigation.js
Change-Id: If389574d6d3bc1d643538f6776740bca82f71049
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 7e42a9f..ec63079 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
@@ -17,7 +17,6 @@
import '../../../scripts/bundled-polymer.js';
import '../../../styles/gr-change-list-styles.js';
-import '../../core/gr-navigation/gr-navigation.js';
import '../../shared/gr-account-link/gr-account-link.js';
import '../../shared/gr-change-star/gr-change-star.js';
import '../../shared/gr-change-status/gr-change-status.js';
@@ -38,6 +37,7 @@
import {PathListBehavior} from '../../../behaviors/gr-path-list-behavior/gr-path-list-behavior.js';
import {URLEncodingBehavior} from '../../../behaviors/gr-url-encoding-behavior/gr-url-encoding-behavior.js';
import {RESTClientBehavior} from '../../../behaviors/rest-client-behavior/rest-client-behavior.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
const CHANGE_SIZE = {
XS: 10,
@@ -105,7 +105,7 @@
}
_computeChangeURL(change) {
- return Gerrit.Nav.getUrlForChange(change);
+ return GerritNav.getUrlForChange(change);
}
_computeLabelTitle(change, labelName) {
@@ -166,18 +166,18 @@
}
_computeRepoUrl(change) {
- return Gerrit.Nav.getUrlForProjectChanges(change.project, true,
+ return GerritNav.getUrlForProjectChanges(change.project, true,
change.internalHost);
}
_computeRepoBranchURL(change) {
- return Gerrit.Nav.getUrlForBranch(change.branch, change.project, null,
+ return GerritNav.getUrlForBranch(change.branch, change.project, null,
change.internalHost);
}
_computeTopicURL(change) {
if (!change.topic) { return ''; }
- return Gerrit.Nav.getUrlForTopic(change.topic, change.internalHost);
+ return GerritNav.getUrlForTopic(change.topic, change.internalHost);
}
/**
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html
index 8af8592..f7361d2 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html
@@ -33,6 +33,8 @@
<script type="module">
import '../../../test/common-test-setup.js';
import './gr-change-list-item.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
+
suite('gr-change-list-item tests', () => {
let element;
let sandbox;
@@ -242,7 +244,7 @@
});
test('change params passed to gr-navigation', () => {
- sandbox.stub(Gerrit.Nav);
+ sandbox.stub(GerritNav);
const change = {
internalHost: 'test-host',
project: 'test-repo',
@@ -252,12 +254,12 @@
element.change = change;
flushAsynchronousOperations();
- assert.deepEqual(Gerrit.Nav.getUrlForChange.lastCall.args, [change]);
- assert.deepEqual(Gerrit.Nav.getUrlForProjectChanges.lastCall.args,
+ assert.deepEqual(GerritNav.getUrlForChange.lastCall.args, [change]);
+ assert.deepEqual(GerritNav.getUrlForProjectChanges.lastCall.args,
[change.project, true, change.internalHost]);
- assert.deepEqual(Gerrit.Nav.getUrlForBranch.lastCall.args,
+ assert.deepEqual(GerritNav.getUrlForBranch.lastCall.args,
[change.branch, change.project, null, change.internalHost]);
- assert.deepEqual(Gerrit.Nav.getUrlForTopic.lastCall.args,
+ assert.deepEqual(GerritNav.getUrlForTopic.lastCall.args,
[change.topic, change.internalHost]);
});
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 ba68027..c416b11 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
@@ -16,7 +16,6 @@
*/
import '../../../scripts/bundled-polymer.js';
-import '../../core/gr-navigation/gr-navigation.js';
import '../../shared/gr-icons/gr-icons.js';
import '../../shared/gr-rest-api-interface/gr-rest-api-interface.js';
import '../gr-change-list/gr-change-list.js';
@@ -31,6 +30,7 @@
import {BaseUrlBehavior} from '../../../behaviors/base-url-behavior/base-url-behavior.js';
import {URLEncodingBehavior} from '../../../behaviors/gr-url-encoding-behavior/gr-url-encoding-behavior.js';
import page from 'page/page.mjs';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
const LookupQueryPatterns = {
CHANGE_ID: /^\s*i?[0-9a-f]{7,40}\s*$/i,
@@ -163,7 +163,7 @@
}
_paramsChanged(value) {
- if (value.view !== Gerrit.Nav.View.SEARCH) { return; }
+ if (value.view !== GerritNav.View.SEARCH) { return; }
this._loading = true;
this._query = value.query;
@@ -193,7 +193,7 @@
for (const query in LookupQueryPatterns) {
if (LookupQueryPatterns.hasOwnProperty(query) &&
this._query.match(LookupQueryPatterns[query])) {
- Gerrit.Nav.navigateToChange(changes[0]);
+ GerritNav.navigateToChange(changes[0]);
return;
}
}
@@ -237,7 +237,7 @@
offset = +(offset || 0);
const limit = this._limitFor(query, changesPerPage);
const newOffset = Math.max(0, offset + (limit * direction));
- return Gerrit.Nav.getUrlForSearchQuery(query, newOffset);
+ return GerritNav.getUrlForSearchQuery(query, newOffset);
}
_computePrevArrowClass(offset) {
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html
index ab57143e..33e70a0 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html
@@ -35,6 +35,7 @@
import '../../../test/common-test-setup.js';
import './gr-change-list-view.js';
import page from 'page/page.mjs';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
const CHANGE_ID = 'IcA3dAB3edAB9f60B8dcdA6ef71A75980e4B7127';
const COMMIT_HASH = '12345678';
@@ -78,7 +79,7 @@
});
test('_computeNavLink', () => {
- const getUrlStub = sandbox.stub(Gerrit.Nav, 'getUrlForSearchQuery')
+ const getUrlStub = sandbox.stub(GerritNav, 'getUrlForSearchQuery')
.returns('');
const query = 'status:open';
let offset = 0;
@@ -209,44 +210,44 @@
const change = {_number: 1};
sandbox.stub(element, '_getChanges')
.returns(Promise.resolve([change]));
- sandbox.stub(Gerrit.Nav, 'navigateToChange', url => {
+ sandbox.stub(GerritNav, 'navigateToChange', url => {
assert.equal(url, change);
done();
});
- element.params = {view: Gerrit.Nav.View.SEARCH, query: CHANGE_ID};
+ element.params = {view: GerritNav.View.SEARCH, query: CHANGE_ID};
});
test('Searching for a change num redirects to change', done => {
const change = {_number: 1};
sandbox.stub(element, '_getChanges')
.returns(Promise.resolve([change]));
- sandbox.stub(Gerrit.Nav, 'navigateToChange', url => {
+ sandbox.stub(GerritNav, 'navigateToChange', url => {
assert.equal(url, change);
done();
});
- element.params = {view: Gerrit.Nav.View.SEARCH, query: '1'};
+ element.params = {view: GerritNav.View.SEARCH, query: '1'};
});
test('Commit hash redirects to change', done => {
const change = {_number: 1};
sandbox.stub(element, '_getChanges')
.returns(Promise.resolve([change]));
- sandbox.stub(Gerrit.Nav, 'navigateToChange', url => {
+ sandbox.stub(GerritNav, 'navigateToChange', url => {
assert.equal(url, change);
done();
});
- element.params = {view: Gerrit.Nav.View.SEARCH, query: COMMIT_HASH};
+ element.params = {view: GerritNav.View.SEARCH, query: COMMIT_HASH};
});
test('Searching for an invalid change ID searches', () => {
sandbox.stub(element, '_getChanges')
.returns(Promise.resolve([]));
- const stub = sandbox.stub(Gerrit.Nav, 'navigateToChange');
+ const stub = sandbox.stub(GerritNav, 'navigateToChange');
- element.params = {view: Gerrit.Nav.View.SEARCH, query: CHANGE_ID};
+ element.params = {view: GerritNav.View.SEARCH, query: CHANGE_ID};
flushAsynchronousOperations();
assert.isFalse(stub.called);
@@ -255,9 +256,9 @@
test('Change ID with multiple search results searches', () => {
sandbox.stub(element, '_getChanges')
.returns(Promise.resolve([{}, {}]));
- const stub = sandbox.stub(Gerrit.Nav, 'navigateToChange');
+ const stub = sandbox.stub(GerritNav, 'navigateToChange');
- element.params = {view: Gerrit.Nav.View.SEARCH, query: CHANGE_ID};
+ element.params = {view: GerritNav.View.SEARCH, query: CHANGE_ID};
flushAsynchronousOperations();
assert.isFalse(stub.called);
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 d6da71a..9455ba6 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
@@ -17,7 +17,6 @@
import '../../../scripts/bundled-polymer.js';
import '../../../styles/gr-change-list-styles.js';
-import '../../core/gr-navigation/gr-navigation.js';
import '../../shared/gr-cursor-manager/gr-cursor-manager.js';
import '../../shared/gr-rest-api-interface/gr-rest-api-interface.js';
import '../gr-change-list-item/gr-change-list-item.js';
@@ -36,6 +35,7 @@
import {URLEncodingBehavior} from '../../../behaviors/gr-url-encoding-behavior/gr-url-encoding-behavior.js';
import {KeyboardShortcutBehavior} from '../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.js';
import {RESTClientBehavior} from '../../../behaviors/rest-client-behavior/rest-client-behavior.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
const NUMBER_FIXED_COLUMNS = 3;
const CLOSED_STATUS = ['MERGED', 'ABANDONED'];
@@ -271,7 +271,7 @@
}
_sectionHref(query) {
- return Gerrit.Nav.getUrlForSearchQuery(this._processQuery(query));
+ return GerritNav.getUrlForSearchQuery(this._processQuery(query));
}
/**
@@ -333,7 +333,7 @@
this.modifierPressed(e)) { return; }
e.preventDefault();
- Gerrit.Nav.navigateToChange(this._changeForIndex(this.selectedIndex));
+ GerritNav.navigateToChange(this._changeForIndex(this.selectedIndex));
}
_nextPage(e) {
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
index e736682..c535600 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
@@ -43,6 +43,8 @@
import {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';
import {afterNextRender} from '@polymer/polymer/lib/utils/render-status.js';
import {KeyboardShortcutBinder} from '../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
+
suite('gr-change-list basic tests', () => {
// Define keybindings before attaching other fixtures.
const kb = KeyboardShortcutBinder;
@@ -192,7 +194,7 @@
assert.equal(element.selectedIndex, 2);
assert.isTrue(elementItems[2].hasAttribute('selected'));
- const navStub = sandbox.stub(Gerrit.Nav, 'navigateToChange');
+ const navStub = sandbox.stub(GerritNav, 'navigateToChange');
assert.equal(element.selectedIndex, 2);
MockInteractions.pressAndReleaseKeyOn(element, 13, null, 'enter');
assert.deepEqual(navStub.lastCall.args[0], {_number: 2},
@@ -559,7 +561,7 @@
assert.equal(element.selectedIndex, 1);
MockInteractions.pressAndReleaseKeyOn(element, 74); // 'j'
- const navStub = sandbox.stub(Gerrit.Nav, 'navigateToChange');
+ const navStub = sandbox.stub(GerritNav, 'navigateToChange');
assert.equal(element.selectedIndex, 2);
MockInteractions.pressAndReleaseKeyOn(element, 13); // 'enter'
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 e9ddd1e..8b8b981 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
@@ -33,6 +33,7 @@
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-dashboard-view_html.js';
import {RESTClientBehavior} from '../../../behaviors/rest-client-behavior/rest-client-behavior.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
const PROJECT_PLACEHOLDER_PATTERN = /\$\{project\}/g;
@@ -155,7 +156,7 @@
}
_isViewActive(params) {
- return params.view === Gerrit.Nav.View.DASHBOARD;
+ return params.view === GerritNav.View.DASHBOARD;
}
_paramsChanged(paramsChangeRecord) {
@@ -178,7 +179,7 @@
const {project, dashboard, title, user, sections} = this.params;
const dashboardPromise = project ?
this._getProjectDashboard(project, dashboard) :
- Promise.resolve(Gerrit.Nav.getUserDashboard(
+ Promise.resolve(GerritNav.getUserDashboard(
user,
sections,
title || this._computeTitle(user)));
@@ -319,7 +320,7 @@
}
_computeDraftsLink() {
- return Gerrit.Nav.getUrlForSearchQuery('has:draft -is:open');
+ return GerritNav.getUrlForSearchQuery('has:draft -is:open');
}
_createChangeTap(e) {
diff --git a/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view_test.html b/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view_test.html
index 9e9a8f2..19742a5 100644
--- a/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view_test.html
@@ -34,6 +34,8 @@
import '../../../test/common-test-setup.js';
import './gr-dashboard-view.js';
import {isHidden} from '../../../test/test-utils.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
+
suite('gr-dashboard-view tests', () => {
let element;
let sandbox;
@@ -186,7 +188,7 @@
test('content is refreshed when user param is updated', () => {
element.params = {
- view: Gerrit.Nav.View.DASHBOARD,
+ view: GerritNav.View.DASHBOARD,
user: 'self',
};
return paramsChangedPromise.then(() => {
@@ -198,7 +200,7 @@
suite('selfOnly sections', () => {
test('viewing self dashboard includes selfOnly sections', () => {
element.params = {
- view: Gerrit.Nav.View.DASHBOARD,
+ view: GerritNav.View.DASHBOARD,
sections: [
{query: '1'},
{query: '2', selfOnly: true},
@@ -213,7 +215,7 @@
test('viewing another user\'s dashboard omits selfOnly sections', () => {
element.params = {
- view: Gerrit.Nav.View.DASHBOARD,
+ view: GerritNav.View.DASHBOARD,
sections: [
{query: '1'},
{query: '2', selfOnly: true},
@@ -228,7 +230,7 @@
test('suffixForDashboard is included in getChanges query', () => {
element.params = {
- view: Gerrit.Nav.View.DASHBOARD,
+ view: GerritNav.View.DASHBOARD,
sections: [
{query: '1'},
{query: '2', suffixForDashboard: 'suffix'},
@@ -357,7 +359,7 @@
done();
});
element.params = {
- view: Gerrit.Nav.View.DASHBOARD,
+ view: GerritNav.View.DASHBOARD,
project: 'project',
dashboard: 'dashboard',
};
@@ -366,7 +368,7 @@
test('params change triggers dashboardDisplayed()', () => {
sandbox.stub(element.$.reporting, 'dashboardDisplayed');
element.params = {
- view: Gerrit.Nav.View.DASHBOARD,
+ view: GerritNav.View.DASHBOARD,
project: 'project',
dashboard: 'dashboard',
};
diff --git a/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header.js b/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header.js
index e9a0387..5f0021e 100644
--- a/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header.js
+++ b/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header.js
@@ -18,13 +18,13 @@
import '../../../styles/dashboard-header-styles.js';
import '../../../styles/shared-styles.js';
-import '../../core/gr-navigation/gr-navigation.js';
import '../../shared/gr-date-formatter/gr-date-formatter.js';
import '../../shared/gr-rest-api-interface/gr-rest-api-interface.js';
import {GestureEventListeners} from '@polymer/polymer/lib/mixins/gesture-event-listeners.js';
import {LegacyElementMixin} from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-repo-header_html.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
/** @extends Polymer.Element */
class GrRepoHeader extends GestureEventListeners(
@@ -51,7 +51,7 @@
this._repoUrl = null;
return;
}
- this._repoUrl = Gerrit.Nav.getUrlForRepo(repoName);
+ this._repoUrl = GerritNav.getUrlForRepo(repoName);
}
}
diff --git a/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header_test.html b/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header_test.html
index a075870..b0a8d1c 100644
--- a/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-repo-header/gr-repo-header_test.html
@@ -33,6 +33,8 @@
<script type="module">
import '../../../test/common-test-setup.js';
import './gr-repo-header.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
+
suite('gr-repo-header tests', () => {
let element;
let sandbox;
@@ -45,7 +47,7 @@
teardown(() => { sandbox.restore(); });
test('repoUrl reset once repo changed', () => {
- sandbox.stub(Gerrit.Nav, 'getUrlForRepo',
+ sandbox.stub(GerritNav, 'getUrlForRepo',
repoName => `http://test.com/${repoName}`
);
assert.equal(element._repoUrl, undefined);
diff --git a/polygerrit-ui/app/elements/change-list/gr-user-header/gr-user-header.js b/polygerrit-ui/app/elements/change-list/gr-user-header/gr-user-header.js
index 3fc4291..6bb1bf8 100644
--- a/polygerrit-ui/app/elements/change-list/gr-user-header/gr-user-header.js
+++ b/polygerrit-ui/app/elements/change-list/gr-user-header/gr-user-header.js
@@ -17,7 +17,6 @@
import '../../../scripts/bundled-polymer.js';
import '../../../styles/shared-styles.js';
-import '../../core/gr-navigation/gr-navigation.js';
import '../../plugins/gr-endpoint-decorator/gr-endpoint-decorator.js';
import '../../plugins/gr-endpoint-param/gr-endpoint-param.js';
import '../../shared/gr-avatar/gr-avatar.js';
@@ -28,6 +27,7 @@
import {LegacyElementMixin} from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-user-header_html.js';
+import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
/**
* @extends Polymer.Element
@@ -105,7 +105,7 @@
const id = accountDetails._account_id;
const email = accountDetails.email;
if (!id && !email ) { return null; }
- return Gerrit.Nav.getUrlForUserDashboard(id ? id : email);
+ return GerritNav.getUrlForUserDashboard(id ? id : email);
}
_computeDashboardLinkClass(showDashboardLink, loggedIn) {