1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.server.wifi;
18
19import android.content.BroadcastReceiver;
20import android.content.Context;
21import android.content.Intent;
22import android.net.ConnectivityManager;
23import android.net.NetworkInfo;
24import android.net.wifi.WifiManager;
25
26import java.util.ArrayList;
27
28/**
29 * Utils for wifi tests.
30 */
31public class TestUtil {
32    /**
33     * Send {@link WifiManager#NETWORK_STATE_CHANGED_ACTION} broadcast.
34     */
35    public static void sendNetworkStateChanged(BroadcastReceiver broadcastReceiver,
36            Context context, NetworkInfo.DetailedState detailedState) {
37        Intent intent = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION);
38        NetworkInfo networkInfo = new NetworkInfo(0, 0, "", "");
39        networkInfo.setDetailedState(detailedState, "", "");
40        intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, networkInfo);
41        broadcastReceiver.onReceive(context, intent);
42    }
43
44    /**
45     * Send {@link WifiManager#SCAN_RESULTS_AVAILABLE_ACTION} broadcast.
46     */
47    public static void sendScanResultsAvailable(BroadcastReceiver broadcastReceiver,
48            Context context) {
49        Intent intent = new Intent(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
50        broadcastReceiver.onReceive(context, intent);
51    }
52
53    /**
54     * Send {@link WifiManager#WIFI_SCAN_AVAILABLE} broadcast.
55     */
56    public static void sendWifiScanAvailable(BroadcastReceiver broadcastReceiver,
57            Context context, int scanAvailable) {
58        Intent intent = new Intent(WifiManager.WIFI_SCAN_AVAILABLE);
59        intent.putExtra(WifiManager.EXTRA_SCAN_AVAILABLE, scanAvailable);
60        broadcastReceiver.onReceive(context, intent);
61    }
62
63    /**
64     * Send {@link WifiManager#WIFI_STATE_CHANGED} broadcast.
65     */
66    public static void sendWifiStateChanged(BroadcastReceiver broadcastReceiver,
67            Context context, int wifiState) {
68        Intent intent = new Intent(WifiManager.WIFI_STATE_CHANGED_ACTION);
69        intent.putExtra(WifiManager.EXTRA_WIFI_STATE, wifiState);
70        broadcastReceiver.onReceive(context, intent);
71    }
72
73    /**
74     * Send {@link WifiManager#WIFI_AP_STATE_CHANGED} broadcast.
75     */
76    public static void sendWifiApStateChanged(BroadcastReceiver broadcastReceiver,
77            Context context, int apState, int previousState, int error, String ifaceName,
78            int mode) {
79        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
80        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, apState);
81        intent.putExtra(WifiManager.EXTRA_PREVIOUS_WIFI_AP_STATE, previousState);
82        if (apState == WifiManager.WIFI_AP_STATE_FAILED) {
83            // only set reason number when softAP start failed
84            intent.putExtra(WifiManager.EXTRA_WIFI_AP_FAILURE_REASON, error);
85        }
86        intent.putExtra(WifiManager.EXTRA_WIFI_AP_INTERFACE_NAME, ifaceName);
87        intent.putExtra(WifiManager.EXTRA_WIFI_AP_MODE, mode);
88
89        broadcastReceiver.onReceive(context, intent);
90    }
91
92    /**
93     * Send {@link ConnectivityManager#ACTION_TETHER_STATE_CHANGED} broadcast.
94     */
95    public static void sendTetherStateChanged(BroadcastReceiver broadcastReceiver,
96            Context context, ArrayList<String> available, ArrayList<String> active) {
97        Intent intent = new Intent(ConnectivityManager.ACTION_TETHER_STATE_CHANGED);
98        intent.putExtra(ConnectivityManager.EXTRA_AVAILABLE_TETHER, available);
99        intent.putExtra(ConnectivityManager.EXTRA_ACTIVE_TETHER, active);
100        broadcastReceiver.onReceive(context, intent);
101    }
102}
103