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

Commit 33692f73 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Pipe through featureId from caller to permission checks in telephony

code

A featureId is only used by runtime permissions.

Test: atest FrameworksTelephonyTests CtsAppOpsTestCases
Bug: 136595429
Change-Id: I7ef41e8961e48d40e5685c4a521e83cb20953e48
parent 89c5098c
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -376,7 +376,7 @@ public final class Telecom extends BaseCommand {
    private void runGetMaxPhones() throws RemoteException {
    private void runGetMaxPhones() throws RemoteException {
        // This assumes the max number of SIMs is 2, which it currently is
        // This assumes the max number of SIMs is 2, which it currently is
        if (TelephonyManager.MULTISIM_ALLOWED
        if (TelephonyManager.MULTISIM_ALLOWED
                == mTelephonyService.isMultiSimSupported("com.android.commands.telecom")) {
                == mTelephonyService.isMultiSimSupported("com.android.commands.telecom", null)) {
            System.out.println("2");
            System.out.println("2");
        } else {
        } else {
            System.out.println("1");
            System.out.println("1");
+1 −1
Original line number Original line Diff line number Diff line
@@ -161,7 +161,7 @@ public class Build {
        try {
        try {
            Application application = ActivityThread.currentApplication();
            Application application = ActivityThread.currentApplication();
            String callingPackage = application != null ? application.getPackageName() : null;
            String callingPackage = application != null ? application.getPackageName() : null;
            return service.getSerialForPackage(callingPackage);
            return service.getSerialForPackage(callingPackage, null);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
            e.rethrowFromSystemServer();
        }
        }
+2 −2
Original line number Original line Diff line number Diff line
@@ -21,5 +21,5 @@ package android.os;
 */
 */
interface IDeviceIdentifiersPolicyService {
interface IDeviceIdentifiersPolicyService {
    String getSerial();
    String getSerial();
    String getSerialForPackage(in String callingPackage);
    String getSerialForPackage(in String callingPackage, String callingFeatureId);
}
}
+4 −13
Original line number Original line Diff line number Diff line
@@ -15,7 +15,6 @@
 */
 */
package android.telephony;
package android.telephony;


import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.SystemApi;
import android.content.Context;
import android.content.Context;
@@ -23,8 +22,6 @@ import android.net.LinkProperties;
import android.net.NetworkCapabilities;
import android.net.NetworkCapabilities;
import android.os.Binder;
import android.os.Binder;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.telephony.Annotation.ApnType;
import android.telephony.Annotation.ApnType;
@@ -37,19 +34,12 @@ import android.telephony.Annotation.PreciseCallStates;
import android.telephony.Annotation.RadioPowerState;
import android.telephony.Annotation.RadioPowerState;
import android.telephony.Annotation.SimActivationState;
import android.telephony.Annotation.SimActivationState;
import android.telephony.Annotation.SrvccState;
import android.telephony.Annotation.SrvccState;
import android.telephony.CallQuality;
import android.telephony.CellInfo;
import android.telephony.DisconnectCause;
import android.telephony.PhoneCapability;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.data.ApnSetting;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.ImsReasonInfo;
import android.util.Log;
import android.util.Log;


import com.android.internal.telephony.ITelephonyRegistry;
import com.android.internal.telephony.IOnSubscriptionsChangedListener;
import com.android.internal.telephony.IOnSubscriptionsChangedListener;
import com.android.internal.telephony.ITelephonyRegistry;


import java.util.HashMap;
import java.util.HashMap;
import java.util.List;
import java.util.List;
@@ -120,7 +110,8 @@ public class TelephonyRegistryManager {
        };
        };
        mSubscriptionChangedListenerMap.put(listener, callback);
        mSubscriptionChangedListenerMap.put(listener, callback);
        try {
        try {
            sRegistry.addOnSubscriptionsChangedListener(mContext.getOpPackageName(), callback);
            sRegistry.addOnSubscriptionsChangedListener(mContext.getOpPackageName(),
                    mContext.getFeatureId(), callback);
        } catch (RemoteException ex) {
        } catch (RemoteException ex) {
            // system server crash
            // system server crash
        }
        }
@@ -179,7 +170,7 @@ public class TelephonyRegistryManager {
        mOpportunisticSubscriptionChangedListenerMap.put(listener, callback);
        mOpportunisticSubscriptionChangedListenerMap.put(listener, callback);
        try {
        try {
            sRegistry.addOnOpportunisticSubscriptionsChangedListener(mContext.getOpPackageName(),
            sRegistry.addOnOpportunisticSubscriptionsChangedListener(mContext.getOpPackageName(),
                    callback);
                    mContext.getFeatureId(), callback);
        } catch (RemoteException ex) {
        } catch (RemoteException ex) {
            // system server crash
            // system server crash
        }
        }
+9 −3
Original line number Original line Diff line number Diff line
@@ -32,16 +32,22 @@ import com.android.internal.telephony.IPhoneStateListener;
import com.android.internal.telephony.IOnSubscriptionsChangedListener;
import com.android.internal.telephony.IOnSubscriptionsChangedListener;


interface ITelephonyRegistry {
interface ITelephonyRegistry {
    void addOnSubscriptionsChangedListener(String pkg,
    void addOnSubscriptionsChangedListener(String pkg, String featureId,
            IOnSubscriptionsChangedListener callback);
            IOnSubscriptionsChangedListener callback);
    void addOnOpportunisticSubscriptionsChangedListener(String pkg,
    void addOnOpportunisticSubscriptionsChangedListener(String pkg, String featureId,
            IOnSubscriptionsChangedListener callback);
            IOnSubscriptionsChangedListener callback);
    void removeOnSubscriptionsChangedListener(String pkg,
    void removeOnSubscriptionsChangedListener(String pkg,
            IOnSubscriptionsChangedListener callback);
            IOnSubscriptionsChangedListener callback);
    /**
      * @deprecated Use {@link #listenWithFeature(String, String, IPhoneStateListener, int,
      * boolean) instead
      */
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    void listen(String pkg, IPhoneStateListener callback, int events, boolean notifyNow);
    void listen(String pkg, IPhoneStateListener callback, int events, boolean notifyNow);
    void listenForSubscriber(in int subId, String pkg, IPhoneStateListener callback, int events,
    void listenWithFeature(String pkg, String featureId, IPhoneStateListener callback, int events,
            boolean notifyNow);
            boolean notifyNow);
    void listenForSubscriber(in int subId, String pkg, String featureId,
            IPhoneStateListener callback, int events, boolean notifyNow);
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    void notifyCallStateForAllSubs(int state, String incomingNumber);
    void notifyCallStateForAllSubs(int state, String incomingNumber);
    void notifyCallState(in int phoneId, in int subId, int state, String incomingNumber);
    void notifyCallState(in int phoneId, in int subId, int state, String incomingNumber);
Loading