Don't cancel passkey entry pairing autonomously

Bluetooth pairing is cancelled if the pairing popup is closed without
explicitly accepting the pairing. However there is no way to
explicitly accept the pairing when the local device displays for the
passkey entry or pin key entry pairing method.
As a result all passkey entry and pin key entry pairings, where the
local device is displaying the value, are cancelled after the pairing
is successful. If the BT stack has not completed the SDP search when
the pairing is cancelled after successful pairing, it may result in
removal of the bond information.

Bug: 237757124
Test: Pair with BT HID keyboard; adb logcat | grep "BTPairingController:
Pairing dialog canceled"

Change-Id: Ifdb98c16084dd811eed68469e7df5d1913c6ace8
(cherry picked from commit aa1950fd801afc9502cbd482981d34079065e743)
Merged-In: Ifdb98c16084dd811eed68469e7df5d1913c6ace8
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
index 650267a..8dd00b3 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
@@ -86,8 +86,12 @@
     @Override
     public void onDestroy() {
         super.onDestroy();
-        if (!mPositiveClicked) {
-            mPairingController.onCancel();
+        if (mPairingController.getDialogType()
+                != BluetoothPairingController.DISPLAY_PASSKEY_DIALOG) {
+            /* Cancel pairing unless explicitly accepted by user */
+            if (!mPositiveClicked) {
+                mPairingController.onCancel();
+            }
         }
     }