Merge "Merge branch android10-qpr3-release" into android10-gsi
diff --git a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
index 6dd04e6..77a0dc1 100644
--- a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
+++ b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
@@ -1179,7 +1179,11 @@
             }
             gAuthCmdBuf.auth_status = true;
             status = NFCSTATUS_SUCCESS;
-
+            if ((PHNCINFC_EXTNID_SIZE + PHNCINFC_EXTNSTATUS_SIZE) >
+                RspBuffInfo->wLen) {
+              android_errorWriteLog(0x534e4554, "126204073");
+              return NFCSTATUS_FAILED;
+            }
             /* DataLen = TotalRecvdLen - (sizeof(RspId) + sizeof(Status)) */
             wPldDataSize = ((RspBuffInfo->wLen) -
                             (PHNCINFC_EXTNID_SIZE + PHNCINFC_EXTNSTATUS_SIZE));
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f563e5d..8df1a41 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -3,7 +3,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="78565911793142902">"Servicio NFC"</string>
     <string name="nfcUserLabel" msgid="7708535817084357357">"NFC"</string>
-    <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC habilitada"</string>
+    <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC habilitado"</string>
     <string name="tap_to_beam" msgid="5819197866281059878">"Toca para compartir"</string>
     <string name="beam_progress" msgid="7453634884807323920">"Transferencia entrante..."</string>
     <string name="beam_outgoing" msgid="4679536649779123495">"Compartiendo..."</string>
@@ -40,7 +40,7 @@
     <string name="status_wifi_connected" msgid="5893022897732105739">"Conectado"</string>
     <string name="title_connect_to_network" msgid="2474034615817280146">"Conectar a la red"</string>
     <string name="prompt_connect_to_network" msgid="8511683573657516114">"¿Quieres conectarte a la red <xliff:g id="NETWORK_SSID">%1$s</xliff:g>?"</string>
-    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Para usar Android Beam, NFC debe estar habilitado. ¿Quieres habilitarlo?"</string>
+    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Para usar Android Beam, el NFC debe estar habilitado. ¿Quieres habilitarlo?"</string>
     <string name="android_beam" msgid="1666446406999492763">"Android Beam"</string>
     <string name="beam_requires_external_storage_permission" msgid="8798337545702206901">"La aplicación no tiene permiso de almacenamiento externo, necesario para compartir este archivo"</string>
     <string name="title_confirm_url_open" msgid="8069968913244794478">"¿Quieres abrir el enlace?"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index c56a965..70c4e1c 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -14,7 +14,7 @@
     <string name="beam_tap_to_view" msgid="7430394753262448349">"Көрүү үчүн таптаңыз"</string>
     <string name="beam_handover_not_supported" msgid="4083165921751489015">"Алуучунун түзмөгү beam аркылуу чоң файлдарды кабылдабайт."</string>
     <string name="beam_try_again" msgid="3364677301009783455">"Түзмөктөрдү кайрадан бириктириңиз"</string>
-    <string name="beam_busy" msgid="5253335587620612576">"Учурда өткөрүү бош эмес. Мурунку өткөрүү аяктаганда кайра аракет кылыңыз."</string>
+    <string name="beam_busy" msgid="5253335587620612576">"Учурда өткөрүү бош эмес. Мурунку өткөрүү аяктаганда кайталап көрүңүз."</string>
     <string name="device" msgid="4459621591392478151">"түзмөк"</string>
     <string name="connecting_peripheral" msgid="1296182660525660935">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> туташтырылууда"</string>
     <string name="connected_peripheral" msgid="20748648543160091">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> туташтырылды"</string>
@@ -42,11 +42,11 @@
     <string name="prompt_connect_to_network" msgid="8511683573657516114">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> тармагына туташасызбы?"</string>
     <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android Beam NFC иштетилишин талап кылат. Аны иштетесизби?"</string>
     <string name="android_beam" msgid="1666446406999492763">"Android Beam"</string>
-    <string name="beam_requires_external_storage_permission" msgid="8798337545702206901">"Колдонмонун сырткы сактагычты пайдаланууга уруксаты жок. Бул файлды өткөрүү үчүн мындай уруксат берилиши керек"</string>
+    <string name="beam_requires_external_storage_permission" msgid="8798337545702206901">"Колдонмонун тышкы сактагычты пайдаланууга уруксаты жок. Бул файлды өткөрүү үчүн мындай уруксат берилиши керек"</string>
     <string name="title_confirm_url_open" msgid="8069968913244794478">"Шилтеме ачылсынбы?"</string>
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Планшетиңизге NFC аркылуу шилтеме келди:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Телефонуңузга NFC аркылуу шилтеме келди:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Шилтемени ачуу"</string>
-    <string name="tag_read_error" msgid="2485274498885877547">"NFC\'ни окууда ката кетти. Кайра аракет кылыңыз."</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC\'ни окууда ката кетти. Кайталап көрүңүз."</string>
     <string name="tag_dispatch_failed" msgid="3562984995049738400">"Бул NFC энбелгиси үчүн колдоого алынган колдонмо жок"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 7a3793f..ea30720 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -24,7 +24,7 @@
     <string name="pairing_peripheral" msgid="6983626861540899365">"Pareando <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="pairing_peripheral_failed" msgid="6087643307743264679">"Não foi possível parear o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="failed_to_enable_bt" msgid="7229153323594758077">"Não foi possível ativar o Bluetooth"</string>
-    <string name="confirm_pairing" msgid="4112568077038265363">"Tem certeza que quer parear o dispositivo Bluetooth <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
+    <string name="confirm_pairing" msgid="4112568077038265363">"Você quer mesmo parear o dispositivo Bluetooth <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
     <string name="pair_yes" msgid="3525614878559994448">"Sim"</string>
     <string name="pair_no" msgid="5022308368904055020">"Não"</string>
     <string name="tap_again_to_pay" msgid="5754988005412859897">"Toque novamente para pagar com o <xliff:g id="APP">%1$s</xliff:g>"</string>
diff --git a/res/values/config.xml b/res/values/config.xml
index f5585dd..c5354c2 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -3,6 +3,7 @@
     <string name="bluetooth_package" translatable="false">com.android.bluetooth</string>
     <bool name="enable_nfc_url_open_dialog">false</bool>
     <bool name="enable_auto_play">true</bool>
+    <bool name="enable_notify_dispatch_failed">false</bool>
 
     <!-- List of SKUs where Secure NFC functionality is supported -->
     <string-array name="config_skuSupportsSecureNfc" translatable="false" />
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index 6699a8b..48c3594 100644
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -2562,7 +2562,8 @@
                 int dispatchResult = mNfcDispatcher.dispatchTag(tag);
                 if (dispatchResult == NfcDispatcher.DISPATCH_FAIL && !mInProvisionMode) {
                     unregisterObject(tagEndpoint.getHandle());
-                    if (mScreenState == ScreenStateHelper.SCREEN_STATE_ON_UNLOCKED) {
+                    if (mScreenState == ScreenStateHelper.SCREEN_STATE_ON_UNLOCKED &&
+                        mContext.getResources().getBoolean(R.bool.enable_notify_dispatch_failed)) {
                         if (mToast != null) {
                             if (mToast.getView().isShown()) mToast.cancel();
                         }
diff --git a/src/com/android/nfc/handover/ConfirmConnectActivity.java b/src/com/android/nfc/handover/ConfirmConnectActivity.java
index 75310e1..c87fc36 100644
--- a/src/com/android/nfc/handover/ConfirmConnectActivity.java
+++ b/src/com/android/nfc/handover/ConfirmConnectActivity.java
@@ -50,6 +50,7 @@
                    public void onClick(DialogInterface dialog, int id) {
                         Intent allowIntent = new Intent(BluetoothPeripheralHandover.ACTION_ALLOW_CONNECT);
                         allowIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice);
+                        allowIntent.setPackage("com.android.nfc");
                         sendBroadcast(allowIntent);
                         ConfirmConnectActivity.this.mAlert = null;
                         ConfirmConnectActivity.this.finish();
@@ -60,6 +61,7 @@
                    public void onClick(DialogInterface dialog, int id) {
                        Intent denyIntent = new Intent(BluetoothPeripheralHandover.ACTION_DENY_CONNECT);
                        denyIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice);
+                       denyIntent.setPackage("com.android.nfc");
                        sendBroadcast(denyIntent);
                        ConfirmConnectActivity.this.mAlert = null;
                        ConfirmConnectActivity.this.finish();
@@ -79,6 +81,7 @@
             mAlert.dismiss();
             Intent denyIntent = new Intent(BluetoothPeripheralHandover.ACTION_DENY_CONNECT);
             denyIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice);
+            denyIntent.setPackage("com.android.nfc");
             sendBroadcast(denyIntent);
             mAlert = null;
         }