1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.net;
18 
19 import android.net.INetworkPolicyListener;
20 import android.net.NetworkPolicy;
21 import android.net.NetworkQuotaInfo;
22 import android.net.NetworkState;
23 import android.net.NetworkTemplate;
24 import android.telephony.SubscriptionPlan;
25 
26 /**
27  * Interface that creates and modifies network policy rules.
28  *
29  * {@hide}
30  */
31 interface INetworkPolicyManager {
32 
33     /** Control UID policies. */
34     @UnsupportedAppUsage
setUidPolicy(int uid, int policy)35     void setUidPolicy(int uid, int policy);
addUidPolicy(int uid, int policy)36     void addUidPolicy(int uid, int policy);
removeUidPolicy(int uid, int policy)37     void removeUidPolicy(int uid, int policy);
38     @UnsupportedAppUsage
getUidPolicy(int uid)39     int getUidPolicy(int uid);
getUidsWithPolicy(int policy)40     int[] getUidsWithPolicy(int policy);
41 
registerListener(INetworkPolicyListener listener)42     void registerListener(INetworkPolicyListener listener);
unregisterListener(INetworkPolicyListener listener)43     void unregisterListener(INetworkPolicyListener listener);
44 
45     /** Control network policies atomically. */
46     @UnsupportedAppUsage
setNetworkPolicies(in NetworkPolicy[] policies)47     void setNetworkPolicies(in NetworkPolicy[] policies);
getNetworkPolicies(String callingPackage)48     NetworkPolicy[] getNetworkPolicies(String callingPackage);
49 
50     /** Snooze limit on policy matching given template. */
51     @UnsupportedAppUsage
snoozeLimit(in NetworkTemplate template)52     void snoozeLimit(in NetworkTemplate template);
53 
54     /** Control if background data is restricted system-wide. */
55     @UnsupportedAppUsage
setRestrictBackground(boolean restrictBackground)56     void setRestrictBackground(boolean restrictBackground);
57     @UnsupportedAppUsage
getRestrictBackground()58     boolean getRestrictBackground();
59 
60     /** Gets the restrict background status based on the caller's UID:
61         1 - disabled
62         2 - whitelisted
63         3 - enabled
64     */
getRestrictBackgroundByCaller()65     int getRestrictBackgroundByCaller();
66 
setDeviceIdleMode(boolean enabled)67     void setDeviceIdleMode(boolean enabled);
setWifiMeteredOverride(String networkId, int meteredOverride)68     void setWifiMeteredOverride(String networkId, int meteredOverride);
69 
70     @UnsupportedAppUsage
getNetworkQuotaInfo(in NetworkState state)71     NetworkQuotaInfo getNetworkQuotaInfo(in NetworkState state);
72 
getSubscriptionPlans(int subId, String callingPackage)73     SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage);
setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage)74     void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage);
getSubscriptionPlansOwner(int subId)75     String getSubscriptionPlansOwner(int subId);
setSubscriptionOverride(int subId, int overrideMask, int overrideValue, long timeoutMillis, String callingPackage)76     void setSubscriptionOverride(int subId, int overrideMask, int overrideValue, long timeoutMillis, String callingPackage);
77 
factoryReset(String subscriber)78     void factoryReset(String subscriber);
79 
isUidNetworkingBlocked(int uid, boolean meteredNetwork)80     boolean isUidNetworkingBlocked(int uid, boolean meteredNetwork);
81 }
82