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

Commit 027287ae authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Use Context#createPackageContextAsUser alternative"

parents 6115cd38 3e8910e9
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -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();
@@ -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;
@@ -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));
        }
    }
+5 −8
Original line number Diff line number Diff line
@@ -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];
@@ -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),