WifiTracker: Check demo mode for device instead of user
Instead of checking whether or not the current user is a demo mode,
check if the device is in demo mode when gating wifi sharing options.
Bug: 198625685
Test: atest WifiTrackerLibTests SdkWifiTrackerLibTests
Change-Id: I879f239e6aa9ee8390d8613c29dff8b85593f02e
Merged-In: I879f239e6aa9ee8390d8613c29dff8b85593f02e
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
index 536be20..895687e 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
@@ -276,6 +276,7 @@
/**
* Constructor for BaseWifiTracker.
*
+ * @param wifiTrackerInjector injector for commonly referenced objects.
* @param lifecycle Lifecycle this is tied to for lifecycle callbacks.
* @param context Context for registering broadcast receiver and for resource strings.
* @param wifiManager Provides all Wi-Fi info.
@@ -287,7 +288,9 @@
* @param maxScanAgeMillis Max age for tracked WifiEntries.
* @param scanIntervalMillis Interval between initiating scans.
*/
- BaseWifiTracker(@NonNull Lifecycle lifecycle, @NonNull Context context,
+ BaseWifiTracker(
+ @NonNull WifiTrackerInjector injector,
+ @NonNull Lifecycle lifecycle, @NonNull Context context,
@NonNull WifiManager wifiManager,
@NonNull ConnectivityManager connectivityManager,
@NonNull NetworkScoreManager networkScoreManager,
@@ -298,9 +301,9 @@
long scanIntervalMillis,
BaseWifiTrackerCallback listener,
String tag) {
+ mInjector = injector;
lifecycle.addObserver(this);
mContext = context;
- mInjector = new WifiTrackerInjector(context);
mWifiManager = wifiManager;
mConnectivityManager = connectivityManager;
mNetworkScoreManager = networkScoreManager;
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java
index dd3819d..5ef624a 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NetworkDetailsTracker.java
@@ -33,6 +33,7 @@
import androidx.annotation.AnyThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.lifecycle.Lifecycle;
@@ -71,12 +72,41 @@
long maxScanAgeMillis,
long scanIntervalMillis,
String key) {
+ return createNetworkDetailsTracker(
+ new WifiTrackerInjector(context),
+ lifecycle,
+ context,
+ wifiManager,
+ connectivityManager,
+ networkScoreManager,
+ mainHandler,
+ workerHandler,
+ clock,
+ maxScanAgeMillis,
+ scanIntervalMillis,
+ key);
+ }
+
+ @VisibleForTesting
+ static NetworkDetailsTracker createNetworkDetailsTracker(
+ @NonNull WifiTrackerInjector injector,
+ @NonNull Lifecycle lifecycle,
+ @NonNull Context context,
+ @NonNull WifiManager wifiManager,
+ @NonNull ConnectivityManager connectivityManager,
+ @NonNull NetworkScoreManager networkScoreManager,
+ @NonNull Handler mainHandler,
+ @NonNull Handler workerHandler,
+ @NonNull Clock clock,
+ long maxScanAgeMillis,
+ long scanIntervalMillis,
+ String key) {
if (key.startsWith(StandardWifiEntry.KEY_PREFIX)) {
- return new StandardNetworkDetailsTracker(lifecycle, context, wifiManager,
+ return new StandardNetworkDetailsTracker(injector, lifecycle, context, wifiManager,
connectivityManager, networkScoreManager, mainHandler, workerHandler, clock,
maxScanAgeMillis, scanIntervalMillis, key);
} else if (key.startsWith(PasspointWifiEntry.KEY_PREFIX)) {
- return new PasspointNetworkDetailsTracker(lifecycle, context, wifiManager,
+ return new PasspointNetworkDetailsTracker(injector, lifecycle, context, wifiManager,
connectivityManager, networkScoreManager, mainHandler, workerHandler, clock,
maxScanAgeMillis, scanIntervalMillis, key);
} else {
@@ -91,7 +121,10 @@
* Clients must use {@link NetworkDetailsTracker#createNetworkDetailsTracker} for creating
* an appropriate concrete instance of this class.
*/
- NetworkDetailsTracker(@NonNull Lifecycle lifecycle, @NonNull Context context,
+ NetworkDetailsTracker(
+ @NonNull WifiTrackerInjector injector,
+ @NonNull Lifecycle lifecycle,
+ @NonNull Context context,
@NonNull WifiManager wifiManager,
@NonNull ConnectivityManager connectivityManager,
@NonNull NetworkScoreManager networkScoreManager,
@@ -101,7 +134,7 @@
long maxScanAgeMillis,
long scanIntervalMillis,
String tag) {
- super(lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
+ super(injector, lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
mainHandler, workerHandler, clock, maxScanAgeMillis, scanIntervalMillis,
null /* listener */, tag);
}
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java
index 42f816f..82b8d7b 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointNetworkDetailsTracker.java
@@ -39,6 +39,7 @@
import androidx.annotation.AnyThread;
import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.lifecycle.Lifecycle;
@@ -69,7 +70,26 @@
long maxScanAgeMillis,
long scanIntervalMillis,
String key) {
- super(lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
+ this(new WifiTrackerInjector(context), lifecycle, context, wifiManager, connectivityManager,
+ networkScoreManager, mainHandler, workerHandler, clock, maxScanAgeMillis,
+ scanIntervalMillis, key);
+ }
+
+ @VisibleForTesting
+ PasspointNetworkDetailsTracker(
+ @NonNull WifiTrackerInjector injector,
+ @NonNull Lifecycle lifecycle,
+ @NonNull Context context,
+ @NonNull WifiManager wifiManager,
+ @NonNull ConnectivityManager connectivityManager,
+ @NonNull NetworkScoreManager networkScoreManager,
+ @NonNull Handler mainHandler,
+ @NonNull Handler workerHandler,
+ @NonNull Clock clock,
+ long maxScanAgeMillis,
+ long scanIntervalMillis,
+ String key) {
+ super(injector, lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
mainHandler, workerHandler, clock, maxScanAgeMillis, scanIntervalMillis, TAG);
Optional<PasspointConfiguration> optionalPasspointConfig =
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java
index 1cdc47c..324c340 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/SavedNetworkTracker.java
@@ -41,6 +41,7 @@
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.lifecycle.Lifecycle;
@@ -89,8 +90,27 @@
@NonNull Clock clock,
long maxScanAgeMillis,
long scanIntervalMillis,
- @Nullable SavedNetworkTracker.SavedNetworkTrackerCallback listener) {
- super(lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
+ @Nullable SavedNetworkTrackerCallback listener) {
+ this(new WifiTrackerInjector(context), lifecycle, context, wifiManager, connectivityManager,
+ networkScoreManager, mainHandler, workerHandler, clock, maxScanAgeMillis,
+ scanIntervalMillis, listener);
+ }
+
+ @VisibleForTesting
+ SavedNetworkTracker(
+ @NonNull WifiTrackerInjector injector,
+ @NonNull Lifecycle lifecycle,
+ @NonNull Context context,
+ @NonNull WifiManager wifiManager,
+ @NonNull ConnectivityManager connectivityManager,
+ @NonNull NetworkScoreManager networkScoreManager,
+ @NonNull Handler mainHandler,
+ @NonNull Handler workerHandler,
+ @NonNull Clock clock,
+ long maxScanAgeMillis,
+ long scanIntervalMillis,
+ @Nullable SavedNetworkTrackerCallback listener) {
+ super(injector, lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
mainHandler, workerHandler, clock, maxScanAgeMillis, scanIntervalMillis, listener,
TAG);
mListener = listener;
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java
index a6299cc..e8010fc 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardNetworkDetailsTracker.java
@@ -36,6 +36,7 @@
import androidx.annotation.AnyThread;
import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.lifecycle.Lifecycle;
@@ -64,7 +65,26 @@
long maxScanAgeMillis,
long scanIntervalMillis,
String key) {
- super(lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
+ this(new WifiTrackerInjector(context), lifecycle, context, wifiManager, connectivityManager,
+ networkScoreManager, mainHandler, workerHandler, clock, maxScanAgeMillis,
+ scanIntervalMillis, key);
+ }
+
+ @VisibleForTesting
+ StandardNetworkDetailsTracker(
+ @NonNull WifiTrackerInjector injector,
+ @NonNull Lifecycle lifecycle,
+ @NonNull Context context,
+ @NonNull WifiManager wifiManager,
+ @NonNull ConnectivityManager connectivityManager,
+ @NonNull NetworkScoreManager networkScoreManager,
+ @NonNull Handler mainHandler,
+ @NonNull Handler workerHandler,
+ @NonNull Clock clock,
+ long maxScanAgeMillis,
+ long scanIntervalMillis,
+ String key) {
+ super(injector, lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
mainHandler, workerHandler, clock, maxScanAgeMillis, scanIntervalMillis, TAG);
mKey = new StandardWifiEntryKey(key);
if (mKey.isNetworkRequest()) {
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
index c6c097e..e19c5b4 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
@@ -58,6 +58,7 @@
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.lifecycle.Lifecycle;
@@ -149,7 +150,26 @@
long maxScanAgeMillis,
long scanIntervalMillis,
@Nullable WifiPickerTrackerCallback listener) {
- super(lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
+ this(new WifiTrackerInjector(context), lifecycle, context, wifiManager, connectivityManager,
+ networkScoreManager, mainHandler, workerHandler, clock, maxScanAgeMillis,
+ scanIntervalMillis, listener);
+ }
+
+ @VisibleForTesting
+ WifiPickerTracker(
+ @NonNull WifiTrackerInjector injector,
+ @NonNull Lifecycle lifecycle,
+ @NonNull Context context,
+ @NonNull WifiManager wifiManager,
+ @NonNull ConnectivityManager connectivityManager,
+ @NonNull NetworkScoreManager networkScoreManager,
+ @NonNull Handler mainHandler,
+ @NonNull Handler workerHandler,
+ @NonNull Clock clock,
+ long maxScanAgeMillis,
+ long scanIntervalMillis,
+ @Nullable WifiPickerTrackerCallback listener) {
+ super(injector, lifecycle, context, wifiManager, connectivityManager, networkScoreManager,
mainHandler, workerHandler, clock, maxScanAgeMillis, scanIntervalMillis, listener,
TAG);
mListener = listener;
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiTrackerInjector.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiTrackerInjector.java
index bb2cc17..49a8fb5 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiTrackerInjector.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiTrackerInjector.java
@@ -29,7 +29,7 @@
// TODO(b/201571677): Migrate the rest of the common objects to WifiTrackerInjector.
public WifiTrackerInjector(@NonNull Context context) {
- mIsDemoMode = ((UserManager) context.getSystemService(Context.USER_SERVICE)).isDemoUser();
+ mIsDemoMode = UserManager.isDeviceInDemoMode(context);
}
public boolean isDemoMode() {
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java
index 33abe38..9a31808 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/NetworkDetailsTrackerTest.java
@@ -30,7 +30,6 @@
import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager;
import android.os.Handler;
-import android.os.UserManager;
import android.os.test.TestLooper;
import androidx.lifecycle.Lifecycle;
@@ -51,12 +50,12 @@
private static final long MAX_SCAN_AGE_MILLIS = 15_000;
private static final long SCAN_INTERVAL_MILLIS = 10_000;
+ @Mock private WifiTrackerInjector mInjector;
@Mock private Lifecycle mMockLifecycle;
@Mock private Context mMockContext;
@Mock private WifiManager mMockWifiManager;
@Mock private ConnectivityManager mMockConnectivityManager;
@Mock private NetworkScoreManager mMockNetworkScoreManager;
- @Mock private UserManager mMockUserManager;
@Mock private Clock mMockClock;
private TestLooper mTestLooper;
@@ -64,7 +63,10 @@
private NetworkDetailsTracker createTestNetworkDetailsTracker(String key) {
final Handler testHandler = new Handler(mTestLooper.getLooper());
- return createNetworkDetailsTracker(mMockLifecycle, mMockContext,
+ return createNetworkDetailsTracker(
+ mInjector,
+ mMockLifecycle,
+ mMockContext,
mMockWifiManager,
mMockConnectivityManager,
mMockNetworkScoreManager,
@@ -82,7 +84,6 @@
mTestLooper = new TestLooper();
- when(mMockContext.getSystemService(Context.USER_SERVICE)).thenReturn(mMockUserManager);
when(mMockWifiManager.getScanResults()).thenReturn(new ArrayList<>());
when(mMockWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
when(mMockClock.millis()).thenReturn(START_MILLIS);
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java
index a2317d6..2f94587 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/SavedNetworkTrackerTest.java
@@ -39,7 +39,6 @@
import android.net.wifi.hotspot2.pps.Credential;
import android.net.wifi.hotspot2.pps.HomeSp;
import android.os.Handler;
-import android.os.UserManager;
import android.os.test.TestLooper;
import androidx.lifecycle.Lifecycle;
@@ -64,12 +63,12 @@
private static final long MAX_SCAN_AGE_MILLIS = 15_000;
private static final long SCAN_INTERVAL_MILLIS = 10_000;
+ @Mock private WifiTrackerInjector mInjector;
@Mock private Lifecycle mMockLifecycle;
@Mock private Context mMockContext;
@Mock private WifiManager mMockWifiManager;
@Mock private ConnectivityManager mMockConnectivityManager;
@Mock private NetworkScoreManager mMockNetworkScoreManager;
- @Mock private UserManager mMockUserManager;
@Mock private Clock mMockClock;
@Mock private SavedNetworkTracker.SavedNetworkTrackerCallback mMockCallback;
@@ -81,7 +80,10 @@
private SavedNetworkTracker createTestSavedNetworkTracker() {
final Handler testHandler = new Handler(mTestLooper.getLooper());
- return new SavedNetworkTracker(mMockLifecycle, mMockContext,
+ return new SavedNetworkTracker(
+ mInjector,
+ mMockLifecycle,
+ mMockContext,
mMockWifiManager,
mMockConnectivityManager,
mMockNetworkScoreManager,
@@ -99,7 +101,6 @@
mTestLooper = new TestLooper();
- when(mMockContext.getSystemService(Context.USER_SERVICE)).thenReturn(mMockUserManager);
when(mMockWifiManager.getScanResults()).thenReturn(new ArrayList<>());
when(mMockWifiManager.isWpa3SaeSupported()).thenReturn(true);
when(mMockWifiManager.isWpa3SuiteBSupported()).thenReturn(true);
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java
index fb21f20..427670f 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardNetworkDetailsTrackerTest.java
@@ -41,7 +41,6 @@
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Handler;
-import android.os.UserManager;
import android.os.test.TestLooper;
import androidx.lifecycle.Lifecycle;
@@ -63,12 +62,12 @@
private static final long MAX_SCAN_AGE_MILLIS = 15_000;
private static final long SCAN_INTERVAL_MILLIS = 10_000;
+ @Mock private WifiTrackerInjector mInjector;
@Mock private Lifecycle mMockLifecycle;
@Mock private Context mMockContext;
@Mock private WifiManager mMockWifiManager;
@Mock private ConnectivityManager mMockConnectivityManager;
@Mock private NetworkScoreManager mMockNetworkScoreManager;
- @Mock private UserManager mMockUserManager;
@Mock private Clock mMockClock;
private TestLooper mTestLooper;
@@ -80,7 +79,10 @@
String key) {
final Handler testHandler = new Handler(mTestLooper.getLooper());
- return new StandardNetworkDetailsTracker(mMockLifecycle, mMockContext,
+ return new StandardNetworkDetailsTracker(
+ mInjector,
+ mMockLifecycle,
+ mMockContext,
mMockWifiManager,
mMockConnectivityManager,
mMockNetworkScoreManager,
@@ -98,7 +100,6 @@
mTestLooper = new TestLooper();
- when(mMockContext.getSystemService(Context.USER_SERVICE)).thenReturn(mMockUserManager);
when(mMockWifiManager.isWpa3SaeSupported()).thenReturn(true);
when(mMockWifiManager.isWpa3SuiteBSupported()).thenReturn(true);
when(mMockWifiManager.isEnhancedOpenSupported()).thenReturn(true);
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
index f5b319b..8641901 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
@@ -47,7 +47,6 @@
import android.net.wifi.hotspot2.pps.Credential;
import android.net.wifi.hotspot2.pps.HomeSp;
import android.os.Handler;
-import android.os.UserManager;
import android.os.test.TestLooper;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -79,6 +78,7 @@
private static final long MAX_SCAN_AGE_MILLIS = 15_000;
private static final long SCAN_INTERVAL_MILLIS = 10_000;
+ @Mock private WifiTrackerInjector mInjector;
@Mock private Lifecycle mMockLifecycle;
@Mock private Context mMockContext;
@Mock private Resources mMockResources;
@@ -86,7 +86,6 @@
@Mock private ConnectivityManager mMockConnectivityManager;
@Mock private NetworkScoreManager mMockNetworkScoreManager;
@Mock private TelephonyManager mMockTelephonyManager;
- @Mock private UserManager mMockUserManager;
@Mock private Clock mMockClock;
@Mock private WifiPickerTracker.WifiPickerTrackerCallback mMockCallback;
@Mock private WifiInfo mMockWifiInfo;
@@ -107,7 +106,10 @@
private WifiPickerTracker createTestWifiPickerTracker() {
final Handler testHandler = new Handler(mTestLooper.getLooper());
- return new WifiPickerTracker(mMockLifecycle, mMockContext,
+ return new WifiPickerTracker(
+ mInjector,
+ mMockLifecycle,
+ mMockContext,
mMockWifiManager,
mMockConnectivityManager,
mMockNetworkScoreManager,
@@ -132,7 +134,6 @@
mTestLooper = new TestLooper();
- when(mMockContext.getSystemService(Context.USER_SERVICE)).thenReturn(mMockUserManager);
when(mMockWifiManager.getScanResults()).thenReturn(new ArrayList<>());
when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo);
when(mMockWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);