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

Commit 280c087c authored by Alisher Alikhodjaev's avatar Alisher Alikhodjaev Committed by Android Build Cherrypicker Worker
Browse files

nfc(api): Dont invoke enableReaderMode from setDiscoveryTech

Calling |enableReaderMode| prevents us from chaning the listen tech.

Bug: 337291737
Test: atest CtsNfcHceMultiDeviceTestCases
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:c1eec317f5d98181e7ef8826a16c96ebebd9d498)
Merged-In: Id6a5e865cd69bafcf2e0dcfafe104aee3330f138
Change-Id: Id6a5e865cd69bafcf2e0dcfafe104aee3330f138
parent c909a3e2
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -195,18 +195,27 @@ public final class NfcActivityManager extends IAppCallback.Stub
            Bundle extras) {
        boolean isResumed;
        Binder token;
        int pollTech, listenTech;
        synchronized (NfcActivityManager.this) {
            NfcActivityState state = getActivityState(activity);
            state.readerCallback = callback;
            state.readerModeFlags = flags;
            state.readerModeExtras = extras;
            pollTech = state.mPollTech;
            listenTech = state.mListenTech;
            token = state.token;
            isResumed = state.resumed;
        }
        if (isResumed) {
            if (listenTech != NfcAdapter.FLAG_USE_ALL_TECH
                    || pollTech != NfcAdapter.FLAG_USE_ALL_TECH) {
                throw new IllegalStateException(
                    "Cannot be used when alternative DiscoveryTechnology is set");
            } else {
                setReaderMode(token, flags, extras);
            }
        }
    }

    public void disableReaderMode(Activity activity) {
        boolean isResumed;
@@ -385,15 +394,12 @@ public final class NfcActivityManager extends IAppCallback.Stub
        boolean readerModeFlagsSet;
        synchronized (NfcActivityManager.this) {
            NfcActivityState state = getActivityState(activity);
            readerModeFlagsSet = state.readerModeFlags != 0;
            state.mListenTech = NfcAdapter.FLAG_USE_ALL_TECH;
            state.mPollTech = NfcAdapter.FLAG_USE_ALL_TECH;
            token = state.token;
            isResumed = state.resumed;
        }
        if (readerModeFlagsSet) {
            disableReaderMode(activity);
        } else if (isResumed) {
        if (isResumed) {
            changeDiscoveryTech(token, NfcAdapter.FLAG_USE_ALL_TECH, NfcAdapter.FLAG_USE_ALL_TECH);
        }

+1 −4
Original line number Diff line number Diff line
@@ -1846,10 +1846,7 @@ public final class NfcAdapter {
                    throw new UnsupportedOperationException();
                }
            }
            mNfcActivityManager.enableReaderMode(activity, null, pollTechnology, null);
            return;
        }
        if (pollTechnology == FLAG_READER_DISABLE) {
        } else if (pollTechnology == FLAG_READER_DISABLE) {
            synchronized (sLock) {
                if (!sHasCeFeature) {
                    throw new UnsupportedOperationException();