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

Commit aa80f8e7 authored by lpeter's avatar lpeter
Browse files

Add null pointer check for callback in HotwordDetectionConnection.

Bug: 194090728
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: I5b9f8320ddbcfc947f9a0b810b6f71c8a4fc9ff4
parent ed889bb8
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ final class HotwordDetectionConnection {
    private final AtomicBoolean mUpdateStateAfterStartFinished = new AtomicBoolean(false);
    private final IBinder.DeathRecipient mAudioServerDeathRecipient = this::audioServerDied;
    private final @NonNull ServiceConnectionFactory mServiceConnectionFactory;
    private final IHotwordRecognitionStatusCallback mCallback;

    final Object mLock;
    final int mVoiceInteractionServiceUid;
@@ -110,7 +111,6 @@ final class HotwordDetectionConnection {
    final int mUser;
    final Context mContext;
    volatile HotwordDetectionServiceIdentity mIdentity;
    private IHotwordRecognitionStatusCallback mCallback;
    private IMicrophoneHotwordDetectionVoiceInteractionCallback mSoftwareCallback;
    private Instant mLastRestartInstant;

@@ -132,13 +132,19 @@ final class HotwordDetectionConnection {
    HotwordDetectionConnection(Object lock, Context context, int voiceInteractionServiceUid,
            Identity voiceInteractorIdentity, ComponentName serviceName, int userId,
            boolean bindInstantServiceAllowed, @Nullable PersistableBundle options,
            @Nullable SharedMemory sharedMemory, IHotwordRecognitionStatusCallback callback) {
            @Nullable SharedMemory sharedMemory,
            @NonNull IHotwordRecognitionStatusCallback callback) {
        if (callback == null) {
            Slog.w(TAG, "Callback is null while creating connection");
            throw new IllegalArgumentException("Callback is null while creating connection");
        }
        mLock = lock;
        mContext = context;
        mVoiceInteractionServiceUid = voiceInteractionServiceUid;
        mVoiceInteractorIdentity = voiceInteractorIdentity;
        mDetectionComponentName = serviceName;
        mUser = userId;
        mCallback = callback;
        final Intent intent = new Intent(HotwordDetectionService.SERVICE_INTERFACE);
        intent.setComponent(mDetectionComponentName);
        initAudioFlingerLocked();
@@ -147,12 +153,6 @@ final class HotwordDetectionConnection {

        mRemoteHotwordDetectionService = mServiceConnectionFactory.createLocked();

        if (callback == null) {
            updateStateLocked(options, sharedMemory);
            return;
        }
        mCallback = callback;

        mLastRestartInstant = Instant.now();
        updateStateAfterProcessStart(options, sharedMemory);