Convert `checksRunsSelected` state from array to set

Release-Notes: skip
Change-Id: Icaf33559fe3b4e924a2514ed8debcabbc95a8204
diff --git a/polygerrit-ui/app/elements/checks/gr-checks-results.ts b/polygerrit-ui/app/elements/checks/gr-checks-results.ts
index 4530631..848948f 100644
--- a/polygerrit-ui/app/elements/checks/gr-checks-results.ts
+++ b/polygerrit-ui/app/elements/checks/gr-checks-results.ts
@@ -768,7 +768,7 @@
    * is empty, then no run is selected and all runs should be shown.
    */
   @state()
-  selectedRuns: string[] = [];
+  selectedRuns: Set<string> = new Set();
 
   @state()
   actions: Action[] = [];
@@ -1304,10 +1304,7 @@
   }
 
   isRunSelected(run: {checkName: string}) {
-    return (
-      this.selectedRuns.length === 0 ||
-      this.selectedRuns.includes(run.checkName)
-    );
+    return this.selectedRuns.size === 0 || this.selectedRuns.has(run.checkName);
   }
 
   renderFilter() {
@@ -1316,7 +1313,7 @@
         this.isRunSelected(run) && isAttemptSelected(this.selectedAttempt, run)
     );
     if (
-      this.selectedRuns.length === 0 &&
+      this.selectedRuns.size === 0 &&
       allResults(runs).length <= 3 &&
       this.filterRegExp === ''
     ) {
@@ -1360,7 +1357,7 @@
       ],
       []
     );
-    const isSelectionActive = this.selectedRuns.length > 0;
+    const isSelectionActive = this.selectedRuns.size > 0;
     const selected = all.filter(result => this.isRunSelected(result));
     const re = new RegExp(this.filterRegExp, 'i');
     const filtered = selected.filter(result => matches(result, re));
diff --git a/polygerrit-ui/app/elements/checks/gr-checks-runs.ts b/polygerrit-ui/app/elements/checks/gr-checks-runs.ts
index b068426..128a9b0a 100644
--- a/polygerrit-ui/app/elements/checks/gr-checks-runs.ts
+++ b/polygerrit-ui/app/elements/checks/gr-checks-runs.ts
@@ -405,7 +405,7 @@
   collapsed = false;
 
   @state()
-  selectedRuns: string[] = [];
+  selectedRuns: Set<string> = new Set();
 
   @state()
   selectedAttempt: AttemptChoice = LATEST_ATTEMPT;
@@ -668,8 +668,8 @@
 
   private renderTitleButtons() {
     if (this.collapsed) return;
-    if (this.selectedRuns.length < 2) return;
-    const actions = this.selectedRuns.map(selected => {
+    if (this.selectedRuns.size < 2) return;
+    const actions = [...this.selectedRuns].map(selected => {
       const run = this.runs.find(
         run => run.isLatestAttempt && run.checkName === selected
       );
@@ -685,7 +685,7 @@
         class="font-normal"
         link
         @click=${() =>
-          this.getViewModel().updateState({checksRunsSelected: []})}
+          this.getViewModel().updateState({checksRunsSelected: undefined})}
         >Unselect All</gr-button
       >
       <gr-tooltip-content
@@ -829,8 +829,8 @@
   }
 
   renderRun(run: CheckRun) {
-    const selectedRun = this.selectedRuns.includes(run.checkName);
-    const deselected = !selectedRun && this.selectedRuns.length > 0;
+    const selectedRun = this.selectedRuns.has(run.checkName);
+    const deselected = !selectedRun && this.selectedRuns.size > 0;
     return html`<gr-checks-run
       .run=${run}
       ?condensed=${this.collapsed}
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 0c9b6302..f829313 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
@@ -1411,7 +1411,7 @@
     const attempt = stringToAttemptChoice(queryMap.get('attempt'));
     if (attempt && attempt !== LATEST_ATTEMPT) state.attempt = attempt;
     const selected = queryMap.get('checksRunsSelected');
-    if (selected) state.checksRunsSelected = selected.split(',');
+    if (selected) state.checksRunsSelected = new Set(selected.split(','));
 
     assertIsDefined(state.project, 'project');
     this.reporting.setRepoName(state.project);
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 5c5e67d..119ba48 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
@@ -1161,7 +1161,7 @@
             attempt: 1,
             filter: 'fff',
             tab: 'checks',
-            checksRunsSelected: ['asdf', 'qwer'],
+            checksRunsSelected: new Set(['asdf', 'qwer']),
             checksResultsFilter: 'asdf.*qwer',
           });
         });