Merge changes I8d96942a,Id8659d93,Icfa8b8b0

* changes:
  Replace `GenerateUrlSettingsViewParameters` by `SettingsViewState`
  Remove GerritView.ROOT
  Use view state objects in `GenerateUrlParameters`
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts
index e2b81ba..a20a389 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts
+++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts
@@ -42,10 +42,9 @@
 import {customElement, property, state} from 'lit/decorators.js';
 import {ifDefined} from 'lit/directives/if-defined.js';
 import {ValueChangedEvent} from '../../../types/events';
-import {GroupDetailView, RepoDetailView} from '../../../utils/router-util';
 import {AdminChildView, AdminViewState} from '../../../models/views/admin';
-import {GroupViewState} from '../../../models/views/group';
-import {RepoViewState} from '../../../models/views/repo';
+import {GroupDetailView, GroupViewState} from '../../../models/views/group';
+import {RepoDetailView, RepoViewState} from '../../../models/views/repo';
 
 const INTERNAL_GROUP_REGEX = /^[\da-f]{40}$/;
 
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts
index 3ee7e0a..2bace2c 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts
@@ -20,9 +20,10 @@
 import {GroupId, GroupName, RepoName, Timestamp} from '../../../types/common';
 import {GrDropdownList} from '../../shared/gr-dropdown-list/gr-dropdown-list';
 import {GrGroup} from '../gr-group/gr-group';
-import {GroupDetailView, RepoDetailView} from '../../../utils/router-util';
 import {fixture, html, assert} from '@open-wc/testing';
 import {AdminChildView} from '../../../models/views/admin';
+import {GroupDetailView} from '../../../models/views/group';
+import {RepoDetailView} from '../../../models/views/repo';
 
 function createAdminCapabilities() {
   return {
diff --git a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts
index ee8be03..889a859 100644
--- a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts
+++ b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts
@@ -16,7 +16,7 @@
 import {customElement, property, state} from 'lit/decorators.js';
 import {BindValueChangeEvent} from '../../../types/events';
 import {fireEvent} from '../../../utils/event-util';
-import {RepoDetailView} from '../../../utils/router-util';
+import {RepoDetailView} from '../../../models/views/repo';
 
 declare global {
   interface HTMLElementTagNameMap {
diff --git a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts
index 6188b5f..9e455d1 100644
--- a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts
@@ -13,8 +13,8 @@
 } from '../../../test/test-utils';
 import {BranchName} from '../../../types/common';
 import {IronInputElement} from '@polymer/iron-input';
-import {RepoDetailView} from '../../../utils/router-util';
 import {fixture, html, assert} from '@open-wc/testing';
+import {RepoDetailView} from '../../../models/views/repo';
 
 suite('gr-create-pointer-dialog tests', () => {
   let element: GrCreatePointerDialog;
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts
index cec6fde..86d4bc5 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts
+++ b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts
@@ -36,8 +36,7 @@
 import {BindValueChangeEvent} from '../../../types/events';
 import {assertIsDefined} from '../../../utils/common-util';
 import {ifDefined} from 'lit/directives/if-defined.js';
-import {RepoDetailView} from '../../../utils/router-util';
-import {RepoViewState} from '../../../models/views/repo';
+import {RepoDetailView, RepoViewState} from '../../../models/views/repo';
 
 const PGP_START = '-----BEGIN PGP SIGNATURE-----';
 
@@ -407,7 +406,7 @@
     repo: RepoName | undefined,
     itemsPerPage: number,
     offset: number | undefined,
-    detailType: string
+    detailType?: string
   ) {
     if (filter === undefined || !repo || offset === undefined) {
       return Promise.reject(new Error('filter or repo or offset undefined'));
@@ -514,7 +513,7 @@
           this.repo,
           this.itemsPerPage,
           this.offset,
-          this.detailType!
+          this.detailType
         );
       }
     });
@@ -547,7 +546,7 @@
               this.repo,
               this.itemsPerPage,
               this.offset,
-              this.detailType!
+              this.detailType
             );
           }
         });
@@ -561,7 +560,7 @@
               this.repo,
               this.itemsPerPage,
               this.offset,
-              this.detailType!
+              this.detailType
             );
           }
         });
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts
index bbdf99c..13f6b2b 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts
@@ -34,8 +34,8 @@
 import {GrDialog} from '../../shared/gr-dialog/gr-dialog';
 import {GrListView} from '../../shared/gr-list-view/gr-list-view';
 import {SHOWN_ITEMS_COUNT} from '../../../constants/constants';
-import {RepoDetailView} from '../../../utils/router-util';
 import {fixture, html, assert} from '@open-wc/testing';
+import {RepoDetailView} from '../../../models/views/repo';
 
 function branchGenerator(counter: number) {
   return {
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
index a4348a9..93d5d1f 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
@@ -104,6 +104,7 @@
 import {customElement, property, query, state} from 'lit/decorators.js';
 import {ifDefined} from 'lit/directives/if-defined.js';
 import {assertIsDefined, queryAll} from '../../../utils/common-util';
+import {rootUrl} from '../../../utils/router-util';
 
 const ERR_BRANCH_EMPTY = 'The destination branch can’t be empty.';
 const ERR_COMMIT_EMPTY = 'The commit message can’t be empty.';
@@ -1844,7 +1845,7 @@
         }
         case ChangeActions.DELETE:
           if (action.__type === ActionType.CHANGE) {
-            GerritNav.navigateToRelativeUrl(GerritNav.getUrlForRoot());
+            GerritNav.navigateToRelativeUrl(rootUrl());
           }
           break;
         case ChangeActions.WIP:
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index dbd8011..5d82daf 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -182,6 +182,7 @@
 import {CopyLink, GrCopyLinks} from '../gr-copy-links/gr-copy-links';
 import {KnownExperimentId} from '../../../services/flags/flags';
 import {ChangeViewState} from '../../../models/views/change';
+import {rootUrl} from '../../../utils/router-util';
 
 const MIN_LINES_FOR_COMMIT_COLLAPSE = 18;
 
@@ -2592,7 +2593,7 @@
   private determinePageBack() {
     // Default backPage to root if user came to change view page
     // via an email link, etc.
-    GerritNav.navigateToRelativeUrl(this.backPage || GerritNav.getUrlForRoot());
+    GerritNav.navigateToRelativeUrl(this.backPage || rootUrl());
   }
 
   private handleLabelRemoved(
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
index a4b185a..cb9f5dc 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
@@ -99,6 +99,7 @@
 import {GrButton} from '../../shared/gr-button/gr-button';
 import {GrCopyLinks} from '../gr-copy-links/gr-copy-links';
 import {ChangeViewState} from '../../../models/views/change';
+import {rootUrl} from '../../../utils/router-util';
 
 suite('gr-change-view tests', () => {
   let element: GrChangeView;
@@ -811,9 +812,7 @@
       const relativeNavStub = sinon.stub(GerritNav, 'navigateToRelativeUrl');
       pressKey(element, 'u');
       assert.isTrue(relativeNavStub.called);
-      assert.isTrue(
-        relativeNavStub.lastCall.calledWithExactly(GerritNav.getUrlForRoot())
-      );
+      assert.isTrue(relativeNavStub.lastCall.calledWithExactly(rootUrl()));
     });
 
     test('U should navigate to backPage if set', () => {
diff --git a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
index 46cb2f0..2b74e97 100644
--- a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
+++ b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
@@ -28,9 +28,9 @@
 import {
   DashboardSection,
   GenerateUrlParameters,
-  GroupDetailView,
-  RepoDetailView,
 } from '../../../utils/router-util';
+import {RepoDetailView} from '../../../models/views/repo';
+import {GroupDetailView} from '../../../models/views/group';
 
 // Navigation parameters object format:
 //
@@ -604,12 +604,6 @@
     });
   },
 
-  getUrlForRoot() {
-    return this._getUrlFor({
-      view: GerritView.ROOT,
-    });
-  },
-
   /**
    * @param repo The name of the repo.
    * @param dashboard The ID of the dashboard, in the form of '<ref>:<path>'.
@@ -617,7 +611,7 @@
   getUrlForRepoDashboard(repo: RepoName, dashboard: DashboardId) {
     return this._getUrlFor({
       view: GerritView.DASHBOARD,
-      repo,
+      project: repo,
       dashboard,
     });
   },
@@ -632,11 +626,11 @@
     this._navigate(relativeUrl);
   },
 
-  getUrlForRepo(repoName: RepoName) {
+  getUrlForRepo(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
       detail: RepoDetailView.GENERAL,
-      repoName,
+      repo,
     });
   },
 
@@ -647,42 +641,42 @@
     this._navigate(this.getUrlForRepo(repoName));
   },
 
-  getUrlForRepoTags(repoName: RepoName) {
+  getUrlForRepoTags(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.TAGS,
     });
   },
 
-  getUrlForRepoBranches(repoName: RepoName) {
+  getUrlForRepoBranches(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.BRANCHES,
     });
   },
 
-  getUrlForRepoAccess(repoName: RepoName) {
+  getUrlForRepoAccess(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.ACCESS,
     });
   },
 
-  getUrlForRepoCommands(repoName: RepoName) {
+  getUrlForRepoCommands(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.COMMANDS,
     });
   },
 
-  getUrlForRepoDashboards(repoName: RepoName) {
+  getUrlForRepoDashboards(repo: RepoName) {
     return this._getUrlFor({
       view: GerritView.REPO,
-      repoName,
+      repo,
       detail: RepoDetailView.DASHBOARDS,
     });
   },
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
index 804a2fd..9719c99 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
@@ -50,8 +50,6 @@
   GenerateUrlChangeViewParameters,
   GenerateUrlDiffViewParameters,
   GenerateUrlParameters,
-  GroupDetailView,
-  RepoDetailView,
 } from '../../../utils/router-util';
 import {
   LATEST_ATTEMPT,
@@ -59,6 +57,8 @@
 } from '../../../models/checks/checks-util';
 import {AdminChildView} from '../../../models/views/admin';
 import {AgreementViewState} from '../../../models/views/agreement';
+import {RepoDetailView} from '../../../models/views/repo';
+import {GroupDetailView} from '../../../models/views/group';
 
 const RoutePattern = {
   ROOT: '/',
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
index af67b2a..5f8c278 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
@@ -38,13 +38,13 @@
 import {AppElementParams} from '../../gr-app-types';
 import {
   GenerateUrlParameters,
-  GroupDetailView,
   GenerateUrlEditViewParameters,
   GenerateUrlChangeViewParameters,
-  RepoDetailView,
 } from '../../../utils/router-util';
 import {assert} from '@open-wc/testing';
 import {AdminChildView} from '../../../models/views/admin';
+import {RepoDetailView} from '../../../models/views/repo';
+import {GroupDetailView} from '../../../models/views/group';
 
 suite('gr-router tests', () => {
   let router: GrRouter;
diff --git a/polygerrit-ui/app/services/router/router-model.ts b/polygerrit-ui/app/services/router/router-model.ts
index fbf1fa7..8b3b0b8 100644
--- a/polygerrit-ui/app/services/router/router-model.ts
+++ b/polygerrit-ui/app/services/router/router-model.ts
@@ -24,7 +24,6 @@
   GROUP = 'group',
   PLUGIN_SCREEN = 'plugin-screen',
   REPO = 'repo',
-  ROOT = 'root',
   SEARCH = 'search',
   SETTINGS = 'settings',
 }
diff --git a/polygerrit-ui/app/utils/admin-nav-util.ts b/polygerrit-ui/app/utils/admin-nav-util.ts
index e559467..d2bad06 100644
--- a/polygerrit-ui/app/utils/admin-nav-util.ts
+++ b/polygerrit-ui/app/utils/admin-nav-util.ts
@@ -13,8 +13,9 @@
 import {hasOwnProperty} from './common-util';
 import {GerritView} from '../services/router/router-model';
 import {MenuLink} from '../api/admin';
-import {GroupDetailView, RepoDetailView} from './router-util';
 import {AdminChildView} from '../models/views/admin';
+import {GroupDetailView} from '../models/views/group';
+import {RepoDetailView} from '../models/views/repo';
 
 const ADMIN_LINKS: NavLink[] = [
   {
diff --git a/polygerrit-ui/app/utils/router-util.ts b/polygerrit-ui/app/utils/router-util.ts
index 97e9ae0..4c1003f 100644
--- a/polygerrit-ui/app/utils/router-util.ts
+++ b/polygerrit-ui/app/utils/router-util.ts
@@ -7,8 +7,6 @@
   BasePatchSetNum,
   BranchName,
   ChangeInfo,
-  DashboardId,
-  GroupId,
   NumericChangeId,
   PARENT,
   RepoName,
@@ -22,6 +20,10 @@
 import {GerritView} from '../services/router/router-model';
 import {addQuotesWhen} from './string-util';
 import {AttemptChoice} from '../models/checks/checks-util';
+import {GroupDetailView, GroupViewState} from '../models/views/group';
+import {DashboardViewState} from '../models/views/dashboard';
+import {RepoDetailView, RepoViewState} from '../models/views/repo';
+import {SettingsViewState} from '../models/views/settings';
 
 export interface DashboardSection {
   name: string;
@@ -32,20 +34,6 @@
   results?: ChangeInfo[];
 }
 
-export enum GroupDetailView {
-  MEMBERS = 'members',
-  LOG = 'log',
-}
-
-export enum RepoDetailView {
-  GENERAL = 'general',
-  ACCESS = 'access',
-  BRANCHES = 'branches',
-  COMMANDS = 'commands',
-  DASHBOARDS = 'dashboards',
-  TAGS = 'tags',
-}
-
 export interface GenerateUrlSearchViewParameters {
   view: GerritView.SEARCH;
   query?: string;
@@ -79,30 +67,6 @@
   usp?: string;
 }
 
-export interface GenerateUrlRepoViewParameters {
-  view: GerritView.REPO;
-  repoName: RepoName;
-  detail?: RepoDetailView;
-}
-
-export interface GenerateUrlDashboardViewParameters {
-  view: GerritView.DASHBOARD;
-  user?: string;
-  repo?: RepoName;
-  dashboard?: DashboardId;
-
-  // TODO(TS): properties bellow aren't set anywhere, try to remove
-  project?: RepoName;
-  sections?: DashboardSection[];
-  title?: string;
-}
-
-export interface GenerateUrlGroupViewParameters {
-  view: GerritView.GROUP;
-  groupId: GroupId;
-  detail?: GroupDetailView;
-}
-
 export interface GenerateUrlEditViewParameters {
   view: GerritView.EDIT;
   changeNum: NumericChangeId;
@@ -112,14 +76,6 @@
   lineNum?: number | string;
 }
 
-export interface GenerateUrlRootViewParameters {
-  view: GerritView.ROOT;
-}
-
-export interface GenerateUrlSettingsViewParameters {
-  view: GerritView.SETTINGS;
-}
-
 export interface GenerateUrlDiffViewParameters {
   view: GerritView.DIFF;
   changeNum: NumericChangeId;
@@ -137,12 +93,11 @@
 export type GenerateUrlParameters =
   | GenerateUrlSearchViewParameters
   | GenerateUrlChangeViewParameters
-  | GenerateUrlRepoViewParameters
-  | GenerateUrlDashboardViewParameters
-  | GenerateUrlGroupViewParameters
+  | RepoViewState
+  | DashboardViewState
+  | GroupViewState
   | GenerateUrlEditViewParameters
-  | GenerateUrlRootViewParameters
-  | GenerateUrlSettingsViewParameters
+  | SettingsViewState
   | GenerateUrlDiffViewParameters;
 
 export function isGenerateUrlChangeViewParameters(
@@ -167,6 +122,10 @@
   getPatchRangeExpression,
 };
 
+export function rootUrl() {
+  return `${getBaseUrl()}/`;
+}
+
 export function generateUrl(params: GenerateUrlParameters) {
   const base = getBaseUrl();
   let url = '';
@@ -186,8 +145,6 @@
     url = generateGroupUrl(params);
   } else if (params.view === GerritView.REPO) {
     url = generateRepoUrl(params);
-  } else if (params.view === GerritView.ROOT) {
-    url = '/';
   } else if (params.view === GerritView.SETTINGS) {
     url = generateSettingsUrl();
   } else {
@@ -265,8 +222,8 @@
   });
 }
 
-function generateDashboardUrl(params: GenerateUrlDashboardViewParameters) {
-  const repoName = params.repo || params.project || undefined;
+function generateDashboardUrl(params: DashboardViewState) {
+  const repoName = params.project || undefined;
   if (params.sections) {
     // Custom dashboard.
     const queryParams = sectionsToEncodedParams(params.sections, repoName);
@@ -374,7 +331,7 @@
   }
 }
 
-function generateGroupUrl(params: GenerateUrlGroupViewParameters) {
+function generateGroupUrl(params: GroupViewState) {
   let url = `/admin/groups/${encodeURL(`${params.groupId}`, true)}`;
   if (params.detail === GroupDetailView.MEMBERS) {
     url += ',members';
@@ -384,8 +341,8 @@
   return url;
 }
 
-function generateRepoUrl(params: GenerateUrlRepoViewParameters) {
-  let url = `/admin/repos/${encodeURL(`${params.repoName}`, true)}`;
+function generateRepoUrl(params: RepoViewState) {
+  let url = `/admin/repos/${encodeURL(`${params.repo}`, true)}`;
   if (params.detail === RepoDetailView.GENERAL) {
     url += ',general';
   } else if (params.detail === RepoDetailView.ACCESS) {
diff --git a/polygerrit-ui/app/utils/router-util_test.ts b/polygerrit-ui/app/utils/router-util_test.ts
index 60ac87b..161725c 100644
--- a/polygerrit-ui/app/utils/router-util_test.ts
+++ b/polygerrit-ui/app/utils/router-util_test.ts
@@ -15,18 +15,17 @@
   GroupId,
 } from '../api/rest-api';
 import {PatchRangeParams} from '../elements/core/gr-router/gr-router';
+import {DashboardViewState} from '../models/views/dashboard';
+import {GroupDetailView, GroupViewState} from '../models/views/group';
 import {GerritView} from '../services/router/router-model';
 import '../test/common-test-setup';
 import {DashboardId} from '../types/common';
 import {
   generateUrl,
   GenerateUrlChangeViewParameters,
-  GenerateUrlDashboardViewParameters,
   GenerateUrlDiffViewParameters,
   GenerateUrlEditViewParameters,
-  GenerateUrlGroupViewParameters,
   GenerateUrlSearchViewParameters,
-  GroupDetailView,
   TEST_ONLY,
 } from './router-util';
 
@@ -193,14 +192,14 @@
 
     suite('dashboard', () => {
       test('self dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
         };
         assert.equal(generateUrl(params), '/dashboard/self');
       });
 
       test('user dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           user: 'user',
         };
@@ -208,7 +207,7 @@
       });
 
       test('custom self dashboard, no title', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           sections: [
             {name: 'section 1', query: 'query 1'},
@@ -222,13 +221,13 @@
       });
 
       test('custom repo dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           sections: [
             {name: 'section 1', query: 'query 1 ${project}'},
             {name: 'section 2', query: 'query 2 ${repo}'},
           ],
-          repo: 'repo-name' as RepoName,
+          project: 'repo-name' as RepoName,
         };
         assert.equal(
           generateUrl(params),
@@ -238,7 +237,7 @@
       });
 
       test('custom user dashboard, with title', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           user: 'user',
           sections: [{name: 'name', query: 'query'}],
@@ -251,9 +250,9 @@
       });
 
       test('repo dashboard', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
-          repo: 'gerrit/repo' as RepoName,
+          project: 'gerrit/repo' as RepoName,
           dashboard: 'default:main' as DashboardId,
         };
         assert.equal(
@@ -263,7 +262,7 @@
       });
 
       test('project dashboard (legacy)', () => {
-        const params: GenerateUrlDashboardViewParameters = {
+        const params: DashboardViewState = {
           view: GerritView.DASHBOARD,
           project: 'gerrit/project' as RepoName,
           dashboard: 'default:main' as DashboardId,
@@ -277,7 +276,7 @@
 
     suite('groups', () => {
       test('group info', () => {
-        const params: GenerateUrlGroupViewParameters = {
+        const params: GroupViewState = {
           view: GerritView.GROUP,
           groupId: '1234' as GroupId,
         };
@@ -285,7 +284,7 @@
       });
 
       test('group members', () => {
-        const params: GenerateUrlGroupViewParameters = {
+        const params: GroupViewState = {
           view: GerritView.GROUP,
           groupId: '1234' as GroupId,
           detail: 'members' as GroupDetailView,
@@ -294,7 +293,7 @@
       });
 
       test('group audit log', () => {
-        const params: GenerateUrlGroupViewParameters = {
+        const params: GroupViewState = {
           view: GerritView.GROUP,
           groupId: '1234' as GroupId,
           detail: 'log' as GroupDetailView,