• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.shadows;
2 
3 import android.net.wifi.WifiScanner;
4 import android.os.Bundle;
5 import android.os.Handler;
6 import android.os.Looper;
7 import android.os.Messenger;
8 import java.util.ArrayList;
9 import java.util.Arrays;
10 import java.util.List;
11 
12 /**
13  * A system service interface delegate for IWifiScanner.
14  *
15  * <p>By default, Robolectric will provide stub return results for any IWifiScanner calls. This
16  * delegate is used whenever more substantial logic is needed.
17  */
18 class WifiScannerDelegate {
getMessenger()19   public Messenger getMessenger() {
20     return new Messenger(new Handler(Looper.getMainLooper()));
21   }
22 
getAvailableChannels(int band, String packageName, String featureId)23   public Bundle getAvailableChannels(int band, String packageName, String featureId) {
24     Bundle bundle = new Bundle();
25 
26     // Mock available WiFi channels. See https://en.wikipedia.org/wiki/List_of_WLAN_channels
27     List<Integer> availableChannels = new ArrayList<>();
28 
29     switch (band) {
30       case WifiScanner.WIFI_BAND_24_GHZ:
31         availableChannels =
32             Arrays.asList(
33                 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2477);
34         break;
35       case WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS:
36         availableChannels =
37             Arrays.asList(
38                 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540, 5560, 5580, 5600,
39                 5620, 5640, 5660, 5680, 5700, 5720, 5745, 5765, 5785, 5805, 5825, 5845, 5865, 5885,
40                 5905, 5925, 5945, 5965, 5985);
41         break;
42       case WifiScanner.WIFI_BAND_BOTH_WITH_DFS:
43         availableChannels =
44             Arrays.asList(
45                 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2477,
46                 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540, 5560, 5580, 5600,
47                 5620, 5640, 5660, 5680, 5700, 5720, 5745, 5765, 5785, 5805, 5825, 5845, 5865, 5885,
48                 5905, 5925, 5945, 5965, 5985);
49         break;
50       case WifiScanner.WIFI_BAND_6_GHZ:
51         availableChannels =
52             Arrays.asList(
53                 5975, 5995, 6015, 6035, 6055, 6075, 6095, 6115, 6135, 6155, 6175, 6195, 6215, 6235,
54                 6255, 6275, 6295, 6315, 6335, 6355, 6375, 6395, 6415, 6435);
55         break;
56       case WifiScanner.WIFI_BAND_24_5_WITH_DFS_6_GHZ:
57         availableChannels =
58             Arrays.asList(
59                 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2477,
60                 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540, 5560, 5580, 5600,
61                 5620, 5640, 5660, 5680, 5700, 5720, 5745, 5765, 5785, 5805, 5825, 5845, 5865, 5885,
62                 5905, 5925, 5945, 5965, 5985, 6015, 6035, 6055, 6075, 6095, 6115, 6135, 6155, 6175,
63                 6195, 6215, 6235, 6255, 6275, 6295, 6315, 6335, 6355, 6375, 6395, 6415, 6435);
64         break;
65       case WifiScanner.WIFI_BAND_60_GHZ:
66         availableChannels =
67             Arrays.asList(
68                 58320, 58340, 58360, 58380, 58400, 58420, 58440, 58460, 58480, 58500, 58520, 58540,
69                 58560, 58580, 58600, 58620, 58640, 58660, 58680, 58700, 58720, 58740, 58760, 58780,
70                 58800, 58820, 58840, 58860, 58880, 58900, 58920, 58940, 58960, 58980, 59000, 59020,
71                 59040, 59060, 59080, 59100, 59120, 59140, 59160, 59180, 59200, 59220, 59240, 59260,
72                 59280, 59300, 59320, 59340, 59360, 59380, 59400, 59420, 59440, 59460, 59480, 59500,
73                 59520, 59540, 59560, 59580, 59600, 59620, 59640, 59660, 59680, 59700, 59720, 59740,
74                 59760, 59780, 59800, 59820, 59840, 59860, 59880, 59900, 59920, 59940, 59960, 59980);
75         break;
76       case WifiScanner.WIFI_BAND_24_5_WITH_DFS_6_60_GHZ:
77       case WifiScanner.WIFI_BAND_UNSPECIFIED:
78       default:
79         availableChannels =
80             Arrays.asList(
81                 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2477,
82                 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540, 5560, 5580, 5600,
83                 5620, 5640, 5660, 5680, 5700, 5720, 5745, 5765, 5785, 5805, 5825, 5845, 5865, 5885,
84                 5905, 5925, 5945, 5965, 5985, 6015, 6035, 6055, 6075, 6095, 6115, 6135, 6155, 6175,
85                 6195, 6215, 6235, 6255, 6275, 6295, 6315, 6335, 6355, 6375, 6395, 6415, 6435, 58320,
86                 58340, 58360, 58380, 58400, 58420, 58440, 58460, 58480, 58500, 58520, 58540, 58560,
87                 58580, 58600, 58620, 58640, 58660, 58680, 58700, 58720, 58740, 58760, 58780, 58800,
88                 58820, 58840, 58860, 58880, 58900, 58920, 58940, 58960, 58980, 59000, 59020, 59040,
89                 59060, 59080, 59100, 59120, 59140, 59160, 59180, 59200, 59220, 59240, 59260, 59280,
90                 59300, 59320, 59340, 59360, 59380, 59400, 59420, 59440, 59460, 59480, 59500, 59520,
91                 59540, 59560, 59580, 59600, 59620, 59640, 59660, 59680, 59700, 59720, 59740, 59760,
92                 59780, 59800, 59820, 59840, 59860, 59880, 59900, 59920, 59940, 59960, 59980);
93         break;
94     }
95 
96     bundle.putIntegerArrayList(
97         WifiScanner.GET_AVAILABLE_CHANNELS_EXTRA, new ArrayList<>(availableChannels));
98 
99     return bundle;
100   }
101 
getAvailableChannels( int band, String packageName, String featureId, Bundle extras)102   public Bundle getAvailableChannels(
103       int band, String packageName, String featureId, Bundle extras) {
104     return getAvailableChannels(band, packageName, featureId);
105   }
106 }
107