From e0021c426c75ea8a737714f0b8bb27988ac3a51f Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Tue, 7 Jul 2015 15:37:11 -0700 Subject: [PATCH] Move NetworkPolicyEditor from Settings packge to settingslib. Change-Id: I3a2f69c73d983643e65a0d4266cb98a203d5a813 --- .../android/settings/DataUsageSummary.java | 2 +- .../net/DataUsageMeteredSettings.java | 1 + .../settings/net/NetworkPolicyEditor.java | 252 ------------------ 3 files changed, 2 insertions(+), 253 deletions(-) delete mode 100644 src/com/android/settings/net/NetworkPolicyEditor.java diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java index 7a5a60aac0d..a10e1a8b270 100644 --- a/src/com/android/settings/DataUsageSummary.java +++ b/src/com/android/settings/DataUsageSummary.java @@ -134,7 +134,6 @@ import com.android.settings.drawable.InsetBoundsDrawable; import com.android.settings.net.ChartData; import com.android.settings.net.ChartDataLoader; import com.android.settings.net.DataUsageMeteredSettings; -import com.android.settings.net.NetworkPolicyEditor; import com.android.settings.net.SummaryForAllUidLoader; import com.android.settings.net.UidDetail; import com.android.settings.net.UidDetailProvider; @@ -144,6 +143,7 @@ import com.android.settings.search.SearchIndexableRaw; import com.android.settings.widget.ChartDataUsageView; import com.android.settings.widget.ChartDataUsageView.DataUsageChartListener; import com.android.settings.widget.ChartNetworkSeriesView; +import com.android.settingslib.NetworkPolicyEditor; import com.google.android.collect.Lists; import libcore.util.Objects; diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.java index ec1dd385e6e..59a8b92dbc6 100644 --- a/src/com/android/settings/net/DataUsageMeteredSettings.java +++ b/src/com/android/settings/net/DataUsageMeteredSettings.java @@ -40,6 +40,7 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; +import com.android.settingslib.NetworkPolicyEditor; import java.util.ArrayList; import java.util.List; diff --git a/src/com/android/settings/net/NetworkPolicyEditor.java b/src/com/android/settings/net/NetworkPolicyEditor.java deleted file mode 100644 index 1268c3f1dbd..00000000000 --- a/src/com/android/settings/net/NetworkPolicyEditor.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) 2011 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.net; - -import static android.net.NetworkPolicy.CYCLE_NONE; -import static android.net.NetworkPolicy.LIMIT_DISABLED; -import static android.net.NetworkPolicy.SNOOZE_NEVER; -import static android.net.NetworkPolicy.WARNING_DISABLED; -import static android.net.NetworkTemplate.MATCH_WIFI; -import static com.android.internal.util.Preconditions.checkNotNull; - -import android.net.NetworkPolicy; -import android.net.NetworkPolicyManager; -import android.net.NetworkTemplate; -import android.net.wifi.WifiInfo; -import android.os.AsyncTask; -import android.text.TextUtils; -import android.text.format.Time; - -import com.google.android.collect.Lists; - -import java.util.ArrayList; - -/** - * Utility class to modify list of {@link NetworkPolicy}. Specifically knows - * about which policies can coexist. This editor offers thread safety when - * talking with {@link NetworkPolicyManager}. - */ -public class NetworkPolicyEditor { - // TODO: be more robust when missing policies from service - - public static final boolean ENABLE_SPLIT_POLICIES = false; - - private NetworkPolicyManager mPolicyManager; - private ArrayList mPolicies = Lists.newArrayList(); - - public NetworkPolicyEditor(NetworkPolicyManager policyManager) { - mPolicyManager = checkNotNull(policyManager); - } - - public void read() { - final NetworkPolicy[] policies = mPolicyManager.getNetworkPolicies(); - - boolean modified = false; - mPolicies.clear(); - for (NetworkPolicy policy : policies) { - // TODO: find better place to clamp these - if (policy.limitBytes < -1) { - policy.limitBytes = LIMIT_DISABLED; - modified = true; - } - if (policy.warningBytes < -1) { - policy.warningBytes = WARNING_DISABLED; - modified = true; - } - - mPolicies.add(policy); - } - - // when we cleaned policies above, write back changes - if (modified) writeAsync(); - } - - public void writeAsync() { - // TODO: consider making more robust by passing through service - final NetworkPolicy[] policies = mPolicies.toArray(new NetworkPolicy[mPolicies.size()]); - new AsyncTask() { - @Override - protected Void doInBackground(Void... params) { - write(policies); - return null; - } - }.execute(); - } - - public void write(NetworkPolicy[] policies) { - mPolicyManager.setNetworkPolicies(policies); - } - - public boolean hasLimitedPolicy(NetworkTemplate template) { - final NetworkPolicy policy = getPolicy(template); - return policy != null && policy.limitBytes != LIMIT_DISABLED; - } - - public NetworkPolicy getOrCreatePolicy(NetworkTemplate template) { - NetworkPolicy policy = getPolicy(template); - if (policy == null) { - policy = buildDefaultPolicy(template); - mPolicies.add(policy); - } - return policy; - } - - public NetworkPolicy getPolicy(NetworkTemplate template) { - for (NetworkPolicy policy : mPolicies) { - if (policy.template.equals(template)) { - return policy; - } - } - return null; - } - - public NetworkPolicy getPolicyMaybeUnquoted(NetworkTemplate template) { - NetworkPolicy policy = getPolicy(template); - if (policy != null) { - return policy; - } else { - return getPolicy(buildUnquotedNetworkTemplate(template)); - } - } - - @Deprecated - private static NetworkPolicy buildDefaultPolicy(NetworkTemplate template) { - // TODO: move this into framework to share with NetworkPolicyManagerService - final int cycleDay; - final String cycleTimezone; - final boolean metered; - - if (template.getMatchRule() == MATCH_WIFI) { - cycleDay = CYCLE_NONE; - cycleTimezone = Time.TIMEZONE_UTC; - metered = false; - } else { - final Time time = new Time(); - time.setToNow(); - cycleDay = time.monthDay; - cycleTimezone = time.timezone; - metered = true; - } - - return new NetworkPolicy(template, cycleDay, cycleTimezone, WARNING_DISABLED, - LIMIT_DISABLED, SNOOZE_NEVER, SNOOZE_NEVER, metered, true); - } - - public int getPolicyCycleDay(NetworkTemplate template) { - final NetworkPolicy policy = getPolicy(template); - return (policy != null) ? policy.cycleDay : -1; - } - - public void setPolicyCycleDay(NetworkTemplate template, int cycleDay, String cycleTimezone) { - final NetworkPolicy policy = getOrCreatePolicy(template); - policy.cycleDay = cycleDay; - policy.cycleTimezone = cycleTimezone; - policy.inferred = false; - policy.clearSnooze(); - writeAsync(); - } - - public long getPolicyWarningBytes(NetworkTemplate template) { - final NetworkPolicy policy = getPolicy(template); - return (policy != null) ? policy.warningBytes : WARNING_DISABLED; - } - - public void setPolicyWarningBytes(NetworkTemplate template, long warningBytes) { - final NetworkPolicy policy = getOrCreatePolicy(template); - policy.warningBytes = warningBytes; - policy.inferred = false; - policy.clearSnooze(); - writeAsync(); - } - - public long getPolicyLimitBytes(NetworkTemplate template) { - final NetworkPolicy policy = getPolicy(template); - return (policy != null) ? policy.limitBytes : LIMIT_DISABLED; - } - - public void setPolicyLimitBytes(NetworkTemplate template, long limitBytes) { - final NetworkPolicy policy = getOrCreatePolicy(template); - policy.limitBytes = limitBytes; - policy.inferred = false; - policy.clearSnooze(); - writeAsync(); - } - - public boolean getPolicyMetered(NetworkTemplate template) { - NetworkPolicy policy = getPolicy(template); - if (policy != null) { - return policy.metered; - } else { - return false; - } - } - - public void setPolicyMetered(NetworkTemplate template, boolean metered) { - boolean modified = false; - - NetworkPolicy policy = getPolicy(template); - if (metered) { - if (policy == null) { - policy = buildDefaultPolicy(template); - policy.metered = true; - policy.inferred = false; - mPolicies.add(policy); - modified = true; - } else if (!policy.metered) { - policy.metered = true; - policy.inferred = false; - modified = true; - } - - } else { - if (policy == null) { - // ignore when policy doesn't exist - } else if (policy.metered) { - policy.metered = false; - policy.inferred = false; - modified = true; - } - } - - // Remove legacy unquoted policies while we're here - final NetworkTemplate unquoted = buildUnquotedNetworkTemplate(template); - final NetworkPolicy unquotedPolicy = getPolicy(unquoted); - if (unquotedPolicy != null) { - mPolicies.remove(unquotedPolicy); - modified = true; - } - - if (modified) writeAsync(); - } - - /** - * Build a revised {@link NetworkTemplate} that matches the same rule, but - * with an unquoted {@link NetworkTemplate#getNetworkId()}. Used to work - * around legacy bugs. - */ - private static NetworkTemplate buildUnquotedNetworkTemplate(NetworkTemplate template) { - if (template == null) return null; - final String networkId = template.getNetworkId(); - final String strippedNetworkId = WifiInfo.removeDoubleQuotes(networkId); - if (!TextUtils.equals(strippedNetworkId, networkId)) { - return new NetworkTemplate( - template.getMatchRule(), template.getSubscriberId(), strippedNetworkId); - } else { - return null; - } - } -}