Indicate failed scans with EXTRA_RESULTS_UPDATED
This flag indicates if scan was successful and results were
updated. It will be set to false if a scan is not performed
(intentionally) or if it failed to produce any results.
Bug: 20642015
Change-Id: I06a1fdd684932db68891ee28d5a049980f483f0f
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 74d284a..b660f22 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -423,6 +423,9 @@
enforceChangePermission();
synchronized (this) {
if (mInIdleMode) {
+ // Need to send an immediate scan result broadcast in case the
+ // caller is waiting for a result ..
+ mWifiStateMachine.sendScanResultsAvailableBroadcast(/* scanSucceeded = */ false);
mScanPending = true;
return;
}
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 3c14f00..5ce48f9 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -4457,9 +4457,10 @@
return address;
}
- private void sendScanResultsAvailableBroadcast() {
+ void sendScanResultsAvailableBroadcast(boolean scanSucceeded) {
Intent intent = new Intent(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+ intent.putExtra(WifiManager.EXTRA_RESULTS_UPDATED, scanSucceeded);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
}
@@ -5582,7 +5583,8 @@
setScanResults();
if (mIsFullScanOngoing || mSendScanResultsBroadcast) {
/* Just updated results from full scan, let apps know about this */
- sendScanResultsAvailableBroadcast();
+ boolean scanSucceeded = message.what == WifiMonitor.SCAN_RESULTS_EVENT;
+ sendScanResultsAvailableBroadcast(scanSucceeded);
}
mSendScanResultsBroadcast = false;
mIsScanOngoing = false;