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

Commit e0e8b3ff authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Don't use phone features without calling declared

Bug: 310710841
Test: build & boot aosp_cf_x86_phone-eng
Change-Id: I80f0abdff8b09b1cf932d7559a67bb7cec5b6494
parent e2a2de37
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -31,12 +31,11 @@ import static android.hardware.soundtrigger.SoundTrigger.STATUS_OK;
import static android.provider.Settings.Global.MAX_SOUND_TRIGGER_DETECTION_SERVICE_OPS_PER_DAY;
import static android.provider.Settings.Global.SOUND_TRIGGER_DETECTION_SERVICE_OP_TIMEOUT;

import static com.android.server.soundtrigger.SoundTriggerEvent.SessionEvent.Type;
import static com.android.server.utils.EventLogger.Event.ALOGW;

import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import static com.android.server.soundtrigger.DeviceStateHandler.DeviceStateListener;
import static com.android.server.soundtrigger.DeviceStateHandler.SoundTriggerDeviceState;
import static com.android.server.soundtrigger.SoundTriggerEvent.SessionEvent.Type;
import static com.android.server.utils.EventLogger.Event.ALOGW;

import android.Manifest;
import android.annotation.NonNull;
@@ -94,8 +93,8 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.SparseArray;
import android.util.Slog;
import android.util.SparseArray;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.ISoundTriggerService;
@@ -105,19 +104,17 @@ import com.android.server.SoundTriggerInternal;
import com.android.server.SystemService;
import com.android.server.soundtrigger.SoundTriggerEvent.ServiceEvent;
import com.android.server.soundtrigger.SoundTriggerEvent.SessionEvent;
import com.android.server.utils.EventLogger.Event;
import com.android.server.utils.EventLogger;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.Consumer;
import java.util.List;
import java.util.Set;
import java.util.Deque;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@@ -126,6 +123,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.stream.Collectors;

/**
@@ -257,6 +255,11 @@ public class SoundTriggerService extends SystemService {
        publishLocalService(SoundTriggerInternal.class, mLocalSoundTriggerService);
    }

    private boolean hasCalling() {
        return mContext.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_TELEPHONY_CALLING);
    }

    @Override
    public void onBootPhase(int phase) {
        Slog.d(TAG, "onBootPhase: " + phase + " : " + isSafeMode());
@@ -282,12 +285,14 @@ public class SoundTriggerService extends SystemService {
            // Do so after registering the listener so we ensure that we don't drop any events
            mDeviceStateHandler.onPowerModeChanged(powerManager.getSoundTriggerPowerSaveMode());

            if (hasCalling()) {
                // PhoneCallStateHandler initializes the original call state
                mPhoneCallStateHandler = new PhoneCallStateHandler(
                        mContext.getSystemService(SubscriptionManager.class),
                        mContext.getSystemService(TelephonyManager.class),
                        mDeviceStateHandler);
            }
        }
        mMiddlewareService = ISoundTriggerMiddlewareService.Stub.asInterface(
                ServiceManager.waitForService(Context.SOUND_TRIGGER_MIDDLEWARE_SERVICE));