Serialize threading for download manager testing.
[android/platform/packages/providers/DownloadProvider.git] / src / com / android / providers / downloads / RealSystemFacade.java
1 package com.android.providers.downloads;
2
3 import android.app.Notification;
4 import android.app.NotificationManager;
5 import android.content.Context;
6 import android.content.Intent;
7 import android.content.pm.PackageManager.NameNotFoundException;
8 import android.net.ConnectivityManager;
9 import android.net.NetworkInfo;
10 import android.telephony.TelephonyManager;
11 import android.util.Log;
12
13 class RealSystemFacade implements SystemFacade {
14     private Context mContext;
15     private NotificationManager mNotificationManager;
16
17     public RealSystemFacade(Context context) {
18         mContext = context;
19         mNotificationManager = (NotificationManager)
20                 mContext.getSystemService(Context.NOTIFICATION_SERVICE);
21     }
22
23     public long currentTimeMillis() {
24         return System.currentTimeMillis();
25     }
26
27     public Integer getActiveNetworkType() {
28         ConnectivityManager connectivity =
29                 (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
30         if (connectivity == null) {
31             Log.w(Constants.TAG, "couldn't get connectivity manager");
32             return null;
33         }
34
35         NetworkInfo activeInfo = connectivity.getActiveNetworkInfo();
36         if (activeInfo == null) {
37             if (Constants.LOGVV) {
38                 Log.v(Constants.TAG, "network is not available");
39             }
40             return null;
41         }
42         return activeInfo.getType();
43     }
44
45     public boolean isNetworkRoaming() {
46         ConnectivityManager connectivity =
47             (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
48         if (connectivity == null) {
49             Log.w(Constants.TAG, "couldn't get connectivity manager");
50             return false;
51         }
52
53         NetworkInfo info = connectivity.getActiveNetworkInfo();
54         boolean isMobile = (info != null && info.getType() == ConnectivityManager.TYPE_MOBILE);
55         boolean isRoaming = isMobile && TelephonyManager.getDefault().isNetworkRoaming();
56         if (Constants.LOGVV && isRoaming) {
57             Log.v(Constants.TAG, "network is roaming");
58         }
59         return isRoaming;
60     }
61
62     public Integer getMaxBytesOverMobile() {
63         return null;
64     }
65
66     @Override
67     public void sendBroadcast(Intent intent) {
68         mContext.sendBroadcast(intent);
69     }
70
71     @Override
72     public boolean userOwnsPackage(int uid, String packageName) throws NameNotFoundException {
73         return mContext.getPackageManager().getApplicationInfo(packageName, 0).uid == uid;
74     }
75
76     @Override
77     public void postNotification(int id, Notification notification) {
78         mNotificationManager.notify(id, notification);
79     }
80
81     @Override
82     public void cancelNotification(int id) {
83         mNotificationManager.cancel(id);
84     }
85
86     @Override
87     public void cancelAllNotifications() {
88         mNotificationManager.cancelAll();
89     }
90
91     @Override
92     public void startThread(Thread thread) {
93         thread.start();
94     }
95 }