Loading src/com/android/settings/datausage/DataPlanUsageSummary.java +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ import com.android.settingslib.net.DataUsageController; import java.util.ArrayList; import java.util.List; /** * @deprecated This fragment was supposed to be new version of {@link DataUsageSummary} however * unfinished and used nowhere. Keep it in case we may bring it back someday. */ @Deprecated public class DataPlanUsageSummary extends DataUsageBase { public static final String KEY_DATA_PLAN_USAGE = "data_plan_usage"; Loading src/com/android/settings/datausage/DataUsageBase.java +4 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,10 @@ 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"; Loading src/com/android/settings/datausage/DataUsageBaseFragment.java 0 → 100644 +130 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 static android.net.ConnectivityManager.TYPE_ETHERNET; import android.content.Context; import android.net.ConnectivityManager; import android.net.INetworkStatsService; import android.net.INetworkStatsSession; import android.net.NetworkPolicy; import android.net.NetworkPolicyManager; import android.net.NetworkTemplate; import android.net.TrafficStats; import android.os.Bundle; import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.NetworkPolicyEditor; public abstract class DataUsageBaseFragment extends DashboardFragment { 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; } } /** * Test if device has an ethernet network connection. */ public boolean hasEthernet(Context context) { if (DataUsageUtils.TEST_RADIOS) { return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains(ETHERNET); } final ConnectivityManager conn = ConnectivityManager.from(context); final boolean hasEthernet = conn.isNetworkSupported(TYPE_ETHERNET); final long ethernetBytes; try { INetworkStatsSession statsSession = services.mStatsService.openSession(); if (statsSession != null) { ethernetBytes = statsSession.getSummaryForNetwork( NetworkTemplate.buildTemplateEthernet(), Long.MIN_VALUE, Long.MAX_VALUE) .getTotalBytes(); TrafficStats.closeQuietly(statsSession); } else { ethernetBytes = 0; } } catch (RemoteException e) { throw new RuntimeException(e); } // only show ethernet when both hardware present and traffic has occurred return hasEthernet && ethernetBytes > 0; } } src/com/android/settings/datausage/DataUsageSummary.java +20 −5 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.settings.dashboard.SummaryLoader; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.net.DataUsageController; import java.util.ArrayList; Loading @@ -53,11 +54,11 @@ import java.util.List; /** * Settings preference fragment that displays data usage summary. * * This class in deprecated use {@link DataPlanUsageSummary}. */ @Deprecated public class DataUsageSummary extends DataUsageBase implements Indexable, DataUsageEditController { public class DataUsageSummary extends DataUsageBaseFragment implements Indexable, DataUsageEditController { private static final String TAG = "DataUsageSummary"; static final boolean LOGD = false; Loading Loading @@ -100,7 +101,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs boolean hasMobileData = DataUsageUtils.hasMobileData(context); mDataUsageController = new DataUsageController(context); mDataInfoController = new DataUsageInfoController(); addPreferencesFromResource(R.xml.data_usage); int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context); if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Loading Loading @@ -177,6 +177,21 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs return super.onPreferenceTreeClick(preference); } @Override protected int getPreferenceScreenResId() { return R.xml.data_usage; } @Override protected String getLogTag() { return TAG; } @Override protected List<AbstractPreferenceController> getPreferenceControllers(Context context) { return null; } private void addMobileSection(int subId) { addMobileSection(subId, null); } Loading Loading
src/com/android/settings/datausage/DataPlanUsageSummary.java +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ import com.android.settingslib.net.DataUsageController; import java.util.ArrayList; import java.util.List; /** * @deprecated This fragment was supposed to be new version of {@link DataUsageSummary} however * unfinished and used nowhere. Keep it in case we may bring it back someday. */ @Deprecated public class DataPlanUsageSummary extends DataUsageBase { public static final String KEY_DATA_PLAN_USAGE = "data_plan_usage"; Loading
src/com/android/settings/datausage/DataUsageBase.java +4 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,10 @@ 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"; Loading
src/com/android/settings/datausage/DataUsageBaseFragment.java 0 → 100644 +130 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 static android.net.ConnectivityManager.TYPE_ETHERNET; import android.content.Context; import android.net.ConnectivityManager; import android.net.INetworkStatsService; import android.net.INetworkStatsSession; import android.net.NetworkPolicy; import android.net.NetworkPolicyManager; import android.net.NetworkTemplate; import android.net.TrafficStats; import android.os.Bundle; import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.NetworkPolicyEditor; public abstract class DataUsageBaseFragment extends DashboardFragment { 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; } } /** * Test if device has an ethernet network connection. */ public boolean hasEthernet(Context context) { if (DataUsageUtils.TEST_RADIOS) { return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains(ETHERNET); } final ConnectivityManager conn = ConnectivityManager.from(context); final boolean hasEthernet = conn.isNetworkSupported(TYPE_ETHERNET); final long ethernetBytes; try { INetworkStatsSession statsSession = services.mStatsService.openSession(); if (statsSession != null) { ethernetBytes = statsSession.getSummaryForNetwork( NetworkTemplate.buildTemplateEthernet(), Long.MIN_VALUE, Long.MAX_VALUE) .getTotalBytes(); TrafficStats.closeQuietly(statsSession); } else { ethernetBytes = 0; } } catch (RemoteException e) { throw new RuntimeException(e); } // only show ethernet when both hardware present and traffic has occurred return hasEthernet && ethernetBytes > 0; } }
src/com/android/settings/datausage/DataUsageSummary.java +20 −5 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.settings.dashboard.SummaryLoader; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.net.DataUsageController; import java.util.ArrayList; Loading @@ -53,11 +54,11 @@ import java.util.List; /** * Settings preference fragment that displays data usage summary. * * This class in deprecated use {@link DataPlanUsageSummary}. */ @Deprecated public class DataUsageSummary extends DataUsageBase implements Indexable, DataUsageEditController { public class DataUsageSummary extends DataUsageBaseFragment implements Indexable, DataUsageEditController { private static final String TAG = "DataUsageSummary"; static final boolean LOGD = false; Loading Loading @@ -100,7 +101,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs boolean hasMobileData = DataUsageUtils.hasMobileData(context); mDataUsageController = new DataUsageController(context); mDataInfoController = new DataUsageInfoController(); addPreferencesFromResource(R.xml.data_usage); int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context); if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Loading Loading @@ -177,6 +177,21 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs return super.onPreferenceTreeClick(preference); } @Override protected int getPreferenceScreenResId() { return R.xml.data_usage; } @Override protected String getLogTag() { return TAG; } @Override protected List<AbstractPreferenceController> getPreferenceControllers(Context context) { return null; } private void addMobileSection(int subId) { addMobileSection(subId, null); } Loading