17581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarsepackage com.xtremelabs.robolectric.shadows;
27581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
37581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.ConnectivityManager;
47581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.NetworkInfo;
522c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation;
622c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements;
77581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
81c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultzimport java.util.HashMap;
91c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultzimport java.util.Map;
101c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz
117581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse/**
127581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse * Shadow of {@code ConnectivityManager} that provides for the simulation of
137581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse * the active connection status.
147581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse */
157581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
167581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse@Implements(ConnectivityManager.class)
177581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarsepublic class ShadowConnectivityManager {
187581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
198883f75608a3e5d07cebf8a2f929d8912315ccd9Rob Dickerson    private NetworkInfo activeNetwork;
203bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel    private boolean backgroundDataSetting;
217581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
221c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz    private Map<Integer, NetworkInfo> networkTypeToNetworkInfo = new HashMap<Integer, NetworkInfo>();
231c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz
2496fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel    public void __constructor__() {
2596fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        setActiveNetworkInfo(ShadowNetworkInfo.newInstance());
2696fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel    }
2796fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel
2840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    @Implementation
297581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    public NetworkInfo getActiveNetworkInfo() {
3096fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        return activeNetwork;
318883f75608a3e5d07cebf8a2f929d8912315ccd9Rob Dickerson    }
328883f75608a3e5d07cebf8a2f929d8912315ccd9Rob Dickerson
338883f75608a3e5d07cebf8a2f929d8912315ccd9Rob Dickerson    @Implementation
348883f75608a3e5d07cebf8a2f929d8912315ccd9Rob Dickerson    public NetworkInfo[] getAllNetworkInfo() {
3596fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        return networkTypeToNetworkInfo.values().toArray(new NetworkInfo[networkTypeToNetworkInfo.size()]);
367581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    }
371c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz
381c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz    @Implementation
391c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz    public NetworkInfo getNetworkInfo(int networkType) {
401c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz        return networkTypeToNetworkInfo.get(networkType);
411c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz    }
421c5a1843c60477a9a49148c46cb1b98d5ee5b26bTim Labeeuw & Tyler Schultz
433bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel    @Implementation
443bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel    public boolean getBackgroundDataSetting() {
453bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel        return backgroundDataSetting;
463bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel    }
473bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel
4896fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel    public void setNetworkInfo(int networkType, NetworkInfo networkInfo) {
4996fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        networkTypeToNetworkInfo.put(networkType, networkInfo);
5096fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel    }
5196fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel
523bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel    public void setBackgroundDataSetting(boolean b) {
533bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel        backgroundDataSetting = b;
543bd1e0c169b3376cc7ab54bfe01285a3e321d167Jan Berkel    }
5596fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel
5696fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel    public void setActiveNetworkInfo(NetworkInfo info) {
5796fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        activeNetwork = info;
5896fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        if (info != null) {
5996fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel            networkTypeToNetworkInfo.put(info.getType(), info);
6096fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        }  else {
6196fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel            networkTypeToNetworkInfo.clear();
6296fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel        }
6396fdd17081c3b220bd0ab5f8e1950aecee074f36Jan Berkel    }
647581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse}
65