diff options
author | 2025-03-19 09:38:13 -0700 | |
---|---|---|
committer | 2025-03-19 09:38:13 -0700 | |
commit | 0071aa00b17c19d6ab5d9ef44fc2a751838c7820 (patch) | |
tree | 3565395a78b5e7abbbad9a3b46c342f0a56fecf7 | |
parent | 1aec30913cffc1afcbb3996c9ad69045b1fe800f (diff) | |
parent | 6080c0a6f594f7bcba4f16703dd31c3f6ca22b86 (diff) |
Merge "Use ParceledListSlice fix the binder transcation issue" into main
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); } }); } |