diff options
author | Jeremy Joslin <jjoslin@google.com> | 2017-02-22 16:57:53 -0800 |
---|---|---|
committer | Jeremy Joslin <jjoslin@google.com> | 2017-02-24 12:32:46 -0800 |
commit | a6a5644da168f657ca56c5fd64f21bb2e738c21c (patch) | |
tree | a9f8a501215881fae3657c4d94963df923a34c82 | |
parent | 408ffe650e232c941168713e1203aafa4cdd06ed (diff) | |
download | NetworkRecommendation-a6a5644da168f657ca56c5fd64f21bb2e738c21c.tar.gz |
Updated DefaultNetworkRecommendationProvider to use the new ctor.
Also fixed the failing tests in WifiWakeupControllerTest.
Test: runtest --path packages/services/NetworkRecommendation/tests/src/com/android/networkrecommendation/
Bug: 35756438
Change-Id: Ia563d798778a0b4d7735876a070c62a8a0fea608
5 files changed, 53 insertions, 31 deletions
diff --git a/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java b/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java index bfa78c4..2f8afa8 100644 --- a/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java +++ b/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java @@ -16,6 +16,7 @@ package com.android.networkrecommendation; +import android.content.Context; import android.net.NetworkKey; import android.net.NetworkRecommendationProvider; import android.net.NetworkScoreManager; @@ -27,7 +28,6 @@ import android.net.WifiKey; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.os.Bundle; -import android.os.Handler; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.ArrayMap; @@ -39,6 +39,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import javax.annotation.concurrent.GuardedBy; @@ -132,9 +133,10 @@ public class DefaultNetworkRecommendationProvider @GuardedBy("mStatsLock") private int mScoreCounter = 0; - public DefaultNetworkRecommendationProvider(Handler handler, + + public DefaultNetworkRecommendationProvider(Context context, Executor executor, NetworkScoreManager scoreManager, ScoreStorage storage) { - super(handler); + super(context, executor); mScoreManager = scoreManager; mStorage = storage; } diff --git a/src/com/android/networkrecommendation/NetworkRecommendationService.java b/src/com/android/networkrecommendation/NetworkRecommendationService.java index 6583762..887741e 100644 --- a/src/com/android/networkrecommendation/NetworkRecommendationService.java +++ b/src/com/android/networkrecommendation/NetworkRecommendationService.java @@ -55,7 +55,7 @@ public class NetworkRecommendationService extends Service { Looper looper = mHandlerThread.getLooper(); mHandler = new Handler(looper); NetworkScoreManager networkScoreManager = getSystemService(NetworkScoreManager.class); - mProvider = new DefaultNetworkRecommendationProvider(mHandler, + mProvider = new DefaultNetworkRecommendationProvider(this, mHandler::post, networkScoreManager, new DefaultNetworkRecommendationProvider.ScoreStorage()); NotificationManager notificationManager = getSystemService(NotificationManager.class); WifiManager wifiManager = getSystemService(WifiManager.class); @@ -89,6 +89,12 @@ public class NetworkRecommendationService extends Service { } @Override + public void onDestroy() { + mHandlerThread.quit(); + super.onDestroy(); + } + + @Override protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) { mProvider.dump(fd, writer, args); mWifiNotificationController.dump(fd, writer, args); diff --git a/src/com/android/networkrecommendation/wakeup/WifiWakeupController.java b/src/com/android/networkrecommendation/wakeup/WifiWakeupController.java index f07f0b6..79d5475 100644 --- a/src/com/android/networkrecommendation/wakeup/WifiWakeupController.java +++ b/src/com/android/networkrecommendation/wakeup/WifiWakeupController.java @@ -66,6 +66,7 @@ public class WifiWakeupController { private final WifiWakeupNetworkSelector mWifiWakeupNetworkSelector; private final Handler mHandler; private final WifiWakeupNotificationHelper mWifiWakeupNotificationHelper; + private final SettingsFacade mSettingsFacade; private final AtomicBoolean mStarted; @VisibleForTesting final ContentObserver mContentObserver; @@ -81,19 +82,29 @@ public class WifiWakeupController { public WifiWakeupController(Context context, ContentResolver contentResolver, Looper looper, WifiManager wifiManager, WifiWakeupNetworkSelector wifiWakeupNetworkSelector, WifiWakeupNotificationHelper wifiWakeupNotificationHelper) { + this(context, contentResolver, looper, wifiManager, wifiWakeupNetworkSelector, + wifiWakeupNotificationHelper, new SettingsFacade()); + } + + @VisibleForTesting + WifiWakeupController(Context context, ContentResolver contentResolver, Looper looper, + WifiManager wifiManager, WifiWakeupNetworkSelector wifiWakeupNetworkSelector, + WifiWakeupNotificationHelper wifiWakeupNotificationHelper, + SettingsFacade settingsFacade) { mContext = context; mContentResolver = contentResolver; mHandler = new Handler(looper); mWifiWakeupNotificationHelper = wifiWakeupNotificationHelper; + mSettingsFacade = settingsFacade; mStarted = new AtomicBoolean(false); mWifiManager = wifiManager; mWifiWakeupNetworkSelector = wifiWakeupNetworkSelector; mContentObserver = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { - mWifiWakeupEnabled = Settings.Global.getInt(mContentResolver, + mWifiWakeupEnabled = mSettingsFacade.getInt(mContentResolver, Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1; - mAirplaneModeEnabled = Settings.Global.getInt(mContentResolver, + mAirplaneModeEnabled = mSettingsFacade.getInt(mContentResolver, Settings.Global.AIRPLANE_MODE_ON, 0) == 1; } }; @@ -261,4 +272,13 @@ public class WifiWakeupController { pw.println("mSavedSsidsInLastScan: " + mSavedSsidsInLastScan); pw.println("mSavedSsidsOnDisable: " + mSavedSsidsOnDisable); } + + /** + * Wrapper around Settings to make testing easier. + */ + public static class SettingsFacade { + public int getInt(ContentResolver resolver, String name, int def) { + return Settings.Global.getInt(resolver, name, def); + } + } } diff --git a/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java b/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java index 5b78310..dc6c673 100644 --- a/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java +++ b/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertNull; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import android.content.Context; import android.net.NetworkKey; import android.net.NetworkRecommendationProvider; import android.net.NetworkScoreManager; @@ -134,6 +135,9 @@ public class DefaultNetworkRecommendationProviderTest { @Mock private NetworkScoreManager mNetworkScoreManager; + @Mock + private Context mContext; + private DefaultNetworkRecommendationProvider.ScoreStorage mStorage; private DefaultNetworkRecommendationProvider mProvider; @@ -141,8 +145,9 @@ public class DefaultNetworkRecommendationProviderTest { public void setUp() { MockitoAnnotations.initMocks(this); mStorage = new DefaultNetworkRecommendationProvider.ScoreStorage(); - mProvider = new DefaultNetworkRecommendationProvider( - new Handler(Looper.getMainLooper()), mNetworkScoreManager, mStorage); + final Handler handler = new Handler(Looper.getMainLooper()); + mProvider = new DefaultNetworkRecommendationProvider(mContext, + handler::post, mNetworkScoreManager, mStorage); } @Test diff --git a/tests/src/com/android/networkrecommendation/wakeup/WifiWakeupControllerTest.java b/tests/src/com/android/networkrecommendation/wakeup/WifiWakeupControllerTest.java index 3f6d886..72a4571 100644 --- a/tests/src/com/android/networkrecommendation/wakeup/WifiWakeupControllerTest.java +++ b/tests/src/com/android/networkrecommendation/wakeup/WifiWakeupControllerTest.java @@ -17,15 +17,16 @@ package com.android.networkrecommendation.wakeup; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyList; import static org.mockito.Matchers.anyMap; import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; -import android.app.NotificationManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; @@ -43,7 +44,6 @@ import com.android.networkrecommendation.TestUtil; import com.google.android.collect.Lists; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -92,34 +92,29 @@ public class WifiWakeupControllerTest { } @Mock private Context mContext; - @Mock private NotificationManager mNotificationManager; @Mock private ContentResolver mContentResolver; @Mock private WifiWakeupNetworkSelector mWifiWakeupNetworkSelector; @Mock private WifiWakeupNotificationHelper mWifiWakeupNotificationHelper; @Mock private WifiManager mWifiManager; + @Mock private WifiWakeupController.SettingsFacade mSettingsFacade; @Captor private ArgumentCaptor<BroadcastReceiver> mBroadcastReceiverCaptor; private WifiWakeupController mWifiWakeupController; private BroadcastReceiver mBroadcastReceiver; - private int mWifiWakeupEnabledOriginalValue; - private int mAirplaneModeOriginalValue; - @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - mWifiWakeupEnabledOriginalValue = - Settings.Global.getInt(mContentResolver, Settings.Global.WIFI_WAKEUP_ENABLED, 0); - mAirplaneModeOriginalValue = - Settings.Global.getInt(mContentResolver, Settings.Global.AIRPLANE_MODE_ON, 0); - Settings.Global.putInt(mContentResolver, Settings.Global.WIFI_WAKEUP_ENABLED, 1); - Settings.Global.putInt(mContentResolver, Settings.Global.AIRPLANE_MODE_ON, 0); when(mWifiManager.getWifiApState()).thenReturn(WifiManager.WIFI_AP_STATE_DISABLED); + when(mSettingsFacade.getInt(eq(mContentResolver), + eq(Settings.Global.WIFI_WAKEUP_ENABLED), anyInt())).thenReturn(1); + when(mSettingsFacade.getInt(eq(mContentResolver), + eq(Settings.Global.AIRPLANE_MODE_ON), anyInt())).thenReturn(0); mWifiWakeupController = new WifiWakeupController(mContext, mContentResolver, Looper.getMainLooper(), mWifiManager, mWifiWakeupNetworkSelector, - mWifiWakeupNotificationHelper); + mWifiWakeupNotificationHelper, mSettingsFacade); mWifiWakeupController.start(); verify(mContext).registerReceiver(mBroadcastReceiverCaptor.capture(), @@ -127,14 +122,6 @@ public class WifiWakeupControllerTest { mBroadcastReceiver = mBroadcastReceiverCaptor.getValue(); } - @After - public void tearDown() { - Settings.Global.putInt(mContentResolver, Settings.Global.WIFI_WAKEUP_ENABLED, - mWifiWakeupEnabledOriginalValue); - Settings.Global.putInt(mContentResolver, Settings.Global.AIRPLANE_MODE_ON, - mAirplaneModeOriginalValue); - } - /** * When the NetworkRecommendationService associated with this WifiWakeupController is unbound, * this WifiWakeupController should no longer function. @@ -291,7 +278,8 @@ public class WifiWakeupControllerTest { */ @Test public void wifiNotEnabled_userDisablesWifiWakeupFeature() { - Settings.Global.putInt(mContentResolver, Settings.Global.WIFI_WAKEUP_ENABLED, 0); + when(mSettingsFacade.getInt(eq(mContentResolver), + eq(Settings.Global.WIFI_WAKEUP_ENABLED), anyInt())).thenReturn(0); when(mWifiManager.getConfiguredNetworks()).thenReturn( Lists.newArrayList(SAVED_WIFI_CONFIGURATION, SAVED_WIFI_CONFIGURATION_EXTERNAL)); when(mWifiManager.getScanResults()) @@ -313,7 +301,8 @@ public class WifiWakeupControllerTest { */ @Test public void wifiNotEnabled_userIsInAirplaneMode() { - Settings.Global.putInt(mContentResolver, Settings.Global.AIRPLANE_MODE_ON, 1); + when(mSettingsFacade.getInt(eq(mContentResolver), + eq(Settings.Global.AIRPLANE_MODE_ON), anyInt())).thenReturn(1); when(mWifiManager.getConfiguredNetworks()).thenReturn( Lists.newArrayList(SAVED_WIFI_CONFIGURATION, SAVED_WIFI_CONFIGURATION_EXTERNAL)); when(mWifiManager.getScanResults()) |