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();
}
}