1 package com.xtremelabs.robolectric.shadows; 2 3 import android.net.ConnectivityManager; 4 import android.net.NetworkInfo; 5 import com.xtremelabs.robolectric.Robolectric; 6 import com.xtremelabs.robolectric.internal.Implementation; 7 import com.xtremelabs.robolectric.internal.Implements; 8 9 import static com.xtremelabs.robolectric.Robolectric.shadowOf; 10 11 /** 12 * Shadow of {@code NetworkInfo} which is used by ShadowConnectivityManager. 13 */ 14 15 @Implements(NetworkInfo.class) 16 public class ShadowNetworkInfo { 17 private boolean isAvailable; 18 private boolean isConnected; 19 private int connectionType; 20 private int connectionSubType; 21 private NetworkInfo.DetailedState detailedState; 22 newInstance()23 public static NetworkInfo newInstance() { 24 return newInstance(null); 25 } 26 newInstance(NetworkInfo.DetailedState detailedState)27 public static NetworkInfo newInstance(NetworkInfo.DetailedState detailedState) { 28 return newInstance(detailedState, ConnectivityManager.TYPE_MOBILE, 0, true, true); 29 } 30 newInstance(NetworkInfo.DetailedState detailedState, int type, int subType, boolean isAvailable, boolean isConnected)31 public static NetworkInfo newInstance(NetworkInfo.DetailedState detailedState, int type, int subType, 32 boolean isAvailable, 33 boolean isConnected) { 34 NetworkInfo networkInfo = Robolectric.newInstanceOf(NetworkInfo.class); 35 final ShadowNetworkInfo info = shadowOf(networkInfo); 36 info.setConnectionType(type); 37 info.setSubType(subType); 38 info.setDetailedState(detailedState); 39 info.setAvailableStatus(isAvailable); 40 info.setConnectionStatus(isConnected); 41 return networkInfo; 42 } 43 44 @Implementation isConnected()45 public boolean isConnected() { 46 return isConnected; 47 } 48 49 @Implementation isConnectedOrConnecting()50 public boolean isConnectedOrConnecting() { 51 return isConnected; 52 } 53 54 @Implementation getState()55 public NetworkInfo.State getState() { 56 return isConnected ? NetworkInfo.State.CONNECTED : 57 NetworkInfo.State.DISCONNECTED; 58 } 59 60 @Implementation getDetailedState()61 public NetworkInfo.DetailedState getDetailedState() { 62 return detailedState; 63 } 64 65 @Implementation getType()66 public int getType(){ 67 return connectionType; 68 } 69 70 @Implementation getSubtype()71 public int getSubtype() { 72 return connectionSubType; 73 } 74 75 @Implementation isAvailable()76 public boolean isAvailable() { 77 return isAvailable; 78 } 79 80 /** 81 * Non-Android accessor 82 * Sets up the return value of {@link #isAvailable()}. 83 * 84 * @param isAvailable the value that {@link #isAvailable()} will return. 85 */ setAvailableStatus(boolean isAvailable)86 public void setAvailableStatus(boolean isAvailable) { 87 this.isAvailable = isAvailable; 88 } 89 90 /** 91 * Non-Android accessor 92 * Sets up the return value of {@link #isConnectedOrConnecting()} and {@link @isConnected()}. 93 * 94 * @param isConnected the value that {@link #isConnectedOrConnecting()} and {@link #isConnected()} will return. 95 */ setConnectionStatus(boolean isConnected)96 public void setConnectionStatus(boolean isConnected) { 97 this.isConnected = isConnected; 98 } 99 100 /** 101 * Non-Android accessor 102 * Sets up the return value of {@link #getType()}. 103 * 104 * @param connectionType the value that {@link #getType()} will return. 105 */ setConnectionType(int connectionType)106 public void setConnectionType(int connectionType){ 107 this.connectionType = connectionType; 108 } 109 setSubType(int subType)110 public void setSubType(int subType) { 111 this.connectionSubType = subType; 112 } 113 setDetailedState(NetworkInfo.DetailedState detailedState)114 public void setDetailedState(NetworkInfo.DetailedState detailedState) { 115 this.detailedState = detailedState; 116 } 117 } 118