Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8bcfbad authored by Martijn Coenen's avatar Martijn Coenen
Browse files

Verify NFC permission immediately on API calls.

Bug: 18358968
Change-Id: I648494e6435e107337e0c5bc4c6328774f9a54be
parent 031d8fea
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -60,4 +60,6 @@ interface INfcAdapter

    void addNfcUnlockHandler(INfcUnlockHandler unlockHandler, in int[] techList);
    void removeNfcUnlockHandler(INfcUnlockHandler unlockHandler);

    void verifyNfcPermission();
}
+28 −0
Original line number Diff line number Diff line
@@ -252,7 +252,11 @@ public final class NfcActivityManager extends IAppCallback.Stub
            isResumed = state.resumed;
        }
        if (isResumed) {
            // requestNfcServiceCallback() verifies permission also
            requestNfcServiceCallback();
        } else {
            // Crash API calls early in case NFC permission is missing
            verifyNfcPermission();
        }
    }

@@ -266,7 +270,11 @@ public final class NfcActivityManager extends IAppCallback.Stub
            isResumed = state.resumed;
        }
        if (isResumed) {
            // requestNfcServiceCallback() verifies permission also
            requestNfcServiceCallback();
        } else {
            // Crash API calls early in case NFC permission is missing
            verifyNfcPermission();
        }
    }

@@ -279,7 +287,11 @@ public final class NfcActivityManager extends IAppCallback.Stub
            isResumed = state.resumed;
        }
        if (isResumed) {
            // requestNfcServiceCallback() verifies permission also
            requestNfcServiceCallback();
        } else {
            // Crash API calls early in case NFC permission is missing
            verifyNfcPermission();
        }
    }

@@ -293,7 +305,11 @@ public final class NfcActivityManager extends IAppCallback.Stub
            isResumed = state.resumed;
        }
        if (isResumed) {
            // requestNfcServiceCallback() verifies permission also
            requestNfcServiceCallback();
        } else {
            // Crash API calls early in case NFC permission is missing
            verifyNfcPermission();
        }
    }

@@ -306,7 +322,11 @@ public final class NfcActivityManager extends IAppCallback.Stub
            isResumed = state.resumed;
        }
        if (isResumed) {
            // requestNfcServiceCallback() verifies permission also
            requestNfcServiceCallback();
        } else {
            // Crash API calls early in case NFC permission is missing
            verifyNfcPermission();
        }
    }

@@ -322,6 +342,14 @@ public final class NfcActivityManager extends IAppCallback.Stub
        }
    }

    void verifyNfcPermission() {
        try {
            NfcAdapter.sService.verifyNfcPermission();
        } catch (RemoteException e) {
            mAdapter.attemptDeadServiceRecovery(e);
        }
    }

    /** Callback from NFC service, usually on binder thread */
    @Override
    public BeamShareData createBeamShareData() {