Merge "Call OffHostAidSelected only when RF_NFCEE_ACTION_NTF is triggered with AID" into main
diff --git a/NfcNci/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java b/NfcNci/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
index 77e81a5..d525e8a 100644
--- a/NfcNci/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
+++ b/NfcNci/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
@@ -532,21 +532,21 @@
         Log.i(TAG, "notifyEeAidSelected: AID= " + HexFormat.of().formatHex(aid) + " selected by "
                 + eventSrc);
         if (com.android.nfc.flags.Flags.eeAidSelect()) {
-            mListener.onSeSelected();
+            mListener.onSeSelected(NfcService.SE_SELECTED_AID);
         }
     }
 
     private void notifyEeProtocolSelected(int protocol, String eventSrc) {
         Log.i(TAG, "notifyEeProtocolSelected: Protocol: " + protocol + " selected by " + eventSrc);
         if (com.android.nfc.flags.Flags.eeAidSelect()) {
-            mListener.onSeSelected();
+            mListener.onSeSelected(NfcService.SE_SELECTED_PROTOCOL);
         }
     }
 
     private void notifyEeTechSelected(int tech, String eventSrc) {
         Log.i(TAG, "notifyEeTechSelected: Tech: " + tech + " selected by " + eventSrc);
         if (com.android.nfc.flags.Flags.eeAidSelect()) {
-            mListener.onSeSelected();
+            mListener.onSeSelected(NfcService.SE_SELECTED_TECH);
         }
     }
 
diff --git a/NfcNci/src/com/android/nfc/DeviceHost.java b/NfcNci/src/com/android/nfc/DeviceHost.java
index 35df1bc..815bd90 100644
--- a/NfcNci/src/com/android/nfc/DeviceHost.java
+++ b/NfcNci/src/com/android/nfc/DeviceHost.java
@@ -64,7 +64,7 @@
 
         public void onEeListenActivated(boolean isActivated);
 
-        public void onSeSelected();
+        public void onSeSelected(int type);
 
         public void onCommandTimeout();
 
diff --git a/NfcNci/src/com/android/nfc/NfcService.java b/NfcNci/src/com/android/nfc/NfcService.java
index 91833d9..4397aab 100644
--- a/NfcNci/src/com/android/nfc/NfcService.java
+++ b/NfcNci/src/com/android/nfc/NfcService.java
@@ -257,6 +257,11 @@
     static final int TASK_ENABLE_ALWAYS_ON = 4;
     static final int TASK_DISABLE_ALWAYS_ON = 5;
 
+    // SE selected types
+    public static final int SE_SELECTED_AID = 0x01;
+    public static final int SE_SELECTED_TECH = 0x02;
+    public static final int SE_SELECTED_PROTOCOL = 0x04;
+
     // Polling technology masks
     static final int NFC_POLL_A = 0x01;
     static final int NFC_POLL_B = 0x02;
@@ -885,8 +890,8 @@
     }
 
     @Override
-    public void onSeSelected() {
-        sendMessage(MSG_SE_SELECTED_EVENT, null);
+    public void onSeSelected(int type) {
+        sendMessage(MSG_SE_SELECTED_EVENT, type);
     }
 
     @Override
@@ -5241,7 +5246,8 @@
 
                 case MSG_SE_SELECTED_EVENT:
                     Log.d(TAG, "handleMessage: MSG_SE_SELECTED_EVENT");
-                    if (mCardEmulationManager != null) {
+                    int type = (int) msg.obj;
+                    if (mCardEmulationManager != null && type == SE_SELECTED_AID) {
                         mCardEmulationManager.onOffHostAidSelected();
                     }
                     break;
diff --git a/NfcNci/tests/unit/src/com/android/nfc/NfcServiceTest.java b/NfcNci/tests/unit/src/com/android/nfc/NfcServiceTest.java
index 22b18a9..98b53f1 100644
--- a/NfcNci/tests/unit/src/com/android/nfc/NfcServiceTest.java
+++ b/NfcNci/tests/unit/src/com/android/nfc/NfcServiceTest.java
@@ -1375,7 +1375,7 @@
 
     @Test
     public void testOnSeSelected() {
-        mNfcService.onSeSelected();
+        mNfcService.onSeSelected(NfcService.SE_SELECTED_AID);
         mLooper.dispatchAll();
         verify(mCardEmulationManager).onOffHostAidSelected();
     }