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

Commit a6f5d8e1 authored by Xiangyu/Malcolm Chen's avatar Xiangyu/Malcolm Chen Committed by Android (Google) Code Review
Browse files

Merge "Move setDataRoamingEnabled to DataEnabledSettings"

parents 3b28d713 3ec6840e
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -19,10 +19,12 @@ package com.android.internal.telephony.dataconnection;

import android.annotation.IntDef;
import android.content.ContentResolver;
import android.content.Context;
import android.os.Handler;
import android.os.RegistrantList;
import android.os.SystemProperties;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.Rlog;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -248,6 +250,58 @@ public class DataEnabledSettings {
        return retVal;
    }

    private String getRoamingDataSettingName() {
        // For single SIM phones, this is a per phone property. Or if it's invalid subId, we
        // read default setting.
        int subId = mPhone.getSubId();
        if (TelephonyManager.getDefault().getSimCount() == 1
                || !SubscriptionManager.isValidSubscriptionId(subId)) {
            return Settings.Global.DATA_ROAMING;
        } else {
            return Settings.Global.DATA_ROAMING + mPhone.getSubId();
        }
    }

    public synchronized void setDataRoamingEnabled(boolean enabled) {
        localLog("setDataRoamingEnabled", enabled);
        // Make sure if value is not initialized, it gets overwritten by the target value.
        int uninitializedValue = -1;
        int currentValue = Settings.Global.getInt(
                mResolver, getRoamingDataSettingName(), uninitializedValue);
        int targetValue = (enabled ? 1 : 0);
        int subId = mPhone.getSubId();

        if (currentValue != targetValue) {
            Settings.Global.putInt(mResolver, getRoamingDataSettingName(), targetValue);
            SubscriptionController.getInstance().setDataRoaming(targetValue, subId);
            // will trigger handleDataOnRoamingChange() through observer
        }
    }

    /**
     * Return current {@link android.provider.Settings.Global#DATA_ROAMING} value.
     */
    public synchronized boolean getDataRoamingEnabled() {
        return (Settings.Global.getInt(mResolver, getMobileDataSettingName(),
                getDefaultDataRoamingEnabled() ? 1 : 0) != 0);
    }

    /**
     * get default values for {@link Settings.Global#DATA_ROAMING}
     * return {@code true} if either
     * {@link CarrierConfigManager#KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL} or
     * system property ro.com.android.dataroaming is set to true. otherwise return {@code false}
     */
    public synchronized boolean getDefaultDataRoamingEnabled() {
        final CarrierConfigManager configMgr = (CarrierConfigManager)
                mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
        boolean isDataRoamingEnabled = "true".equalsIgnoreCase(SystemProperties.get(
                "ro.com.android.dataroaming", "false"));
        isDataRoamingEnabled |= configMgr.getConfigForSubId(mPhone.getSubId()).getBoolean(
                CarrierConfigManager.KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL);
        return isDataRoamingEnabled;
    }

    private void notifyDataEnabledChanged(boolean enabled, int reason) {
        mOverallDataEnabledChangedRegistrants.notifyResult(new Pair<>(enabled, reason));
    }
+9 −58
Original line number Diff line number Diff line
@@ -2427,74 +2427,27 @@ public class DcTracker extends Handler {
     * Modify {@link android.provider.Settings.Global#DATA_ROAMING} value for user modification only
     */
    public void setDataRoamingEnabledByUser(boolean enabled) {
        final int phoneSubId = mPhone.getSubId();
        if (getDataRoamingEnabled() != enabled) {
            int roaming = enabled ? 1 : 0;

            // For single SIM phones, this is a per phone property.
            if (mTelephonyManager.getSimCount() == 1) {
                Settings.Global.putInt(mResolver, Settings.Global.DATA_ROAMING, roaming);
        mDataEnabledSettings.setDataRoamingEnabled(enabled);
        setDataRoamingFromUserAction(true);
            } else {
                Settings.Global.putInt(mResolver, Settings.Global.DATA_ROAMING +
                         phoneSubId, roaming);
            }

            mSubscriptionManager.setDataRoaming(roaming, phoneSubId);
            // will trigger handleDataOnRoamingChange() through observer
        if (DBG) {
                log("setDataRoamingEnabledByUser: set phoneSubId=" + phoneSubId
            log("setDataRoamingEnabledByUser: set phoneSubId=" + mPhone.getSubId()
                    + " isRoaming=" + enabled);
        }
        } else {
            if (DBG) {
                log("setDataRoamingEnabledByUser: unchanged phoneSubId=" + phoneSubId
                        + " isRoaming=" + enabled);
             }
        }
    }

    /**
     * Return current {@link android.provider.Settings.Global#DATA_ROAMING} value.
     */
    public boolean getDataRoamingEnabled() {
        boolean isDataRoamingEnabled;
        final int phoneSubId = mPhone.getSubId();

        // For single SIM phones, this is a per phone property.
        if (mTelephonyManager.getSimCount() == 1) {
            isDataRoamingEnabled = Settings.Global.getInt(mResolver,
                    Settings.Global.DATA_ROAMING,
                    getDefaultDataRoamingEnabled() ? 1 : 0) != 0;
        } else {
            isDataRoamingEnabled = Settings.Global.getInt(mResolver,
                    Settings.Global.DATA_ROAMING + phoneSubId,
                    getDefaultDataRoamingEnabled() ? 1 : 0) != 0;
        }
        boolean isDataRoamingEnabled = mDataEnabledSettings.getDataRoamingEnabled();

        if (VDBG) {
            log("getDataRoamingEnabled: phoneSubId=" + phoneSubId
            log("getDataRoamingEnabled: phoneSubId=" + mPhone.getSubId()
                    + " isDataRoamingEnabled=" + isDataRoamingEnabled);
        }
        return isDataRoamingEnabled;
    }

    /**
     * get default values for {@link Settings.Global#DATA_ROAMING}
     * return {@code true} if either
     * {@link CarrierConfigManager#KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL} or
     * system property ro.com.android.dataroaming is set to true. otherwise return {@code false}
     */
    private boolean getDefaultDataRoamingEnabled() {
        final CarrierConfigManager configMgr = (CarrierConfigManager)
                mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
        boolean isDataRoamingEnabled = "true".equalsIgnoreCase(SystemProperties.get(
                "ro.com.android.dataroaming", "false"));
        isDataRoamingEnabled |= configMgr.getConfigForSubId(mPhone.getSubId()).getBoolean(
                CarrierConfigManager.KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL);
        return isDataRoamingEnabled;
    }

    /**
     * Set default value for {@link android.provider.Settings.Global#DATA_ROAMING}
     * if the setting is not from user actions. default value is based on carrier config and system
@@ -2519,10 +2472,8 @@ public class DcTracker extends Handler {
        log("setDefaultDataRoamingEnabled: useCarrierSpecificDefault "
                + useCarrierSpecificDefault);
        if (useCarrierSpecificDefault) {
            boolean defaultVal = getDefaultDataRoamingEnabled();
            log("setDefaultDataRoamingEnabled: " + setting + "default value: " + defaultVal);
            Settings.Global.putInt(mResolver, setting, defaultVal ? 1 : 0);
            mSubscriptionManager.setDataRoaming(defaultVal ? 1 : 0, mPhone.getSubId());
            boolean defaultVal = mDataEnabledSettings.getDefaultDataRoamingEnabled();
            mDataEnabledSettings.setDataRoamingEnabled(defaultVal);
        }
    }