summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Caitlin Shkuratov <caitlinshk@google.com> 2023-07-25 15:34:41 +0000
committer Caitlin Shkuratov <caitlinshk@google.com> 2023-07-25 16:18:20 +0000
commite50d7b5dcbcf990088aa0956c89c7958bc5b4793 (patch)
tree6077748d9f26b88016067e58f2948335d92ae2e6
parent1cf4791b0fe12f9e15d054af910d22c29510f47e (diff)
[Status Bar] Move WifiPickerTrackerFactory to top-level class.
It will be used by the status bar wifi icon pipeline in a future CL, so it should no longer be part of AccessPointControllerImpl. Bug: 292534484 Test: atest AccessPointControllerImplTest Change-Id: Ic077c0b03cd9c4f19b8c4e8de03db765b31c0c83
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java86
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiPickerTrackerFactory.kt92
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/dagger/StatusBarPolicyModule.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt4
4 files changed, 96 insertions, 89 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java
index c9ce12a6859e..ff40f70a84fb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java
@@ -16,13 +16,7 @@
package com.android.systemui.statusbar.connectivity;
-import android.content.Context;
import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.wifi.WifiManager;
-import android.os.Handler;
-import android.os.SimpleClock;
-import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
@@ -35,25 +29,18 @@ import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
-import com.android.systemui.dagger.SysUISingleton;
-import com.android.systemui.dagger.qualifiers.Background;
-import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.settings.UserTracker;
import com.android.wifitrackerlib.MergedCarrierEntry;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker;
import java.io.PrintWriter;
-import java.time.Clock;
-import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executor;
-import javax.inject.Inject;
-
/** */
public class AccessPointControllerImpl implements AccessPointController,
WifiPickerTracker.WifiPickerTrackerCallback,
@@ -272,77 +259,4 @@ public class AccessPointControllerImpl implements AccessPointController,
}
}
};
-
- /**
- * Factory for creating {@link WifiPickerTracker}.
- *
- * Uses the same time intervals as the Settings page for Wifi.
- */
- @SysUISingleton
- public static class WifiPickerTrackerFactory {
-
- // Max age of tracked WifiEntries
- private static final long MAX_SCAN_AGE_MILLIS = 15_000;
- // Interval between initiating WifiPickerTracker scans
- private static final long SCAN_INTERVAL_MILLIS = 10_000;
-
- private final Context mContext;
- private final @Nullable WifiManager mWifiManager;
- private final ConnectivityManager mConnectivityManager;
- private final Handler mMainHandler;
- private final Handler mWorkerHandler;
- private final Clock mClock = new SimpleClock(ZoneOffset.UTC) {
- @Override
- public long millis() {
- return SystemClock.elapsedRealtime();
- }
- };
-
- @Inject
- public WifiPickerTrackerFactory(
- Context context,
- @Nullable WifiManager wifiManager,
- ConnectivityManager connectivityManager,
- @Main Handler mainHandler,
- @Background Handler workerHandler
- ) {
- mContext = context;
- mWifiManager = wifiManager;
- mConnectivityManager = connectivityManager;
- mMainHandler = mainHandler;
- mWorkerHandler = workerHandler;
- }
-
- private boolean isSupported() {
- return mWifiManager != null;
- }
-
- /**
- * Create a {@link WifiPickerTracker}
- *
- * @param lifecycle
- * @param listener
- * @return a new {@link WifiPickerTracker} or {@code null} if {@link WifiManager} is null.
- */
- public @Nullable WifiPickerTracker create(
- Lifecycle lifecycle,
- WifiPickerTracker.WifiPickerTrackerCallback listener
- ) {
- if (mWifiManager == null) {
- return null;
- }
- return new WifiPickerTracker(
- lifecycle,
- mContext,
- mWifiManager,
- mConnectivityManager,
- mMainHandler,
- mWorkerHandler,
- mClock,
- MAX_SCAN_AGE_MILLIS,
- SCAN_INTERVAL_MILLIS,
- listener
- );
- }
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiPickerTrackerFactory.kt b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiPickerTrackerFactory.kt
new file mode 100644
index 000000000000..ddbfcef513c3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiPickerTrackerFactory.kt
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.connectivity
+
+import android.content.Context
+import android.net.ConnectivityManager
+import android.net.wifi.WifiManager
+import android.os.Handler
+import android.os.SimpleClock
+import androidx.lifecycle.Lifecycle
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.util.time.SystemClock
+import com.android.wifitrackerlib.WifiPickerTracker
+import com.android.wifitrackerlib.WifiPickerTracker.WifiPickerTrackerCallback
+import java.time.Clock
+import java.time.ZoneOffset
+import javax.inject.Inject
+
+/**
+ * Factory for creating [WifiPickerTracker] for SysUI.
+ *
+ * Uses the same time intervals as the Settings page for Wifi.
+ */
+@SysUISingleton
+class WifiPickerTrackerFactory
+@Inject
+constructor(
+ private val context: Context,
+ private val wifiManager: WifiManager?,
+ private val connectivityManager: ConnectivityManager,
+ private val systemClock: SystemClock,
+ @Main private val mainHandler: Handler,
+ @Background private val workerHandler: Handler,
+) {
+ private val clock: Clock =
+ object : SimpleClock(ZoneOffset.UTC) {
+ override fun millis(): Long {
+ return systemClock.elapsedRealtime()
+ }
+ }
+ val isSupported: Boolean
+ get() = wifiManager != null
+
+ /**
+ * Creates a [WifiPickerTracker] instance.
+ *
+ * @return a new [WifiPickerTracker] or null if [WifiManager] is null.
+ */
+ fun create(
+ lifecycle: Lifecycle,
+ listener: WifiPickerTrackerCallback,
+ ): WifiPickerTracker? {
+ return if (wifiManager == null) {
+ null
+ } else
+ WifiPickerTracker(
+ lifecycle,
+ context,
+ wifiManager,
+ connectivityManager,
+ mainHandler,
+ workerHandler,
+ clock,
+ MAX_SCAN_AGE_MILLIS,
+ SCAN_INTERVAL_MILLIS,
+ listener,
+ )
+ }
+
+ companion object {
+ /** Max age of tracked WifiEntries. */
+ private const val MAX_SCAN_AGE_MILLIS: Long = 15000
+ /** Interval between initiating WifiPickerTracker scans. */
+ private const val SCAN_INTERVAL_MILLIS: Long = 10000
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/dagger/StatusBarPolicyModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/dagger/StatusBarPolicyModule.java
index e1a7b6d59f41..c2a8e701653a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/dagger/StatusBarPolicyModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/dagger/StatusBarPolicyModule.java
@@ -29,6 +29,7 @@ import com.android.systemui.statusbar.connectivity.AccessPointController;
import com.android.systemui.statusbar.connectivity.AccessPointControllerImpl;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.NetworkControllerImpl;
+import com.android.systemui.statusbar.connectivity.WifiPickerTrackerFactory;
import com.android.systemui.statusbar.phone.ConfigurationControllerImpl;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.BluetoothControllerImpl;
@@ -165,7 +166,7 @@ public interface StatusBarPolicyModule {
UserManager userManager,
UserTracker userTracker,
@Main Executor mainExecutor,
- AccessPointControllerImpl.WifiPickerTrackerFactory wifiPickerTrackerFactory
+ WifiPickerTrackerFactory wifiPickerTrackerFactory
) {
AccessPointControllerImpl controller = new AccessPointControllerImpl(
userManager,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt
index c57b64db2c5c..5b919d9a6a82 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt
@@ -23,6 +23,7 @@ import android.testing.TestableLooper.RunWithLooper
import androidx.lifecycle.Lifecycle
import com.android.systemui.SysuiTestCase
import com.android.systemui.settings.UserTracker
+import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.capture
import com.android.wifitrackerlib.WifiEntry
import com.android.wifitrackerlib.WifiPickerTracker
@@ -31,7 +32,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
-import org.mockito.ArgumentMatchers.any
import org.mockito.ArgumentMatchers.anyList
import org.mockito.Captor
import org.mockito.Mock
@@ -52,7 +52,7 @@ class AccessPointControllerImplTest : SysuiTestCase() {
private lateinit var userTracker: UserTracker
@Mock
private lateinit var wifiPickerTrackerFactory:
- AccessPointControllerImpl.WifiPickerTrackerFactory
+ WifiPickerTrackerFactory
@Mock
private lateinit var wifiPickerTracker: WifiPickerTracker
@Mock