summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nate Jiang <qiangjiang@google.com> 2025-03-19 09:38:13 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-19 09:38:13 -0700
commit0071aa00b17c19d6ab5d9ef44fc2a751838c7820 (patch)
tree3565395a78b5e7abbbad9a3b46c342f0a56fecf7
parent1aec30913cffc1afcbb3996c9ad69045b1fe800f (diff)
parent6080c0a6f594f7bcba4f16703dd31c3f6ca22b86 (diff)
Merge "Use ParceledListSlice fix the binder transcation issue" into main
-rw-r--r--framework/java/android/net/wifi/IWifiScannerListener.aidl10
-rw-r--r--framework/java/android/net/wifi/WifiScanner.java15
-rw-r--r--service/java/com/android/server/wifi/scanner/WifiScannerInternal.java7
-rw-r--r--service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java27
4 files changed, 33 insertions, 26 deletions
diff --git a/framework/java/android/net/wifi/IWifiScannerListener.aidl b/framework/java/android/net/wifi/IWifiScannerListener.aidl
index bd19ac2d0f..74b22a1bbf 100644
--- a/framework/java/android/net/wifi/IWifiScannerListener.aidl
+++ b/framework/java/android/net/wifi/IWifiScannerListener.aidl
@@ -15,14 +15,14 @@
package android.net.wifi;
-import android.net.wifi.WifiScanner;
import android.net.wifi.ScanResult;
+import android.net.wifi.WifiScanner;
+import com.android.modules.utils.ParceledListSlice;
/**
* @hide
*/
-oneway interface IWifiScannerListener
-{
+oneway interface IWifiScannerListener {
void onSuccess();
void onFailure(int reason, String description);
@@ -46,5 +46,5 @@ oneway interface IWifiScannerListener
/**
* reports full scan result for all access points found in scan
*/
- void onFullResults(in List<ScanResult> scanResult);
-} \ No newline at end of file
+ void onFullResults(in ParceledListSlice<ScanResult> scanResult);
+}
diff --git a/framework/java/android/net/wifi/WifiScanner.java b/framework/java/android/net/wifi/WifiScanner.java
index fd9676e0e4..b5cc3b0976 100644
--- a/framework/java/android/net/wifi/WifiScanner.java
+++ b/framework/java/android/net/wifi/WifiScanner.java
@@ -45,6 +45,7 @@ import android.util.Log;
import androidx.annotation.RequiresApi;
import com.android.internal.util.Protocol;
+import com.android.modules.utils.ParceledListSlice;
import com.android.modules.utils.build.SdkLevel;
import com.android.wifi.flags.Flags;
@@ -387,14 +388,14 @@ public class WifiScanner {
* reports full scan result for all access points found in scan
*/
@Override
- public void onFullResults(List<ScanResult> fullScanResult) {
+ public void onFullResults(ParceledListSlice<ScanResult> fullScanResult) {
Log.i(TAG, "onFullResults");
if (mActionListener == null) return;
if (!(mActionListener instanceof ScanListener)) return;
ScanListener scanListener = (ScanListener) mActionListener;
Binder.clearCallingIdentity();
mExecutor.execute(
- () -> fullScanResult.forEach(scanListener::onFullResult));
+ () -> fullScanResult.getList().forEach(scanListener::onFullResult));
}
@Override
@@ -1021,7 +1022,8 @@ public class WifiScanner {
dest.writeInt(mFlags);
dest.writeInt(mBucketsScanned);
dest.writeInt(mScannedBands);
- dest.writeParcelableList(mResults, 0);
+ ParceledListSlice<ScanResult> parceledListSlice = new ParceledListSlice<>(mResults);
+ parceledListSlice.writeToParcel(dest, flags);
}
/** Implement the Parcelable interface {@hide} */
@@ -1032,9 +1034,10 @@ public class WifiScanner {
int flags = in.readInt();
int bucketsScanned = in.readInt();
int bandsScanned = in.readInt();
- List<ScanResult> results = new ArrayList<>();
- in.readParcelableList(results, ScanResult.class.getClassLoader());
- return new ScanData(id, flags, bucketsScanned, bandsScanned, results);
+ ParceledListSlice<ScanResult> parceledListSlice =
+ ParceledListSlice.CREATOR.createFromParcel(in);
+ return new ScanData(id, flags, bucketsScanned, bandsScanned,
+ parceledListSlice.getList());
}
public ScanData[] newArray(int size) {
diff --git a/service/java/com/android/server/wifi/scanner/WifiScannerInternal.java b/service/java/com/android/server/wifi/scanner/WifiScannerInternal.java
index 713edd792e..7dac6f1264 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScannerInternal.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScannerInternal.java
@@ -26,6 +26,7 @@ import android.os.WorkSource;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.modules.utils.ParceledListSlice;
import com.android.server.wifi.WifiThreadRunner;
import java.util.Collections;
@@ -93,9 +94,9 @@ public abstract class WifiScannerInternal {
}
@Override
- public void onFullResults(List<ScanResult> fullScanResult) {
- mWifiThreadRunner.post(() -> fullScanResult.forEach(mScanListener::onFullResult),
- TAG + "#onFullResults");
+ public void onFullResults(ParceledListSlice<ScanResult> fullScanResult) {
+ mWifiThreadRunner.post(() -> fullScanResult.getList()
+ .forEach(mScanListener::onFullResult), TAG + "#onFullResults");
}
@Override
diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
index 5392d1a0fa..e8c37cf1b3 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
@@ -61,6 +61,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Protocol;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
+import com.android.modules.utils.ParceledListSlice;
import com.android.modules.utils.build.SdkLevel;
import com.android.server.wifi.ClientModeImpl;
import com.android.server.wifi.Clock;
@@ -1740,9 +1741,10 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
}
entry.clientInfo.reportEvent((listener) -> {
try {
- listener.onFullResults(new ArrayList<>(matchedScanResults));
+ listener.onFullResults(
+ new ParceledListSlice<>(new ArrayList<>(matchedScanResults)));
} catch (RemoteException e) {
- loge("Failed to call onFullResult: " + entry.clientInfo);
+ loge("Failed to call onFullResults: " + entry.clientInfo);
}
});
matchedScanResults.clear();
@@ -1751,9 +1753,9 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
for (RequestInfo<Void> entry : mSingleScanListeners) {
entry.clientInfo.reportEvent((listener) -> {
try {
- listener.onFullResults(results);
+ listener.onFullResults(new ParceledListSlice<>(results));
} catch (RemoteException e) {
- loge("Failed to call onFullResult: " + entry.clientInfo);
+ loge("Failed to call onFullResults: " + entry.clientInfo);
}
});
}
@@ -1779,7 +1781,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
// make sure the handler is removed
listener.onSingleScanCompleted();
} catch (RemoteException e) {
- loge("Failed to call onResult: " + entry.clientInfo);
+ loge("Failed to call onResults: " + entry.clientInfo);
}
});
}
@@ -1791,7 +1793,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
try {
listener.onResults(allResults);
} catch (RemoteException e) {
- loge("Failed to call onResult: " + entry.clientInfo);
+ loge("Failed to call onResults: " + entry.clientInfo);
}
});
}
@@ -2314,9 +2316,10 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
}
entry.clientInfo.reportEvent((listener) -> {
try {
- listener.onFullResults(new ArrayList<>(matchedResults));
+ listener.onFullResults(
+ new ParceledListSlice<>(new ArrayList<>(matchedResults)));
} catch (RemoteException e) {
- loge("Failed to call onFullResult: " + ci);
+ loge("Failed to call onFullResults: " + ci);
}
});
}
@@ -2350,7 +2353,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
try {
listener.onResults(resultsToDeliver);
} catch (RemoteException e) {
- loge("Failed to call onFullResult: " + ci);
+ loge("Failed to call onResults: " + ci);
}
});
}
@@ -2364,7 +2367,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
try {
listener.onFailure(reason, description);
} catch (RemoteException e) {
- loge("Failed to call onFullResult: " + ci);
+ loge("Failed to call onFailure: " + ci);
}
});
}
@@ -3229,7 +3232,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
try {
listener.onPnoNetworkFound(results);
} catch (RemoteException e) {
- loge("Failed to call onFullResult: " + ci);
+ loge("Failed to call onPnoNetworkFound: " + ci);
}
});
}
@@ -3242,7 +3245,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
try {
listener.onFailure(reason, description);
} catch (RemoteException e) {
- loge("Failed to call onFullResult: " + ci);
+ loge("Failed to call onFailure: " + ci);
}
});
}