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

Commit d15c37c0 authored by Frank Li's avatar Frank Li Committed by Gerrit Code Review
Browse files

Merge "[DU04]Remove NetworkPolicyManagerInternal from NetworkStatsService"

parents c170ac33 0bd4952f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -69,6 +69,8 @@ interface INetworkPolicyManager {

    int getMultipathPreference(in Network network);

    SubscriptionPlan getSubscriptionPlan(in NetworkTemplate template);
    void onStatsProviderWarningOrLimitReached();
    SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage);
    void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage);
    String getSubscriptionPlansOwner(int subId);
+40 −0
Original line number Diff line number Diff line
@@ -534,6 +534,46 @@ public class NetworkPolicyManager {
        }
    }

    /**
     * Get subscription plan for the given networkTemplate.
     *
     * @param template the networkTemplate to get the subscription plan for.
     * @return the active {@link SubscriptionPlan} for the given template, or
     *         {@code null} if not found.
     * @hide
     */
    @Nullable
    @RequiresPermission(anyOf = {
            NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
            android.Manifest.permission.NETWORK_STACK})
    // @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    public SubscriptionPlan getSubscriptionPlan(@NonNull NetworkTemplate template) {
        try {
            return mService.getSubscriptionPlan(template);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Notifies that the specified {@link NetworkStatsProvider} has reached its quota
     * which was set through {@link NetworkStatsProvider#onSetLimit(String, long)} or
     * {@link NetworkStatsProvider#onSetWarningAndLimit(String, long, long)}.
     *
     * @hide
     */
    @RequiresPermission(anyOf = {
            NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
            android.Manifest.permission.NETWORK_STACK})
    // @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    public void onStatsProviderWarningOrLimitReached() {
        try {
            mService.onStatsProviderWarningOrLimitReached();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Resets network policy settings back to factory defaults.
     *
+10 −5
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
import android.net.NetworkIdentitySet;
import android.net.NetworkPolicyManager;
import android.net.NetworkSpecifier;
import android.net.NetworkStack;
import android.net.NetworkStateSnapshot;
@@ -867,7 +868,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
            if (LOGD) Log.d(TAG, "Resolving plan for " + template);
            final long token = Binder.clearCallingIdentity();
            try {
                plan = LocalServices.getService(NetworkPolicyManagerInternal.class)
                plan = mContext.getSystemService(NetworkPolicyManager.class)
                        .getSubscriptionPlan(template);
            } finally {
                Binder.restoreCallingIdentity(token);
@@ -2038,10 +2039,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
                NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
        Objects.requireNonNull(provider, "provider is null");
        Objects.requireNonNull(tag, "tag is null");
        final NetworkPolicyManager netPolicyManager = mContext
                .getSystemService(NetworkPolicyManager.class);
        try {
            NetworkStatsProviderCallbackImpl callback = new NetworkStatsProviderCallbackImpl(
                    tag, provider, mStatsProviderSem, mAlertObserver,
                    mStatsProviderCbList);
                    mStatsProviderCbList, netPolicyManager);
            mStatsProviderCbList.add(callback);
            Log.d(TAG, "registerNetworkStatsProvider from " + callback.mTag + " uid/pid="
                    + getCallingUid() + "/" + getCallingPid());
@@ -2083,6 +2086,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
        @NonNull private final Semaphore mSemaphore;
        @NonNull final AlertObserver mAlertObserver;
        @NonNull final CopyOnWriteArrayList<NetworkStatsProviderCallbackImpl> mStatsProviderCbList;
        @NonNull final NetworkPolicyManager mNetworkPolicyManager;

        @NonNull private final Object mProviderStatsLock = new Object();

@@ -2096,7 +2100,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
                @NonNull String tag, @NonNull INetworkStatsProvider provider,
                @NonNull Semaphore semaphore,
                @NonNull AlertObserver alertObserver,
                @NonNull CopyOnWriteArrayList<NetworkStatsProviderCallbackImpl> cbList)
                @NonNull CopyOnWriteArrayList<NetworkStatsProviderCallbackImpl> cbList,
                @NonNull NetworkPolicyManager networkPolicyManager)
                throws RemoteException {
            mTag = tag;
            mProvider = provider;
@@ -2104,6 +2109,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
            mSemaphore = semaphore;
            mAlertObserver = alertObserver;
            mStatsProviderCbList = cbList;
            mNetworkPolicyManager = networkPolicyManager;
        }

        @NonNull
@@ -2150,8 +2156,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
        public void notifyWarningOrLimitReached() {
            Log.d(TAG, mTag + ": notifyWarningOrLimitReached");
            BinderUtils.withCleanCallingIdentity(() ->
                    LocalServices.getService(NetworkPolicyManagerInternal.class)
                            .onStatsProviderWarningOrLimitReached(mTag));
                    mNetworkPolicyManager.onStatsProviderWarningOrLimitReached());
        }

        @Override
+0 −17
Original line number Diff line number Diff line
@@ -16,11 +16,8 @@

package com.android.server.net;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.net.Network;
import android.net.NetworkTemplate;
import android.net.netstats.provider.NetworkStatsProvider;
import android.os.PowerExemptionManager.ReasonCode;
import android.telephony.SubscriptionPlan;

@@ -56,11 +53,6 @@ public abstract class NetworkPolicyManagerInternal {
     */
    public abstract SubscriptionPlan getSubscriptionPlan(Network network);

    /**
     * Return the active {@link SubscriptionPlan} for the given template.
     */
    public abstract SubscriptionPlan getSubscriptionPlan(NetworkTemplate template);

    public static final int QUOTA_TYPE_JOBS = 1;
    public static final int QUOTA_TYPE_MULTIPATH = 2;

@@ -99,13 +91,4 @@ public abstract class NetworkPolicyManagerInternal {
     */
    public abstract void setMeteredRestrictedPackagesAsync(
            Set<String> packageNames, int userId);

    /**
     *  Notifies that the specified {@link NetworkStatsProvider} has reached its quota
     *  which was set through {@link NetworkStatsProvider#onSetLimit(String, long)} or
     *  {@link NetworkStatsProvider#onSetWarningAndLimit(String, long, long)}.
     *
     * @param tag the human readable identifier of the custom network stats provider.
     */
    public abstract void onStatsProviderWarningOrLimitReached(@NonNull String tag);
}
+29 −14
Original line number Diff line number Diff line
@@ -3383,6 +3383,35 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        return result;
    }

    /**
     * Get subscription plan for the given networkTemplate.
     *
     * @param template the networkTemplate to get the subscription plan for.
     */
    @Override
    public SubscriptionPlan getSubscriptionPlan(@NonNull NetworkTemplate template) {
        enforceAnyPermissionOf(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
        synchronized (mNetworkPoliciesSecondLock) {
            final int subId = findRelevantSubIdNL(template);
            return getPrimarySubscriptionPlanLocked(subId);
        }
    }

    /**
     * Notifies that the specified {@link NetworkStatsProvider} has reached its quota
     * which was set through {@link NetworkStatsProvider#onSetLimit(String, long)} or
     * {@link NetworkStatsProvider#onSetWarningAndLimit(String, long, long)}.
     */
    @Override
    public void onStatsProviderWarningOrLimitReached() {
        enforceAnyPermissionOf(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
        // This API may be called before the system is ready.
        synchronized (mNetworkPoliciesSecondLock) {
            if (!mSystemReady) return;
        }
        mHandler.obtainMessage(MSG_STATS_PROVIDER_WARNING_OR_LIMIT_REACHED).sendToTarget();
    }

    @Override
    public SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage) {
        enforceSubscriptionPlanAccess(subId, Binder.getCallingUid(), callingPackage);
@@ -5606,14 +5635,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
            }
        }

        @Override
        public SubscriptionPlan getSubscriptionPlan(NetworkTemplate template) {
            synchronized (mNetworkPoliciesSecondLock) {
                final int subId = findRelevantSubIdNL(template);
                return getPrimarySubscriptionPlanLocked(subId);
            }
        }

        @Override
        public long getSubscriptionOpportunisticQuota(Network network, int quotaType) {
            final long quotaBytes;
@@ -5656,12 +5677,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
            mHandler.obtainMessage(MSG_METERED_RESTRICTED_PACKAGES_CHANGED,
                    userId, 0, packageNames).sendToTarget();
        }

        @Override
        public void onStatsProviderWarningOrLimitReached(@NonNull String tag) {
            Log.v(TAG, "onStatsProviderWarningOrLimitReached: " + tag);
            mHandler.obtainMessage(MSG_STATS_PROVIDER_WARNING_OR_LIMIT_REACHED).sendToTarget();
        }
    }

    private void setMeteredRestrictedPackagesInternal(Set<String> packageNames, int userId) {
Loading