Bluetooth: Add pairing initiator extra

Bug: 150156492
Test: pair two devices, unpair on one device, try to reconnect
Change-Id: I96379d0afe5b624f09e2825dedaef8f9883a924c
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingController.java b/src/com/android/settings/bluetooth/BluetoothPairingController.java
index a1d86be..ca3dda6 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingController.java
@@ -60,6 +60,7 @@
     private String mUserInput;
     private String mPasskeyFormatted;
     private int mPasskey;
+    private int mInitiator;
     private String mDeviceName;
     private LocalBluetoothProfile mPbapClientProfile;
     private boolean mPbapAllowed;
@@ -84,6 +85,8 @@
 
         mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
         mPasskey = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY, BluetoothDevice.ERROR);
+        mInitiator =
+                intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_INITIATOR, BluetoothDevice.ERROR);
         mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
         mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
         mPasskeyFormatted = formatKey(mPasskey);
@@ -177,7 +180,7 @@
             default:
                 if (mDevice.getBluetoothClass().getDeviceClass()
                         == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE) {
-                    return true;
+                    return BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND == mInitiator;
                 }
                 return false;
         }
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
index 7da6342..bd78b55 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
@@ -37,9 +37,6 @@
     if (!action.equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
       return;
     }
-    // convert broadcast intent into activity intent (same action string)
-    Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context, intent);
-
     PowerManager powerManager =
         (PowerManager)context.getSystemService(Context.POWER_SERVICE);
     BluetoothDevice device =
@@ -51,6 +48,10 @@
     if (powerManager.isInteractive() && shouldShowDialog) {
       // Since the screen is on and the BT-related activity is in the foreground,
       // just open the dialog
+      // convert broadcast intent into activity intent (same action string)
+      Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context, intent,
+              BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND);
+
       context.startActivityAsUser(pairingIntent, UserHandle.CURRENT);
     } else {
       // Put up a notification that leads to the dialog
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingService.java b/src/com/android/settings/bluetooth/BluetoothPairingService.java
index 53e93d9..10d5ca8 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingService.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingService.java
@@ -51,7 +51,7 @@
 
     private BluetoothDevice mDevice;
 
-    public static Intent getPairingDialogIntent(Context context, Intent intent) {
+    public static Intent getPairingDialogIntent(Context context, Intent intent, int initiator) {
         BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
         int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
                 BluetoothDevice.ERROR);
@@ -65,6 +65,7 @@
             int pairingKey = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY,
                     BluetoothDevice.ERROR);
             pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_KEY, pairingKey);
+            pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_INITIATOR, initiator);
         }
         pairingIntent.setAction(BluetoothDevice.ACTION_PAIRING_REQUEST);
         pairingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -124,7 +125,8 @@
                 .setLocalOnly(true);
 
         PendingIntent pairIntent = PendingIntent.getActivity(this, 0,
-                getPairingDialogIntent(this, intent),
+                getPairingDialogIntent(this, intent,
+                        BluetoothDevice.EXTRA_PAIRING_INITIATOR_BACKGROUND),
                 PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
 
         PendingIntent dismissIntent = PendingIntent.getBroadcast(this, 0,