FrameworkFacade.java revision b9601e3985540a776eff1d63355a721bea56aa4c
1
2package com.android.server.wifi;
3
4import android.app.AppGlobals;
5import android.app.PendingIntent;
6import android.content.Context;
7import android.content.Intent;
8import android.net.ConnectivityManager;
9import android.net.TrafficStats;
10import android.net.ip.IpManager;
11import android.os.Handler;
12import android.os.IBinder;
13import android.os.INetworkManagementService;
14import android.os.Looper;
15import android.os.RemoteException;
16import android.os.ServiceManager;
17import android.os.UserManager;
18import android.provider.Settings;
19
20import java.util.ArrayList;
21
22/**
23 * This class allows overriding objects with mocks to write unit tests
24 */
25public class FrameworkFacade {
26    public static final String TAG = "FrameworkFacade";
27
28    public BaseWifiLogger makeBaseLogger() {
29        return new BaseWifiLogger();
30    }
31
32    public BaseWifiLogger makeRealLogger(WifiStateMachine stateMachine, WifiNative wifiNative) {
33        return new WifiLogger(stateMachine, wifiNative);
34    }
35
36    public int getIntegerSetting(Context context, String name, int def) {
37        return Settings.Global.getInt(context.getContentResolver(), name, def);
38    }
39
40    public long getLongSetting(Context context, String name, long def) {
41        return Settings.Global.getLong(context.getContentResolver(), name, def);
42    }
43
44    public String getStringSetting(Context context, String name) {
45        return Settings.Global.getString(context.getContentResolver(), name);
46    }
47
48    public IBinder getService(String serviceName) {
49        return ServiceManager.getService(serviceName);
50    }
51
52    public PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags) {
53        return PendingIntent.getBroadcast(context, requestCode, intent, flags);
54    }
55
56    public SupplicantStateTracker makeSupplicantStateTracker(Context context,
57             WifiStateMachine wifiStateMachine, WifiConfigManager configManager, Handler handler) {
58        return new SupplicantStateTracker(context, wifiStateMachine, configManager, handler);
59    }
60
61    /**
62     * Create a new instance of WifiApConfigStore.
63     * @param context reference to a Context
64     * @param backupManagerProxy reference to a BackupManagerProxy
65     * @return an instance of WifiApConfigStore
66     */
67    public WifiApConfigStore makeApConfigStore(Context context,
68                                               BackupManagerProxy backupManagerProxy) {
69        return new WifiApConfigStore(context, backupManagerProxy);
70    }
71
72    public long getTxPackets(String iface) {
73        return TrafficStats.getTxPackets(iface);
74    }
75
76    public long getRxPackets(String iface) {
77        return TrafficStats.getRxPackets(iface);
78    }
79
80    public IpManager makeIpManager(
81            Context context, String iface, IpManager.Callback callback) {
82        return new IpManager(context, iface, callback);
83    }
84
85    /**
86     * Create a SoftApManager.
87     * @param context current context
88     * @param looper current thread looper
89     * @param wifiNative reference to WifiNative
90     * @param nmService reference to NetworkManagementService
91     * @param cm reference to ConnectivityManager
92     * @param countryCode Country code
93     * @param allowed2GChannels list of allowed 2G channels
94     * @param listener listener for SoftApManager
95     * @return an instance of SoftApManager
96     */
97    public SoftApManager makeSoftApManager(
98            Context context, Looper looper, WifiNative wifiNative,
99            INetworkManagementService nmService, ConnectivityManager cm,
100            String countryCode, ArrayList<Integer> allowed2GChannels,
101            SoftApManager.Listener listener) {
102        return new SoftApManager(
103                context, looper, wifiNative, nmService, cm, countryCode,
104                allowed2GChannels, listener);
105    }
106
107    /**
108     * Checks whether the given uid has been granted the given permission.
109     * @param permName the permission to check
110     * @param uid The uid to check
111     * @return {@link PackageManager.PERMISSION_GRANTED} if the permission has been granted and
112     *         {@link PackageManager.PERMISSION_DENIED} otherwise
113     */
114    public int checkUidPermission(String permName, int uid) throws RemoteException {
115        return AppGlobals.getPackageManager().checkUidPermission(permName, uid);
116    }
117
118    public WifiConfigManager makeWifiConfigManager(Context context,
119            WifiStateMachine wifiStateMachine, WifiNative wifiNative,
120            FrameworkFacade frameworkFacade, Clock clock, UserManager userManager){
121        return new WifiConfigManager(context, wifiStateMachine, wifiNative, frameworkFacade, clock,
122                userManager);
123    }
124}
125