summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Presubmit Automerger Backend <android-build-presubmit-automerger-backend@system.gserviceaccount.com> 2022-03-07 03:08:20 +0000
committer Presubmit Automerger Backend <android-build-presubmit-automerger-backend@system.gserviceaccount.com> 2022-03-07 03:08:20 +0000
commitcea18d7f27d42f7bb0fef2ed3946a3eb403dc1fe (patch)
tree2817b296d7315c9a1d8ef9c1f1d5e51e36444d29
parent181d454887306a3ef2b7b985925a32ce55281cf8 (diff)
parent113f3a4a1d9171db7456aa9ae8b0a2b50545c326 (diff)
[automerge] Add tag availability checking mechanism 2p: 113f3a4a1d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16730930 Bug: 199291025 Change-Id: Ib99e5fe19b020154867910bbaeb513be277a81cd Merged-In: Iabaab1f6d2d22e15966d31dd79099369d828f4c6
-rw-r--r--core/java/android/nfc/INfcTag.aidl3
-rw-r--r--core/java/android/nfc/Tag.java21
2 files changed, 24 insertions, 0 deletions
diff --git a/core/java/android/nfc/INfcTag.aidl b/core/java/android/nfc/INfcTag.aidl
index 539fd4adb0a0..e1ccc4fb740b 100644
--- a/core/java/android/nfc/INfcTag.aidl
+++ b/core/java/android/nfc/INfcTag.aidl
@@ -45,4 +45,7 @@ interface INfcTag
boolean canMakeReadOnly(int ndefType);
int getMaxTransceiveLength(int technology);
boolean getExtendedLengthApdusSupported();
+
+ void setTagUpToDate(long cookie);
+ boolean isTagUpToDate(long cookie);
}
diff --git a/core/java/android/nfc/Tag.java b/core/java/android/nfc/Tag.java
index 398ec63a931b..0ce9c70569b5 100644
--- a/core/java/android/nfc/Tag.java
+++ b/core/java/android/nfc/Tag.java
@@ -34,6 +34,7 @@ import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;
+import android.os.SystemClock;
import java.io.IOException;
import java.util.Arrays;
@@ -121,6 +122,7 @@ public final class Tag implements Parcelable {
final INfcTag mTagService; // interface to NFC service, will be null if mock tag
int mConnectedTechnology;
+ long mCookie;
/**
* Hidden constructor to be used by NFC service and internal classes.
@@ -140,6 +142,13 @@ public final class Tag implements Parcelable {
mTagService = tagService;
mConnectedTechnology = -1;
+
+ try {
+ mCookie = SystemClock.elapsedRealtime();
+ tagService.setTagUpToDate(mCookie);
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
}
/**
@@ -361,6 +370,18 @@ public final class Tag implements Parcelable {
/** @hide */
@UnsupportedAppUsage
public INfcTag getTagService() {
+ try {
+ if (!mTagService.isTagUpToDate(mCookie)) {
+ String id_str = "";
+ for (int i = 0; i < mId.length; i++) {
+ id_str = id_str + String.format("%02X ", mId[i]);
+ }
+ String msg = "Permission Denial: Tag ( ID: " + id_str + ") is out of date";
+ throw new SecurityException(msg);
+ }
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
return mTagService;
}