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 
25 /**
26  * Interface that creates and modifies network policy rules.
27  *
28  * {@hide}
29  */
30 interface INetworkPolicyManager {
31 
32     /** Control UID policies. */
setUidPolicy(int uid, int policy)33     void setUidPolicy(int uid, int policy);
addUidPolicy(int uid, int policy)34     void addUidPolicy(int uid, int policy);
removeUidPolicy(int uid, int policy)35     void removeUidPolicy(int uid, int policy);
getUidPolicy(int uid)36     int getUidPolicy(int uid);
getUidsWithPolicy(int policy)37     int[] getUidsWithPolicy(int policy);
38 
isUidForeground(int uid)39     boolean isUidForeground(int uid);
40 
41     /** Higher priority listener before general event dispatch */
setConnectivityListener(INetworkPolicyListener listener)42     void setConnectivityListener(INetworkPolicyListener listener);
43 
registerListener(INetworkPolicyListener listener)44     void registerListener(INetworkPolicyListener listener);
unregisterListener(INetworkPolicyListener listener)45     void unregisterListener(INetworkPolicyListener listener);
46 
47     /** Control network policies atomically. */
setNetworkPolicies(in NetworkPolicy[] policies)48     void setNetworkPolicies(in NetworkPolicy[] policies);
getNetworkPolicies(String callingPackage)49     NetworkPolicy[] getNetworkPolicies(String callingPackage);
50 
51     /** Snooze limit on policy matching given template. */
snoozeLimit(in NetworkTemplate template)52     void snoozeLimit(in NetworkTemplate template);
53 
54     /** Control if background data is restricted system-wide. */
setRestrictBackground(boolean restrictBackground)55     void setRestrictBackground(boolean restrictBackground);
getRestrictBackground()56     boolean getRestrictBackground();
57 
58     /** Callback used to change internal state on tethering */
onTetheringChanged(String iface, boolean tethering)59     void onTetheringChanged(String iface, boolean tethering);
60 
61     /** Control which applications can be exempt from background data restrictions */
addRestrictBackgroundWhitelistedUid(int uid)62     void addRestrictBackgroundWhitelistedUid(int uid);
removeRestrictBackgroundWhitelistedUid(int uid)63     void removeRestrictBackgroundWhitelistedUid(int uid);
getRestrictBackgroundWhitelistedUids()64     int[] getRestrictBackgroundWhitelistedUids();
65     /** Gets the restrict background status based on the caller's UID:
66         1 - disabled
67         2 - whitelisted
68         3 - enabled
69     */
getRestrictBackgroundByCaller()70     int getRestrictBackgroundByCaller();
71 
setDeviceIdleMode(boolean enabled)72     void setDeviceIdleMode(boolean enabled);
73 
getNetworkQuotaInfo(in NetworkState state)74     NetworkQuotaInfo getNetworkQuotaInfo(in NetworkState state);
isNetworkMetered(in NetworkState state)75     boolean isNetworkMetered(in NetworkState state);
76 
factoryReset(String subscriber)77     void factoryReset(String subscriber);
78 }
79