Loading src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +12 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.Manifest; import android.annotation.Nullable; import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.app.AppGlobals; import android.app.UserSwitchObserver; import android.content.ContentResolver; import android.content.ContentValues; Loading @@ -36,6 +37,7 @@ import android.os.ParcelUuid; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ServiceManager; import android.permission.IPermissionManager; import android.preference.PreferenceManager; import android.provider.Settings; import android.provider.Settings.Global; Loading Loading @@ -112,6 +114,7 @@ public class SubscriptionInfoUpdater extends Handler { private EuiccManager mEuiccManager; @UnsupportedAppUsage private IPackageManager mPackageManager; private IPermissionManager mPermissionManager; private Handler mBackgroundHandler; // The current foreground user ID. Loading @@ -137,12 +140,14 @@ public class SubscriptionInfoUpdater extends Handler { public SubscriptionInfoUpdater( Looper looper, Context context, Phone[] phone, CommandsInterface[] ci) { this(looper, context, phone, ci, IPackageManager.Stub.asInterface(ServiceManager.getService("package"))); IPackageManager.Stub.asInterface(ServiceManager.getService("package")), AppGlobals.getPermissionManager()); } @VisibleForTesting public SubscriptionInfoUpdater( Looper looper, Context context, Phone[] phone, CommandsInterface[] ci, IPackageManager packageMgr) { CommandsInterface[] ci, IPackageManager packageMgr, IPermissionManager permissionMgr) { logd("Constructor invoked"); mBackgroundHandler = new Handler(looper); Loading @@ -151,6 +156,7 @@ public class SubscriptionInfoUpdater extends Handler { mSubscriptionManager = SubscriptionManager.from(mContext); mEuiccManager = (EuiccManager) mContext.getSystemService(Context.EUICC_SERVICE); mPackageManager = packageMgr; mPermissionManager = permissionMgr; mCarrierServiceBindHelper = new CarrierServiceBindHelper(mContext); initializeCarrierApps(); Loading @@ -169,7 +175,7 @@ public class SubscriptionInfoUpdater extends Handler { throws RemoteException { mCurrentlyActiveUserId = newUserId; CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), mPackageManager, TelephonyManager.getDefault(), mPackageManager, mPermissionManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); if (reply != null) { Loading @@ -185,8 +191,8 @@ public class SubscriptionInfoUpdater extends Handler { logd("Couldn't get current user ID; guessing it's 0: " + e.getMessage()); } CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), mPackageManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); mPackageManager, mPermissionManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); } /** Loading Loading @@ -537,7 +543,7 @@ public class SubscriptionInfoUpdater extends Handler { // Update set of enabled carrier apps now that the privilege rules may have changed. CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), mPackageManager, TelephonyManager.getDefault(), mPackageManager, mPermissionManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); /** Loading src/java/com/android/internal/telephony/dataconnection/DataServiceManager.java +9 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.LinkProperties; Loading @@ -37,6 +36,7 @@ import android.os.RegistrantList; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.permission.IPermissionManager; import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.CarrierConfigManager; Loading Loading @@ -74,7 +74,7 @@ public class DataServiceManager extends Handler { private final CarrierConfigManager mCarrierConfigManager; private final AppOpsManager mAppOps; private final IPackageManager mPackageManager; private final IPermissionManager mPermissionManager; private final int mTransportType; Loading Loading @@ -122,7 +122,7 @@ public class DataServiceManager extends Handler { private void grantPermissionsToService(String packageName) { final String[] pkgToGrant = {packageName}; try { mPackageManager.grantDefaultPermissionsToEnabledTelephonyDataServices( mPermissionManager.grantDefaultPermissionsToEnabledTelephonyDataServices( pkgToGrant, mPhone.getContext().getUserId()); mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS, mPhone.getContext().getUserId(), pkgToGrant[0], AppOpsManager.MODE_ALLOWED); Loading @@ -146,7 +146,7 @@ public class DataServiceManager extends Handler { try { String[] dataServicesArray = new String[dataServices.size()]; dataServices.toArray(dataServicesArray); mPackageManager.revokeDefaultPermissionsFromDisabledTelephonyDataServices( mPermissionManager.revokeDefaultPermissionsFromDisabledTelephonyDataServices( dataServicesArray, mPhone.getContext().getUserId()); for (String pkg : dataServices) { mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS, Loading Loading @@ -258,7 +258,11 @@ public class DataServiceManager extends Handler { mBound = false; mCarrierConfigManager = (CarrierConfigManager) phone.getContext().getSystemService( Context.CARRIER_CONFIG_SERVICE); mPackageManager = IPackageManager.Stub.asInterface(ServiceManager.getService("package")); // NOTE: Do NOT use AppGlobals to retrieve the permission manager; AppGlobals // caches the service instance, but we need to explicitly request a new service // so it can be mocked out for tests mPermissionManager = IPermissionManager.Stub.asInterface(ServiceManager.getService("permissionmgr")); mAppOps = (AppOpsManager) phone.getContext().getSystemService(Context.APP_OPS_SERVICE); IntentFilter intentFilter = new IntentFilter(); Loading src/java/com/android/internal/telephony/ims/ImsServiceController.java +8 −8 Original line number Diff line number Diff line Loading @@ -16,17 +16,17 @@ package com.android.internal.telephony.ims; import android.app.AppGlobals; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.IPackageManager; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; import android.os.IInterface; import android.os.RemoteException; import android.os.ServiceManager; import android.permission.IPermissionManager; import android.telephony.ims.ImsService; import android.telephony.ims.aidl.IImsConfig; import android.telephony.ims.aidl.IImsMmTelFeature; Loading Loading @@ -176,7 +176,7 @@ public class ImsServiceController { private static final int REBIND_MAXIMUM_DELAY_MS = 60 * 1000; // 1 minute private final ComponentName mComponentName; private final HandlerThread mHandlerThread = new HandlerThread("ImsServiceControllerHandler"); private final IPackageManager mPackageManager; private final IPermissionManager mPermissionManager; private ImsServiceControllerCallbacks mCallbacks; private ExponentialBackoff mBackoff; Loading Loading @@ -298,7 +298,7 @@ public class ImsServiceController { 2, /* multiplier */ mHandlerThread.getLooper(), mRestartImsServiceRunnable); mPackageManager = IPackageManager.Stub.asInterface(ServiceManager.getService("package")); mPermissionManager = AppGlobals.getPermissionManager(); } @VisibleForTesting Loading @@ -315,7 +315,7 @@ public class ImsServiceController { 2, /* multiplier */ handler, mRestartImsServiceRunnable); mPackageManager = null; mPermissionManager = null; } /** Loading Loading @@ -584,14 +584,14 @@ public class ImsServiceController { mBackoff.start(); } // Grant runtime permissions to ImsService. PackageManager ensures that the ImsService is // Grant runtime permissions to ImsService. PermissionManager ensures that the ImsService is // system/signed before granting permissions. private void grantPermissionsToService() { Log.i(LOG_TAG, "Granting Runtime permissions to:" + getComponentName()); String[] pkgToGrant = {mComponentName.getPackageName()}; try { if (mPackageManager != null) { mPackageManager.grantDefaultPermissionsToEnabledImsServices(pkgToGrant, if (mPermissionManager != null) { mPermissionManager.grantDefaultPermissionsToEnabledImsServices(pkgToGrant, mContext.getUserId()); } } catch (RemoteException e) { Loading tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java +74 −55 File changed.Preview size limit exceeded, changes collapsed. Show changes tests/telephonytests/src/com/android/internal/telephony/SubscriptionInfoUpdaterTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.net.Uri; import android.os.HandlerThread; import android.os.ParcelUuid; import android.os.PersistableBundle; import android.permission.IPermissionManager; import android.service.euicc.EuiccProfileInfo; import android.service.euicc.EuiccService; import android.service.euicc.GetEuiccProfileInfoListResult; Loading Loading @@ -99,6 +100,8 @@ public class SubscriptionInfoUpdaterTest extends TelephonyTest { @Mock private IPackageManager mPackageManager; @Mock private IPermissionManager mPermissionManager; @Mock private UiccSlot mUiccSlot; /*Custom ContentProvider */ Loading @@ -118,7 +121,8 @@ public class SubscriptionInfoUpdaterTest extends TelephonyTest { @Override public void onLooperPrepared() { mUpdater = new SubscriptionInfoUpdater(getLooper(), mContext, new Phone[]{mPhone}, new CommandsInterface[]{mSimulatedCommands}, mPackageManager); new CommandsInterface[]{mSimulatedCommands}, mPackageManager, mPermissionManager); setReady(true); } } Loading Loading
src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +12 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.Manifest; import android.annotation.Nullable; import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.app.AppGlobals; import android.app.UserSwitchObserver; import android.content.ContentResolver; import android.content.ContentValues; Loading @@ -36,6 +37,7 @@ import android.os.ParcelUuid; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ServiceManager; import android.permission.IPermissionManager; import android.preference.PreferenceManager; import android.provider.Settings; import android.provider.Settings.Global; Loading Loading @@ -112,6 +114,7 @@ public class SubscriptionInfoUpdater extends Handler { private EuiccManager mEuiccManager; @UnsupportedAppUsage private IPackageManager mPackageManager; private IPermissionManager mPermissionManager; private Handler mBackgroundHandler; // The current foreground user ID. Loading @@ -137,12 +140,14 @@ public class SubscriptionInfoUpdater extends Handler { public SubscriptionInfoUpdater( Looper looper, Context context, Phone[] phone, CommandsInterface[] ci) { this(looper, context, phone, ci, IPackageManager.Stub.asInterface(ServiceManager.getService("package"))); IPackageManager.Stub.asInterface(ServiceManager.getService("package")), AppGlobals.getPermissionManager()); } @VisibleForTesting public SubscriptionInfoUpdater( Looper looper, Context context, Phone[] phone, CommandsInterface[] ci, IPackageManager packageMgr) { CommandsInterface[] ci, IPackageManager packageMgr, IPermissionManager permissionMgr) { logd("Constructor invoked"); mBackgroundHandler = new Handler(looper); Loading @@ -151,6 +156,7 @@ public class SubscriptionInfoUpdater extends Handler { mSubscriptionManager = SubscriptionManager.from(mContext); mEuiccManager = (EuiccManager) mContext.getSystemService(Context.EUICC_SERVICE); mPackageManager = packageMgr; mPermissionManager = permissionMgr; mCarrierServiceBindHelper = new CarrierServiceBindHelper(mContext); initializeCarrierApps(); Loading @@ -169,7 +175,7 @@ public class SubscriptionInfoUpdater extends Handler { throws RemoteException { mCurrentlyActiveUserId = newUserId; CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), mPackageManager, TelephonyManager.getDefault(), mPackageManager, mPermissionManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); if (reply != null) { Loading @@ -185,8 +191,8 @@ public class SubscriptionInfoUpdater extends Handler { logd("Couldn't get current user ID; guessing it's 0: " + e.getMessage()); } CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), mPackageManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); mPackageManager, mPermissionManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); } /** Loading Loading @@ -537,7 +543,7 @@ public class SubscriptionInfoUpdater extends Handler { // Update set of enabled carrier apps now that the privilege rules may have changed. CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), mPackageManager, TelephonyManager.getDefault(), mPackageManager, mPermissionManager, TelephonyManager.getDefault(), mContext.getContentResolver(), mCurrentlyActiveUserId); /** Loading
src/java/com/android/internal/telephony/dataconnection/DataServiceManager.java +9 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.LinkProperties; Loading @@ -37,6 +36,7 @@ import android.os.RegistrantList; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.permission.IPermissionManager; import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.CarrierConfigManager; Loading Loading @@ -74,7 +74,7 @@ public class DataServiceManager extends Handler { private final CarrierConfigManager mCarrierConfigManager; private final AppOpsManager mAppOps; private final IPackageManager mPackageManager; private final IPermissionManager mPermissionManager; private final int mTransportType; Loading Loading @@ -122,7 +122,7 @@ public class DataServiceManager extends Handler { private void grantPermissionsToService(String packageName) { final String[] pkgToGrant = {packageName}; try { mPackageManager.grantDefaultPermissionsToEnabledTelephonyDataServices( mPermissionManager.grantDefaultPermissionsToEnabledTelephonyDataServices( pkgToGrant, mPhone.getContext().getUserId()); mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS, mPhone.getContext().getUserId(), pkgToGrant[0], AppOpsManager.MODE_ALLOWED); Loading @@ -146,7 +146,7 @@ public class DataServiceManager extends Handler { try { String[] dataServicesArray = new String[dataServices.size()]; dataServices.toArray(dataServicesArray); mPackageManager.revokeDefaultPermissionsFromDisabledTelephonyDataServices( mPermissionManager.revokeDefaultPermissionsFromDisabledTelephonyDataServices( dataServicesArray, mPhone.getContext().getUserId()); for (String pkg : dataServices) { mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS, Loading Loading @@ -258,7 +258,11 @@ public class DataServiceManager extends Handler { mBound = false; mCarrierConfigManager = (CarrierConfigManager) phone.getContext().getSystemService( Context.CARRIER_CONFIG_SERVICE); mPackageManager = IPackageManager.Stub.asInterface(ServiceManager.getService("package")); // NOTE: Do NOT use AppGlobals to retrieve the permission manager; AppGlobals // caches the service instance, but we need to explicitly request a new service // so it can be mocked out for tests mPermissionManager = IPermissionManager.Stub.asInterface(ServiceManager.getService("permissionmgr")); mAppOps = (AppOpsManager) phone.getContext().getSystemService(Context.APP_OPS_SERVICE); IntentFilter intentFilter = new IntentFilter(); Loading
src/java/com/android/internal/telephony/ims/ImsServiceController.java +8 −8 Original line number Diff line number Diff line Loading @@ -16,17 +16,17 @@ package com.android.internal.telephony.ims; import android.app.AppGlobals; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.IPackageManager; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; import android.os.IInterface; import android.os.RemoteException; import android.os.ServiceManager; import android.permission.IPermissionManager; import android.telephony.ims.ImsService; import android.telephony.ims.aidl.IImsConfig; import android.telephony.ims.aidl.IImsMmTelFeature; Loading Loading @@ -176,7 +176,7 @@ public class ImsServiceController { private static final int REBIND_MAXIMUM_DELAY_MS = 60 * 1000; // 1 minute private final ComponentName mComponentName; private final HandlerThread mHandlerThread = new HandlerThread("ImsServiceControllerHandler"); private final IPackageManager mPackageManager; private final IPermissionManager mPermissionManager; private ImsServiceControllerCallbacks mCallbacks; private ExponentialBackoff mBackoff; Loading Loading @@ -298,7 +298,7 @@ public class ImsServiceController { 2, /* multiplier */ mHandlerThread.getLooper(), mRestartImsServiceRunnable); mPackageManager = IPackageManager.Stub.asInterface(ServiceManager.getService("package")); mPermissionManager = AppGlobals.getPermissionManager(); } @VisibleForTesting Loading @@ -315,7 +315,7 @@ public class ImsServiceController { 2, /* multiplier */ handler, mRestartImsServiceRunnable); mPackageManager = null; mPermissionManager = null; } /** Loading Loading @@ -584,14 +584,14 @@ public class ImsServiceController { mBackoff.start(); } // Grant runtime permissions to ImsService. PackageManager ensures that the ImsService is // Grant runtime permissions to ImsService. PermissionManager ensures that the ImsService is // system/signed before granting permissions. private void grantPermissionsToService() { Log.i(LOG_TAG, "Granting Runtime permissions to:" + getComponentName()); String[] pkgToGrant = {mComponentName.getPackageName()}; try { if (mPackageManager != null) { mPackageManager.grantDefaultPermissionsToEnabledImsServices(pkgToGrant, if (mPermissionManager != null) { mPermissionManager.grantDefaultPermissionsToEnabledImsServices(pkgToGrant, mContext.getUserId()); } } catch (RemoteException e) { Loading
tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java +74 −55 File changed.Preview size limit exceeded, changes collapsed. Show changes
tests/telephonytests/src/com/android/internal/telephony/SubscriptionInfoUpdaterTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.net.Uri; import android.os.HandlerThread; import android.os.ParcelUuid; import android.os.PersistableBundle; import android.permission.IPermissionManager; import android.service.euicc.EuiccProfileInfo; import android.service.euicc.EuiccService; import android.service.euicc.GetEuiccProfileInfoListResult; Loading Loading @@ -99,6 +100,8 @@ public class SubscriptionInfoUpdaterTest extends TelephonyTest { @Mock private IPackageManager mPackageManager; @Mock private IPermissionManager mPermissionManager; @Mock private UiccSlot mUiccSlot; /*Custom ContentProvider */ Loading @@ -118,7 +121,8 @@ public class SubscriptionInfoUpdaterTest extends TelephonyTest { @Override public void onLooperPrepared() { mUpdater = new SubscriptionInfoUpdater(getLooper(), mContext, new Phone[]{mPhone}, new CommandsInterface[]{mSimulatedCommands}, mPackageManager); new CommandsInterface[]{mSimulatedCommands}, mPackageManager, mPermissionManager); setReady(true); } } Loading