Merge "Move "metered" persistence to WifiConfiguration."

This commit is contained in:
Jeff Sharkey
2017-07-14 17:48:02 +00:00
committed by Android (Google) Code Review
3 changed files with 17 additions and 68 deletions

View File

@@ -1720,14 +1720,8 @@ public class ConnectivityManager {
// ignored
}
/**
* Return quota status for the current active network, or {@code null} if no
* network is active. Quota status can change rapidly, so these values
* shouldn't be cached.
*
* @hide
*/
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
/** {@hide} */
@Deprecated
public NetworkQuotaInfo getActiveNetworkQuotaInfo() {
try {
return mService.getActiveNetworkQuotaInfo();

View File

@@ -16,8 +16,8 @@
package android.net;
import android.os.Parcelable;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.annotations.VisibleForTesting;
@@ -121,7 +121,6 @@ public class NetworkInfo implements Parcelable {
private boolean mIsFailover;
private boolean mIsAvailable;
private boolean mIsRoaming;
private boolean mIsMetered;
/**
* @hide
@@ -154,7 +153,6 @@ public class NetworkInfo implements Parcelable {
mIsFailover = source.mIsFailover;
mIsAvailable = source.mIsAvailable;
mIsRoaming = source.mIsRoaming;
mIsMetered = source.mIsMetered;
}
}
}
@@ -326,31 +324,6 @@ public class NetworkInfo implements Parcelable {
}
}
/**
* Returns if this network is metered. A network is classified as metered
* when the user is sensitive to heavy data usage on that connection due to
* monetary costs, data limitations or battery/performance issues. You
* should check this before doing large data transfers, and warn the user or
* delay the operation until another network is available.
*
* @return {@code true} if large transfers should be avoided, otherwise
* {@code false}.
* @hide
*/
public boolean isMetered() {
synchronized (this) {
return mIsMetered;
}
}
/** {@hide} */
@VisibleForTesting
public void setMetered(boolean isMetered) {
synchronized (this) {
mIsMetered = isMetered;
}
}
/**
* Reports the current coarse-grained state of the network.
* @return the coarse-grained state
@@ -434,7 +407,6 @@ public class NetworkInfo implements Parcelable {
append(", failover: ").append(mIsFailover).
append(", available: ").append(mIsAvailable).
append(", roaming: ").append(mIsRoaming).
append(", metered: ").append(mIsMetered).
append("]");
return builder.toString();
}
@@ -457,7 +429,6 @@ public class NetworkInfo implements Parcelable {
dest.writeInt(mIsFailover ? 1 : 0);
dest.writeInt(mIsAvailable ? 1 : 0);
dest.writeInt(mIsRoaming ? 1 : 0);
dest.writeInt(mIsMetered ? 1 : 0);
dest.writeString(mReason);
dest.writeString(mExtraInfo);
}
@@ -476,7 +447,6 @@ public class NetworkInfo implements Parcelable {
netInfo.mIsFailover = in.readInt() != 0;
netInfo.mIsAvailable = in.readInt() != 0;
netInfo.mIsRoaming = in.readInt() != 0;
netInfo.mIsMetered = in.readInt() != 0;
netInfo.mReason = in.readString();
netInfo.mExtraInfo = in.readString();
return netInfo;

View File

@@ -1036,8 +1036,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
/**
* Apply any relevant filters to {@link NetworkState} for the given UID. For
* example, this may mark the network as {@link DetailedState#BLOCKED} based
* on {@link #isNetworkWithLinkPropertiesBlocked}, or
* {@link NetworkInfo#isMetered()} based on network policies.
* on {@link #isNetworkWithLinkPropertiesBlocked}.
*/
private void filterNetworkStateForUid(NetworkState state, int uid, boolean ignoreBlocked) {
if (state == null || state.networkInfo == null || state.linkProperties == null) return;
@@ -1048,15 +1047,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (mLockdownTracker != null) {
mLockdownTracker.augmentNetworkInfo(state.networkInfo);
}
// TODO: apply metered state closer to NetworkAgentInfo
final long token = Binder.clearCallingIdentity();
try {
state.networkInfo.setMetered(mPolicyManager.isNetworkMetered(state));
} catch (RemoteException e) {
} finally {
Binder.restoreCallingIdentity(token);
}
}
/**
@@ -1326,30 +1316,24 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
@Override
@Deprecated
public NetworkQuotaInfo getActiveNetworkQuotaInfo() {
enforceAccessPermission();
final int uid = Binder.getCallingUid();
final long token = Binder.clearCallingIdentity();
try {
final NetworkState state = getUnfilteredActiveNetworkState(uid);
if (state.networkInfo != null) {
try {
return mPolicyManager.getNetworkQuotaInfo(state);
} catch (RemoteException e) {
}
}
return null;
} finally {
Binder.restoreCallingIdentity(token);
}
Log.w(TAG, "Shame on UID " + Binder.getCallingUid()
+ " for calling the hidden API getNetworkQuotaInfo(). Shame!");
return new NetworkQuotaInfo();
}
@Override
public boolean isActiveNetworkMetered() {
enforceAccessPermission();
final NetworkInfo info = getActiveNetworkInfo();
return (info != null) ? info.isMetered() : false;
final NetworkCapabilities caps = getNetworkCapabilities(getActiveNetwork());
if (caps != null) {
return !caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
} else {
// Always return the most conservative value
return true;
}
}
private INetworkManagementEventObserver mDataActivityObserver = new BaseNetworkObserver() {
@@ -2759,7 +2743,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
enforceAccessPermission();
NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
if (nai != null && !nai.networkInfo.isMetered()) {
if (nai != null && nai.networkCapabilities
.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)) {
return ConnectivityManager.MULTIPATH_PREFERENCE_UNMETERED;
}