Loading src/com/android/settings/datausage/AppDataUsage.java +12 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import androidx.annotation.VisibleForTesting; import androidx.loader.app.LoaderManager; import androidx.loader.content.Loader; import androidx.preference.Preference; import androidx.preference.Preference.OnPreferenceChangeListener; import androidx.preference.PreferenceCategory; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; Loading @@ -55,7 +56,7 @@ import com.android.settingslib.net.ChartDataLoaderCompat; import com.android.settingslib.net.UidDetail; import com.android.settingslib.net.UidDetailProvider; public class AppDataUsage extends DataUsageBase implements Preference.OnPreferenceChangeListener, public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceChangeListener, DataSaverBackend.Listener { private static final String TAG = "AppDataUsage"; Loading Loading @@ -137,7 +138,6 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen addUid(mAppItem.uids.keyAt(i)); } } addPreferencesFromResource(R.xml.app_data_usage); mTotalUsage = findPreference(KEY_TOTAL_USAGE); mForegroundUsage = findPreference(KEY_FOREGROUND_USAGE); Loading Loading @@ -258,6 +258,16 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen return super.onPreferenceTreeClick(preference); } @Override protected int getPreferenceScreenResId() { return R.xml.app_data_usage; } @Override protected String getLogTag() { return TAG; } @VisibleForTesting void updatePrefs() { updatePrefs(getAppRestrictBackground(), getUnrestrictData()); Loading src/com/android/settings/datausage/BillingCycleSettings.java +11 −2 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ import java.util.ArrayList; import java.util.List; @SearchIndexable public class BillingCycleSettings extends DataUsageBase implements public class BillingCycleSettings extends DataUsageBaseFragment implements Preference.OnPreferenceChangeListener, DataUsageEditController { private static final String TAG = "BillingCycleSettings"; Loading Loading @@ -105,7 +105,6 @@ public class BillingCycleSettings extends DataUsageBase implements Bundle args = getArguments(); mNetworkTemplate = args.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE); addPreferencesFromResource(R.xml.billing_cycle); mBillingCycle = findPreference(KEY_BILLING_CYCLE); mEnableDataWarning = (SwitchPreference) findPreference(KEY_SET_DATA_WARNING); mEnableDataWarning.setOnPreferenceChangeListener(this); Loading Loading @@ -191,6 +190,16 @@ public class BillingCycleSettings extends DataUsageBase implements return MetricsEvent.BILLING_CYCLE; } @Override protected int getPreferenceScreenResId() { return R.xml.billing_cycle; } @Override protected String getLogTag() { return TAG; } @VisibleForTesting void setPolicyLimitBytes(long limitBytes) { if (LOGD) Log.d(TAG, "setPolicyLimitBytes()"); Loading src/com/android/settings/datausage/DataUsageBase.javadeleted 100644 → 0 +0 −96 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.android.settings.datausage; import android.content.Context; import android.net.INetworkStatsService; import android.net.NetworkPolicy; import android.net.NetworkPolicyManager; import android.os.Bundle; import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; import com.android.settings.SettingsPreferenceFragment; import com.android.settingslib.NetworkPolicyEditor; /** * @deprecated please use {@link DataUsageBaseFragment} instead. */ @Deprecated public abstract class DataUsageBase extends SettingsPreferenceFragment { private static final String TAG = "DataUsageBase"; private static final String ETHERNET = "ethernet"; protected final TemplatePreference.NetworkServices services = new TemplatePreference.NetworkServices(); @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); final Context context = getActivity(); services.mNetworkService = INetworkManagementService.Stub.asInterface( ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE)); services.mStatsService = INetworkStatsService.Stub.asInterface( ServiceManager.getService(Context.NETWORK_STATS_SERVICE)); services.mPolicyManager = NetworkPolicyManager.from(context); services.mPolicyEditor = new NetworkPolicyEditor(services.mPolicyManager); services.mTelephonyManager = TelephonyManager.from(context); services.mSubscriptionManager = SubscriptionManager.from(context); services.mUserManager = UserManager.get(context); } @Override public void onResume() { super.onResume(); services.mPolicyEditor.read(); } protected boolean isAdmin() { return services.mUserManager.isAdminUser(); } protected boolean isMobileDataAvailable(int subId) { return services.mSubscriptionManager.getActiveSubscriptionInfo(subId) != null; } protected boolean isNetworkPolicyModifiable(NetworkPolicy policy, int subId) { return policy != null && isBandwidthControlEnabled() && services.mUserManager.isAdminUser() && isDataEnabled(subId); } private boolean isDataEnabled(int subId) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { return true; } return services.mTelephonyManager.getDataEnabled(subId); } protected boolean isBandwidthControlEnabled() { try { return services.mNetworkService.isBandwidthControlEnabled(); } catch (RemoteException e) { Log.w(TAG, "problem talking with INetworkManagementService: ", e); return false; } } } src/com/android/settings/datausage/DataUsageList.java +12 −3 Original line number Diff line number Diff line Loading @@ -76,12 +76,12 @@ import java.util.List; * Panel showing data usage history across various networks, including options * to inspect based on usage cycle and control through {@link NetworkPolicy}. */ public class DataUsageList extends DataUsageBase { public class DataUsageList extends DataUsageBaseFragment { public static final String EXTRA_SUB_ID = "sub_id"; public static final String EXTRA_NETWORK_TEMPLATE = "network_template"; private static final String TAG = "DataUsage"; private static final String TAG = "DataUsageList"; private static final boolean LOGD = false; private static final String KEY_USAGE_AMOUNT = "usage_amount"; Loading Loading @@ -140,7 +140,6 @@ public class DataUsageList extends DataUsageBase { mUidDetailProvider = new UidDetailProvider(context); addPreferencesFromResource(R.xml.data_usage_list); mUsageAmount = findPreference(KEY_USAGE_AMOUNT); mChart = (ChartDataUsagePreference) findPreference(KEY_CHART_DATA); mApps = (PreferenceGroup) findPreference(KEY_APPS_GROUP); Loading Loading @@ -235,6 +234,16 @@ public class DataUsageList extends DataUsageBase { super.onDestroy(); } @Override protected int getPreferenceScreenResId() { return R.xml.data_usage_list; } @Override protected String getLogTag() { return TAG; } void processArgument() { final Bundle args = getArguments(); if (args != null) { Loading tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -31,10 +31,12 @@ import android.os.Bundle; import android.provider.Settings; import androidx.fragment.app.FragmentActivity; import androidx.preference.PreferenceManager; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import org.junit.Before; import org.junit.Test; Loading Loading @@ -68,7 +70,11 @@ public class DataUsageListTest { @Test public void resumePause_shouldListenUnlistenDataStateChange() { mDataUsageList.onAttach(mContext); ReflectionHelpers.setField( mDataUsageList, "mVisibilityLoggerMixin", mock(VisibilityLoggerMixin.class)); ReflectionHelpers.setField( mDataUsageList, "mPreferenceManager", mock(PreferenceManager.class)); mDataUsageList.onResume(); verify(mListener).setListener(true, mDataUsageList.mSubId, mContext); Loading Loading
src/com/android/settings/datausage/AppDataUsage.java +12 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import androidx.annotation.VisibleForTesting; import androidx.loader.app.LoaderManager; import androidx.loader.content.Loader; import androidx.preference.Preference; import androidx.preference.Preference.OnPreferenceChangeListener; import androidx.preference.PreferenceCategory; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; Loading @@ -55,7 +56,7 @@ import com.android.settingslib.net.ChartDataLoaderCompat; import com.android.settingslib.net.UidDetail; import com.android.settingslib.net.UidDetailProvider; public class AppDataUsage extends DataUsageBase implements Preference.OnPreferenceChangeListener, public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceChangeListener, DataSaverBackend.Listener { private static final String TAG = "AppDataUsage"; Loading Loading @@ -137,7 +138,6 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen addUid(mAppItem.uids.keyAt(i)); } } addPreferencesFromResource(R.xml.app_data_usage); mTotalUsage = findPreference(KEY_TOTAL_USAGE); mForegroundUsage = findPreference(KEY_FOREGROUND_USAGE); Loading Loading @@ -258,6 +258,16 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen return super.onPreferenceTreeClick(preference); } @Override protected int getPreferenceScreenResId() { return R.xml.app_data_usage; } @Override protected String getLogTag() { return TAG; } @VisibleForTesting void updatePrefs() { updatePrefs(getAppRestrictBackground(), getUnrestrictData()); Loading
src/com/android/settings/datausage/BillingCycleSettings.java +11 −2 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ import java.util.ArrayList; import java.util.List; @SearchIndexable public class BillingCycleSettings extends DataUsageBase implements public class BillingCycleSettings extends DataUsageBaseFragment implements Preference.OnPreferenceChangeListener, DataUsageEditController { private static final String TAG = "BillingCycleSettings"; Loading Loading @@ -105,7 +105,6 @@ public class BillingCycleSettings extends DataUsageBase implements Bundle args = getArguments(); mNetworkTemplate = args.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE); addPreferencesFromResource(R.xml.billing_cycle); mBillingCycle = findPreference(KEY_BILLING_CYCLE); mEnableDataWarning = (SwitchPreference) findPreference(KEY_SET_DATA_WARNING); mEnableDataWarning.setOnPreferenceChangeListener(this); Loading Loading @@ -191,6 +190,16 @@ public class BillingCycleSettings extends DataUsageBase implements return MetricsEvent.BILLING_CYCLE; } @Override protected int getPreferenceScreenResId() { return R.xml.billing_cycle; } @Override protected String getLogTag() { return TAG; } @VisibleForTesting void setPolicyLimitBytes(long limitBytes) { if (LOGD) Log.d(TAG, "setPolicyLimitBytes()"); Loading
src/com/android/settings/datausage/DataUsageBase.javadeleted 100644 → 0 +0 −96 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.android.settings.datausage; import android.content.Context; import android.net.INetworkStatsService; import android.net.NetworkPolicy; import android.net.NetworkPolicyManager; import android.os.Bundle; import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; import com.android.settings.SettingsPreferenceFragment; import com.android.settingslib.NetworkPolicyEditor; /** * @deprecated please use {@link DataUsageBaseFragment} instead. */ @Deprecated public abstract class DataUsageBase extends SettingsPreferenceFragment { private static final String TAG = "DataUsageBase"; private static final String ETHERNET = "ethernet"; protected final TemplatePreference.NetworkServices services = new TemplatePreference.NetworkServices(); @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); final Context context = getActivity(); services.mNetworkService = INetworkManagementService.Stub.asInterface( ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE)); services.mStatsService = INetworkStatsService.Stub.asInterface( ServiceManager.getService(Context.NETWORK_STATS_SERVICE)); services.mPolicyManager = NetworkPolicyManager.from(context); services.mPolicyEditor = new NetworkPolicyEditor(services.mPolicyManager); services.mTelephonyManager = TelephonyManager.from(context); services.mSubscriptionManager = SubscriptionManager.from(context); services.mUserManager = UserManager.get(context); } @Override public void onResume() { super.onResume(); services.mPolicyEditor.read(); } protected boolean isAdmin() { return services.mUserManager.isAdminUser(); } protected boolean isMobileDataAvailable(int subId) { return services.mSubscriptionManager.getActiveSubscriptionInfo(subId) != null; } protected boolean isNetworkPolicyModifiable(NetworkPolicy policy, int subId) { return policy != null && isBandwidthControlEnabled() && services.mUserManager.isAdminUser() && isDataEnabled(subId); } private boolean isDataEnabled(int subId) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { return true; } return services.mTelephonyManager.getDataEnabled(subId); } protected boolean isBandwidthControlEnabled() { try { return services.mNetworkService.isBandwidthControlEnabled(); } catch (RemoteException e) { Log.w(TAG, "problem talking with INetworkManagementService: ", e); return false; } } }
src/com/android/settings/datausage/DataUsageList.java +12 −3 Original line number Diff line number Diff line Loading @@ -76,12 +76,12 @@ import java.util.List; * Panel showing data usage history across various networks, including options * to inspect based on usage cycle and control through {@link NetworkPolicy}. */ public class DataUsageList extends DataUsageBase { public class DataUsageList extends DataUsageBaseFragment { public static final String EXTRA_SUB_ID = "sub_id"; public static final String EXTRA_NETWORK_TEMPLATE = "network_template"; private static final String TAG = "DataUsage"; private static final String TAG = "DataUsageList"; private static final boolean LOGD = false; private static final String KEY_USAGE_AMOUNT = "usage_amount"; Loading Loading @@ -140,7 +140,6 @@ public class DataUsageList extends DataUsageBase { mUidDetailProvider = new UidDetailProvider(context); addPreferencesFromResource(R.xml.data_usage_list); mUsageAmount = findPreference(KEY_USAGE_AMOUNT); mChart = (ChartDataUsagePreference) findPreference(KEY_CHART_DATA); mApps = (PreferenceGroup) findPreference(KEY_APPS_GROUP); Loading Loading @@ -235,6 +234,16 @@ public class DataUsageList extends DataUsageBase { super.onDestroy(); } @Override protected int getPreferenceScreenResId() { return R.xml.data_usage_list; } @Override protected String getLogTag() { return TAG; } void processArgument() { final Bundle args = getArguments(); if (args != null) { Loading
tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -31,10 +31,12 @@ import android.os.Bundle; import android.provider.Settings; import androidx.fragment.app.FragmentActivity; import androidx.preference.PreferenceManager; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import org.junit.Before; import org.junit.Test; Loading Loading @@ -68,7 +70,11 @@ public class DataUsageListTest { @Test public void resumePause_shouldListenUnlistenDataStateChange() { mDataUsageList.onAttach(mContext); ReflectionHelpers.setField( mDataUsageList, "mVisibilityLoggerMixin", mock(VisibilityLoggerMixin.class)); ReflectionHelpers.setField( mDataUsageList, "mPreferenceManager", mock(PreferenceManager.class)); mDataUsageList.onResume(); verify(mListener).setListener(true, mDataUsageList.mSubId, mContext); Loading