public class NetworkPolicyManagerService
extends INetworkPolicyManager.Stub
NetworkStatsService
statistics to drive those rules.
Derives active rules by combining a given policy with other system status,
and delivers to listeners, such as ConnectivityManager
, for
enforcement.
This class uses 2-3 locks to synchronize state:
mUidRulesFirstLock
: used to guard state related to individual UIDs (such as firewall
rules).
mNetworkPoliciesSecondLock
: used to guard state related to network interfaces (such
as network policies).
allLocks
: not a "real" lock, but an indication (through @GuardedBy) that all locks
must be held.
As such, methods that require synchronization have the following prefixes:
UL()
: require the "UID" lock (mUidRulesFirstLock
).
NL()
: require the "Network" lock (mNetworkPoliciesSecondLock
).
AL()
: require all locks, which must be obtained in order (mUidRulesFirstLock
first, then mNetworkPoliciesSecondLock
, then mYetAnotherGuardThirdLock
, etc..
Modifier and Type | Class and Description |
---|---|
static interface |
NetworkPolicyManagerService.ChainToggleType |
static interface |
NetworkPolicyManagerService.RestrictType |
Modifier and Type | Field and Description |
---|---|
static int |
TYPE_LIMIT |
static int |
TYPE_LIMIT_SNOOZED |
static int |
TYPE_WARNING |
Constructor and Description |
---|
NetworkPolicyManagerService(Context context,
IActivityManager activityManager,
INetworkStatsService networkStats,
INetworkManagementService networkManagement) |
NetworkPolicyManagerService(Context context,
IActivityManager activityManager,
INetworkStatsService networkStats,
INetworkManagementService networkManagement,
TrustedTime time,
File systemDir,
boolean suppressDefaultPolicy) |
public static final int TYPE_WARNING
public static final int TYPE_LIMIT
public static final int TYPE_LIMIT_SNOOZED
public NetworkPolicyManagerService(Context context, IActivityManager activityManager, INetworkStatsService networkStats, INetworkManagementService networkManagement)
public NetworkPolicyManagerService(Context context, IActivityManager activityManager, INetworkStatsService networkStats, INetworkManagementService networkManagement, TrustedTime time, File systemDir, boolean suppressDefaultPolicy)
public void bindConnectivityManager(IConnectivityManager connManager)
public void bindNotificationManager(INotificationManager notifManager)
public void systemReady()
public void setUidPolicy(int uid, int policy)
public void addUidPolicy(int uid, int policy)
public void removeUidPolicy(int uid, int policy)
public int getUidPolicy(int uid)
public int[] getUidsWithPolicy(int policy)
public void setConnectivityListener(INetworkPolicyListener listener)
public void registerListener(INetworkPolicyListener listener)
public void unregisterListener(INetworkPolicyListener listener)
public void setNetworkPolicies(NetworkPolicy[] policies)
public NetworkPolicy[] getNetworkPolicies(String callingPackage)
public void snoozeLimit(NetworkTemplate template)
public void onTetheringChanged(String iface, boolean tethering)
public void setRestrictBackground(boolean restrictBackground)
public void addRestrictBackgroundWhitelistedUid(int uid)
public void removeRestrictBackgroundWhitelistedUid(int uid)
public int[] getRestrictBackgroundWhitelistedUids()
public int getRestrictBackgroundByCaller()
public boolean getRestrictBackground()
public void setDeviceIdleMode(boolean enabled)
public NetworkQuotaInfo getNetworkQuotaInfo(NetworkState state)
public boolean isNetworkMetered(NetworkState state)
protected void dump(FileDescriptor fd, PrintWriter writer, String[] args)
public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, String[] args, ResultReceiver resultReceiver) throws RemoteException
RemoteException
public boolean isUidForeground(int uid)
public void addIdleHandler(MessageQueue.IdleHandler handler)
public void factoryReset(String subscriber)