Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad4c9ed7 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "DownloadManager flags for network policy."

parents 179cfcf6 1a303953
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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();
+14 −1
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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.
@@ -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.
     */
     */
@@ -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));
@@ -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;
            }
            }
@@ -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:
+14 −0
Original line number Original line Diff line number Diff line
@@ -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
+9 −0
Original line number Original line Diff line number Diff line
@@ -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;


/**
/**
@@ -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
         */
         */
+2 −4
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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