Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed929799 authored by Paul Stewart's avatar Paul Stewart
Browse files

WifiManager: Return empty scan list on remote exception

In the (hopefully rare) situation where there is a remote exception
from a call to getScanResults(), do not pass null back to callers.
Nobody expects this, and failures that occur as a result can distract
from the real problem (e.g., the system server crashing).  This CL
now returns an empty list.

BUG=27139097
TEST=None

Change-Id: I637eae1fa8ac1a1bc2b76dea8628359b5dec06e1
parent d9c4bc0c
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.internal.util.AsyncChannel;
import com.android.internal.util.Protocol;
import com.android.internal.util.Protocol;


import java.net.InetAddress;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CountDownLatch;


@@ -1293,13 +1294,15 @@ public class WifiManager {
     * @return the list of access points found in the most recent scan. An app must hold
     * @return the list of access points found in the most recent scan. An app must hold
     * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION} or
     * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION} or
     * {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION} permission
     * {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION} permission
     * in order to get valid results.
     * in order to get valid results.  If there is a remote exception (e.g., either a communication
     * problem with the system service or an exception within the framework) an empty list will be
     * returned.
     */
     */
    public List<ScanResult> getScanResults() {
    public List<ScanResult> getScanResults() {
        try {
        try {
            return mService.getScanResults(mContext.getOpPackageName());
            return mService.getScanResults(mContext.getOpPackageName());
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            return null;
            return new ArrayList<ScanResult>();
        }
        }
    }
    }