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

Commit e888f35b authored by Sangyun Yun's avatar Sangyun Yun Committed by Android (Google) Code Review
Browse files

Merge "Notify DataEnabled when a new subscription id is changed to valid"

parents 345814c7 26b03489
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.preference.PreferenceManager;
import android.provider.Settings;
import android.sysprop.TelephonyProperties;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager.MobileDataPolicy;
@@ -207,7 +208,9 @@ public class DataSettingsManager extends Handler {
            case EVENT_SUBSCRIPTIONS_CHANGED: {
                mSubId = (int) msg.obj;
                refreshEnabledMobileDataPolicy();
                updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_USER);
                updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_USER,
                        mPhone.getContext().getOpPackageName(),
                        SubscriptionManager.isValidSubscriptionId(mSubId));
                mPhone.notifyUserMobileDataStateChanged(isUserDataEnabled());
                break;
            }
@@ -339,15 +342,15 @@ public class DataSettingsManager extends Handler {
    }

    private void updateDataEnabledAndNotify(@TelephonyManager.DataEnabledChangedReason int reason) {
        updateDataEnabledAndNotify(reason, mPhone.getContext().getOpPackageName());
        updateDataEnabledAndNotify(reason, mPhone.getContext().getOpPackageName(), false);
    }

    private void updateDataEnabledAndNotify(@TelephonyManager.DataEnabledChangedReason int reason,
            @NonNull String callingPackage) {
            @NonNull String callingPackage, boolean shouldNotify) {
        boolean prevDataEnabled = mIsDataEnabled;
        mIsDataEnabled = isDataEnabled(ApnSetting.TYPE_ALL);
        log("mIsDataEnabled=" + mIsDataEnabled + ", prevDataEnabled=" + prevDataEnabled);
        if (!mInitialized || prevDataEnabled != mIsDataEnabled) {
        if (!mInitialized || shouldNotify || prevDataEnabled != mIsDataEnabled) {
            if (!mInitialized) mInitialized = true;
            notifyDataEnabledChanged(mIsDataEnabled, reason, callingPackage);
        }
@@ -440,7 +443,8 @@ public class DataSettingsManager extends Handler {
            mPhone.notifyUserMobileDataStateChanged(enabled);
            mDataSettingsManagerCallbacks.forEach(callback -> callback.invokeFromExecutor(
                    () -> callback.onUserDataEnabledChanged(enabled)));
            updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_USER, callingPackage);
            updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_USER,
                    callingPackage, false);
        }
    }

@@ -471,7 +475,8 @@ public class DataSettingsManager extends Handler {
        if (mDataEnabledSettings.get(TelephonyManager.DATA_ENABLED_REASON_POLICY) != enabled) {
            logl("PolicyDataEnabled changed to " + enabled + ", callingPackage=" + callingPackage);
            mDataEnabledSettings.put(TelephonyManager.DATA_ENABLED_REASON_POLICY, enabled);
            updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_POLICY, callingPackage);
            updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_POLICY,
                    callingPackage, false);
        }
    }

@@ -485,7 +490,7 @@ public class DataSettingsManager extends Handler {
            logl("CarrierDataEnabled changed to " + enabled + ", callingPackage=" + callingPackage);
            mDataEnabledSettings.put(TelephonyManager.DATA_ENABLED_REASON_CARRIER, enabled);
            updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_CARRIER,
                    callingPackage);
                    callingPackage, false);
        }
    }

@@ -499,7 +504,7 @@ public class DataSettingsManager extends Handler {
            logl("ThermalDataEnabled changed to " + enabled + ", callingPackage=" + callingPackage);
            mDataEnabledSettings.put(TelephonyManager.DATA_ENABLED_REASON_THERMAL, enabled);
            updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_THERMAL,
                    callingPackage);
                    callingPackage, false);
        }
    }

+26 −0
Original line number Diff line number Diff line
@@ -29,7 +29,9 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.annotation.NonNull;
import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
import android.telephony.TelephonyManager;
import android.testing.AndroidTestingRunner;
@@ -49,6 +51,8 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;

import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
@@ -178,4 +182,26 @@ public class DataSettingsManagerTest extends TelephonyTest {
        callback.onUserDataEnabledChanged(true);
        verify(mPhone).notifyDataEnabled(true, TelephonyManager.DATA_ENABLED_REASON_OVERRIDE);
    }

    @Test
    public void testNotifyDataEnabledFromNewValidSubId() throws Exception {
        final CountDownLatch latch = new CountDownLatch(1);
        mDataSettingsManagerUT.registerCallback(
                new DataSettingsManagerCallback(mDataSettingsManagerUT::post) {
                    @Override
                    public void onDataEnabledChanged(boolean enabled,
                            @TelephonyManager.DataEnabledChangedReason int reason,
                            @NonNull String callingPackage) {
                        latch.countDown();
                    }
                });

        Message.obtain(mDataSettingsManagerUT, 4 /* EVENT_SUBSCRIPTIONS_CHANGED */, -1)
                .sendToTarget();
        Message.obtain(mDataSettingsManagerUT, 4 /* EVENT_SUBSCRIPTIONS_CHANGED */, 2)
                .sendToTarget();
        processAllMessages();

        assertTrue(latch.await(1000, TimeUnit.MILLISECONDS));
    }
}