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

Commit be7a1fef authored by Hyunho's avatar Hyunho
Browse files

Changed the way carrier config changes

Update EabBulkCapabilityUpdater to use the onCarrierConfigChanged indication from EabControllerImpl

Bug: b/181887025
Test: atest EabBulkCapabilityUpdaterTest
Change-Id: I1e122c64450d5b504cfaa93197439182c21e0956
Merged-In: I1e122c64450d5b504cfaa93197439182c21e0956
parent 4f4f2241
Loading
Loading
Loading
Loading
+16 −42
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ public final class EabBulkCapabilityUpdater {
    private final AlarmManager.OnAlarmListener mCapabilityExpiredListener;
    private final ContactChangedListener mContactProviderListener;
    private final EabSettingsListener mEabSettingListener;
    private final BroadcastReceiver mCarrierConfigChangedListener;
    private final EabControllerImpl mEabControllerImpl;
    private final EabContactSyncController mEabContactSyncController;

@@ -135,28 +134,6 @@ public final class EabBulkCapabilityUpdater {
        }
    }

    /**
     * Listen carrier config changed to prevent this instance created before carrier config loaded.
     */
    private class CarrierConfigChangedListener extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            boolean isSupportBulkCapabilityExchange = getBooleanCarrierConfig(
                CarrierConfigManager.Ims.KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL, mSubId);

            Log.d(TAG, "Carrier config changed. "
                    + "isCarrierConfigEnabled: " + mIsCarrierConfigEnabled
                    + ", isSupportBulkCapabilityExchange: " + isSupportBulkCapabilityExchange);
            if (!mIsCarrierConfigEnabled && isSupportBulkCapabilityExchange) {
                enableBulkCapability();
                updateExpiredTimeAlert();
                mIsCarrierConfigEnabled = true;
            } else if (mIsCarrierConfigEnabled && !isSupportBulkCapabilityExchange) {
                onDestroy();
            }
        }
    }

    private IRcsUceControllerCallback mRcsUceControllerCallback = new IRcsUceControllerCallback() {
        @Override
        public void onCapabilitiesReceived(List<RcsContactUceCapability> contactCapabilities) {
@@ -227,7 +204,6 @@ public final class EabBulkCapabilityUpdater {
        mContactProviderListener = new ContactChangedListener(mHandler);
        mEabSettingListener = new EabSettingsListener(mHandler);
        mCapabilityExpiredListener = new CapabilityExpiredListener();
        mCarrierConfigChangedListener = new CarrierConfigChangedListener();

        Log.d(TAG, "create EabBulkCapabilityUpdater() subId: " + mSubId);

@@ -250,7 +226,6 @@ public final class EabBulkCapabilityUpdater {
            registerEabUserSettingsListener();
            mIsCarrierConfigEnabled = false;
        } else {
            registerCarrierConfigChanged();
            Log.d(TAG, "Not support bulk capability exchange.");
        }
    }
@@ -421,7 +396,6 @@ public final class EabBulkCapabilityUpdater {
        cancelTimeAlert(mContext);
        unRegisterContactProviderListener();
        unRegisterEabUserSettings();
        unRegisterCarrierConfigChanged();
    }

    private void registerContactProviderListener() {
@@ -442,14 +416,6 @@ public final class EabBulkCapabilityUpdater {
                mEabSettingListener);
    }

    private void registerCarrierConfigChanged() {
        Log.d(TAG, "registerCarrierConfigChanged");
        mIsCarrierConfigListenerRegistered = true;
        IntentFilter FILTER_CARRIER_CONFIG_CHANGED =
                new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
        mContext.registerReceiver(mCarrierConfigChangedListener, FILTER_CARRIER_CONFIG_CHANGED);
    }

    private void unRegisterContactProviderListener() {
        Log.d(TAG, "unRegisterContactProviderListener");
        if (mIsContactProviderListenerRegistered) {
@@ -466,15 +432,23 @@ public final class EabBulkCapabilityUpdater {
        }
    }

    private void unRegisterCarrierConfigChanged() {
        Log.d(TAG, "unregisterCarrierConfigChanged");
        if (mIsCarrierConfigListenerRegistered) {
            mIsCarrierConfigListenerRegistered = false;
            mContext.unregisterReceiver(mCarrierConfigChangedListener);
        }
    }

    public void setUceRequestCallback(UceController.UceControllerCallback uceControllerCallback) {
        mUceControllerCallback = uceControllerCallback;
    }

    public void onCarrierConfigChanged() {
        boolean isSupportBulkCapabilityExchange = getBooleanCarrierConfig(
                CarrierConfigManager.Ims.KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL, mSubId);

        Log.d(TAG, "Carrier config changed. "
                + "isCarrierConfigEnabled: " + mIsCarrierConfigEnabled
                + ", isSupportBulkCapabilityExchange: " + isSupportBulkCapabilityExchange);
        if (!mIsCarrierConfigEnabled && isSupportBulkCapabilityExchange) {
            enableBulkCapability();
            updateExpiredTimeAlert();
            mIsCarrierConfigEnabled = true;
        } else if (mIsCarrierConfigEnabled && !isSupportBulkCapabilityExchange) {
            onDestroy();
        }
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -125,6 +125,9 @@ public class EabControllerImpl implements EabController {
        // Pick up changes to CarrierConfig and run any applicable cleanup tasks associated with
        // that configuration.
        mCapabilityCleanupRunnable.run();
        if (!mIsSetDestroyedFlag) {
            mEabBulkCapabilityUpdater.onCarrierConfigChanged();
        }
    }

    /**
+29 −0
Original line number Diff line number Diff line
@@ -173,6 +173,35 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
                any(IRcsUceControllerCallback.class));
    }

    @Test
    public void testCarrierConfigEnabled() throws Exception {
        // mock user settings
        mockUceUserSettings(true);
        mockBulkCapabilityCarrierConfig(false);
        // mock expired contact list
        List<Uri> expiredContactList = new ArrayList<>();
        expiredContactList.add(Uri.parse("test"));
        doReturn(expiredContactList)
                .when(mEabContactSyncController)
                .syncContactToEabProvider(any());

        EabBulkCapabilityUpdater mEabBulkCapabilityUpdater = new EabBulkCapabilityUpdater(
                mContext,
                mSubId,
                mMockEabControllerImpl,
                mEabContactSyncController,
                mMockUceControllerCallback,
                mHandler);

        mockBulkCapabilityCarrierConfig(true);
        mEabBulkCapabilityUpdater.onCarrierConfigChanged();
        waitHandlerThreadFinish();

        verify(mMockUceControllerCallback).refreshCapabilities(
                anyList(),
                any(IRcsUceControllerCallback.class));
    }

    private void mockBulkCapabilityCarrierConfig(boolean isEnabled) {
        PersistableBundle persistableBundle = new PersistableBundle();
        persistableBundle.putBoolean(