Implement multi-network downloads
[android/platform/packages/providers/DownloadProvider.git] / src / com / android / providers / downloads / SystemFacade.java
1 /*
2  * Copyright (C) 2008 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 com.android.providers.downloads;
18
19 import android.content.Intent;
20 import android.content.pm.PackageManager.NameNotFoundException;
21 import android.net.Network;
22 import android.net.NetworkInfo;
23
24 interface SystemFacade {
25     /**
26      * @see System#currentTimeMillis()
27      */
28     public long currentTimeMillis();
29
30     /**
31      * @return Currently active network, or null if there's no active
32      *         connection.
33      */
34     public NetworkInfo getActiveNetworkInfo(int uid);
35
36     public Network getActiveNetwork(int uid);
37
38     public boolean isActiveNetworkMetered();
39
40     /**
41      * @see android.telephony.TelephonyManager#isNetworkRoaming
42      */
43     public boolean isNetworkRoaming();
44
45     /**
46      * @return maximum size, in bytes, of downloads that may go over a mobile connection; or null if
47      * there's no limit
48      */
49     public Long getMaxBytesOverMobile();
50
51     /**
52      * @return recommended maximum size, in bytes, of downloads that may go over a mobile
53      * connection; or null if there's no recommended limit.  The user will have the option to bypass
54      * this limit.
55      */
56     public Long getRecommendedMaxBytesOverMobile();
57
58     /**
59      * Send a broadcast intent.
60      */
61     public void sendBroadcast(Intent intent);
62
63     /**
64      * Returns true if the specified UID owns the specified package name.
65      */
66     public boolean userOwnsPackage(int uid, String pckg) throws NameNotFoundException;
67
68     /**
69      * Returns true if cleartext network traffic is permitted for the specified UID.
70      */
71     public boolean isCleartextTrafficPermitted(int uid);
72 }