Loading src/java/com/android/internal/telephony/ims/ImsResolver.java +9 −5 Original line number Diff line number Diff line Loading @@ -379,6 +379,11 @@ public class ImsResolver implements ImsServiceController.ImsServiceControllerCal private final CarrierConfigManager mCarrierConfigManager; private final Context mContext; // Special context created only for registering receivers for all users using UserHandle.ALL. // The lifetime of a registered receiver is bounded by the lifetime of the context it's // registered through, so we must retain the Context as long as we need the receiver to be // active. private final Context mReceiverContext; // Locks mBoundImsServicesByFeature only. Be careful to avoid deadlocks from // ImsServiceController callbacks. private final Object mBoundServicesLock = new Object(); Loading Loading @@ -514,6 +519,7 @@ public class ImsResolver implements ImsServiceController.ImsServiceControllerCal public ImsResolver(Context context, String defaultImsPackageName, int numSlots, boolean isDynamicBinding) { mContext = context; mReceiverContext = context.createContextAsUser(UserHandle.ALL, 0 /*flags*/); mDeviceService = defaultImsPackageName; mNumSlots = numSlots; mIsDynamicBinding = isDynamicBinding; Loading @@ -536,12 +542,10 @@ public class ImsResolver implements ImsServiceController.ImsServiceControllerCal appChangedFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); appChangedFilter.addAction(Intent.ACTION_PACKAGE_ADDED); appChangedFilter.addDataScheme("package"); context.registerReceiverAsUser(mAppChangedReceiver, UserHandle.ALL, appChangedFilter, null, null); context.registerReceiver(mConfigChangedReceiver, new IntentFilter( mReceiverContext.registerReceiver(mAppChangedReceiver, appChangedFilter); mReceiverContext.registerReceiver(mConfigChangedReceiver, new IntentFilter( CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)); context.registerReceiver(mBootCompleted, new IntentFilter( mReceiverContext.registerReceiver(mBootCompleted, new IntentFilter( Intent.ACTION_BOOT_COMPLETED)); } } Loading tests/telephonytests/src/com/android/internal/telephony/ims/ImsResolverTest.java +5 −8 Original line number Diff line number Diff line Loading @@ -926,6 +926,7 @@ public class ImsResolverTest extends ImsTestBase { private void setupResolver(int numSlots) { when(mMockContext.getPackageManager()).thenReturn(mMockPM); when(mMockContext.createContextAsUser(any(), eq(0))).thenReturn(mMockContext); when(mMockContext.getSystemService(eq(Context.CARRIER_CONFIG_SERVICE))).thenReturn( mMockCarrierConfigManager); mCarrierConfigs = new PersistableBundle[numSlots]; Loading @@ -947,16 +948,12 @@ public class ImsResolverTest extends ImsTestBase { fail("Unable to create looper from handler."); } ArgumentCaptor<BroadcastReceiver> packageBroadcastCaptor = ArgumentCaptor.forClass(BroadcastReceiver.class); ArgumentCaptor<BroadcastReceiver> receiversCaptor = ArgumentCaptor.forClass(BroadcastReceiver.class); verify(mMockContext).registerReceiverAsUser(packageBroadcastCaptor.capture(), any(), any(), any(), any()); mTestPackageBroadcastReceiver = packageBroadcastCaptor.getValue(); verify(mMockContext, times(2)).registerReceiver(receiversCaptor.capture(), any()); mTestCarrierConfigReceiver = receiversCaptor.getAllValues().get(0); mTestBootCompleteReceiver = receiversCaptor.getAllValues().get(1); verify(mMockContext, times(3)).registerReceiver(receiversCaptor.capture(), any()); mTestPackageBroadcastReceiver = receiversCaptor.getAllValues().get(0); mTestCarrierConfigReceiver = receiversCaptor.getAllValues().get(1); mTestBootCompleteReceiver = receiversCaptor.getAllValues().get(2); mTestImsResolver.setSubscriptionManagerProxy(mTestSubscriptionManagerProxy); mTestImsResolver.setTelephonyManagerProxy(mTestTelephonyManagerProxy); when(mMockQueryManagerFactory.create(any(Context.class), Loading Loading
src/java/com/android/internal/telephony/ims/ImsResolver.java +9 −5 Original line number Diff line number Diff line Loading @@ -379,6 +379,11 @@ public class ImsResolver implements ImsServiceController.ImsServiceControllerCal private final CarrierConfigManager mCarrierConfigManager; private final Context mContext; // Special context created only for registering receivers for all users using UserHandle.ALL. // The lifetime of a registered receiver is bounded by the lifetime of the context it's // registered through, so we must retain the Context as long as we need the receiver to be // active. private final Context mReceiverContext; // Locks mBoundImsServicesByFeature only. Be careful to avoid deadlocks from // ImsServiceController callbacks. private final Object mBoundServicesLock = new Object(); Loading Loading @@ -514,6 +519,7 @@ public class ImsResolver implements ImsServiceController.ImsServiceControllerCal public ImsResolver(Context context, String defaultImsPackageName, int numSlots, boolean isDynamicBinding) { mContext = context; mReceiverContext = context.createContextAsUser(UserHandle.ALL, 0 /*flags*/); mDeviceService = defaultImsPackageName; mNumSlots = numSlots; mIsDynamicBinding = isDynamicBinding; Loading @@ -536,12 +542,10 @@ public class ImsResolver implements ImsServiceController.ImsServiceControllerCal appChangedFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); appChangedFilter.addAction(Intent.ACTION_PACKAGE_ADDED); appChangedFilter.addDataScheme("package"); context.registerReceiverAsUser(mAppChangedReceiver, UserHandle.ALL, appChangedFilter, null, null); context.registerReceiver(mConfigChangedReceiver, new IntentFilter( mReceiverContext.registerReceiver(mAppChangedReceiver, appChangedFilter); mReceiverContext.registerReceiver(mConfigChangedReceiver, new IntentFilter( CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)); context.registerReceiver(mBootCompleted, new IntentFilter( mReceiverContext.registerReceiver(mBootCompleted, new IntentFilter( Intent.ACTION_BOOT_COMPLETED)); } } Loading
tests/telephonytests/src/com/android/internal/telephony/ims/ImsResolverTest.java +5 −8 Original line number Diff line number Diff line Loading @@ -926,6 +926,7 @@ public class ImsResolverTest extends ImsTestBase { private void setupResolver(int numSlots) { when(mMockContext.getPackageManager()).thenReturn(mMockPM); when(mMockContext.createContextAsUser(any(), eq(0))).thenReturn(mMockContext); when(mMockContext.getSystemService(eq(Context.CARRIER_CONFIG_SERVICE))).thenReturn( mMockCarrierConfigManager); mCarrierConfigs = new PersistableBundle[numSlots]; Loading @@ -947,16 +948,12 @@ public class ImsResolverTest extends ImsTestBase { fail("Unable to create looper from handler."); } ArgumentCaptor<BroadcastReceiver> packageBroadcastCaptor = ArgumentCaptor.forClass(BroadcastReceiver.class); ArgumentCaptor<BroadcastReceiver> receiversCaptor = ArgumentCaptor.forClass(BroadcastReceiver.class); verify(mMockContext).registerReceiverAsUser(packageBroadcastCaptor.capture(), any(), any(), any(), any()); mTestPackageBroadcastReceiver = packageBroadcastCaptor.getValue(); verify(mMockContext, times(2)).registerReceiver(receiversCaptor.capture(), any()); mTestCarrierConfigReceiver = receiversCaptor.getAllValues().get(0); mTestBootCompleteReceiver = receiversCaptor.getAllValues().get(1); verify(mMockContext, times(3)).registerReceiver(receiversCaptor.capture(), any()); mTestPackageBroadcastReceiver = receiversCaptor.getAllValues().get(0); mTestCarrierConfigReceiver = receiversCaptor.getAllValues().get(1); mTestBootCompleteReceiver = receiversCaptor.getAllValues().get(2); mTestImsResolver.setSubscriptionManagerProxy(mTestSubscriptionManagerProxy); mTestImsResolver.setTelephonyManagerProxy(mTestTelephonyManagerProxy); when(mMockQueryManagerFactory.create(any(Context.class), Loading