Merge "Change logging message control from prebuilt to dynamic"
diff --git a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
index 81ac416..3ddc2ca 100644
--- a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
+++ b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
@@ -1132,6 +1132,10 @@
NdefMap->State == PH_FRINFC_NDEFMAP_STATE_WRITE ||
NdefMap->State == PH_FRINFC_NDEFMAP_STATE_WR_NDEF_LEN ||
NdefMap->State == PH_FRINFC_NDEFMAP_STATE_INIT)) {
+ if (2 > RspBuffInfo->wLen) {
+ android_errorWriteLog(0x534e4554, "181346550");
+ return NFCSTATUS_FAILED;
+ }
uint8_t rspAck = RspBuffInfo->pBuff[RspBuffInfo->wLen - 2];
uint8_t rspAckMask = ((RspBuffInfo->pBuff[RspBuffInfo->wLen - 1]) &
MAX_NUM_VALID_BITS_FOR_ACK);
@@ -1145,6 +1149,11 @@
status = NFCSTATUS_SUCCESS;
uint16_t wRecvDataSz = 0;
+ if ((PHNCINFC_EXTNID_SIZE + PHNCINFC_EXTNSTATUS_SIZE) >
+ RspBuffInfo->wLen) {
+ android_errorWriteLog(0x534e4554, "181346550");
+ return NFCSTATUS_FAILED;
+ }
/* DataLen = TotalRecvdLen - (sizeof(RspId) + sizeof(Status)) */
wPldDataSize = ((RspBuffInfo->wLen) -
(PHNCINFC_EXTNID_SIZE + PHNCINFC_EXTNSTATUS_SIZE));
diff --git a/src/com/android/nfc/NfcDispatcher.java b/src/com/android/nfc/NfcDispatcher.java
index a9fd3fe..5770b6d 100644
--- a/src/com/android/nfc/NfcDispatcher.java
+++ b/src/com/android/nfc/NfcDispatcher.java
@@ -49,9 +49,11 @@
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.nfc.tech.NfcBarcode;
+import android.os.Binder;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
+import android.os.Process;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -102,6 +104,8 @@
private PendingIntent mOverrideIntent;
private IntentFilter[] mOverrideFilters;
private String[][] mOverrideTechLists;
+ private int mForegroundUid;
+ private ForegroundUtils mForegroundUtils;
private boolean mProvisioningOnly;
NfcDispatcher(Context context,
@@ -116,7 +120,8 @@
mScreenStateHelper = new ScreenStateHelper(context);
mNfcUnlockManager = NfcUnlockManager.getInstance();
mDeviceSupportsBluetooth = BluetoothAdapter.getDefaultAdapter() != null;
-
+ mForegroundUid = Process.INVALID_UID;
+ mForegroundUtils = ForegroundUtils.getInstance();
synchronized (this) {
mProvisioningOnly = provisionOnly;
}
@@ -148,6 +153,29 @@
mOverrideIntent = intent;
mOverrideFilters = filters;
mOverrideTechLists = techLists;
+
+ if (mOverrideIntent != null) {
+ int callingUid = Binder.getCallingUid();
+ if (mForegroundUid != callingUid) {
+ mForegroundUtils.registerUidToBackgroundCallback(mForegroundCallback, callingUid);
+ mForegroundUid = callingUid;
+ }
+ }
+ }
+
+ final ForegroundUtils.Callback mForegroundCallback = new ForegroundCallbackImpl();
+
+ class ForegroundCallbackImpl implements ForegroundUtils.Callback {
+ @Override
+ public void onUidToBackground(int uid) {
+ synchronized (NfcDispatcher.this) {
+ if (mForegroundUid == uid) {
+ if (DBG) Log.d(TAG, "Uid " + uid + " switch to background.");
+ mForegroundUid = Process.INVALID_UID;
+ setForegroundDispatch(null, null, null);
+ }
+ }
+ }
}
public synchronized void disableProvisioningMode() {
diff --git a/src/com/android/nfc/handover/ConfirmConnectActivity.java b/src/com/android/nfc/handover/ConfirmConnectActivity.java
index c4ac8ab..159eee0 100644
--- a/src/com/android/nfc/handover/ConfirmConnectActivity.java
+++ b/src/com/android/nfc/handover/ConfirmConnectActivity.java
@@ -16,6 +16,8 @@
package com.android.nfc.handover;
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.bluetooth.BluetoothDevice;
@@ -35,14 +37,16 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
AlertDialog.Builder builder = new AlertDialog.Builder(this,
R.style.DialogAlertDayNight);
Intent launchIntent = getIntent();
mDevice = launchIntent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (mDevice == null) finish();
Resources res = getResources();
+ String btExtraName = launchIntent.getStringExtra(BluetoothDevice.EXTRA_NAME);
String confirmString = String.format(res.getString(R.string.confirm_pairing),
- launchIntent.getStringExtra(BluetoothDevice.EXTRA_NAME));
+ "\"" + btExtraName.replaceAll("\\r|\\n", "") + "\"");
builder.setMessage(confirmString)
.setCancelable(false)
.setPositiveButton(res.getString(R.string.pair_yes),