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

Commit 823441a7 authored by Jae Seo's avatar Jae Seo Committed by Android (Google) Code Review
Browse files

Merge "TIF: Replace TvInputInfo in SessionState with ID and component name"

parents 9bab9e86 2cdb05e5
Loading
Loading
Loading
Loading
+28 −27
Original line number Diff line number Diff line
@@ -584,14 +584,14 @@ public final class TvInputManagerService extends SystemService {
        for (IBinder sessionToken : serviceState.sessionTokens) {
            SessionState sessionState = userState.sessionStateMap.get(sessionToken);
            if (sessionState.session == null && (inputId == null
                    || sessionState.info.getId().equals(inputId))) {
                    || sessionState.inputId.equals(inputId))) {
                sessionsToAbort.add(sessionState);
            }
        }
        for (SessionState sessionState : sessionsToAbort) {
            removeSessionStateLocked(sessionState.sessionToken, sessionState.userId);
            sendSessionTokenToClientLocked(sessionState.client,
                    sessionState.info.getId(), null, null, sessionState.seq);
                    sessionState.inputId, null, null, sessionState.seq);
        }
        updateServiceConnectionLocked(serviceState.component, userId);
    }
@@ -601,7 +601,7 @@ public final class TvInputManagerService extends SystemService {
        UserState userState = getOrCreateUserStateLocked(userId);
        SessionState sessionState = userState.sessionStateMap.get(sessionToken);
        if (DEBUG) {
            Slog.d(TAG, "createSessionInternalLocked(inputId=" + sessionState.info.getId() + ")");
            Slog.d(TAG, "createSessionInternalLocked(inputId=" + sessionState.inputId + ")");
        }
        InputChannel[] channels = InputChannel.openInputChannelPair(sessionToken.toString());

@@ -611,14 +611,14 @@ public final class TvInputManagerService extends SystemService {
        // Create a session. When failed, send a null token immediately.
        try {
            if (sessionState.isRecordingSession) {
                service.createRecordingSession(callback, sessionState.info.getId());
                service.createRecordingSession(callback, sessionState.inputId);
            } else {
                service.createSession(channels[1], callback, sessionState.info.getId());
                service.createSession(channels[1], callback, sessionState.inputId);
            }
        } catch (RemoteException e) {
            Slog.e(TAG, "error in createSession", e);
            removeSessionStateLocked(sessionToken, userId);
            sendSessionTokenToClientLocked(sessionState.client, sessionState.info.getId(), null,
            sendSessionTokenToClientLocked(sessionState.client, sessionState.inputId, null,
                    null, sessionState.seq);
        }
        channels[1].dispose();
@@ -684,14 +684,11 @@ public final class TvInputManagerService extends SystemService {
            }
        }

        TvInputInfo info = sessionState.info;
        if (info != null) {
            ServiceState serviceState = userState.serviceStateMap.get(info.getComponent());
        ServiceState serviceState = userState.serviceStateMap.get(sessionState.componentName);
        if (serviceState != null) {
            serviceState.sessionTokens.remove(sessionToken);
        }
        }
        updateServiceConnectionLocked(sessionState.info.getComponent(), userId);
        updateServiceConnectionLocked(sessionState.componentName, userId);

        // Log the end of watch.
        SomeArgs args = SomeArgs.obtain();
@@ -707,7 +704,7 @@ public final class TvInputManagerService extends SystemService {
                sessionState = getSessionStateLocked(sessionState.hardwareSessionToken,
                        Process.SYSTEM_UID, userId);
            }
            ServiceState serviceState = getServiceStateLocked(sessionState.info.getComponent(), userId);
            ServiceState serviceState = getServiceStateLocked(sessionState.componentName, userId);
            if (!serviceState.isHardware) {
                return;
            }
@@ -1091,8 +1088,9 @@ public final class TvInputManagerService extends SystemService {

                    // Create a new session token and a session state.
                    IBinder sessionToken = new Binder();
                    SessionState sessionState = new SessionState(sessionToken, info,
                            isRecordingSession, client, seq, callingUid, resolvedUserId);
                    SessionState sessionState = new SessionState(sessionToken, info.getId(),
                            info.getComponent(), isRecordingSession, client, seq, callingUid,
                            resolvedUserId);

                    // Add them to the global session state map of the current user.
                    userState.sessionStateMap.put(sessionToken, sessionState);
@@ -1273,7 +1271,7 @@ public final class TvInputManagerService extends SystemService {

                        // Log the start of watch.
                        SomeArgs args = SomeArgs.obtain();
                        args.arg1 = sessionState.info.getComponent().getPackageName();
                        args.arg1 = sessionState.componentName.getPackageName();
                        args.arg2 = System.currentTimeMillis();
                        args.arg3 = ContentUris.parseId(channelUri);
                        args.arg4 = params;
@@ -1779,10 +1777,10 @@ public final class TvInputManagerService extends SystemService {
                        return false;
                    }
                    for (SessionState sessionState : userState.sessionStateMap.values()) {
                        if (sessionState.info.getId().equals(inputId)
                        if (sessionState.inputId.equals(inputId)
                                && sessionState.hardwareSessionToken != null) {
                            hardwareInputId = userState.sessionStateMap.get(
                                    sessionState.hardwareSessionToken).info.getId();
                                    sessionState.hardwareSessionToken).inputId;
                            break;
                        }
                    }
@@ -1918,7 +1916,7 @@ public final class TvInputManagerService extends SystemService {
                        pw.println(entry.getKey() + ": " + session);

                        pw.increaseIndent();
                        pw.println("info: " + session.info);
                        pw.println("inputId: " + session.inputId);
                        pw.println("client: " + session.client);
                        pw.println("seq: " + session.seq);
                        pw.println("callingUid: " + session.callingUid);
@@ -2046,7 +2044,8 @@ public final class TvInputManagerService extends SystemService {
    }

    private final class SessionState implements IBinder.DeathRecipient {
        private final TvInputInfo info;
        private final String inputId;
        private final ComponentName componentName;
        private final boolean isRecordingSession;
        private final ITvInputClient client;
        private final int seq;
@@ -2058,10 +2057,12 @@ public final class TvInputManagerService extends SystemService {
        // Not null if this session represents an external device connected to a hardware TV input.
        private IBinder hardwareSessionToken;

        private SessionState(IBinder sessionToken, TvInputInfo info, boolean isRecordingSession,
                ITvInputClient client, int seq, int callingUid, int userId) {
        private SessionState(IBinder sessionToken, String inputId, ComponentName componentName,
                boolean isRecordingSession, ITvInputClient client, int seq, int callingUid,
                int userId) {
            this.sessionToken = sessionToken;
            this.info = info;
            this.inputId = inputId;
            this.componentName = componentName;
            this.isRecordingSession = isRecordingSession;
            this.client = client;
            this.seq = seq;
@@ -2274,19 +2275,19 @@ public final class TvInputManagerService extends SystemService {
        @Override
        public void onSessionCreated(ITvInputSession session, IBinder hardwareSessionToken) {
            if (DEBUG) {
                Slog.d(TAG, "onSessionCreated(inputId=" + mSessionState.info.getId() + ")");
                Slog.d(TAG, "onSessionCreated(inputId=" + mSessionState.inputId + ")");
            }
            synchronized (mLock) {
                mSessionState.session = session;
                mSessionState.hardwareSessionToken = hardwareSessionToken;
                if (session != null && addSessionTokenToClientStateLocked(session)) {
                    sendSessionTokenToClientLocked(mSessionState.client,
                            mSessionState.info.getId(), mSessionState.sessionToken, mChannels[0],
                            mSessionState.inputId, mSessionState.sessionToken, mChannels[0],
                            mSessionState.seq);
                } else {
                    removeSessionStateLocked(mSessionState.sessionToken, mSessionState.userId);
                    sendSessionTokenToClientLocked(mSessionState.client,
                            mSessionState.info.getId(), null, null, mSessionState.seq);
                            mSessionState.inputId, null, null, mSessionState.seq);
                }
                mChannels[0].dispose();
            }