Make Rebase on behalf of uploader default value

This is under feature flag.

Release-Notes: skip
Google-Bug-Id: b/269731839
Change-Id: Ic34b6635a0114e8e59672bb96a4b65c5d7cc25c0
diff --git a/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.ts b/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.ts
index 5604b95..3982666 100644
--- a/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.ts
+++ b/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.ts
@@ -24,6 +24,9 @@
 import {throwingErrorCallback} from '../../shared/gr-rest-api-interface/gr-rest-apis/gr-rest-api-helper';
 import {fireNoBubbleNoCompose} from '../../../utils/event-util';
 import {KnownExperimentId} from '../../../services/flags/flags';
+import {resolve} from '../../../models/dependency';
+import {changeModelToken} from '../../../models/change/change-model';
+import {subscribe} from '../../lit/subscription-controller';
 
 export interface RebaseChange {
   name: string;
@@ -81,6 +84,12 @@
   @state()
   recentChanges?: RebaseChange[];
 
+  @state()
+  allowConflicts = false;
+
+  @state()
+  isOwner = false;
+
   @query('#rebaseOnParentInput')
   private rebaseOnParentInput!: HTMLInputElement;
 
@@ -90,9 +99,6 @@
   @query('#rebaseOnOtherInput')
   rebaseOnOtherInput!: HTMLInputElement;
 
-  @query('#rebaseOnBehalfOfUploader')
-  private rebaseOnBehalfOfUploader?: HTMLInputElement;
-
   @query('#rebaseAllowConflicts')
   private rebaseAllowConflicts!: HTMLInputElement;
 
@@ -106,9 +112,16 @@
 
   private readonly flagsService = getAppContext().flagsService;
 
+  private readonly getChangeModel = resolve(this, changeModelToken);
+
   constructor() {
     super();
     this.query = input => this.getChangeSuggestions(input);
+    subscribe(
+      this,
+      () => this.getChangeModel().isOwner$,
+      x => (this.isOwner = x)
+    );
   }
 
   override willUpdate(changedProperties: PropertyValues): void {
@@ -232,26 +245,31 @@
             >
             </gr-autocomplete>
           </div>
-          ${when(
-            this.flagsService.isEnabled(
-              KnownExperimentId.REBASE_ON_BEHALF_OF_UPLOADER
-            ),
-            () => html`
-              <div class="rebaseCheckbox">
-                <input id="rebaseOnBehalfOfUploader" type="checkbox" checked />
-                <label for="rebaseOnBehalfOfUploader"
-                  >Rebase on behalf of uploader</label
-                >
-              </div>
-            `
-          )}
           <div class="rebaseCheckbox">
-            <input id="rebaseAllowConflicts" type="checkbox" />
+            <input
+              id="rebaseAllowConflicts"
+              type="checkbox"
+              @change=${() => {
+                this.allowConflicts = !!this.rebaseAllowConflicts?.checked;
+              }}
+            />
             <label for="rebaseAllowConflicts"
               >Allow rebase with conflicts</label
             >
           </div>
           ${when(
+            this.flagsService.isEnabled(
+              KnownExperimentId.REBASE_ON_BEHALF_OF_UPLOADER
+            ) &&
+              !this.isOwner &&
+              this.allowConflicts,
+            () =>
+              html`<span class="message"
+                >Rebase cannot be done on behalf of the uploader when allowing
+                conflicts.</span
+              >`
+          )}
+          ${when(
             this.hasParent,
             () =>
               html`<div class="rebaseCheckbox">
@@ -371,12 +389,24 @@
       base: this.getSelectedBase(),
       allowConflicts: this.rebaseAllowConflicts.checked,
       rebaseChain: !!this.rebaseChain?.checked,
-      onBehalfOfUploader: !!this.rebaseOnBehalfOfUploader?.checked,
+      onBehalfOfUploader: this.rebaseOnBehalfOfUploader(),
     };
     fireNoBubbleNoCompose(this, 'confirm-rebase', detail);
     this.text = '';
   }
 
+  private rebaseOnBehalfOfUploader() {
+    if (
+      !this.flagsService.isEnabled(
+        KnownExperimentId.REBASE_ON_BEHALF_OF_UPLOADER
+      )
+    ) {
+      return false;
+    }
+    if (this.allowConflicts) return false;
+    return true;
+  }
+
   private handleCancelTap(e: Event) {
     e.preventDefault();
     e.stopPropagation();
diff --git a/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog_test.ts b/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog_test.ts
index 79d8647..3064014 100644
--- a/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog_test.ts
@@ -81,12 +81,6 @@
             </gr-autocomplete>
           </div>
           <div class="rebaseCheckbox">
-            <input id="rebaseOnBehalfOfUploader" type="checkbox" checked="" />
-            <label for="rebaseOnBehalfOfUploader">
-              Rebase on behalf of uploader
-            </label>
-          </div>
-          <div class="rebaseCheckbox">
             <input id="rebaseAllowConflicts" type="checkbox" />
             <label for="rebaseAllowConflicts">
               Allow rebase with conflicts