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
This commit is contained in:
Steven Liu
2020-12-16 15:08:51 -08:00
parent b7076d5d5e
commit c1477650c9
17 changed files with 268 additions and 123 deletions

View File

@@ -41,6 +41,7 @@ import com.android.settings.search.SearchFeatureProvider;
import com.android.settings.security.SecurityFeatureProvider; import com.android.settings.security.SecurityFeatureProvider;
import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.slices.SlicesFeatureProvider;
import com.android.settings.users.UserFeatureProvider; import com.android.settings.users.UserFeatureProvider;
import com.android.settings.wifi.WifiTrackerLibProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
/** /**
@@ -143,6 +144,11 @@ public abstract class FeatureFactory {
public abstract FaceFeatureProvider getFaceFeatureProvider(); public abstract FaceFeatureProvider getFaceFeatureProvider();
/**
* Gets implementation for the WifiTrackerLib.
*/
public abstract WifiTrackerLibProvider getWifiTrackerLibProvider();
public static final class FactoryNotFoundException extends RuntimeException { public static final class FactoryNotFoundException extends RuntimeException {
public FactoryNotFoundException(Throwable throwable) { public FactoryNotFoundException(Throwable throwable) {
super("Unable to create factory. Did you misconfigure Proguard?", throwable); super("Unable to create factory. Did you misconfigure Proguard?", throwable);

View File

@@ -62,6 +62,8 @@ import com.android.settings.slices.SlicesFeatureProvider;
import com.android.settings.slices.SlicesFeatureProviderImpl; import com.android.settings.slices.SlicesFeatureProviderImpl;
import com.android.settings.users.UserFeatureProvider; import com.android.settings.users.UserFeatureProvider;
import com.android.settings.users.UserFeatureProviderImpl; 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; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
/** /**
@@ -90,6 +92,7 @@ public class FeatureFactoryImpl extends FeatureFactory {
private BluetoothFeatureProvider mBluetoothFeatureProvider; private BluetoothFeatureProvider mBluetoothFeatureProvider;
private AwareFeatureProvider mAwareFeatureProvider; private AwareFeatureProvider mAwareFeatureProvider;
private FaceFeatureProvider mFaceFeatureProvider; private FaceFeatureProvider mFaceFeatureProvider;
private WifiTrackerLibProvider mWifiTrackerLibProvider;
@Override @Override
public SupportFeatureProvider getSupportFeatureProvider(Context context) { public SupportFeatureProvider getSupportFeatureProvider(Context context) {
@@ -278,4 +281,12 @@ public class FeatureFactoryImpl extends FeatureFactory {
} }
return mFaceFeatureProvider; return mFaceFeatureProvider;
} }
@Override
public WifiTrackerLibProvider getWifiTrackerLibProvider() {
if (mWifiTrackerLibProvider == null) {
mWifiTrackerLibProvider = new WifiTrackerLibProviderImpl();
}
return mWifiTrackerLibProvider;
}
} }

View File

@@ -21,9 +21,6 @@ import android.app.Activity;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
@@ -40,6 +37,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
import com.android.wifitrackerlib.NetworkDetailsTracker; import com.android.wifitrackerlib.NetworkDetailsTracker;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
@@ -222,17 +220,17 @@ public class ConfigureWifiEntryFragment extends InstrumentedFragment implements
} }
}; };
mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker( mNetworkDetailsTracker = FeatureFactory.getFactory(context)
getSettingsLifecycle(), .getWifiTrackerLibProvider()
context, .createNetworkDetailsTracker(
context.getSystemService(WifiManager.class), getSettingsLifecycle(),
context.getSystemService(ConnectivityManager.class), context,
context.getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, getArguments().getString(
getArguments().getString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY)); WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY));
} }
} }

View File

@@ -24,11 +24,8 @@ import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.ScanResult; import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.NetworkRequestMatchCallback; import android.net.wifi.WifiManager.NetworkRequestMatchCallback;
import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback; import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback;
import android.os.Bundle; import android.os.Bundle;
@@ -54,6 +51,7 @@ import androidx.appcompat.app.AlertDialog;
import androidx.preference.internal.PreferenceImageView; import androidx.preference.internal.PreferenceImageView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker; import com.android.wifitrackerlib.WifiPickerTracker;
@@ -113,16 +111,15 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
} }
}; };
final Context context = getContext(); final Context context = getContext();
mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context, mWifiPickerTracker = FeatureFactory.getFactory(context)
context.getSystemService(WifiManager.class), .getWifiTrackerLibProvider()
context.getSystemService(ConnectivityManager.class), .createWifiPickerTracker(getSettingsLifecycle(), context,
context.getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, this);
this);
} }
@Override @Override

View File

@@ -17,9 +17,6 @@
package com.android.settings.wifi; package com.android.settings.wifi;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
@@ -36,6 +33,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -115,16 +113,15 @@ public class WifiConnectionPreferenceController extends AbstractPreferenceContro
return SystemClock.elapsedRealtime(); return SystemClock.elapsedRealtime();
} }
}; };
mWifiPickerTracker = new WifiPickerTracker(lifecycle, context, mWifiPickerTracker = FeatureFactory.getFactory(context)
context.getSystemService(WifiManager.class), .getWifiTrackerLibProvider()
context.getSystemService(ConnectivityManager.class), .createWifiPickerTracker(lifecycle, context,
context.getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, this);
this);
} }
/** /**

View File

@@ -18,9 +18,7 @@ package com.android.settings.wifi;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.ActionListener; import android.net.wifi.WifiManager.ActionListener;
@@ -38,6 +36,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SetupWizardUtils; import com.android.settings.SetupWizardUtils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.dpp.WifiDppUtils; import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settingslib.core.lifecycle.ObservableActivity; import com.android.settingslib.core.lifecycle.ObservableActivity;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
@@ -124,18 +123,17 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
return SystemClock.elapsedRealtime(); return SystemClock.elapsedRealtime();
} }
}; };
mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker( mNetworkDetailsTracker = FeatureFactory.getFactory(this)
getLifecycle(), .getWifiTrackerLibProvider()
this, .createNetworkDetailsTracker(
getSystemService(WifiManager.class), getLifecycle(),
getSystemService(ConnectivityManager.class), this,
getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY));
mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY));
} else { } else {
final Bundle accessPointState = mIntent.getBundleExtra(KEY_ACCESS_POINT_STATE); final Bundle accessPointState = mIntent.getBundleExtra(KEY_ACCESS_POINT_STATE);
if (accessPointState != null) { if (accessPointState != null) {

View File

@@ -17,9 +17,6 @@
package com.android.settings.wifi; package com.android.settings.wifi;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
@@ -34,6 +31,7 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent; import androidx.lifecycle.OnLifecycleEvent;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.overlay.FeatureFactory;
import com.android.wifitrackerlib.MergedCarrierEntry; import com.android.wifitrackerlib.MergedCarrierEntry;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker; import com.android.wifitrackerlib.WifiPickerTracker;
@@ -72,16 +70,16 @@ public class WifiPickerTrackerHelper implements LifecycleObserver {
Process.THREAD_PRIORITY_BACKGROUND); Process.THREAD_PRIORITY_BACKGROUND);
mWorkerThread.start(); mWorkerThread.start();
mWifiPickerTracker = new WifiPickerTracker(lifecycle, context, mWifiPickerTracker = FeatureFactory.getFactory(context)
context.getSystemService(WifiManager.class), .getWifiTrackerLibProvider()
context.getSystemService(ConnectivityManager.class), .createWifiPickerTracker(lifecycle, context,
context.getSystemService(NetworkScoreManager.class),
new Handler(Looper.getMainLooper()), new Handler(Looper.getMainLooper()),
mWorkerThread.getThreadHandler(), mWorkerThread.getThreadHandler(),
ELAPSED_REALTIME_CLOCK, ELAPSED_REALTIME_CLOCK,
MAX_SCAN_AGE_MILLIS, MAX_SCAN_AGE_MILLIS,
SCAN_INTERVAL_MILLIS, SCAN_INTERVAL_MILLIS,
listener); listener);
} }
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)

View File

@@ -27,8 +27,6 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; 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.DataUsagePreference;
import com.android.settings.datausage.DataUsageUtils; import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.location.ScanningSettings; import com.android.settings.location.ScanningSettings;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.SwitchBarController; import com.android.settings.widget.SwitchBarController;
import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2; import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
@@ -283,16 +282,15 @@ public class WifiSettings extends RestrictedSettingsFragment
return SystemClock.elapsedRealtime(); return SystemClock.elapsedRealtime();
} }
}; };
mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context, mWifiPickerTracker = FeatureFactory.getFactory(context)
context.getSystemService(WifiManager.class), .getWifiTrackerLibProvider()
context.getSystemService(ConnectivityManager.class), .createWifiPickerTracker(getSettingsLifecycle(), context,
context.getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, this);
this);
final Activity activity = getActivity(); final Activity activity = getActivity();

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -24,8 +24,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
@@ -60,6 +58,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker; import com.android.wifitrackerlib.WifiPickerTracker;
@@ -191,16 +190,15 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
return SystemClock.elapsedRealtime(); return SystemClock.elapsedRealtime();
} }
}; };
mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), mActivity, mWifiPickerTracker = FeatureFactory.getFactory(mActivity.getApplicationContext())
mActivity.getSystemService(WifiManager.class), .getWifiTrackerLibProvider()
mActivity.getSystemService(ConnectivityManager.class), .createWifiPickerTracker(getSettingsLifecycle(), mActivity,
mActivity.getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, this);
this);
return inflater.inflate(R.layout.wifi_add_app_networks, container, false); return inflater.inflate(R.layout.wifi_add_app_networks, container, false);
} }

View File

@@ -22,7 +22,6 @@ import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
@@ -42,6 +41,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiConfigUiBase2;
import com.android.settings.wifi.WifiDialog2; import com.android.settings.wifi.WifiDialog2;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
@@ -239,18 +239,17 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
} }
}; };
mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker( mNetworkDetailsTracker = FeatureFactory.getFactory(context)
getSettingsLifecycle(), .getWifiTrackerLibProvider()
context, .createNetworkDetailsTracker(
context.getSystemService(WifiManager.class), getSettingsLifecycle(),
context.getSystemService(ConnectivityManager.class), context,
context.getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
} }
/** /**

View File

@@ -25,8 +25,6 @@ import android.content.Intent;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.SurfaceTexture; import android.graphics.SurfaceTexture;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.EasyConnectStatusCallback; import android.net.wifi.EasyConnectStatusCallback;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
@@ -57,6 +55,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.ViewModelProviders; import androidx.lifecycle.ViewModelProviders;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.qrcode.QrCamera; import com.android.settings.wifi.qrcode.QrCamera;
import com.android.settings.wifi.qrcode.QrDecorateView; import com.android.settings.wifi.qrcode.QrDecorateView;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
@@ -363,16 +362,15 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
} }
}; };
final Context context = getContext(); final Context context = getContext();
mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context, mWifiPickerTracker = FeatureFactory.getFactory(context)
context.getSystemService(WifiManager.class), .getWifiTrackerLibProvider()
context.getSystemService(ConnectivityManager.class), .createWifiPickerTracker(getSettingsLifecycle(), context,
context.getSystemService(NetworkScoreManager.class), new Handler(Looper.getMainLooper()),
new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, null /* listener */);
null /* listener */);
// setTitle for TalkBack // setTitle for TalkBack
if (mIsConfiguratorMode) { if (mIsConfiguratorMode) {

View File

@@ -19,8 +19,6 @@ package com.android.settings.wifi.slice;
import static com.android.settings.wifi.slice.WifiSlice.DEFAULT_EXPANDED_ROW_COUNT; import static com.android.settings.wifi.slice.WifiSlice.DEFAULT_EXPANDED_ROW_COUNT;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.Uri; import android.net.Uri;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.HandlerThread; import android.os.HandlerThread;
@@ -34,6 +32,7 @@ import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.LifecycleRegistry;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.slices.SliceBackgroundWorker; import com.android.settings.slices.SliceBackgroundWorker;
import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.utils.ThreadUtils;
import com.android.wifitrackerlib.MergedCarrierEntry; import com.android.wifitrackerlib.MergedCarrierEntry;
@@ -79,16 +78,15 @@ public class WifiScanWorker extends SliceBackgroundWorker<WifiSliceItem> impleme
return SystemClock.elapsedRealtime(); return SystemClock.elapsedRealtime();
} }
}; };
mWifiPickerTracker = new WifiPickerTracker(getLifecycle(), context, mWifiPickerTracker = FeatureFactory.getFactory(context)
context.getSystemService(WifiManager.class), .getWifiTrackerLibProvider()
context.getSystemService(ConnectivityManager.class), .createWifiPickerTracker(getLifecycle(), context,
context.getSystemService(NetworkScoreManager.class), ThreadUtils.getUiThreadHandler(),
ThreadUtils.getUiThreadHandler(), mWorkerThread.getThreadHandler(),
mWorkerThread.getThreadHandler(), elapsedRealtimeClock,
elapsedRealtimeClock, MAX_SCAN_AGE_MILLIS,
MAX_SCAN_AGE_MILLIS, SCAN_INTERVAL_MILLIS,
SCAN_INTERVAL_MILLIS, this);
this);
mLifecycleRegistry.markState(Lifecycle.State.INITIALIZED); mLifecycleRegistry.markState(Lifecycle.State.INITIALIZED);
mLifecycleRegistry.markState(Lifecycle.State.CREATED); mLifecycleRegistry.markState(Lifecycle.State.CREATED);

View File

@@ -43,6 +43,7 @@ import com.android.settings.search.SearchFeatureProvider;
import com.android.settings.security.SecurityFeatureProvider; import com.android.settings.security.SecurityFeatureProvider;
import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.slices.SlicesFeatureProvider;
import com.android.settings.users.UserFeatureProvider; import com.android.settings.users.UserFeatureProvider;
import com.android.settings.wifi.WifiTrackerLibProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import org.mockito.Answers; import org.mockito.Answers;
@@ -77,6 +78,8 @@ public class FakeFeatureFactory extends FeatureFactory {
public SearchFeatureProvider searchFeatureProvider; public SearchFeatureProvider searchFeatureProvider;
public ContextualCardFeatureProvider mContextualCardFeatureProvider; public ContextualCardFeatureProvider mContextualCardFeatureProvider;
public WifiTrackerLibProvider wifiTrackerLibProvider;
/** /**
* Call this in {@code @Before} method of the test class to use fake factory. * 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); mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
mAwareFeatureProvider = mock(AwareFeatureProvider.class); mAwareFeatureProvider = mock(AwareFeatureProvider.class);
mFaceFeatureProvider = mock(FaceFeatureProvider.class); mFaceFeatureProvider = mock(FaceFeatureProvider.class);
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
} }
@Override @Override
@@ -231,4 +235,9 @@ public class FakeFeatureFactory extends FeatureFactory {
public FaceFeatureProvider getFaceFeatureProvider() { public FaceFeatureProvider getFaceFeatureProvider() {
return mFaceFeatureProvider; return mFaceFeatureProvider;
} }
@Override
public WifiTrackerLibProvider getWifiTrackerLibProvider() {
return wifiTrackerLibProvider;
}
} }

View File

@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
@@ -41,6 +42,7 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker; import com.android.wifitrackerlib.WifiPickerTracker;
@@ -82,6 +84,8 @@ public class AddAppNetworksFragmentTest {
@Mock @Mock
private WifiEntry mWifiEntry; private WifiEntry mWifiEntry;
private FakeFeatureFactory mFakeFeatureFactory;
@Mock @Mock
private WifiPickerTracker mWifiPickerTracker; private WifiPickerTracker mWifiPickerTracker;
@@ -106,6 +110,8 @@ public class AddAppNetworksFragmentTest {
mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID, mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\""); WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
mAddAppNetworksFragment.mWifiPickerTracker = mWifiPickerTracker; mAddAppNetworksFragment.mWifiPickerTracker = mWifiPickerTracker;
setUpOneScannedNetworkWithScanedLevel4(); setUpOneScannedNetworkWithScanedLevel4();
} }
@@ -485,6 +491,9 @@ public class AddAppNetworksFragmentTest {
} }
private void setupFragment() { private void setupFragment() {
when(mFakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
.thenReturn(mWifiPickerTracker);
FragmentController.setupFragment(mAddAppNetworksFragment); FragmentController.setupFragment(mAddAppNetworksFragment);
} }

View File

@@ -41,6 +41,7 @@ import com.android.settings.search.SearchFeatureProvider;
import com.android.settings.security.SecurityFeatureProvider; import com.android.settings.security.SecurityFeatureProvider;
import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.slices.SlicesFeatureProvider;
import com.android.settings.users.UserFeatureProvider; import com.android.settings.users.UserFeatureProvider;
import com.android.settings.wifi.WifiTrackerLibProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
/** /**
@@ -72,6 +73,8 @@ public class FakeFeatureFactory extends FeatureFactory {
public SearchFeatureProvider searchFeatureProvider; public SearchFeatureProvider searchFeatureProvider;
public ContextualCardFeatureProvider mContextualCardFeatureProvider; public ContextualCardFeatureProvider mContextualCardFeatureProvider;
public WifiTrackerLibProvider wifiTrackerLibProvider;
/** /**
* Call this in {@code @Before} method of the test class to use fake factory. * 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); mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
mAwareFeatureProvider = mock(AwareFeatureProvider.class); mAwareFeatureProvider = mock(AwareFeatureProvider.class);
mFaceFeatureProvider = mock(FaceFeatureProvider.class); mFaceFeatureProvider = mock(FaceFeatureProvider.class);
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
} }
@Override @Override
@@ -217,4 +221,9 @@ public class FakeFeatureFactory extends FeatureFactory {
public FaceFeatureProvider getFaceFeatureProvider() { public FaceFeatureProvider getFaceFeatureProvider() {
return mFaceFeatureProvider; return mFaceFeatureProvider;
} }
@Override
public WifiTrackerLibProvider getWifiTrackerLibProvider() {
return wifiTrackerLibProvider;
}
} }