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