diff --git a/aconfig/settings_bluetooth_declarations.aconfig b/aconfig/settings_bluetooth_declarations.aconfig index b8b9d9fe569..f6c271c38e9 100644 --- a/aconfig/settings_bluetooth_declarations.aconfig +++ b/aconfig/settings_bluetooth_declarations.aconfig @@ -31,3 +31,13 @@ flag { 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 33e6fc3ccbd..e6b197c4d81 100644 --- a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java +++ b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java @@ -41,6 +41,7 @@ import androidx.appcompat.app.AlertDialog; 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 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i @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(); } }