Merge "Fix race in TelephonyScanManager" am: 884dd0f559
am: 0c85ca1062
Change-Id: I56a5296a3e5fb1971eea8685dde6dd574b2b1bea
This commit is contained in:
@@ -104,7 +104,7 @@ public final class TelephonyScanManager {
|
|||||||
|
|
||||||
private final Looper mLooper;
|
private final Looper mLooper;
|
||||||
private final Messenger mMessenger;
|
private final Messenger mMessenger;
|
||||||
private SparseArray<NetworkScanInfo> mScanInfo = new SparseArray<NetworkScanInfo>();
|
private final SparseArray<NetworkScanInfo> mScanInfo = new SparseArray<NetworkScanInfo>();
|
||||||
|
|
||||||
public TelephonyScanManager() {
|
public TelephonyScanManager() {
|
||||||
HandlerThread thread = new HandlerThread(TAG);
|
HandlerThread thread = new HandlerThread(TAG);
|
||||||
@@ -204,14 +204,16 @@ public final class TelephonyScanManager {
|
|||||||
try {
|
try {
|
||||||
ITelephony telephony = getITelephony();
|
ITelephony telephony = getITelephony();
|
||||||
if (telephony != null) {
|
if (telephony != null) {
|
||||||
int scanId = telephony.requestNetworkScan(
|
synchronized (mScanInfo) {
|
||||||
subId, request, mMessenger, new Binder(), callingPackage);
|
int scanId = telephony.requestNetworkScan(
|
||||||
if (scanId == INVALID_SCAN_ID) {
|
subId, request, mMessenger, new Binder(), callingPackage);
|
||||||
Rlog.e(TAG, "Failed to initiate network scan");
|
if (scanId == INVALID_SCAN_ID) {
|
||||||
return null;
|
Rlog.e(TAG, "Failed to initiate network scan");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
saveScanInfo(scanId, request, executor, callback);
|
||||||
|
return new NetworkScan(scanId, subId);
|
||||||
}
|
}
|
||||||
saveScanInfo(scanId, request, executor, callback);
|
|
||||||
return new NetworkScan(scanId, subId);
|
|
||||||
}
|
}
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Rlog.e(TAG, "requestNetworkScan RemoteException", ex);
|
Rlog.e(TAG, "requestNetworkScan RemoteException", ex);
|
||||||
@@ -223,9 +225,7 @@ public final class TelephonyScanManager {
|
|||||||
|
|
||||||
private void saveScanInfo(
|
private void saveScanInfo(
|
||||||
int id, NetworkScanRequest request, Executor executor, NetworkScanCallback callback) {
|
int id, NetworkScanRequest request, Executor executor, NetworkScanCallback callback) {
|
||||||
synchronized (mScanInfo) {
|
mScanInfo.put(id, new NetworkScanInfo(request, executor, callback));
|
||||||
mScanInfo.put(id, new NetworkScanInfo(request, executor, callback));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ITelephony getITelephony() {
|
private ITelephony getITelephony() {
|
||||||
|
|||||||
Reference in New Issue
Block a user