From c1477650c905541c63861dc768196dc665ae11d6 Mon Sep 17 00:00:00 2001 From: Steven Liu Date: Wed, 16 Dec 2020 15:08:51 -0800 Subject: [PATCH] Introduce a WifiTrackerLibProvider. This make the WifiTrackerLib can be customized. Bug: 149540986 Test: manual test wifi picker, and atest com.android.settings Change-Id: I1418ae39c895ce2ff87f18005a226a4835f9e083 --- .../settings/overlay/FeatureFactory.java | 6 ++ .../settings/overlay/FeatureFactoryImpl.java | 11 +++ .../wifi/ConfigureWifiEntryFragment.java | 28 ++++--- .../wifi/NetworkRequestDialogFragment.java | 23 +++--- .../WifiConnectionPreferenceController.java | 23 +++--- .../settings/wifi/WifiDialogActivity.java | 26 +++---- .../wifi/WifiPickerTrackerHelper.java | 12 ++- .../android/settings/wifi/WifiSettings.java | 22 +++--- .../settings/wifi/WifiTrackerLibProvider.java | 48 ++++++++++++ .../wifi/WifiTrackerLibProviderImpl.java | 74 +++++++++++++++++++ .../AddAppNetworksFragment.java | 22 +++--- .../details2/WifiNetworkDetailsFragment2.java | 25 +++---- .../dpp/WifiDppQrCodeScannerFragment.java | 22 +++--- .../settings/wifi/slice/WifiScanWorker.java | 22 +++--- .../testutils/FakeFeatureFactory.java | 9 +++ .../AddAppNetworksFragmentTest.java | 9 +++ .../testutils/FakeFeatureFactory.java | 9 +++ 17 files changed, 268 insertions(+), 123 deletions(-) create mode 100644 src/com/android/settings/wifi/WifiTrackerLibProvider.java create mode 100644 src/com/android/settings/wifi/WifiTrackerLibProviderImpl.java diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java index b9aa68a55d7..a15075e3c7d 100644 --- a/src/com/android/settings/overlay/FeatureFactory.java +++ b/src/com/android/settings/overlay/FeatureFactory.java @@ -41,6 +41,7 @@ import com.android.settings.search.SearchFeatureProvider; import com.android.settings.security.SecurityFeatureProvider; import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.users.UserFeatureProvider; +import com.android.settings.wifi.WifiTrackerLibProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** @@ -143,6 +144,11 @@ public abstract class FeatureFactory { public abstract FaceFeatureProvider getFaceFeatureProvider(); + /** + * Gets implementation for the WifiTrackerLib. + */ + public abstract WifiTrackerLibProvider getWifiTrackerLibProvider(); + public static final class FactoryNotFoundException extends RuntimeException { public FactoryNotFoundException(Throwable throwable) { super("Unable to create factory. Did you misconfigure Proguard?", throwable); diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java index d4d396f80b9..ebbe87cfdac 100644 --- a/src/com/android/settings/overlay/FeatureFactoryImpl.java +++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java @@ -62,6 +62,8 @@ import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.slices.SlicesFeatureProviderImpl; import com.android.settings.users.UserFeatureProvider; import com.android.settings.users.UserFeatureProviderImpl; +import com.android.settings.wifi.WifiTrackerLibProvider; +import com.android.settings.wifi.WifiTrackerLibProviderImpl; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** @@ -90,6 +92,7 @@ public class FeatureFactoryImpl extends FeatureFactory { private BluetoothFeatureProvider mBluetoothFeatureProvider; private AwareFeatureProvider mAwareFeatureProvider; private FaceFeatureProvider mFaceFeatureProvider; + private WifiTrackerLibProvider mWifiTrackerLibProvider; @Override public SupportFeatureProvider getSupportFeatureProvider(Context context) { @@ -278,4 +281,12 @@ public class FeatureFactoryImpl extends FeatureFactory { } return mFaceFeatureProvider; } + + @Override + public WifiTrackerLibProvider getWifiTrackerLibProvider() { + if (mWifiTrackerLibProvider == null) { + mWifiTrackerLibProvider = new WifiTrackerLibProviderImpl(); + } + return mWifiTrackerLibProvider; + } } diff --git a/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java b/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java index 881aaeac8c3..c36a2986168 100644 --- a/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java +++ b/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java @@ -21,9 +21,6 @@ import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; -import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; @@ -40,6 +37,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; import com.android.wifitrackerlib.NetworkDetailsTracker; import com.android.wifitrackerlib.WifiEntry; @@ -222,17 +220,17 @@ public class ConfigureWifiEntryFragment extends InstrumentedFragment implements } }; - mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker( - getSettingsLifecycle(), - context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - getArguments().getString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY)); + mNetworkDetailsTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createNetworkDetailsTracker( + getSettingsLifecycle(), + context, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + getArguments().getString( + WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY)); } } diff --git a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java index 887f09fc245..11f36127a5a 100644 --- a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java +++ b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java @@ -24,11 +24,8 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.drawable.Drawable; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; -import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.NetworkRequestMatchCallback; import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback; import android.os.Bundle; @@ -54,6 +51,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.preference.internal.PreferenceImageView; import com.android.settings.R; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.Utils; import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiPickerTracker; @@ -113,16 +111,15 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme } }; final Context context = getContext(); - mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - this); + mWifiPickerTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createWifiPickerTracker(getSettingsLifecycle(), context, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + this); } @Override diff --git a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java index 13d50821264..3b2669cefda 100644 --- a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java +++ b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java @@ -17,9 +17,6 @@ package com.android.settings.wifi; import android.content.Context; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; -import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; @@ -36,6 +33,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -115,16 +113,15 @@ public class WifiConnectionPreferenceController extends AbstractPreferenceContro return SystemClock.elapsedRealtime(); } }; - mWifiPickerTracker = new WifiPickerTracker(lifecycle, context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - this); + mWifiPickerTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createWifiPickerTracker(lifecycle, context, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + this); } /** diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java index 000ed3ebe58..1c5a8edc0ac 100644 --- a/src/com/android/settings/wifi/WifiDialogActivity.java +++ b/src/com/android/settings/wifi/WifiDialogActivity.java @@ -18,9 +18,7 @@ package com.android.settings.wifi; import android.content.DialogInterface; import android.content.Intent; -import android.net.ConnectivityManager; import android.net.NetworkInfo; -import android.net.NetworkScoreManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.ActionListener; @@ -38,6 +36,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.SetupWizardUtils; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.dpp.WifiDppUtils; import com.android.settingslib.core.lifecycle.ObservableActivity; import com.android.settingslib.wifi.AccessPoint; @@ -124,18 +123,17 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog return SystemClock.elapsedRealtime(); } }; - mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker( - getLifecycle(), - this, - getSystemService(WifiManager.class), - getSystemService(ConnectivityManager.class), - getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY)); + mNetworkDetailsTracker = FeatureFactory.getFactory(this) + .getWifiTrackerLibProvider() + .createNetworkDetailsTracker( + getLifecycle(), + this, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY)); } else { final Bundle accessPointState = mIntent.getBundleExtra(KEY_ACCESS_POINT_STATE); if (accessPointState != null) { diff --git a/src/com/android/settings/wifi/WifiPickerTrackerHelper.java b/src/com/android/settings/wifi/WifiPickerTrackerHelper.java index 60a4a01e334..c20f3559cff 100644 --- a/src/com/android/settings/wifi/WifiPickerTrackerHelper.java +++ b/src/com/android/settings/wifi/WifiPickerTrackerHelper.java @@ -17,9 +17,6 @@ package com.android.settings.wifi; import android.content.Context; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; -import android.net.wifi.WifiManager; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; @@ -34,6 +31,7 @@ import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import com.android.internal.annotations.VisibleForTesting; +import com.android.settings.overlay.FeatureFactory; import com.android.wifitrackerlib.MergedCarrierEntry; import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiPickerTracker; @@ -72,16 +70,16 @@ public class WifiPickerTrackerHelper implements LifecycleObserver { Process.THREAD_PRIORITY_BACKGROUND); mWorkerThread.start(); - mWifiPickerTracker = new WifiPickerTracker(lifecycle, context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), + mWifiPickerTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createWifiPickerTracker(lifecycle, context, new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(), ELAPSED_REALTIME_CLOCK, MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS, listener); + } @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 280439326d3..cf8242bc193 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -27,8 +27,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; import android.net.NetworkTemplate; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; @@ -66,6 +64,7 @@ import com.android.settings.core.SubSettingLauncher; import com.android.settings.datausage.DataUsagePreference; import com.android.settings.datausage.DataUsageUtils; import com.android.settings.location.ScanningSettings; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SwitchBarController; import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; @@ -283,16 +282,15 @@ public class WifiSettings extends RestrictedSettingsFragment return SystemClock.elapsedRealtime(); } }; - mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - this); + mWifiPickerTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createWifiPickerTracker(getSettingsLifecycle(), context, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + this); final Activity activity = getActivity(); diff --git a/src/com/android/settings/wifi/WifiTrackerLibProvider.java b/src/com/android/settings/wifi/WifiTrackerLibProvider.java new file mode 100644 index 00000000000..10b3373d741 --- /dev/null +++ b/src/com/android/settings/wifi/WifiTrackerLibProvider.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2020 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.settings.wifi; + +import android.content.Context; +import android.os.Handler; + +import androidx.lifecycle.Lifecycle; + +import com.android.wifitrackerlib.NetworkDetailsTracker; +import com.android.wifitrackerlib.WifiPickerTracker; + +import java.time.Clock; + +/** + * Provides the objects instances from the AOSP WifiTrackerLib. + */ +public interface WifiTrackerLibProvider { + + /** Create a new instance of WifiPickerTracker */ + WifiPickerTracker createWifiPickerTracker( + Lifecycle lifecycle, Context context, + Handler mainHandler, Handler workerHandler, Clock clock, + long maxScanAgeMillis, long scanIntervalMillis, + WifiPickerTracker.WifiPickerTrackerCallback listener); + + /** Create a new instance of NetworkDetailsTracker */ + NetworkDetailsTracker createNetworkDetailsTracker( + Lifecycle lifecycle, Context context, + Handler mainHandler, Handler workerHandler, Clock clock, + long maxScanAgeMillis, long scanIntervalMillis, + String key); + +} diff --git a/src/com/android/settings/wifi/WifiTrackerLibProviderImpl.java b/src/com/android/settings/wifi/WifiTrackerLibProviderImpl.java new file mode 100644 index 00000000000..f8354094929 --- /dev/null +++ b/src/com/android/settings/wifi/WifiTrackerLibProviderImpl.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2020 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.settings.wifi; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkScoreManager; +import android.net.wifi.WifiManager; +import android.os.Handler; + +import androidx.lifecycle.Lifecycle; + +import com.android.wifitrackerlib.NetworkDetailsTracker; +import com.android.wifitrackerlib.WifiPickerTracker; + +import java.time.Clock; + +/** + * Implementation of AOSP WifiTrackerLibProvider. + */ +public class WifiTrackerLibProviderImpl implements WifiTrackerLibProvider { + + /** + * Create an instance of WifiPickerTracker. + */ + @Override + public WifiPickerTracker createWifiPickerTracker( + Lifecycle lifecycle, Context context, + Handler mainHandler, Handler workerHandler, Clock clock, + long maxScanAgeMillis, long scanIntervalMillis, + WifiPickerTracker.WifiPickerTrackerCallback listener) { + return new WifiPickerTracker( + lifecycle, context, + context.getSystemService(WifiManager.class), + context.getSystemService(ConnectivityManager.class), + context.getSystemService(NetworkScoreManager.class), + mainHandler, workerHandler, clock, + maxScanAgeMillis, scanIntervalMillis, + listener); + } + + /** + * Create an instance of NetworkDetailsTracker. + */ + @Override + public NetworkDetailsTracker createNetworkDetailsTracker( + Lifecycle lifecycle, Context context, + Handler mainHandler, Handler workerHandler, Clock clock, + long maxScanAgeMillis, long scanIntervalMillis, + String key) { + return NetworkDetailsTracker.createNetworkDetailsTracker( + lifecycle, context, + context.getSystemService(WifiManager.class), + context.getSystemService(ConnectivityManager.class), + context.getSystemService(NetworkScoreManager.class), + mainHandler, workerHandler, clock, + maxScanAgeMillis, scanIntervalMillis, + key); + } +} diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java index 392148831e5..46f44143bc7 100644 --- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java +++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java @@ -24,8 +24,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiManager; @@ -60,6 +58,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.InstrumentedFragment; +import com.android.settings.overlay.FeatureFactory; import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiPickerTracker; @@ -191,16 +190,15 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements return SystemClock.elapsedRealtime(); } }; - mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), mActivity, - mActivity.getSystemService(WifiManager.class), - mActivity.getSystemService(ConnectivityManager.class), - mActivity.getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - this); + mWifiPickerTracker = FeatureFactory.getFactory(mActivity.getApplicationContext()) + .getWifiTrackerLibProvider() + .createWifiPickerTracker(getSettingsLifecycle(), mActivity, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + this); return inflater.inflate(R.layout.wifi_add_app_networks, container, false); } diff --git a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java index d0708eababf..b154a9be07d 100644 --- a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java +++ b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java @@ -22,7 +22,6 @@ import android.app.admin.DevicePolicyManager; import android.app.settings.SettingsEnums; import android.content.Context; import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; import android.net.wifi.WifiManager; import android.os.Handler; import android.os.HandlerThread; @@ -42,6 +41,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiDialog2; import com.android.settingslib.RestrictedLockUtils; @@ -239,18 +239,17 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements } }; - mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker( - getSettingsLifecycle(), - context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY)); + mNetworkDetailsTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createNetworkDetailsTracker( + getSettingsLifecycle(), + context, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY)); } /** diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java index cee3ccdeb08..5c800241378 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java @@ -25,8 +25,6 @@ import android.content.Intent; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.SurfaceTexture; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; import android.net.wifi.EasyConnectStatusCallback; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; @@ -57,6 +55,7 @@ import androidx.annotation.VisibleForTesting; import androidx.lifecycle.ViewModelProviders; import com.android.settings.R; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.qrcode.QrCamera; import com.android.settings.wifi.qrcode.QrDecorateView; import com.android.wifitrackerlib.WifiEntry; @@ -363,16 +362,15 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl } }; final Context context = getContext(); - mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), - new Handler(Looper.getMainLooper()), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - null /* listener */); + mWifiPickerTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createWifiPickerTracker(getSettingsLifecycle(), context, + new Handler(Looper.getMainLooper()), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + null /* listener */); // setTitle for TalkBack if (mIsConfiguratorMode) { diff --git a/src/com/android/settings/wifi/slice/WifiScanWorker.java b/src/com/android/settings/wifi/slice/WifiScanWorker.java index a87b36ac4a2..78b0d33a89a 100644 --- a/src/com/android/settings/wifi/slice/WifiScanWorker.java +++ b/src/com/android/settings/wifi/slice/WifiScanWorker.java @@ -19,8 +19,6 @@ package com.android.settings.wifi.slice; import static com.android.settings.wifi.slice.WifiSlice.DEFAULT_EXPANDED_ROW_COUNT; import android.content.Context; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; import android.net.Uri; import android.net.wifi.WifiManager; import android.os.HandlerThread; @@ -34,6 +32,7 @@ import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.slices.SliceBackgroundWorker; import com.android.settingslib.utils.ThreadUtils; import com.android.wifitrackerlib.MergedCarrierEntry; @@ -79,16 +78,15 @@ public class WifiScanWorker extends SliceBackgroundWorker impleme return SystemClock.elapsedRealtime(); } }; - mWifiPickerTracker = new WifiPickerTracker(getLifecycle(), context, - context.getSystemService(WifiManager.class), - context.getSystemService(ConnectivityManager.class), - context.getSystemService(NetworkScoreManager.class), - ThreadUtils.getUiThreadHandler(), - mWorkerThread.getThreadHandler(), - elapsedRealtimeClock, - MAX_SCAN_AGE_MILLIS, - SCAN_INTERVAL_MILLIS, - this); + mWifiPickerTracker = FeatureFactory.getFactory(context) + .getWifiTrackerLibProvider() + .createWifiPickerTracker(getLifecycle(), context, + ThreadUtils.getUiThreadHandler(), + mWorkerThread.getThreadHandler(), + elapsedRealtimeClock, + MAX_SCAN_AGE_MILLIS, + SCAN_INTERVAL_MILLIS, + this); mLifecycleRegistry.markState(Lifecycle.State.INITIALIZED); mLifecycleRegistry.markState(Lifecycle.State.CREATED); diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java index 2c68269b9ca..6fb2eae985c 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java @@ -43,6 +43,7 @@ import com.android.settings.search.SearchFeatureProvider; import com.android.settings.security.SecurityFeatureProvider; import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.users.UserFeatureProvider; +import com.android.settings.wifi.WifiTrackerLibProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.mockito.Answers; @@ -77,6 +78,8 @@ public class FakeFeatureFactory extends FeatureFactory { public SearchFeatureProvider searchFeatureProvider; public ContextualCardFeatureProvider mContextualCardFeatureProvider; + public WifiTrackerLibProvider wifiTrackerLibProvider; + /** * Call this in {@code @Before} method of the test class to use fake factory. */ @@ -120,6 +123,7 @@ public class FakeFeatureFactory extends FeatureFactory { mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class); mAwareFeatureProvider = mock(AwareFeatureProvider.class); mFaceFeatureProvider = mock(FaceFeatureProvider.class); + wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class); } @Override @@ -231,4 +235,9 @@ public class FakeFeatureFactory extends FeatureFactory { public FaceFeatureProvider getFaceFeatureProvider() { return mFaceFeatureProvider; } + + @Override + public WifiTrackerLibProvider getWifiTrackerLibProvider() { + return wifiTrackerLibProvider; + } } diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java index 70c78106ca5..24d4c470030 100644 --- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java +++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; @@ -41,6 +42,7 @@ import androidx.annotation.NonNull; import androidx.fragment.app.FragmentActivity; import com.android.settings.R; +import com.android.settings.testutils.FakeFeatureFactory; import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiPickerTracker; @@ -82,6 +84,8 @@ public class AddAppNetworksFragmentTest { @Mock private WifiEntry mWifiEntry; + private FakeFeatureFactory mFakeFeatureFactory; + @Mock private WifiPickerTracker mWifiPickerTracker; @@ -106,6 +110,8 @@ public class AddAppNetworksFragmentTest { mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID, WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\""); + mFakeFeatureFactory = FakeFeatureFactory.setupForTest(); + mAddAppNetworksFragment.mWifiPickerTracker = mWifiPickerTracker; setUpOneScannedNetworkWithScanedLevel4(); } @@ -485,6 +491,9 @@ public class AddAppNetworksFragmentTest { } private void setupFragment() { + when(mFakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker( + any(), any(), any(), any(), any(), anyLong(), anyLong(), any())) + .thenReturn(mWifiPickerTracker); FragmentController.setupFragment(mAddAppNetworksFragment); } diff --git a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java index 47851b9a737..d20fc12ba72 100644 --- a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java +++ b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java @@ -41,6 +41,7 @@ import com.android.settings.search.SearchFeatureProvider; import com.android.settings.security.SecurityFeatureProvider; import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.users.UserFeatureProvider; +import com.android.settings.wifi.WifiTrackerLibProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** @@ -72,6 +73,8 @@ public class FakeFeatureFactory extends FeatureFactory { public SearchFeatureProvider searchFeatureProvider; public ContextualCardFeatureProvider mContextualCardFeatureProvider; + public WifiTrackerLibProvider wifiTrackerLibProvider; + /** * Call this in {@code @Before} method of the test class to use fake factory. */ @@ -106,6 +109,7 @@ public class FakeFeatureFactory extends FeatureFactory { mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class); mAwareFeatureProvider = mock(AwareFeatureProvider.class); mFaceFeatureProvider = mock(FaceFeatureProvider.class); + wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class); } @Override @@ -217,4 +221,9 @@ public class FakeFeatureFactory extends FeatureFactory { public FaceFeatureProvider getFaceFeatureProvider() { return mFaceFeatureProvider; } + + @Override + public WifiTrackerLibProvider getWifiTrackerLibProvider() { + return wifiTrackerLibProvider; + } }