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