From cdbffa986dfa0a26ebcde6409f0131754889c88f Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Mon, 17 Apr 2017 19:49:29 -0700 Subject: [PATCH] Throttle wifi scan requests from background apps (1/2). Bug: 37320631 Test: Manual test on Sailfish. Unit tests using runtest.sh. Change-Id: If7c0206df29aea15089eba335d5b4e82f066eed9 --- core/java/android/provider/Settings.java | 17 ++++++++++++++++- wifi/java/android/net/wifi/IWifiManager.aidl | 2 +- wifi/java/android/net/wifi/WifiManager.java | 10 +++------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 22de27f81034..fd6c7e75be92 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -7768,7 +7768,22 @@ public final class Settings { public static final String LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST = "location_background_throttle_package_whitelist"; - /** + /** + * The interval in milliseconds at which wifi scan requests will be throttled when they are + * coming from the background. + * @hide + */ + public static final String WIFI_SCAN_BACKGROUND_THROTTLE_INTERVAL_MS = + "wifi_scan_background_throttle_interval_ms"; + + /** + * Packages that are whitelisted to be exempt for wifi background throttling. + * @hide + */ + public static final String WIFI_SCAN_BACKGROUND_THROTTLE_PACKAGE_WHITELIST = + "wifi_scan_background_throttle_package_whitelist"; + + /** * Whether TV will switch to MHL port when a mobile device is plugged in. * (0 = false, 1 = true) * @hide diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index 1852feb8afc9..b7dbf392baf3 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -81,7 +81,7 @@ interface IWifiManager boolean disableNetwork(int netId); - void startScan(in ScanSettings requested, in WorkSource ws); + void startScan(in ScanSettings requested, in WorkSource ws, in String packageName); List getScanResults(String callingPackage); diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 7268ee53820f..d3e0d37cf236 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -1428,19 +1428,15 @@ public class WifiManager { * @return {@code true} if the operation succeeded, i.e., the scan was initiated */ public boolean startScan() { - try { - mService.startScan(null, null); - return true; - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } + return startScan(null); } /** @hide */ @SystemApi public boolean startScan(WorkSource workSource) { try { - mService.startScan(null, workSource); + String packageName = mContext.getOpPackageName(); + mService.startScan(null, workSource, packageName); return true; } catch (RemoteException e) { throw e.rethrowFromSystemServer(); -- 2.11.0