1d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey/*
2d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * Copyright (C) 2011 The Android Open Source Project
3d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey *
4d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
5d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * you may not use this file except in compliance with the License.
6d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * You may obtain a copy of the License at
7d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey *
8d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
9d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey *
10d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * Unless required by applicable law or agreed to in writing, software
11d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
12d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * See the License for the specific language governing permissions and
14d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * limitations under the License.
15d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey */
16d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey
17d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkeypackage android.net;
18d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey
19c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkeyimport android.net.INetworkPolicyListener;
2021c9c45e5caf62b935354b74392fb40c4bf18529Jeff Sharkeyimport android.net.NetworkPolicy;
21f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkeyimport android.net.NetworkQuotaInfo;
22f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkeyimport android.net.NetworkState;
2341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkeyimport android.net.NetworkTemplate;
24c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey
25d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey/**
26d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * Interface that creates and modifies network policy rules.
27d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey *
28d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey * {@hide}
29d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey */
30d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkeyinterface INetworkPolicyManager {
31d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey
32f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey    /** Control UID policies. */
33d0c6ccbafdebc73d03cf3cd47f02f9f6c78a69ffJeff Sharkey    void setUidPolicy(int uid, int policy);
34be7c50e0a14e91330ce13161bc14a33d34ff6acaDianne Hackborn    void addUidPolicy(int uid, int policy);
35be7c50e0a14e91330ce13161bc14a33d34ff6acaDianne Hackborn    void removeUidPolicy(int uid, int policy);
36d0c6ccbafdebc73d03cf3cd47f02f9f6c78a69ffJeff Sharkey    int getUidPolicy(int uid);
37d0c6ccbafdebc73d03cf3cd47f02f9f6c78a69ffJeff Sharkey    int[] getUidsWithPolicy(int policy);
38d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey
399599cc5f21152860af9d18015b1398b50743da76Jeff Sharkey    boolean isUidForeground(int uid);
409599cc5f21152860af9d18015b1398b50743da76Jeff Sharkey
41be7c50e0a14e91330ce13161bc14a33d34ff6acaDianne Hackborn    int[] getPowerSaveAppIdWhitelist();
42be7c50e0a14e91330ce13161bc14a33d34ff6acaDianne Hackborn
43c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey    void registerListener(INetworkPolicyListener listener);
44c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey    void unregisterListener(INetworkPolicyListener listener);
45c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey
46f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey    /** Control network policies atomically. */
4722c055e6424e0e9579711545d8f4800c0f796db8Jeff Sharkey    void setNetworkPolicies(in NetworkPolicy[] policies);
4822c055e6424e0e9579711545d8f4800c0f796db8Jeff Sharkey    NetworkPolicy[] getNetworkPolicies();
49d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey
50f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey    /** Snooze limit on policy matching given template. */
510e2e5f8b564bebd5798c9fa387fbff96429ab5d2Jeff Sharkey    void snoozeLimit(in NetworkTemplate template);
5241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey
53f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey    /** Control if background data is restricted system-wide. */
544664500de0c1b270bce4991a400ab439ff2ef77bJeff Sharkey    void setRestrictBackground(boolean restrictBackground);
554664500de0c1b270bce4991a400ab439ff2ef77bJeff Sharkey    boolean getRestrictBackground();
564664500de0c1b270bce4991a400ab439ff2ef77bJeff Sharkey
57f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey    NetworkQuotaInfo getNetworkQuotaInfo(in NetworkState state);
589f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey    boolean isNetworkMetered(in NetworkState state);
59f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey
60d5cdd597b895a48ffa9a8e39f8a2504cd9b905c4Jeff Sharkey}
61