diff options
| author | Roshan Pius <rpius@google.com> | 2020-02-07 06:57:14 -0800 |
|---|---|---|
| committer | Roshan Pius <rpius@google.com> | 2020-02-18 07:27:28 -0800 |
| commit | 6d4cb9cdc78cf920ec91ecac41a2b8f127706eb4 (patch) | |
| tree | c1238092699cc8e38ca1067aeb70ab03525a6267 | |
| parent | 6398957728f963c04fa4f1b7379ebc140c8e5503 (diff) | |
WifiOemMigrationHook: Migrate Settings global values
Changes:
a) Add a method to migrate Settings values from platform.
b) Marked all of those settings back to @hide.
c) Also, deprecated couple of public Settings keys which are no longer
used in the wifi stack.
Bug: 148514485
Test: Compiles
Test: TBD: Add unit tests for this class.
Change-Id: I3566cdb53fc997fbb2cc5bceadd865ff8b01539b
| -rw-r--r-- | api/current.txt | 12 | ||||
| -rwxr-xr-x | api/system-current.txt | 33 | ||||
| -rw-r--r-- | core/java/android/provider/Settings.java | 29 | ||||
| -rwxr-xr-x | wifi/java/android/net/wifi/WifiOemMigrationHook.java | 266 |
4 files changed, 316 insertions, 24 deletions
diff --git a/api/current.txt b/api/current.txt index 24478f4d06d2..7aef41b1aa2a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -40577,13 +40577,13 @@ package android.provider { field public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count"; field public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms"; field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on"; - field public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay"; - field public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept"; + field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay"; + field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept"; field public static final String WIFI_ON = "wifi_on"; - field public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy"; - field public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0 - field public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2 - field public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1 + field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy"; + field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0 + field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2 + field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1 field public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on"; field public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale"; } diff --git a/api/system-current.txt b/api/system-current.txt index 9efefc59d75c..6e14d5d41890 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7898,6 +7898,7 @@ package android.net.wifi { public final class WifiOemMigrationHook { method @Nullable public static android.net.wifi.WifiOemMigrationHook.ConfigStoreMigrationData loadFromConfigStore(); + method @NonNull public static android.net.wifi.WifiOemMigrationHook.SettingsMigrationData loadFromSettings(@NonNull android.content.Context); } public static final class WifiOemMigrationHook.ConfigStoreMigrationData implements android.os.Parcelable { @@ -7915,6 +7916,31 @@ package android.net.wifi { method @NonNull public android.net.wifi.WifiOemMigrationHook.ConfigStoreMigrationData.Builder setUserSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration); } + public static final class WifiOemMigrationHook.SettingsMigrationData implements android.os.Parcelable { + method public int describeContents(); + method @Nullable public String getP2pDeviceName(); + method public boolean isP2pFactoryResetPending(); + method public boolean isScanAlwaysAvailable(); + method public boolean isScanThrottleEnabled(); + method public boolean isSoftApTimeoutEnabled(); + method public boolean isVerboseLoggingEnabled(); + method public boolean isWakeUpEnabled(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiOemMigrationHook.SettingsMigrationData> CREATOR; + } + + public static final class WifiOemMigrationHook.SettingsMigrationData.Builder { + ctor public WifiOemMigrationHook.SettingsMigrationData.Builder(); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData build(); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData.Builder setP2pDeviceName(@Nullable String); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData.Builder setP2pFactoryResetPending(boolean); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData.Builder setScanAlwaysAvailable(boolean); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData.Builder setScanThrottleEnabled(boolean); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData.Builder setSoftApTimeoutEnabled(boolean); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData.Builder setVerboseLoggingEnabled(boolean); + method @NonNull public android.net.wifi.WifiOemMigrationHook.SettingsMigrationData.Builder setWakeUpEnabled(boolean); + } + public class WifiScanner { method @Deprecated public void configureWifiChange(int, int, int, int, int, android.net.wifi.WifiScanner.BssidInfo[]); method @Deprecated public void configureWifiChange(android.net.wifi.WifiScanner.WifiChangeSettings); @@ -9721,18 +9747,11 @@ package android.provider { field public static final String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis"; field public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update"; field public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt"; - field public static final String SOFT_AP_TIMEOUT_ENABLED = "soft_ap_timeout_enabled"; field public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled"; field public static final String TETHER_SUPPORTED = "tether_supported"; field public static final String THEATER_MODE_ON = "theater_mode_on"; field public static final String WEBVIEW_MULTIPROCESS = "webview_multiprocess"; field public static final String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds"; - field public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name"; - field public static final String WIFI_P2P_PENDING_FACTORY_RESET = "wifi_p2p_pending_factory_reset"; - field public static final String WIFI_SCAN_ALWAYS_AVAILABLE = "wifi_scan_always_enabled"; - field public static final String WIFI_SCAN_THROTTLE_ENABLED = "wifi_scan_throttle_enabled"; - field public static final String WIFI_SCORE_PARAMS = "wifi_score_params"; - field public static final String WIFI_VERBOSE_LOGGING_ENABLED = "wifi_verbose_logging_enabled"; field @Deprecated public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled"; } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index f6072f977ea4..a319bba886f6 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9084,26 +9084,34 @@ public final class Settings { * Set to one of {@link #WIFI_SLEEP_POLICY_DEFAULT}, * {@link #WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED}, or * {@link #WIFI_SLEEP_POLICY_NEVER}. + * @deprecated This is no longer used or set by the platform. */ + @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy"; /** * Value for {@link #WIFI_SLEEP_POLICY} to use the default Wi-Fi sleep * policy, which is to sleep shortly after the turning off * according to the {@link #STAY_ON_WHILE_PLUGGED_IN} setting. + * @deprecated This is no longer used by the platform. */ + @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; /** * Value for {@link #WIFI_SLEEP_POLICY} to use the default policy when * the device is on battery, and never go to sleep when the device is * plugged in. + * @deprecated This is no longer used by the platform. */ + @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; /** * Value for {@link #WIFI_SLEEP_POLICY} to never go to sleep. + * @deprecated This is no longer used by the platform. */ + @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; /** @@ -10197,7 +10205,9 @@ public final class Settings { /** * Delay (in seconds) before repeating the Wi-Fi networks available notification. * Connecting to a network will reset the timer. + * @deprecated This is no longer used or set by the platform. */ + @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay"; @@ -10227,7 +10237,9 @@ public final class Settings { /** * When the number of open networks exceeds this number, the * least-recently-used excess networks will be removed. + * @deprecated This is no longer used or set by the platform. */ + @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept"; /** @@ -10238,8 +10250,8 @@ public final class Settings { /** * Setting to allow scans to be enabled even wifi is turned off for connectivity. * @hide + * @deprecated To be removed. */ - @SystemApi public static final String WIFI_SCAN_ALWAYS_AVAILABLE = "wifi_scan_always_enabled"; @@ -10248,8 +10260,8 @@ public final class Settings { * * Type: int (0 for false, 1 for true) * @hide + * @deprecated To be removed. */ - @SystemApi public static final String WIFI_P2P_PENDING_FACTORY_RESET = "wifi_p2p_pending_factory_reset"; @@ -10258,8 +10270,8 @@ public final class Settings { * * Type: int (0 for false, 1 for true) * @hide + * @deprecated To be removed. */ - @SystemApi public static final String SOFT_AP_TIMEOUT_ENABLED = "soft_ap_timeout_enabled"; /** @@ -10304,6 +10316,7 @@ public final class Settings { * Most readers of this setting should simply check if value == 1 to determined the * enabled state. * @hide + * @deprecated To be removed. */ public static final String NETWORK_RECOMMENDATIONS_ENABLED = "network_recommendations_enabled"; @@ -10343,13 +10356,11 @@ public final class Settings { /** * Whether wifi scan throttle is enabled or not. - * This is intended to be used via adb commands or a menu in developer option to turn off - * the default wifi scan throttling mechanism for apps. * * Type: int (0 for false, 1 for true) * @hide + * @deprecated To be removed. */ - @SystemApi public static final String WIFI_SCAN_THROTTLE_ENABLED = "wifi_scan_throttle_enabled"; /** @@ -10451,8 +10462,8 @@ public final class Settings { * Setting to enable verbose logging in Wi-Fi; disabled by default, and setting to 1 * will enable it. In the future, additional values may be supported. * @hide + * @deprecated To be removed. */ - @SystemApi public static final String WIFI_VERBOSE_LOGGING_ENABLED = "wifi_verbose_logging_enabled"; @@ -10477,8 +10488,8 @@ public final class Settings { * Default values are provided by code or device configurations. * Errors in the parameters will cause the entire setting to be ignored. * @hide + * @deprecated This is no longer used or set by the platform. */ - @SystemApi public static final String WIFI_SCORE_PARAMS = "wifi_score_params"; @@ -10520,8 +10531,8 @@ public final class Settings { /** * The Wi-Fi peer-to-peer device name * @hide + * @deprecated To be removed. */ - @SystemApi public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name"; /** diff --git a/wifi/java/android/net/wifi/WifiOemMigrationHook.java b/wifi/java/android/net/wifi/WifiOemMigrationHook.java index 22d778637101..44dbb98a8ab8 100755 --- a/wifi/java/android/net/wifi/WifiOemMigrationHook.java +++ b/wifi/java/android/net/wifi/WifiOemMigrationHook.java @@ -21,8 +21,10 @@ import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; +import android.content.Context; import android.os.Parcel; import android.os.Parcelable; +import android.provider.Settings; import java.util.List; @@ -33,6 +35,9 @@ import java.util.List; */ @SystemApi public final class WifiOemMigrationHook { + + private WifiOemMigrationHook() { } + /** * Container for all the wifi config data to migrate. */ @@ -152,8 +157,6 @@ public final class WifiOemMigrationHook { } } - private WifiOemMigrationHook() { } - /** * Load data from OEM's config store. * <p> @@ -178,4 +181,263 @@ public final class WifiOemMigrationHook { // Note: OEM's should add code to parse data from their config store format here! return null; } + + /** + * Container for all the wifi settings data to migrate. + */ + public static final class SettingsMigrationData implements Parcelable { + private final boolean mScanAlwaysAvailable; + private final boolean mP2pFactoryResetPending; + private final String mP2pDeviceName; + private final boolean mSoftApTimeoutEnabled; + private final boolean mWakeupEnabled; + private final boolean mScanThrottleEnabled; + private final boolean mVerboseLoggingEnabled; + + private SettingsMigrationData(boolean scanAlwaysAvailable, boolean p2pFactoryResetPending, + @Nullable String p2pDeviceName, boolean softApTimeoutEnabled, boolean wakeupEnabled, + boolean scanThrottleEnabled, boolean verboseLoggingEnabled) { + mScanAlwaysAvailable = scanAlwaysAvailable; + mP2pFactoryResetPending = p2pFactoryResetPending; + mP2pDeviceName = p2pDeviceName; + mSoftApTimeoutEnabled = softApTimeoutEnabled; + mWakeupEnabled = wakeupEnabled; + mScanThrottleEnabled = scanThrottleEnabled; + mVerboseLoggingEnabled = verboseLoggingEnabled; + } + + public static final @NonNull Parcelable.Creator<SettingsMigrationData> CREATOR = + new Parcelable.Creator<SettingsMigrationData>() { + @Override + public SettingsMigrationData createFromParcel(Parcel in) { + boolean scanAlwaysAvailable = in.readBoolean(); + boolean p2pFactoryResetPending = in.readBoolean(); + String p2pDeviceName = in.readString(); + boolean softApTimeoutEnabled = in.readBoolean(); + boolean wakeupEnabled = in.readBoolean(); + boolean scanThrottleEnabled = in.readBoolean(); + boolean verboseLoggingEnabled = in.readBoolean(); + return new SettingsMigrationData( + scanAlwaysAvailable, p2pFactoryResetPending, + p2pDeviceName, softApTimeoutEnabled, wakeupEnabled, + scanThrottleEnabled, verboseLoggingEnabled); + } + + @Override + public SettingsMigrationData[] newArray(int size) { + return new SettingsMigrationData[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeBoolean(mScanAlwaysAvailable); + dest.writeBoolean(mP2pFactoryResetPending); + dest.writeString(mP2pDeviceName); + dest.writeBoolean(mSoftApTimeoutEnabled); + dest.writeBoolean(mWakeupEnabled); + dest.writeBoolean(mScanThrottleEnabled); + dest.writeBoolean(mVerboseLoggingEnabled); + } + + /** + * @return True if scans are allowed even when wifi is toggled off, false otherwise. + */ + public boolean isScanAlwaysAvailable() { + return mScanAlwaysAvailable; + } + + /** + * @return indicate whether factory reset request is pending. + */ + public boolean isP2pFactoryResetPending() { + return mP2pFactoryResetPending; + } + + /** + * @return the Wi-Fi peer-to-peer device name + */ + public @Nullable String getP2pDeviceName() { + return mP2pDeviceName; + } + + /** + * @return Whether soft AP will shut down after a timeout period when no devices are + * connected. + */ + public boolean isSoftApTimeoutEnabled() { + return mSoftApTimeoutEnabled; + } + + /** + * @return whether Wi-Fi Wakeup feature is enabled. + */ + public boolean isWakeUpEnabled() { + return mWakeupEnabled; + } + + /** + * @return Whether wifi scan throttle is enabled or not. + */ + public boolean isScanThrottleEnabled() { + return mScanThrottleEnabled; + } + + /** + * @return Whether to enable verbose logging in Wi-Fi. + */ + public boolean isVerboseLoggingEnabled() { + return mVerboseLoggingEnabled; + } + + /** + * Builder to create instance of {@link SettingsMigrationData}. + */ + public static final class Builder { + private boolean mScanAlwaysAvailable; + private boolean mP2pFactoryResetPending; + private String mP2pDeviceName; + private boolean mSoftApTimeoutEnabled; + private boolean mWakeupEnabled; + private boolean mScanThrottleEnabled; + private boolean mVerboseLoggingEnabled; + + public Builder() { + } + + /** + * Setting to allow scans even when wifi is toggled off. + * + * @param available true if available, false otherwise. + * @return Instance of {@link Builder} to enable chaining of the builder method. + */ + public @NonNull Builder setScanAlwaysAvailable(boolean available) { + mScanAlwaysAvailable = available; + return this; + } + + /** + * Indicate whether factory reset request is pending. + * + * @param pending true if pending, false otherwise. + * @return Instance of {@link Builder} to enable chaining of the builder method. + */ + public @NonNull Builder setP2pFactoryResetPending(boolean pending) { + mP2pFactoryResetPending = pending; + return this; + } + + /** + * The Wi-Fi peer-to-peer device name + * + * @param name Name if set, null otherwise. + * @return Instance of {@link Builder} to enable chaining of the builder method. + */ + public @NonNull Builder setP2pDeviceName(@Nullable String name) { + mP2pDeviceName = name; + return this; + } + + /** + * Whether soft AP will shut down after a timeout period when no devices are connected. + * + * @param enabled true if enabled, false otherwise. + * @return Instance of {@link Builder} to enable chaining of the builder method. + */ + public @NonNull Builder setSoftApTimeoutEnabled(boolean enabled) { + mSoftApTimeoutEnabled = enabled; + return this; + } + + /** + * Value to specify if Wi-Fi Wakeup feature is enabled. + * + * @param enabled true if enabled, false otherwise. + * @return Instance of {@link Builder} to enable chaining of the builder method. + */ + public @NonNull Builder setWakeUpEnabled(boolean enabled) { + mWakeupEnabled = enabled; + return this; + } + + /** + * Whether wifi scan throttle is enabled or not. + * + * @param enabled true if enabled, false otherwise. + * @return Instance of {@link Builder} to enable chaining of the builder method. + */ + public @NonNull Builder setScanThrottleEnabled(boolean enabled) { + mScanThrottleEnabled = enabled; + return this; + } + + /** + * Setting to enable verbose logging in Wi-Fi. + * + * @param enabled true if enabled, false otherwise. + * @return Instance of {@link Builder} to enable chaining of the builder method. + */ + public @NonNull Builder setVerboseLoggingEnabled(boolean enabled) { + mVerboseLoggingEnabled = enabled; + return this; + } + + /** + * Build an instance of {@link SettingsMigrationData}. + * + * @return Instance of {@link SettingsMigrationData}. + */ + public @NonNull SettingsMigrationData build() { + return new SettingsMigrationData(mScanAlwaysAvailable, mP2pFactoryResetPending, + mP2pDeviceName, mSoftApTimeoutEnabled, mWakeupEnabled, mScanThrottleEnabled, + mVerboseLoggingEnabled); + } + } + } + + /** + * Load data from Settings.Global values. + * + * <p> + * Note: + * <li> This is method is invoked once on the first bootup. OEM can safely delete these settings + * once the migration is complete. The first & only relevant invocation of + * {@link #loadFromSettings(Context)} ()} occurs when a previously released + * device upgrades to the wifi mainline module from an OEM implementation of the wifi stack. + * </li> + * + * @param context Context to use for loading the settings provider. + * @return Instance of {@link SettingsMigrationData} for migrating data. + */ + @NonNull + public static SettingsMigrationData loadFromSettings(@NonNull Context context) { + return new SettingsMigrationData.Builder() + .setScanAlwaysAvailable( + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1) + .setP2pFactoryResetPending( + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.WIFI_P2P_PENDING_FACTORY_RESET, 0) == 1) + .setP2pDeviceName( + Settings.Global.getString(context.getContentResolver(), + Settings.Global.WIFI_P2P_DEVICE_NAME)) + .setSoftApTimeoutEnabled( + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 1) == 1) + .setWakeUpEnabled( + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1) + .setScanThrottleEnabled( + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.WIFI_SCAN_THROTTLE_ENABLED, 1) == 1) + .setVerboseLoggingEnabled( + Settings.Global.getInt(context.getContentResolver(), + Settings.Global.WIFI_VERBOSE_LOGGING_ENABLED, 1) == 1) + .build(); + } } |
