Loading core/java/android/app/ContextImpl.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -52,6 +52,8 @@ import android.location.LocationManager; import android.media.AudioManager; import android.media.AudioManager; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.IConnectivityManager; import android.net.INetworkPolicyManager; import android.net.NetworkPolicyManager; import android.net.ThrottleManager; import android.net.ThrottleManager; import android.net.IThrottleManager; import android.net.IThrottleManager; import android.net.Uri; import android.net.Uri; Loading Loading @@ -339,6 +341,14 @@ class ContextImpl extends Context { return new LocationManager(ILocationManager.Stub.asInterface(b)); return new LocationManager(ILocationManager.Stub.asInterface(b)); }}); }}); registerService(NETWORK_POLICY_SERVICE, new ServiceFetcher() { @Override public Object createService(ContextImpl ctx) { return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface( ServiceManager.getService(NETWORK_POLICY_SERVICE))); } }); registerService(NOTIFICATION_SERVICE, new ServiceFetcher() { registerService(NOTIFICATION_SERVICE, new ServiceFetcher() { public Object createService(ContextImpl ctx) { public Object createService(ContextImpl ctx) { final Context outerContext = ctx.getOuterContext(); final Context outerContext = ctx.getOuterContext(); Loading core/java/android/app/DownloadManager.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.Context; import android.database.Cursor; import android.database.Cursor; import android.database.CursorWrapper; import android.database.CursorWrapper; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.NetworkPolicyManager; import android.net.Uri; import android.net.Uri; import android.os.Environment; import android.os.Environment; import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor; Loading Loading @@ -170,7 +171,6 @@ public class DownloadManager { */ */ public final static int STATUS_FAILED = 1 << 4; public final static int STATUS_FAILED = 1 << 4; /** /** * Value of COLUMN_ERROR_CODE when the download has completed with an error that doesn't fit * Value of COLUMN_ERROR_CODE when the download has completed with an error that doesn't fit * under any other error code. * under any other error code. Loading Loading @@ -248,6 +248,14 @@ public class DownloadManager { */ */ public final static int PAUSED_UNKNOWN = 4; public final static int PAUSED_UNKNOWN = 4; /** * Value of {@link #COLUMN_REASON} when the download has been paused because * of {@link NetworkPolicyManager} controls on the requesting application. * * @hide */ public final static int PAUSED_BY_POLICY = 5; /** /** * Broadcast intent action sent by the download manager when a download completes. * Broadcast intent action sent by the download manager when a download completes. */ */ Loading Loading @@ -796,6 +804,7 @@ public class DownloadManager { parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_TO_RETRY)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_TO_RETRY)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_FOR_NETWORK)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_FOR_NETWORK)); parts.add(statusClause("=", Downloads.Impl.STATUS_QUEUED_FOR_WIFI)); parts.add(statusClause("=", Downloads.Impl.STATUS_QUEUED_FOR_WIFI)); parts.add(statusClause("=", Downloads.Impl.STATUS_PAUSED_BY_POLICY)); } } if ((mStatusFlags & STATUS_SUCCESSFUL) != 0) { if ((mStatusFlags & STATUS_SUCCESSFUL) != 0) { parts.add(statusClause("=", Downloads.Impl.STATUS_SUCCESS)); parts.add(statusClause("=", Downloads.Impl.STATUS_SUCCESS)); Loading Loading @@ -1266,6 +1275,9 @@ public class DownloadManager { case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: return PAUSED_QUEUED_FOR_WIFI; return PAUSED_QUEUED_FOR_WIFI; case Downloads.Impl.STATUS_PAUSED_BY_POLICY: return PAUSED_BY_POLICY; default: default: return PAUSED_UNKNOWN; return PAUSED_UNKNOWN; } } Loading Loading @@ -1321,6 +1333,7 @@ public class DownloadManager { case Downloads.Impl.STATUS_WAITING_TO_RETRY: case Downloads.Impl.STATUS_WAITING_TO_RETRY: case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: case Downloads.Impl.STATUS_PAUSED_BY_POLICY: return STATUS_PAUSED; return STATUS_PAUSED; case Downloads.Impl.STATUS_SUCCESS: case Downloads.Impl.STATUS_SUCCESS: Loading core/java/android/net/NetworkPolicyManager.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -115,6 +115,20 @@ public class NetworkPolicyManager { } } } } public void registerListener(INetworkPolicyListener listener) { try { mService.registerListener(listener); } catch (RemoteException e) { } } public void unregisterListener(INetworkPolicyListener listener) { try { mService.unregisterListener(listener); } catch (RemoteException e) { } } /** /** * Compute the last cycle boundary for the given {@link NetworkPolicy}. For * Compute the last cycle boundary for the given {@link NetworkPolicy}. For * example, if cycle day is 20th, and today is June 15th, it will return May * example, if cycle day is 20th, and today is June 15th, it will return May Loading core/java/android/provider/Downloads.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.provider; package android.provider; import android.app.DownloadManager; import android.app.DownloadManager; import android.net.NetworkPolicyManager; import android.net.Uri; import android.net.Uri; /** /** Loading Loading @@ -546,6 +547,14 @@ public final class Downloads { return (status >= 200 && status < 300) || (status >= 400 && status < 600); return (status >= 200 && status < 300) || (status >= 400 && status < 600); } } /** * This download has been paused because requesting application has been * blocked by {@link NetworkPolicyManager}. * * @hide */ public static final int STATUS_PAUSED_BY_POLICY = 189; /** /** * This download hasn't stated yet * This download hasn't stated yet */ */ Loading services/java/com/android/server/ConnectivityService.java +2 −4 Original line number Original line Diff line number Diff line Loading @@ -16,8 +16,7 @@ package com.android.server; package com.android.server; import static android.Manifest.permission.READ_PHONE_STATE; import static android.Manifest.permission.MANAGE_NETWORK_POLICY; import static android.Manifest.permission.UPDATE_DEVICE_STATS; import static android.net.ConnectivityManager.isNetworkTypeValid; import static android.net.ConnectivityManager.isNetworkTypeValid; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_REJECT_PAID; import static android.net.NetworkPolicyManager.RULE_REJECT_PAID; Loading Loading @@ -1142,8 +1141,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { @Override @Override public void onRulesChanged(int uid, int uidRules) { public void onRulesChanged(int uid, int uidRules) { // only someone like NPMS should only be calling us // only someone like NPMS should only be calling us // TODO: create permission for modifying data policy mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); mContext.enforceCallingOrSelfPermission(UPDATE_DEVICE_STATS, TAG); if (LOGD_RULES) { if (LOGD_RULES) { Slog.d(TAG, "onRulesChanged(uid=" + uid + ", uidRules=" + uidRules + ")"); Slog.d(TAG, "onRulesChanged(uid=" + uid + ", uidRules=" + uidRules + ")"); Loading Loading
core/java/android/app/ContextImpl.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -52,6 +52,8 @@ import android.location.LocationManager; import android.media.AudioManager; import android.media.AudioManager; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.IConnectivityManager; import android.net.INetworkPolicyManager; import android.net.NetworkPolicyManager; import android.net.ThrottleManager; import android.net.ThrottleManager; import android.net.IThrottleManager; import android.net.IThrottleManager; import android.net.Uri; import android.net.Uri; Loading Loading @@ -339,6 +341,14 @@ class ContextImpl extends Context { return new LocationManager(ILocationManager.Stub.asInterface(b)); return new LocationManager(ILocationManager.Stub.asInterface(b)); }}); }}); registerService(NETWORK_POLICY_SERVICE, new ServiceFetcher() { @Override public Object createService(ContextImpl ctx) { return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface( ServiceManager.getService(NETWORK_POLICY_SERVICE))); } }); registerService(NOTIFICATION_SERVICE, new ServiceFetcher() { registerService(NOTIFICATION_SERVICE, new ServiceFetcher() { public Object createService(ContextImpl ctx) { public Object createService(ContextImpl ctx) { final Context outerContext = ctx.getOuterContext(); final Context outerContext = ctx.getOuterContext(); Loading
core/java/android/app/DownloadManager.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.Context; import android.database.Cursor; import android.database.Cursor; import android.database.CursorWrapper; import android.database.CursorWrapper; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.NetworkPolicyManager; import android.net.Uri; import android.net.Uri; import android.os.Environment; import android.os.Environment; import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor; Loading Loading @@ -170,7 +171,6 @@ public class DownloadManager { */ */ public final static int STATUS_FAILED = 1 << 4; public final static int STATUS_FAILED = 1 << 4; /** /** * Value of COLUMN_ERROR_CODE when the download has completed with an error that doesn't fit * Value of COLUMN_ERROR_CODE when the download has completed with an error that doesn't fit * under any other error code. * under any other error code. Loading Loading @@ -248,6 +248,14 @@ public class DownloadManager { */ */ public final static int PAUSED_UNKNOWN = 4; public final static int PAUSED_UNKNOWN = 4; /** * Value of {@link #COLUMN_REASON} when the download has been paused because * of {@link NetworkPolicyManager} controls on the requesting application. * * @hide */ public final static int PAUSED_BY_POLICY = 5; /** /** * Broadcast intent action sent by the download manager when a download completes. * Broadcast intent action sent by the download manager when a download completes. */ */ Loading Loading @@ -796,6 +804,7 @@ public class DownloadManager { parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_TO_RETRY)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_TO_RETRY)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_FOR_NETWORK)); parts.add(statusClause("=", Downloads.Impl.STATUS_WAITING_FOR_NETWORK)); parts.add(statusClause("=", Downloads.Impl.STATUS_QUEUED_FOR_WIFI)); parts.add(statusClause("=", Downloads.Impl.STATUS_QUEUED_FOR_WIFI)); parts.add(statusClause("=", Downloads.Impl.STATUS_PAUSED_BY_POLICY)); } } if ((mStatusFlags & STATUS_SUCCESSFUL) != 0) { if ((mStatusFlags & STATUS_SUCCESSFUL) != 0) { parts.add(statusClause("=", Downloads.Impl.STATUS_SUCCESS)); parts.add(statusClause("=", Downloads.Impl.STATUS_SUCCESS)); Loading Loading @@ -1266,6 +1275,9 @@ public class DownloadManager { case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: return PAUSED_QUEUED_FOR_WIFI; return PAUSED_QUEUED_FOR_WIFI; case Downloads.Impl.STATUS_PAUSED_BY_POLICY: return PAUSED_BY_POLICY; default: default: return PAUSED_UNKNOWN; return PAUSED_UNKNOWN; } } Loading Loading @@ -1321,6 +1333,7 @@ public class DownloadManager { case Downloads.Impl.STATUS_WAITING_TO_RETRY: case Downloads.Impl.STATUS_WAITING_TO_RETRY: case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: case Downloads.Impl.STATUS_WAITING_FOR_NETWORK: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: case Downloads.Impl.STATUS_QUEUED_FOR_WIFI: case Downloads.Impl.STATUS_PAUSED_BY_POLICY: return STATUS_PAUSED; return STATUS_PAUSED; case Downloads.Impl.STATUS_SUCCESS: case Downloads.Impl.STATUS_SUCCESS: Loading
core/java/android/net/NetworkPolicyManager.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -115,6 +115,20 @@ public class NetworkPolicyManager { } } } } public void registerListener(INetworkPolicyListener listener) { try { mService.registerListener(listener); } catch (RemoteException e) { } } public void unregisterListener(INetworkPolicyListener listener) { try { mService.unregisterListener(listener); } catch (RemoteException e) { } } /** /** * Compute the last cycle boundary for the given {@link NetworkPolicy}. For * Compute the last cycle boundary for the given {@link NetworkPolicy}. For * example, if cycle day is 20th, and today is June 15th, it will return May * example, if cycle day is 20th, and today is June 15th, it will return May Loading
core/java/android/provider/Downloads.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.provider; package android.provider; import android.app.DownloadManager; import android.app.DownloadManager; import android.net.NetworkPolicyManager; import android.net.Uri; import android.net.Uri; /** /** Loading Loading @@ -546,6 +547,14 @@ public final class Downloads { return (status >= 200 && status < 300) || (status >= 400 && status < 600); return (status >= 200 && status < 300) || (status >= 400 && status < 600); } } /** * This download has been paused because requesting application has been * blocked by {@link NetworkPolicyManager}. * * @hide */ public static final int STATUS_PAUSED_BY_POLICY = 189; /** /** * This download hasn't stated yet * This download hasn't stated yet */ */ Loading
services/java/com/android/server/ConnectivityService.java +2 −4 Original line number Original line Diff line number Diff line Loading @@ -16,8 +16,7 @@ package com.android.server; package com.android.server; import static android.Manifest.permission.READ_PHONE_STATE; import static android.Manifest.permission.MANAGE_NETWORK_POLICY; import static android.Manifest.permission.UPDATE_DEVICE_STATS; import static android.net.ConnectivityManager.isNetworkTypeValid; import static android.net.ConnectivityManager.isNetworkTypeValid; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_REJECT_PAID; import static android.net.NetworkPolicyManager.RULE_REJECT_PAID; Loading Loading @@ -1142,8 +1141,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { @Override @Override public void onRulesChanged(int uid, int uidRules) { public void onRulesChanged(int uid, int uidRules) { // only someone like NPMS should only be calling us // only someone like NPMS should only be calling us // TODO: create permission for modifying data policy mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); mContext.enforceCallingOrSelfPermission(UPDATE_DEVICE_STATS, TAG); if (LOGD_RULES) { if (LOGD_RULES) { Slog.d(TAG, "onRulesChanged(uid=" + uid + ", uidRules=" + uidRules + ")"); Slog.d(TAG, "onRulesChanged(uid=" + uid + ", uidRules=" + uidRules + ")"); Loading