Add verbose logging to WifiScanner
Plumb verbose logging from WifiServiceImpl to WifiScanningServiceImpl.
Also enhances Logcat logging when verbose logging is enabled.
Bug: 268422030
Test: manually verified
Change-Id: I842cdce5c9644856cfd4be308fa5a03d3429ed07
Merged-In: I842cdce5c9644856cfd4be308fa5a03d3429ed07
(cherry picked from commit 8ce89a1f6bd7c3b6ff96b9497ac069a1802085e3)
diff --git a/framework/java/android/net/wifi/IWifiScanner.aidl b/framework/java/android/net/wifi/IWifiScanner.aidl
index 9c1b7ab..4144da5 100644
--- a/framework/java/android/net/wifi/IWifiScanner.aidl
+++ b/framework/java/android/net/wifi/IWifiScanner.aidl
@@ -62,4 +62,6 @@
String packageName, String featureId);
void stopPnoScan(in IWifiScannerListener listener, String packageName, String featureId);
+
+ void enableVerboseLogging(boolean enabled);
}
diff --git a/framework/java/android/net/wifi/WifiScanner.java b/framework/java/android/net/wifi/WifiScanner.java
index a2257d9..56c87cb 100644
--- a/framework/java/android/net/wifi/WifiScanner.java
+++ b/framework/java/android/net/wifi/WifiScanner.java
@@ -1509,6 +1509,20 @@
}
}
+ /**
+ * Enable verbose logging. For internal use by wifi framework only.
+ * @param enabled whether verbose logging is enabled
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public void enableVerboseLogging(boolean enabled) {
+ try {
+ mService.enableVerboseLogging(enabled);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
/** specifies information about an access point of interest */
@Deprecated
public static class BssidInfo {
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 827f440..ce26812 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -5070,6 +5070,10 @@
mWifiMulticastLockManager.enableVerboseLogging(mVerboseLoggingEnabled);
mWifiInjector.enableVerboseLogging(mVerboseLoggingEnabled, halVerboseEnabled);
mWifiInjector.getSarManager().enableVerboseLogging(mVerboseLoggingEnabled);
+ WifiScanner wifiScanner = mWifiInjector.getWifiScanner();
+ if (wifiScanner != null) {
+ wifiScanner.enableVerboseLogging(mVerboseLoggingEnabled);
+ }
ApConfigUtil.enableVerboseLogging(mVerboseLoggingEnabled);
}
diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
index 6190bcf..3058b3b 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
@@ -85,6 +85,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
public class WifiScanningServiceImpl extends IWifiScanner.Stub {
@@ -100,6 +101,9 @@
private void localLog(String message) {
mLocalLog.log(message);
+ if (isVerboseLoggingEnabled()) {
+ Log.i(TAG, message);
+ }
}
private void logw(String message) {
@@ -483,6 +487,19 @@
});
}
+ @Override
+ public void enableVerboseLogging(boolean enabled) {
+ if (!mWifiPermissionsUtil.checkNetworkSettingsPermission(Binder.getCallingUid())) {
+ return;
+ }
+ mVerboseLoggingEnabled.set(enabled);
+ localLog("enableVerboseLogging: uid=" + Binder.getCallingUid() + " enabled=" + enabled);
+ }
+
+ private boolean isVerboseLoggingEnabled() {
+ return mVerboseLoggingEnabled.get();
+ }
+
private void enforceNetworkStack(int uid) {
mContext.enforcePermission(
Manifest.permission.NETWORK_STACK,
@@ -585,6 +602,8 @@
private final LastCallerInfoManager mLastCallerInfoManager;
private final DeviceConfigFacade mDeviceConfigFacade;
+ private AtomicBoolean mVerboseLoggingEnabled = new AtomicBoolean(false);
+
WifiScanningServiceImpl(Context context, Looper looper,
WifiScannerImpl.WifiScannerImplFactory scannerImplFactory,
BatteryStatsManager batteryStats, WifiInjector wifiInjector) {