Refactor root navigation to generated URL

Change-Id: If969604814d3f2e859932f8a3bc26d14d22eac73
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 243ebf1..e905e038 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
@@ -961,9 +961,10 @@
     },
 
     _determinePageBack() {
-      // Default backPage to '/' if user came to change view page
+      // Default backPage to root if user came to change view page
       // via an email link, etc.
-      Gerrit.Nav.navigateToRelativeUrl(this.backPage || '/');
+      Gerrit.Nav.navigateToRelativeUrl(this.backPage ||
+          Gerrit.Nav.getUrlForRoot());
     },
 
     _handleLabelRemoved(splices, path) {
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
index af87a7e..b5b8cd9 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
@@ -89,12 +89,13 @@
         assert(starStub.called);
       });
 
-      test('U should navigate to / if no backPage set', () => {
+      test('U should navigate to root if no backPage set', () => {
         const relativeNavStub = sandbox.stub(Gerrit.Nav,
             'navigateToRelativeUrl');
         MockInteractions.pressAndReleaseKeyOn(element, 85, null, 'u');
         assert.isTrue(relativeNavStub.called);
-        assert.isTrue(relativeNavStub.lastCall.calledWithExactly('/'));
+        assert.isTrue(relativeNavStub.lastCall.calledWithExactly(
+            Gerrit.Nav.getUrlForRoot()));
       });
 
       test('U should navigate to backPage if set', () => {
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 dfe5410..a700ccd 100644
--- a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.html
+++ b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.html
@@ -70,6 +70,9 @@
     //    - `repoName`, required, String: the name of the repo
     //    - `detail`, optional, String: the name of the repo detail view.
     //      Takes any value from Gerrit.Nav.RepoDetailView.
+    //
+    //  - Gerrit.Nav.View.ROOT:
+    //    - no possible parameters.
 
 
     window.Gerrit = window.Gerrit || {};
@@ -96,6 +99,7 @@
         GROUP: 'group',
         PLUGIN_SCREEN: 'plugin-screen',
         REPO: 'repo',
+        ROOT: 'root',
         SEARCH: 'search',
         SETTINGS: 'settings',
       },
@@ -412,6 +416,15 @@
       },
 
       /**
+       * @return {string}
+       */
+      getUrlForRoot() {
+        return this._getUrlFor({
+          view: Gerrit.Nav.View.ROOT,
+        });
+      },
+
+      /**
        * @param {string} repo The name of the repo.
        * @param {!Array} sections The sections to display in the dashboard
        * @return {string}
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.js b/polygerrit-ui/app/elements/core/gr-router/gr-router.js
index 3b4f1ec..a72feb1 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.js
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.js
@@ -248,6 +248,8 @@
         url = this._generateGroupUrl(params);
       } else if (params.view === Views.REPO) {
         url = this._generateRepoUrl(params);
+      } else if (params.view === Views.ROOT) {
+        url = '/';
       } else if (params.view === Views.SETTINGS) {
         url = this._generateSettingsUrl(params);
       } else {