1package com.android.providers.downloads;
2
3import android.content.Intent;
4import android.content.pm.PackageManager.NameNotFoundException;
5import android.net.ConnectivityManager;
6import android.net.NetworkInfo;
7import android.net.NetworkInfo.DetailedState;
8
9import java.util.ArrayList;
10import java.util.List;
11public class FakeSystemFacade implements SystemFacade {
12    long mTimeMillis = 0;
13    Integer mActiveNetworkType = ConnectivityManager.TYPE_WIFI;
14    boolean mIsRoaming = false;
15    boolean mIsMetered = false;
16    Long mMaxBytesOverMobile = null;
17    Long mRecommendedMaxBytesOverMobile = null;
18    List<Intent> mBroadcastsSent = new ArrayList<Intent>();
19    private boolean mReturnActualTime = false;
20
21    public void setUp() {
22        mTimeMillis = 0;
23        mActiveNetworkType = ConnectivityManager.TYPE_WIFI;
24        mIsRoaming = false;
25        mIsMetered = false;
26        mMaxBytesOverMobile = null;
27        mRecommendedMaxBytesOverMobile = null;
28        mBroadcastsSent.clear();
29        mReturnActualTime = false;
30    }
31
32    void incrementTimeMillis(long delta) {
33        mTimeMillis += delta;
34    }
35
36    @Override
37    public long currentTimeMillis() {
38        if (mReturnActualTime) {
39            return System.currentTimeMillis();
40        }
41        return mTimeMillis;
42    }
43
44    @Override
45    public NetworkInfo getActiveNetworkInfo(int uid) {
46        if (mActiveNetworkType == null) {
47            return null;
48        } else {
49            final NetworkInfo info = new NetworkInfo(mActiveNetworkType, 0, null, null);
50            info.setDetailedState(DetailedState.CONNECTED, null, null);
51            return info;
52        }
53    }
54
55    @Override
56    public boolean isActiveNetworkMetered() {
57        return mIsMetered;
58    }
59
60    @Override
61    public boolean isNetworkRoaming() {
62        return mIsRoaming;
63    }
64
65    @Override
66    public Long getMaxBytesOverMobile() {
67        return mMaxBytesOverMobile;
68    }
69
70    @Override
71    public Long getRecommendedMaxBytesOverMobile() {
72        return mRecommendedMaxBytesOverMobile;
73    }
74
75    @Override
76    public void sendBroadcast(Intent intent) {
77        mBroadcastsSent.add(intent);
78    }
79
80    @Override
81    public boolean userOwnsPackage(int uid, String pckg) throws NameNotFoundException {
82        return true;
83    }
84
85    public void setReturnActualTime(boolean flag) {
86        mReturnActualTime = flag;
87    }
88}
89