Merge branch 'main' into avm99963-monorail

Merged commit 34d8229ae2b51fb1a15bd208e6fe6185c94f6266

GitOrigin-RevId: 7ee0917f93a577e475f8e09526dd144d245593f4
diff --git a/static_src/elements/framework/mr-header/mr-header.js b/static_src/elements/framework/mr-header/mr-header.js
index 5b9defa..b29db00 100644
--- a/static_src/elements/framework/mr-header/mr-header.js
+++ b/static_src/elements/framework/mr-header/mr-header.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -15,6 +15,7 @@
 import '../mr-dropdown/mr-account-dropdown.js';
 import './mr-search-bar.js';
 
+import {generateProjectIssueURL} from 'shared/helpers.js';
 import {SHARED_STYLES} from 'shared/shared-styles.js';
 
 import {logEvent} from 'monitoring/client-logger.js';
@@ -147,7 +148,7 @@
         .queryParams=${this.queryParams}
         .issueEntryUrl=${this.issueEntryUrl}
       ></mr-keystrokes>
-      <a href="/p/${this.projectName}/issues/list" class="home-link">
+      <a href="${generateProjectIssueURL(this.projectName, '/list')}" class="home-link">
         ${this.projectThumbnailUrl ? html`
           <img
             class="project-logo"
@@ -338,9 +339,9 @@
     const mayBeRedirectedToWizard = role === projectRoles.NONE;
     if (!this.userDisplayName || !config || !config.customIssueEntryUrl ||
         !mayBeRedirectedToWizard) {
-      return `/p/${this.projectName}/issues/entry`;
+      return generateProjectIssueURL(this.projectName, '/entry');
     }
-
+    //TODO(monorail/12012) redirec to tracker once new chromium wizard is ready.
     return `/p/${this.projectName}/issues/wizard`;
   }
 
@@ -365,7 +366,7 @@
       items.push({text: 'My Projects', separator: true});
 
       projects.forEach((project) => {
-        items.push({text: project, url: `/p/${project}/issues/list`});
+        items.push({text: project, url: generateProjectIssueURL(project, '/list')});
       });
     }
 
@@ -374,7 +375,7 @@
       items.push({text: 'Starred Projects', separator: true});
 
       starredProjects.forEach((project) => {
-        items.push({text: project, url: `/p/${project}/issues/list`});
+        items.push({text: project, url: generateProjectIssueURL(project, '/list')});
       });
     }
 
diff --git a/static_src/elements/framework/mr-header/mr-header.test.js b/static_src/elements/framework/mr-header/mr-header.test.js
index e290584..49e7bab 100644
--- a/static_src/elements/framework/mr-header/mr-header.test.js
+++ b/static_src/elements/framework/mr-header/mr-header.test.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -161,12 +161,13 @@
     });
   });
 
+  // TODO(b/283983843): Prefix project names with "mock".
   it('_projectDropdownItems computes projects for user', () => {
     element.userProjects = {
       ownerOf: ['chromium'],
       memberOf: ['v8'],
-      contributorTo: ['skia'],
-      starredProjects: ['gerrit'],
+      contributorTo: ['mockskia'],
+      starredProjects: ['mockgerrit'],
     };
     element.userDisplayName = 'test@example.com';
 
@@ -177,13 +178,13 @@
     // My Projects
     assert.equal(items[1].text, 'chromium');
     assert.equal(items[1].url, '/p/chromium/issues/list');
-    assert.equal(items[2].text, 'skia');
-    assert.equal(items[2].url, '/p/skia/issues/list');
+    assert.equal(items[2].text, 'mockskia');
+    assert.equal(items[2].url, '/p/mockskia/issues/list');
     assert.equal(items[3].text, 'v8');
     assert.equal(items[3].url, '/p/v8/issues/list');
 
     // Starred Projects
-    assert.equal(items[5].text, 'gerrit');
-    assert.equal(items[5].url, '/p/gerrit/issues/list');
+    assert.equal(items[5].text, 'mockgerrit');
+    assert.equal(items[5].url, '/p/mockgerrit/issues/list');
   });
 });
diff --git a/static_src/elements/framework/mr-header/mr-search-bar.js b/static_src/elements/framework/mr-header/mr-search-bar.js
index 536dfcf..5156c01 100644
--- a/static_src/elements/framework/mr-header/mr-search-bar.js
+++ b/static_src/elements/framework/mr-header/mr-search-bar.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
diff --git a/static_src/elements/framework/mr-header/mr-search-bar.test.js b/static_src/elements/framework/mr-header/mr-search-bar.test.js
index c758a41..d8db788 100644
--- a/static_src/elements/framework/mr-header/mr-search-bar.test.js
+++ b/static_src/elements/framework/mr-header/mr-search-bar.test.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.