JustWorks: Auto-accept only incoming temporary pairing.

Bug: 110433804
Bug: 134461862
Test: Manual; atest net_test_bluetooth
Change-Id: I4e3f39bc08e9d9493734a21ea29d76e43aeb50c8
Merged-In: I4e3f39bc08e9d9493734a21ea29d76e43aeb50c8
(cherry picked from commit 10e15ee4610969b10e7558969fed8ba229d8e5a0)
diff --git a/btif/src/btif_dm.cc b/btif/src/btif_dm.cc
index 6bfbd50..ce2ca9a 100644
--- a/btif/src/btif_dm.cc
+++ b/btif/src/btif_dm.cc
@@ -915,6 +915,7 @@
 static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ* p_ssp_cfm_req) {
   bt_bdname_t bd_name;
   uint32_t cod;
+  bool is_incoming = !(pairing_cb.state == BT_BOND_STATE_BONDING);
   int dev_type;
 
   BTIF_TRACE_DEBUG("%s", __func__);
@@ -947,6 +948,19 @@
 
   pairing_cb.is_ssp = true;
 
+  /* If JustWorks auto-accept */
+  if (p_ssp_cfm_req->just_works) {
+    /* Pairing consent for JustWorks NOT needed if:
+     * 1. Incoming temporary pairing is detected
+     */
+    if (is_incoming && pairing_cb.bond_type == BOND_TYPE_TEMPORARY) {
+      BTIF_TRACE_EVENT(
+          "%s: Auto-accept JustWorks pairing for temporary incoming", __func__);
+      btif_dm_ssp_reply(&bd_addr, BT_SSP_VARIANT_CONSENT, true, 0);
+      return;
+    }
+  }
+
   cod = devclass2uint(p_ssp_cfm_req->dev_class);
 
   if (cod == 0) {