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    boolean mCleartextTrafficPermitted = true;
20    private boolean mReturnActualTime = false;
21
22    public void setUp() {
23        mTimeMillis = 0;
24        mActiveNetworkType = ConnectivityManager.TYPE_WIFI;
25        mIsRoaming = false;
26        mIsMetered = false;
27        mMaxBytesOverMobile = null;
28        mRecommendedMaxBytesOverMobile = null;
29        mBroadcastsSent.clear();
30        mReturnActualTime = false;
31    }
32
33    void incrementTimeMillis(long delta) {
34        mTimeMillis += delta;
35    }
36
37    @Override
38    public long currentTimeMillis() {
39        if (mReturnActualTime) {
40            return System.currentTimeMillis();
41        }
42        return mTimeMillis;
43    }
44
45    @Override
46    public NetworkInfo getActiveNetworkInfo(int uid) {
47        if (mActiveNetworkType == null) {
48            return null;
49        } else {
50            final NetworkInfo info = new NetworkInfo(mActiveNetworkType, 0, null, null);
51            info.setDetailedState(DetailedState.CONNECTED, null, null);
52            return info;
53        }
54    }
55
56    @Override
57    public boolean isActiveNetworkMetered() {
58        return mIsMetered;
59    }
60
61    @Override
62    public boolean isNetworkRoaming() {
63        return mIsRoaming;
64    }
65
66    @Override
67    public Long getMaxBytesOverMobile() {
68        return mMaxBytesOverMobile;
69    }
70
71    @Override
72    public Long getRecommendedMaxBytesOverMobile() {
73        return mRecommendedMaxBytesOverMobile;
74    }
75
76    @Override
77    public void sendBroadcast(Intent intent) {
78        mBroadcastsSent.add(intent);
79    }
80
81    @Override
82    public boolean userOwnsPackage(int uid, String pckg) throws NameNotFoundException {
83        return true;
84    }
85
86    @Override
87    public boolean isCleartextTrafficPermitted(int uid) {
88        return mCleartextTrafficPermitted;
89    }
90
91    public void setReturnActualTime(boolean flag) {
92        mReturnActualTime = flag;
93    }
94}
95