• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.shadows;
2 
3 import static org.robolectric.util.reflector.Reflector.reflector;
4 
5 import android.net.wifi.SupplicantState;
6 import android.net.wifi.WifiInfo;
7 import android.net.wifi.WifiSsid;
8 import java.net.InetAddress;
9 import org.robolectric.annotation.Implementation;
10 import org.robolectric.annotation.Implements;
11 import org.robolectric.annotation.RealObject;
12 import org.robolectric.util.ReflectionHelpers;
13 import org.robolectric.util.reflector.Direct;
14 import org.robolectric.util.reflector.ForType;
15 import org.robolectric.util.reflector.Static;
16 import org.robolectric.util.reflector.WithType;
17 
18 @Implements(WifiInfo.class)
19 public class ShadowWifiInfo {
20 
newInstance()21   public static WifiInfo newInstance() {
22     return ReflectionHelpers.callConstructor(WifiInfo.class);
23   }
24 
25   @RealObject WifiInfo realObject;
26 
27   @Implementation
setInetAddress(InetAddress address)28   public void setInetAddress(InetAddress address) {
29     reflector(WifiInfoReflector.class, realObject).setInetAddress(address);
30   }
31 
32   @Implementation
setMacAddress(String newMacAddress)33   public void setMacAddress(String newMacAddress) {
34     reflector(WifiInfoReflector.class, realObject).setMacAddress(newMacAddress);
35   }
36 
setSSID(String ssid)37   public void setSSID(String ssid) {
38     reflector(WifiInfoReflector.class, realObject).setSSID(getWifiSsid(ssid));
39   }
40 
getWifiSsid(String ssid)41   private static Object getWifiSsid(String ssid) {
42     WifiSsid wifiSsid;
43     if (ssid.startsWith("0x")) {
44       wifiSsid = reflector(WifiSsidReflector.class).createFromHex(ssid);
45     } else {
46       wifiSsid = reflector(WifiSsidReflector.class).createFromAsciiEncoded(ssid);
47     }
48     return wifiSsid;
49   }
50 
51   @Implementation
setBSSID(String bssid)52   public void setBSSID(String bssid) {
53     reflector(WifiInfoReflector.class, realObject).setBSSID(bssid);
54   }
55 
56   @Implementation
setSupplicantState(SupplicantState state)57   public void setSupplicantState(SupplicantState state) {
58     reflector(WifiInfoReflector.class, realObject).setSupplicantState(state);
59   }
60 
61   @Implementation
setRssi(int rssi)62   public void setRssi(int rssi) {
63     reflector(WifiInfoReflector.class, realObject).setRssi(rssi);
64   }
65 
66   @Implementation
setLinkSpeed(int linkSpeed)67   public void setLinkSpeed(int linkSpeed) {
68     reflector(WifiInfoReflector.class, realObject).setLinkSpeed(linkSpeed);
69   }
70 
71   @Implementation
setFrequency(int frequency)72   public void setFrequency(int frequency) {
73     reflector(WifiInfoReflector.class, realObject).setFrequency(frequency);
74   }
75 
76   @Implementation
setNetworkId(int id)77   public void setNetworkId(int id) {
78     reflector(WifiInfoReflector.class, realObject).setNetworkId(id);
79   }
80 
81   @ForType(WifiInfo.class)
82   interface WifiInfoReflector {
83 
84     @Direct
setInetAddress(InetAddress address)85     void setInetAddress(InetAddress address);
86 
87     @Direct
setMacAddress(String newMacAddress)88     void setMacAddress(String newMacAddress);
89 
90     @Direct
setSSID(String ssid)91     void setSSID(String ssid);
92 
setSSID(@ithType"android.net.wifi.WifiSsid") Object ssid)93     void setSSID(@WithType("android.net.wifi.WifiSsid") Object ssid);
94 
95     @Direct
setBSSID(String bssid)96     void setBSSID(String bssid);
97 
98     @Direct
setSupplicantState(SupplicantState state)99     void setSupplicantState(SupplicantState state);
100 
101     @Direct
setRssi(int rssi)102     void setRssi(int rssi);
103 
104     @Direct
setLinkSpeed(int linkSpeed)105     void setLinkSpeed(int linkSpeed);
106 
107     @Direct
setNetworkId(int id)108     void setNetworkId(int id);
109 
110     @Direct
setFrequency(int frequency)111     void setFrequency(int frequency);
112   }
113 
114   @ForType(WifiSsid.class)
115   interface WifiSsidReflector {
116     // pre-T
117     @Static
createFromHex(String hexStr)118     WifiSsid createFromHex(String hexStr);
119 
120     // pre-T
121     @Static
createFromAsciiEncoded(String asciiEncoded)122     WifiSsid createFromAsciiEncoded(String asciiEncoded);
123   }
124 }
125