Loading services/java/com/android/server/wifi/WifiService.java +13 −2 Original line number Diff line number Diff line Loading @@ -303,10 +303,15 @@ public final class WifiService extends IWifiManager.Stub { /** * see {@link android.net.wifi.WifiManager#startScan()} * * <p>If workSource is null, all blame is given to the calling uid. */ public void startScan() { public void startScan(WorkSource workSource) { enforceChangePermission(); mWifiStateMachine.startScan(Binder.getCallingUid()); if (workSource != null) { enforceWorkSourcePermission(); } mWifiStateMachine.startScan(Binder.getCallingUid(), workSource); } private void enforceAccessPermission() { Loading @@ -320,6 +325,12 @@ public final class WifiService extends IWifiManager.Stub { } private void enforceWorkSourcePermission() { mContext.enforceCallingPermission(android.Manifest.permission.UPDATE_DEVICE_STATS, "WifiService"); } private void enforceMulticastChangePermission() { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, Loading wifi/java/android/net/wifi/IWifiManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ interface IWifiManager boolean pingSupplicant(); void startScan(); void startScan(in WorkSource ws); List<ScanResult> getScanResults(String callingPackage); Loading wifi/java/android/net/wifi/WifiManager.java +12 −1 Original line number Diff line number Diff line Loading @@ -759,7 +759,18 @@ public class WifiManager { */ public boolean startScan() { try { mService.startScan(); final WorkSource workSource = null; mService.startScan(workSource); return true; } catch (RemoteException e) { return false; } } /** @hide */ public boolean startScan(WorkSource workSource) { try { mService.startScan(workSource); return true; } catch (RemoteException e) { return false; Loading wifi/java/android/net/wifi/WifiStateMachine.java +18 −11 Original line number Diff line number Diff line Loading @@ -607,7 +607,8 @@ public class WifiStateMachine extends StateMachine { new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { startScan(UNKNOWN_SCAN_SOURCE); final WorkSource workSource = null; startScan(UNKNOWN_SCAN_SOURCE, workSource); } }, new IntentFilter(ACTION_START_SCAN)); Loading Loading @@ -725,15 +726,21 @@ public class WifiStateMachine extends StateMachine { } /** * TODO: doc * Initiate a wifi scan. If workSource is not null, blame is given to it, * otherwise blame is given to callingUid. * * @param callingUid The uid initiating the wifi scan. Blame will be given * here unless workSource is specified. * @param workSource If not null, blame is given to workSource. */ public void startScan(int callingUid) { sendMessage(CMD_START_SCAN, callingUid); public void startScan(int callingUid, WorkSource workSource) { sendMessage(CMD_START_SCAN, callingUid, 0, workSource); } private void noteScanStart(int callingUid) { if (mScanWorkSource == null && callingUid != UNKNOWN_SCAN_SOURCE) { mScanWorkSource = new WorkSource(callingUid); // If workSource is not null, blame is given to it, otherwise blame is given to callingUid. private void noteScanStart(int callingUid, WorkSource workSource) { if (mScanWorkSource == null && (callingUid != UNKNOWN_SCAN_SOURCE || workSource != null)) { mScanWorkSource = workSource != null ? workSource : new WorkSource(callingUid); try { mBatteryStats.noteWifiScanStartedFromSource(mScanWorkSource); } catch (RemoteException e) { Loading Loading @@ -2502,7 +2509,7 @@ public class WifiStateMachine extends StateMachine { public boolean processMessage(Message message) { switch(message.what) { case CMD_START_SCAN: noteScanStart(message.arg1); noteScanStart(message.arg1, (WorkSource) message.obj); startScanNative(WifiNative.SCAN_WITH_CONNECTION_SETUP); break; case CMD_SET_COUNTRY_CODE: Loading Loading @@ -2788,7 +2795,7 @@ public class WifiStateMachine extends StateMachine { // Handle scan. All the connection related commands are // handled only in ConnectModeState case CMD_START_SCAN: noteScanStart(message.arg1); noteScanStart(message.arg1, (WorkSource) message.obj); startScanNative(WifiNative.SCAN_WITHOUT_CONNECTION_SETUP); break; default: Loading Loading @@ -3054,7 +3061,7 @@ public class WifiStateMachine extends StateMachine { break; case CMD_START_SCAN: /* Do not attempt to connect when we are already connected */ noteScanStart(message.arg1); noteScanStart(message.arg1, (WorkSource) message.obj); startScanNative(WifiNative.SCAN_WITHOUT_CONNECTION_SETUP); break; /* Ignore connection to same network */ Loading Loading @@ -3372,7 +3379,7 @@ public class WifiStateMachine extends StateMachine { if (mP2pConnected.get()) break; if (message.arg1 == mPeriodicScanToken && mWifiConfigStore.getConfiguredNetworks().size() == 0) { sendMessage(CMD_START_SCAN, UNKNOWN_SCAN_SOURCE); sendMessage(CMD_START_SCAN, UNKNOWN_SCAN_SOURCE, 0, (WorkSource) null); sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN, ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs); } Loading Loading
services/java/com/android/server/wifi/WifiService.java +13 −2 Original line number Diff line number Diff line Loading @@ -303,10 +303,15 @@ public final class WifiService extends IWifiManager.Stub { /** * see {@link android.net.wifi.WifiManager#startScan()} * * <p>If workSource is null, all blame is given to the calling uid. */ public void startScan() { public void startScan(WorkSource workSource) { enforceChangePermission(); mWifiStateMachine.startScan(Binder.getCallingUid()); if (workSource != null) { enforceWorkSourcePermission(); } mWifiStateMachine.startScan(Binder.getCallingUid(), workSource); } private void enforceAccessPermission() { Loading @@ -320,6 +325,12 @@ public final class WifiService extends IWifiManager.Stub { } private void enforceWorkSourcePermission() { mContext.enforceCallingPermission(android.Manifest.permission.UPDATE_DEVICE_STATS, "WifiService"); } private void enforceMulticastChangePermission() { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, Loading
wifi/java/android/net/wifi/IWifiManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ interface IWifiManager boolean pingSupplicant(); void startScan(); void startScan(in WorkSource ws); List<ScanResult> getScanResults(String callingPackage); Loading
wifi/java/android/net/wifi/WifiManager.java +12 −1 Original line number Diff line number Diff line Loading @@ -759,7 +759,18 @@ public class WifiManager { */ public boolean startScan() { try { mService.startScan(); final WorkSource workSource = null; mService.startScan(workSource); return true; } catch (RemoteException e) { return false; } } /** @hide */ public boolean startScan(WorkSource workSource) { try { mService.startScan(workSource); return true; } catch (RemoteException e) { return false; Loading
wifi/java/android/net/wifi/WifiStateMachine.java +18 −11 Original line number Diff line number Diff line Loading @@ -607,7 +607,8 @@ public class WifiStateMachine extends StateMachine { new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { startScan(UNKNOWN_SCAN_SOURCE); final WorkSource workSource = null; startScan(UNKNOWN_SCAN_SOURCE, workSource); } }, new IntentFilter(ACTION_START_SCAN)); Loading Loading @@ -725,15 +726,21 @@ public class WifiStateMachine extends StateMachine { } /** * TODO: doc * Initiate a wifi scan. If workSource is not null, blame is given to it, * otherwise blame is given to callingUid. * * @param callingUid The uid initiating the wifi scan. Blame will be given * here unless workSource is specified. * @param workSource If not null, blame is given to workSource. */ public void startScan(int callingUid) { sendMessage(CMD_START_SCAN, callingUid); public void startScan(int callingUid, WorkSource workSource) { sendMessage(CMD_START_SCAN, callingUid, 0, workSource); } private void noteScanStart(int callingUid) { if (mScanWorkSource == null && callingUid != UNKNOWN_SCAN_SOURCE) { mScanWorkSource = new WorkSource(callingUid); // If workSource is not null, blame is given to it, otherwise blame is given to callingUid. private void noteScanStart(int callingUid, WorkSource workSource) { if (mScanWorkSource == null && (callingUid != UNKNOWN_SCAN_SOURCE || workSource != null)) { mScanWorkSource = workSource != null ? workSource : new WorkSource(callingUid); try { mBatteryStats.noteWifiScanStartedFromSource(mScanWorkSource); } catch (RemoteException e) { Loading Loading @@ -2502,7 +2509,7 @@ public class WifiStateMachine extends StateMachine { public boolean processMessage(Message message) { switch(message.what) { case CMD_START_SCAN: noteScanStart(message.arg1); noteScanStart(message.arg1, (WorkSource) message.obj); startScanNative(WifiNative.SCAN_WITH_CONNECTION_SETUP); break; case CMD_SET_COUNTRY_CODE: Loading Loading @@ -2788,7 +2795,7 @@ public class WifiStateMachine extends StateMachine { // Handle scan. All the connection related commands are // handled only in ConnectModeState case CMD_START_SCAN: noteScanStart(message.arg1); noteScanStart(message.arg1, (WorkSource) message.obj); startScanNative(WifiNative.SCAN_WITHOUT_CONNECTION_SETUP); break; default: Loading Loading @@ -3054,7 +3061,7 @@ public class WifiStateMachine extends StateMachine { break; case CMD_START_SCAN: /* Do not attempt to connect when we are already connected */ noteScanStart(message.arg1); noteScanStart(message.arg1, (WorkSource) message.obj); startScanNative(WifiNative.SCAN_WITHOUT_CONNECTION_SETUP); break; /* Ignore connection to same network */ Loading Loading @@ -3372,7 +3379,7 @@ public class WifiStateMachine extends StateMachine { if (mP2pConnected.get()) break; if (message.arg1 == mPeriodicScanToken && mWifiConfigStore.getConfiguredNetworks().size() == 0) { sendMessage(CMD_START_SCAN, UNKNOWN_SCAN_SOURCE); sendMessage(CMD_START_SCAN, UNKNOWN_SCAN_SOURCE, 0, (WorkSource) null); sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN, ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs); } Loading