Merge "Fallback to "Extended Compatibility" if Speed feature is not ready" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
dc02736824
@@ -32,9 +32,11 @@ import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -96,6 +98,10 @@ public class WifiHotspotRepository {
|
||||
protected String mCurrentCountryCode;
|
||||
protected ActiveCountryCodeChangedCallback mActiveCountryCodeChangedCallback;
|
||||
|
||||
@VisibleForTesting
|
||||
Boolean mIsConfigShowSpeed;
|
||||
private Boolean mIsSpeedFeatureAvailable;
|
||||
|
||||
public WifiHotspotRepository(@NonNull Context appContext, @NonNull WifiManager wifiManager) {
|
||||
mAppContext = appContext;
|
||||
mWifiManager = wifiManager;
|
||||
@@ -314,6 +320,7 @@ public class WifiHotspotRepository {
|
||||
|
||||
/**
|
||||
* Return whether Wi-Fi Dual Band is supported or not.
|
||||
*
|
||||
* @return {@code true} if Wi-Fi Dual Band is supported
|
||||
*/
|
||||
public boolean isDualBand() {
|
||||
@@ -326,6 +333,7 @@ public class WifiHotspotRepository {
|
||||
|
||||
/**
|
||||
* Return whether Wi-Fi 5 GHz band is supported or not.
|
||||
*
|
||||
* @return {@code true} if Wi-Fi 5 GHz Band is supported
|
||||
*/
|
||||
public boolean is5GHzBandSupported() {
|
||||
@@ -338,6 +346,7 @@ public class WifiHotspotRepository {
|
||||
|
||||
/**
|
||||
* Return whether Wi-Fi Hotspot 5 GHz band is available or not.
|
||||
*
|
||||
* @return {@code true} if Wi-Fi Hotspot 5 GHz Band is available
|
||||
*/
|
||||
public boolean is5gAvailable() {
|
||||
@@ -371,6 +380,7 @@ public class WifiHotspotRepository {
|
||||
|
||||
/**
|
||||
* Return whether Wi-Fi 6 GHz band is supported or not.
|
||||
*
|
||||
* @return {@code true} if Wi-Fi 6 GHz Band is supported
|
||||
*/
|
||||
public boolean is6GHzBandSupported() {
|
||||
@@ -383,6 +393,7 @@ public class WifiHotspotRepository {
|
||||
|
||||
/**
|
||||
* Return whether Wi-Fi Hotspot 6 GHz band is available or not.
|
||||
*
|
||||
* @return {@code true} if Wi-Fi Hotspot 6 GHz Band is available
|
||||
*/
|
||||
public boolean is6gAvailable() {
|
||||
@@ -432,9 +443,63 @@ public class WifiHotspotRepository {
|
||||
// This is expected on some hardware.
|
||||
Log.e(TAG, "Querying usable SAP channels is unsupported, band:" + band);
|
||||
}
|
||||
// Disable Wi-Fi hotspot speed feature if an error occurs while getting usable channels.
|
||||
mIsSpeedFeatureAvailable = false;
|
||||
Log.w(TAG, "isChannelAvailable(): Wi-Fi hotspot speed feature disabled");
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private boolean isConfigShowSpeed() {
|
||||
if (mIsConfigShowSpeed == null) {
|
||||
mIsConfigShowSpeed = mAppContext.getResources()
|
||||
.getBoolean(R.bool.config_show_wifi_hotspot_speed);
|
||||
log("isConfigShowSpeed():" + mIsConfigShowSpeed);
|
||||
}
|
||||
return mIsConfigShowSpeed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether Wi-Fi Hotspot Speed Feature is available or not.
|
||||
*
|
||||
* @return {@code true} if Wi-Fi Hotspot Speed Feature is available
|
||||
*/
|
||||
public boolean isSpeedFeatureAvailable() {
|
||||
if (mIsSpeedFeatureAvailable != null) {
|
||||
return mIsSpeedFeatureAvailable;
|
||||
}
|
||||
|
||||
// Check config to show Wi-Fi hotspot speed feature
|
||||
if (!isConfigShowSpeed()) {
|
||||
mIsSpeedFeatureAvailable = false;
|
||||
log("isSpeedFeatureAvailable():false, isConfigShowSpeed():false");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if 5 GHz band is not supported
|
||||
if (!is5GHzBandSupported()) {
|
||||
mIsSpeedFeatureAvailable = false;
|
||||
log("isSpeedFeatureAvailable():false, 5 GHz band is not supported on this device");
|
||||
return false;
|
||||
}
|
||||
// Check if 5 GHz band SAP channel is not ready
|
||||
isChannelAvailable(WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS, true /* defaultValue */);
|
||||
if (mIsSpeedFeatureAvailable != null && !mIsSpeedFeatureAvailable) {
|
||||
log("isSpeedFeatureAvailable():false, error occurred while getting 5 GHz SAP channel");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if 6 GHz band SAP channel is not ready
|
||||
isChannelAvailable(WifiScanner.WIFI_BAND_6_GHZ, false /* defaultValue */);
|
||||
if (mIsSpeedFeatureAvailable != null && !mIsSpeedFeatureAvailable) {
|
||||
log("isSpeedFeatureAvailable():false, error occurred while getting 6 GHz SAP channel");
|
||||
return false;
|
||||
}
|
||||
|
||||
mIsSpeedFeatureAvailable = true;
|
||||
log("isSpeedFeatureAvailable():true");
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void purgeRefreshData() {
|
||||
mIs5gAvailable = null;
|
||||
mIs6gAvailable = null;
|
||||
|
@@ -25,6 +25,7 @@ import androidx.preference.Preference;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
|
||||
/**
|
||||
* This controller helps to manage the state of maximize compatibility switch preference.
|
||||
@@ -36,13 +37,30 @@ public class WifiTetherMaximizeCompatibilityPreferenceController extends
|
||||
public static final String PREF_KEY = "wifi_tether_maximize_compatibility";
|
||||
|
||||
private boolean mIsChecked;
|
||||
@VisibleForTesting
|
||||
boolean mShouldHidePreference;
|
||||
|
||||
public WifiTetherMaximizeCompatibilityPreferenceController(Context context,
|
||||
WifiTetherBasePreferenceController.OnTetherConfigUpdateListener listener) {
|
||||
super(context, listener);
|
||||
// If the Wi-Fi Hotspot Speed Feature available, then hide this controller.
|
||||
mShouldHidePreference = FeatureFactory.getFactory(context)
|
||||
.getWifiFeatureProvider().getWifiHotspotRepository().isSpeedFeatureAvailable();
|
||||
Log.d(TAG, "mShouldHidePreference:" + mShouldHidePreference);
|
||||
if (mShouldHidePreference) {
|
||||
return;
|
||||
}
|
||||
mIsChecked = isMaximizeCompatibilityEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
if (mShouldHidePreference) {
|
||||
return false;
|
||||
}
|
||||
return super.isAvailable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferenceKey() {
|
||||
return PREF_KEY;
|
||||
|
@@ -32,6 +32,7 @@ import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
@@ -48,10 +49,19 @@ public class WifiTetherSecurityPreferenceController extends WifiTetherBasePrefer
|
||||
private int mSecurityValue;
|
||||
@VisibleForTesting
|
||||
boolean mIsWpa3Supported = true;
|
||||
@VisibleForTesting
|
||||
boolean mShouldHidePreference;
|
||||
|
||||
public WifiTetherSecurityPreferenceController(Context context,
|
||||
OnTetherConfigUpdateListener listener) {
|
||||
super(context, listener);
|
||||
// If the Wi-Fi Hotspot Speed Feature available, then hide this controller.
|
||||
mShouldHidePreference = FeatureFactory.getFactory(context)
|
||||
.getWifiFeatureProvider().getWifiHotspotRepository().isSpeedFeatureAvailable();
|
||||
Log.d(TAG, "shouldHidePreference():" + mShouldHidePreference);
|
||||
if (mShouldHidePreference) {
|
||||
return;
|
||||
}
|
||||
final String[] securityNames = mContext.getResources().getStringArray(
|
||||
R.array.wifi_tether_security);
|
||||
final String[] securityValues = mContext.getResources().getStringArray(
|
||||
@@ -62,6 +72,14 @@ public class WifiTetherSecurityPreferenceController extends WifiTetherBasePrefer
|
||||
mWifiManager.registerSoftApCallback(context.getMainExecutor(), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
if (mShouldHidePreference) {
|
||||
return false;
|
||||
}
|
||||
return super.isAvailable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferenceKey() {
|
||||
return FeatureFlagUtils.isEnabled(mContext, FeatureFlags.TETHER_ALL_IN_ONE)
|
||||
|
@@ -136,12 +136,22 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
|
||||
|
||||
mWifiTetherViewModel = FeatureFactory.getFactory(getContext()).getWifiFeatureProvider()
|
||||
.getWifiTetherViewModel(this);
|
||||
mWifiHotspotSecurity = findPreference(KEY_WIFI_HOTSPOT_SECURITY);
|
||||
if (mWifiHotspotSecurity != null && mWifiHotspotSecurity.isVisible()) {
|
||||
mWifiTetherViewModel.getSecuritySummary().observe(this, this::onSecuritySummaryChanged);
|
||||
if (mWifiTetherViewModel != null) {
|
||||
setupSpeedFeature(mWifiTetherViewModel.isSpeedFeatureAvailable());
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setupSpeedFeature(boolean isSpeedFeatureAvailable) {
|
||||
mWifiHotspotSecurity = findPreference(KEY_WIFI_HOTSPOT_SECURITY);
|
||||
mWifiHotspotSpeed = findPreference(KEY_WIFI_HOTSPOT_SPEED);
|
||||
if (mWifiHotspotSpeed != null && mWifiHotspotSpeed.isVisible()) {
|
||||
if (mWifiHotspotSecurity == null || mWifiHotspotSpeed == null) {
|
||||
return;
|
||||
}
|
||||
mWifiHotspotSecurity.setVisible(isSpeedFeatureAvailable);
|
||||
mWifiHotspotSpeed.setVisible(isSpeedFeatureAvailable);
|
||||
if (isSpeedFeatureAvailable) {
|
||||
mWifiTetherViewModel.getSecuritySummary().observe(this, this::onSecuritySummaryChanged);
|
||||
mWifiTetherViewModel.getSpeedSummary().observe(this, this::onSpeedSummaryChanged);
|
||||
}
|
||||
}
|
||||
|
@@ -83,8 +83,21 @@ public class WifiTetherViewModel extends AndroidViewModel {
|
||||
|
||||
@Override
|
||||
protected void onCleared() {
|
||||
mWifiHotspotRepository.getSecurityType().removeObserver(mSecurityTypeObserver);
|
||||
mWifiHotspotRepository.getSpeedType().removeObserver(mSpeedTypeObserver);
|
||||
if (mSecuritySummary != null) {
|
||||
mWifiHotspotRepository.getSecurityType().removeObserver(mSecurityTypeObserver);
|
||||
}
|
||||
if (mSpeedSummary != null) {
|
||||
mWifiHotspotRepository.getSpeedType().removeObserver(mSpeedTypeObserver);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether Wi-Fi Hotspot Speed Feature is available or not.
|
||||
*
|
||||
* @return {@code true} if Wi-Fi Hotspot Speed Feature is available
|
||||
*/
|
||||
public boolean isSpeedFeatureAvailable() {
|
||||
return mWifiHotspotRepository.isSpeedFeatureAvailable();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user