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

Commit ae85845c authored by Atneya Nair's avatar Atneya Nair Committed by Android (Google) Code Review
Browse files

Merge "Call listModules directly in STService" into udc-dev

parents 0edb1e1f 255a556d
Loading
Loading
Loading
Loading
+28 −23
Original line number Original line Diff line number Diff line
@@ -44,6 +44,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
import android.hardware.soundtrigger.IRecognitionStatusCallback;
import android.hardware.soundtrigger.IRecognitionStatusCallback;
import android.hardware.soundtrigger.ModelParams;
import android.hardware.soundtrigger.ModelParams;
import android.hardware.soundtrigger.ConversionUtil;
import android.hardware.soundtrigger.SoundTrigger;
import android.hardware.soundtrigger.SoundTrigger;
import android.hardware.soundtrigger.SoundTrigger.GenericSoundModel;
import android.hardware.soundtrigger.SoundTrigger.GenericSoundModel;
import android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel;
import android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel;
@@ -63,6 +64,7 @@ import android.media.permission.SafeCloseable;
import android.media.soundtrigger.ISoundTriggerDetectionService;
import android.media.soundtrigger.ISoundTriggerDetectionService;
import android.media.soundtrigger.ISoundTriggerDetectionServiceClient;
import android.media.soundtrigger.ISoundTriggerDetectionServiceClient;
import android.media.soundtrigger.SoundTriggerDetectionService;
import android.media.soundtrigger.SoundTriggerDetectionService;
import android.media.soundtrigger_middleware.ISoundTriggerMiddlewareService;
import android.os.Binder;
import android.os.Binder;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
@@ -72,6 +74,8 @@ import android.os.Parcel;
import android.os.ParcelUuid;
import android.os.ParcelUuid;
import android.os.PowerManager;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ServiceSpecificException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings;
@@ -88,11 +92,13 @@ import com.android.server.utils.EventLogger;
import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.Objects;
import java.util.Objects;
import java.util.TreeMap;
import java.util.TreeMap;
import java.util.UUID;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit;


/**
/**
@@ -215,14 +221,29 @@ public class SoundTriggerService extends SystemService {
        }
        }
    }
    }


    // Must be called with cleared binder context.
    private static List<ModuleProperties> listUnderlyingModuleProperties(
            Identity originatorIdentity) {
        Identity middlemanIdentity = new Identity();
        middlemanIdentity.packageName = ActivityThread.currentOpPackageName();
        var service = ISoundTriggerMiddlewareService.Stub.asInterface(
                ServiceManager.waitForService(Context.SOUND_TRIGGER_MIDDLEWARE_SERVICE));
        try {
            return Arrays.stream(service.listModulesAsMiddleman(middlemanIdentity,
                                                                originatorIdentity))
                    .map(desc -> ConversionUtil.aidl2apiModuleDescriptor(desc))
                    .collect(Collectors.toList());
        } catch (RemoteException e) {
            throw new ServiceSpecificException(SoundTrigger.STATUS_DEAD_OBJECT);
        }
    }

    private SoundTriggerHelper newSoundTriggerHelper(ModuleProperties moduleProperties) {
    private SoundTriggerHelper newSoundTriggerHelper(ModuleProperties moduleProperties) {
        Identity middlemanIdentity = new Identity();
        Identity middlemanIdentity = new Identity();
        middlemanIdentity.packageName = ActivityThread.currentOpPackageName();
        middlemanIdentity.packageName = ActivityThread.currentOpPackageName();
        Identity originatorIdentity = IdentityContext.getNonNull();
        Identity originatorIdentity = IdentityContext.getNonNull();


        ArrayList<ModuleProperties> moduleList = new ArrayList<>();
        List<ModuleProperties> moduleList = listUnderlyingModuleProperties(originatorIdentity);
        SoundTrigger.listModulesAsMiddleman(moduleList, middlemanIdentity,
                                        originatorIdentity);


        // Don't fail existing CTS tests which run without a ST module
        // Don't fail existing CTS tests which run without a ST module
        final int moduleId = (moduleProperties != null) ?
        final int moduleId = (moduleProperties != null) ?
@@ -241,12 +262,8 @@ public class SoundTriggerService extends SystemService {
                                        moduleId, statusListener, null /* handler */,
                                        moduleId, statusListener, null /* handler */,
                                        middlemanIdentity, originatorIdentity),
                                        middlemanIdentity, originatorIdentity),
                moduleId,
                moduleId,
                () -> {
                () -> listUnderlyingModuleProperties(originatorIdentity)
                    ArrayList<ModuleProperties> modulePropList = new ArrayList<>();
                );
                    SoundTrigger.listModulesAsMiddleman(modulePropList, middlemanIdentity,
                                                    originatorIdentity);
                    return modulePropList;
                });
    }
    }


    class SoundTriggerServiceStub extends ISoundTriggerService.Stub {
    class SoundTriggerServiceStub extends ISoundTriggerService.Stub {
@@ -276,12 +293,7 @@ public class SoundTriggerService extends SystemService {
        public List<ModuleProperties> listModuleProperties(@NonNull Identity originatorIdentity) {
        public List<ModuleProperties> listModuleProperties(@NonNull Identity originatorIdentity) {
            try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect(
            try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect(
                    originatorIdentity)) {
                    originatorIdentity)) {
                Identity middlemanIdentity = new Identity();
                return listUnderlyingModuleProperties(originatorIdentity);
                middlemanIdentity.packageName = ActivityThread.currentOpPackageName();
                ArrayList<ModuleProperties> moduleList = new ArrayList<>();
                SoundTrigger.listModulesAsMiddleman(moduleList, middlemanIdentity,
                                                originatorIdentity);
                return moduleList;
            }
            }
        }
        }
    }
    }
@@ -1647,17 +1659,10 @@ public class SoundTriggerService extends SystemService {


        @Override
        @Override
        public List<ModuleProperties> listModuleProperties(Identity originatorIdentity) {
        public List<ModuleProperties> listModuleProperties(Identity originatorIdentity) {
            ArrayList<ModuleProperties> moduleList = new ArrayList<>();
            try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect(
            try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect(
                    originatorIdentity)) {
                    originatorIdentity)) {
                Identity middlemanIdentity = new Identity();
                return listUnderlyingModuleProperties(originatorIdentity);
                middlemanIdentity.uid = Binder.getCallingUid();
                middlemanIdentity.pid = Binder.getCallingPid();
                middlemanIdentity.packageName = ActivityThread.currentOpPackageName();
                SoundTrigger.listModulesAsMiddleman(moduleList, middlemanIdentity,
                                                originatorIdentity);
            }
            }
            return moduleList;
        }
        }


        @Override
        @Override