1d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme/*
2d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Copyright (C) 2016 The Android Open Source Project
3d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
4d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Licensed under the Apache License, Version 2.0 (the "License");
5d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * you may not use this file except in compliance with the License.
6d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * You may obtain a copy of the License at
7d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
8d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *      http://www.apache.org/licenses/LICENSE-2.0
9d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
10d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Unless required by applicable law or agreed to in writing, software
11d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * distributed under the License is distributed on an "AS IS" BASIS,
12d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * See the License for the specific language governing permissions and
14d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * limitations under the License.
15d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme */
16d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme
17d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Lemepackage com.android.server.net;
18d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme
199252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkeyimport android.net.Network;
20146bb336ecb36bfa27529828172ec7593d4fb2f5Jeff Sharkeyimport android.net.NetworkTemplate;
219252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkeyimport android.telephony.SubscriptionPlan;
229252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey
2304d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shankaimport java.util.Set;
2404d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
25d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme/**
26d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * Network Policy Manager local system service interface.
27d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme *
28d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme * @hide Only for use within the system server.
29d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme */
30d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Lemepublic abstract class NetworkPolicyManagerInternal {
31d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme
32d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme    /**
33d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme     * Resets all policies associated with a given user.
34d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme     */
35d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme    public abstract void resetUserState(int userId);
36938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi
37938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    /**
38938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     * @return true if the given uid is restricted from doing networking on metered networks.
39938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     */
40938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    public abstract boolean isUidRestrictedOnMeteredNetworks(int uid);
41938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi
42938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    /**
43938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     * @return true if networking is blocked on the given interface for the given uid according
44938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     * to current networking policies.
45938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi     */
46938ab4fa3942398e942d98aa7b16dd87dfb7ff11Hugo Benichi    public abstract boolean isUidNetworkingBlocked(int uid, String ifname);
47f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka
48f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka    /**
49f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka     * Informs that an appId has been added or removed from the temp-powersave-whitelist so that
50f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka     * that network rules for that appId can be updated.
51f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka     *
52f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka     * @param appId The appId which has been updated in the whitelist.
53f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka     * @param added Denotes whether the {@param appId} has been added or removed from the whitelist.
54f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka     */
55f34f3ec1c53188fe48f1adb500c5c8d8bdc3de46Sudheer Shanka    public abstract void onTempPowerSaveWhitelistChange(int appId, boolean added);
569252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey
579252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey    /**
589252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey     * Return the active {@link SubscriptionPlan} for the given network.
599252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey     */
609252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey    public abstract SubscriptionPlan getSubscriptionPlan(Network network);
619252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey
62146bb336ecb36bfa27529828172ec7593d4fb2f5Jeff Sharkey    /**
63146bb336ecb36bfa27529828172ec7593d4fb2f5Jeff Sharkey     * Return the active {@link SubscriptionPlan} for the given template.
64146bb336ecb36bfa27529828172ec7593d4fb2f5Jeff Sharkey     */
65146bb336ecb36bfa27529828172ec7593d4fb2f5Jeff Sharkey    public abstract SubscriptionPlan getSubscriptionPlan(NetworkTemplate template);
66146bb336ecb36bfa27529828172ec7593d4fb2f5Jeff Sharkey
679252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey    public static final int QUOTA_TYPE_JOBS = 1;
689252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey    public static final int QUOTA_TYPE_MULTIPATH = 2;
699252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey
709252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey    /**
719252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey     * Return the daily quota (in bytes) that can be opportunistically used on
729252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey     * the given network to improve the end user experience. It's called
739252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey     * "opportunistic" because it's traffic that would typically not use the
749252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey     * given network.
759252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey     */
769252b34065809731ea2f6d3ffad91f678f809c93Jeff Sharkey    public abstract long getSubscriptionOpportunisticQuota(Network network, int quotaType);
77c53c47fa3a2fa0650ffe6c3f7eba8008004f6aa4Sudheer Shanka
78c53c47fa3a2fa0650ffe6c3f7eba8008004f6aa4Sudheer Shanka    /**
79c53c47fa3a2fa0650ffe6c3f7eba8008004f6aa4Sudheer Shanka     * Informs that admin data is loaded and available.
80c53c47fa3a2fa0650ffe6c3f7eba8008004f6aa4Sudheer Shanka     */
81c53c47fa3a2fa0650ffe6c3f7eba8008004f6aa4Sudheer Shanka    public abstract void onAdminDataAvailable();
8204d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
8304d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    /**
8404d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     * Sets a list of packages which are restricted by admin from accessing metered data.
8504d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     *
8604d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     * @param packageNames the list of restricted packages.
8704d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     * @param userId the userId in which {@param packagesNames} are restricted.
8804d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     */
8904d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    public abstract void setMeteredRestrictedPackages(
9004d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka            Set<String> packageNames, int userId);
9104d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
9204d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
9304d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    /**
9404d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     * Similar to {@link #setMeteredRestrictedPackages(Set, int)} but updates the restricted
9504d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     * packages list asynchronously.
9604d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka     */
9704d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    public abstract void setMeteredRestrictedPackagesAsync(
9804d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka            Set<String> packageNames, int userId);
99d17fda40cdcf875002086fbe98bf34ba7cbdb03cFelipe Leme}
100