Do not cancel bonding during bt pairing when orientation happens.

Flag: com.android.settings.flags.disable_bonding_cancellation_for_orientation_change
Bug: b/349542301
Test: locally tested.
Change-Id: I56867eb39ca783b23853318c39e0f25ce1a80e6f
diff --git a/aconfig/settings_bluetooth_declarations.aconfig b/aconfig/settings_bluetooth_declarations.aconfig
index b8b9d9f..f6c271c 100644
--- a/aconfig/settings_bluetooth_declarations.aconfig
+++ b/aconfig/settings_bluetooth_declarations.aconfig
@@ -31,3 +31,13 @@
   description: "Gates whether to enable bluetooth device details polish"
   bug: "343317785"
 }
+
+flag {
+  name: "disable_bonding_cancellation_for_orientation_change"
+  namespace: "cross_device_experiences"
+  description: "Stop cancelling bonding process when there is an orientation change"
+  bug: "349542301"
+  metadata {
+      purpose: PURPOSE_BUGFIX
+  }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
index 33e6fc3..e6b197c 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
@@ -41,6 +41,7 @@
 
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.flags.Flags;
 
 /**
  * A dialogFragment used by {@link BluetoothPairingDialog} to create an appropriately styled dialog
@@ -87,12 +88,15 @@
     @Override
     public void onDestroy() {
         super.onDestroy();
-        if (mPairingController.getDialogType()
-                != BluetoothPairingController.DISPLAY_PASSKEY_DIALOG) {
-            /* Cancel pairing unless explicitly accepted by user */
-            if (!mPositiveClicked) {
-                mPairingController.onCancel();
-            }
+        /* Cancel pairing unless 1) explicitly accepted by user 2) the event is triggered by
+         * orientation change. */
+        boolean shouldCancelPairing =
+                Flags.disableBondingCancellationForOrientationChange()
+                        ? !mPositiveClicked && !getActivity().isChangingConfigurations()
+                        : !mPositiveClicked;
+        if (mPairingController.getDialogType() != BluetoothPairingController.DISPLAY_PASSKEY_DIALOG
+                && shouldCancelPairing) {
+            mPairingController.onCancel();
         }
     }