Loading services/core/java/com/android/server/TelephonyRegistry.java +40 −30 Original line number Diff line number Diff line Loading @@ -252,10 +252,10 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { private PreciseDataConnectionState[] mPreciseDataConnectionState; // Nothing here yet, but putting it here in case we want to add more in the future. static final int ENFORCE_COARSE_LOCATION_PERMISSION_MASK = 0; static final int ENFORCE_FINE_LOCATION_PERMISSION_MASK = // Starting in Q, almost all cellular location requires FINE location enforcement. // Prior to Q, cellular was available with COARSE location enforcement. Bits in this // list will be checked for COARSE on apps targeting P or earlier and FINE on Q or later. static final int ENFORCE_LOCATION_PERMISSION_MASK = PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_CELL_INFO; Loading Loading @@ -293,7 +293,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { + newDefaultSubId + " newDefaultPhoneId=" + newDefaultPhoneId); } //Due to possible risk condition,(notify call back using the new //Due to possible race condition,(notify call back using the new //defaultSubId comes before new defaultSubId update) we need to recall all //possible missed notify callback synchronized (mRecords) { Loading Loading @@ -715,11 +715,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION)) { try { if (DBG_LOC) log("listen: mCellLocation = " + mCellLocation[phoneId]); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellLocationChanged( new Bundle(mCellLocation[phoneId])); if (DBG_LOC) log("listen: mCellLocation= " + mCellLocation[phoneId]); if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { // null will be translated to empty CellLocation object in client. r.callback.onCellLocationChanged(mCellLocation[phoneId]); } } catch (RemoteException ex) { remove(r.binder); Loading Loading @@ -766,7 +766,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { try { if (DBG_LOC) log("listen: mCellInfo[" + phoneId + "] = " + mCellInfo.get(phoneId)); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellInfoChanged(mCellInfo.get(phoneId)); } } catch (RemoteException ex) { Loading Loading @@ -1267,7 +1268,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { for (Record r : mRecords) { if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_INFO) && idMatch(r.subId, subId, phoneId) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q))) { try { if (DBG_LOC) { log("notifyCellInfo: mCellInfo=" + cellInfo + " r=" + r); Loading Loading @@ -1578,7 +1580,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { for (Record r : mRecords) { if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION) && idMatch(r.subId, subId, phoneId) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q))) { try { if (DBG_LOC) { log("notifyCellLocation: cellLocation=" + cellLocation Loading Loading @@ -2247,19 +2250,13 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { .setCallingPid(Binder.getCallingPid()) .setCallingUid(Binder.getCallingUid()); boolean shouldCheckLocationPermissions = false; if ((events & ENFORCE_COARSE_LOCATION_PERMISSION_MASK) != 0) { locationQueryBuilder.setMinSdkVersionForCoarse(0); shouldCheckLocationPermissions = true; } if ((events & ENFORCE_FINE_LOCATION_PERMISSION_MASK) != 0) { if ((events & ENFORCE_LOCATION_PERMISSION_MASK) != 0) { // Everything that requires fine location started in Q. So far... locationQueryBuilder.setMinSdkVersionForFine(Build.VERSION_CODES.Q); shouldCheckLocationPermissions = true; } // If we're enforcing fine starting in Q, we also want to enforce coarse even for // older SDK versions. locationQueryBuilder.setMinSdkVersionForCoarse(0); if (shouldCheckLocationPermissions) { LocationAccessPolicy.LocationPermissionResult result = LocationAccessPolicy.checkLocationPermission( mContext, locationQueryBuilder.build()); Loading Loading @@ -2422,8 +2419,16 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { try { if (VDBG) log("checkPossibleMissNotify: onServiceStateChanged state=" + mServiceState[phoneId]); ServiceState ss = new ServiceState(mServiceState[phoneId]); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onServiceStateChanged(ss); } else if (checkCoarseLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onServiceStateChanged( new ServiceState(mServiceState[phoneId])); ss.sanitizeLocationInfo(false)); } else { r.callback.onServiceStateChanged( ss.sanitizeLocationInfo(true)); } } catch (RemoteException ex) { mRemoveList.add(r.binder); } Loading Loading @@ -2462,7 +2467,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("checkPossibleMissNotify: onCellInfoChanged[" + phoneId + "] = " + mCellInfo.get(phoneId)); } if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellInfoChanged(mCellInfo.get(phoneId)); } } catch (RemoteException ex) { Loading Loading @@ -2510,10 +2516,14 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION)) { try { if (DBG_LOC) log("checkPossibleMissNotify: onCellLocationChanged mCellLocation = " if (DBG_LOC) { log("checkPossibleMissNotify: onCellLocationChanged mCellLocation= " + mCellLocation[phoneId]); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellLocationChanged(new Bundle(mCellLocation[phoneId])); } if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { // null will be translated to empty CellLocation object in client. r.callback.onCellLocationChanged(mCellLocation[phoneId]); } } catch (RemoteException ex) { mRemoveList.add(r.binder); Loading services/core/java/com/android/server/connectivity/Vpn.java +1 −1 Original line number Diff line number Diff line Loading @@ -1330,7 +1330,7 @@ public class Vpn { */ public synchronized void onUserStopped() { // Switch off networking lockdown (if it was enabled) setLockdown(false); setVpnForcedLocked(false); mAlwaysOn = false; // Quit any active connections Loading services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2709,7 +2709,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub mContext, 0, Intent.createChooser(new Intent(Intent.ACTION_SET_WALLPAPER), mContext.getText(com.android.internal.R.string.chooser_wallpaper)), 0, null, new UserHandle(serviceUserId))); PendingIntent.FLAG_IMMUTABLE, null, new UserHandle(serviceUserId))); if (!mContext.bindServiceAsUser(intent, newConn, Context.BIND_AUTO_CREATE | Context.BIND_SHOWING_UI | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE Loading wifi/java/android/net/wifi/WifiManager.java +16 −7 Original line number Diff line number Diff line Loading @@ -775,19 +775,26 @@ public class WifiManager { /** * Broadcast intent action indicating that the configured networks changed. * This can be as a result of adding/updating/deleting a network. If * {@link #EXTRA_MULTIPLE_NETWORKS_CHANGED} is set to true the new configuration * can be retreived with the {@link #EXTRA_WIFI_CONFIGURATION} extra. If multiple * Wi-Fi configurations changed, {@link #EXTRA_WIFI_CONFIGURATION} will not be present. * This can be as a result of adding/updating/deleting a network. * <br /> * {@link #EXTRA_CHANGE_REASON} contains whether the configuration was added/changed/removed. * {@link #EXTRA_WIFI_CONFIGURATION} is never set starting in Android 11. * {@link #EXTRA_MULTIPLE_NETWORKS_CHANGED} is set for backwards compatibility reasons, but * its value is always true, even if only a single network changed. * <br /> * The {@link android.Manifest.permission#ACCESS_WIFI_STATE ACCESS_WIFI_STATE} permission is * required to receive this broadcast. * * @hide */ @SystemApi public static final String CONFIGURED_NETWORKS_CHANGED_ACTION = "android.net.wifi.CONFIGURED_NETWORKS_CHANGE"; /** * The lookup key for a (@link android.net.wifi.WifiConfiguration} object representing * The lookup key for a {@link android.net.wifi.WifiConfiguration} object representing * the changed Wi-Fi configuration when the {@link #CONFIGURED_NETWORKS_CHANGED_ACTION} * broadcast is sent. * Note: this extra is never set starting in Android 11. * @hide */ @SystemApi Loading @@ -795,14 +802,16 @@ public class WifiManager { /** * Multiple network configurations have changed. * @see #CONFIGURED_NETWORKS_CHANGED_ACTION * * Note: this extra is always true starting in Android 11. * @hide */ @SystemApi public static final String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges"; /** * The lookup key for an integer indicating the reason a Wi-Fi network configuration * has changed. Only present if {@link #EXTRA_MULTIPLE_NETWORKS_CHANGED} is {@code false} * has changed. One of {@link #CHANGE_REASON_ADDED}, {@link #CHANGE_REASON_REMOVED}, * {@link #CHANGE_REASON_CONFIG_CHANGE}. * * @see #CONFIGURED_NETWORKS_CHANGED_ACTION * @hide */ Loading Loading
services/core/java/com/android/server/TelephonyRegistry.java +40 −30 Original line number Diff line number Diff line Loading @@ -252,10 +252,10 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { private PreciseDataConnectionState[] mPreciseDataConnectionState; // Nothing here yet, but putting it here in case we want to add more in the future. static final int ENFORCE_COARSE_LOCATION_PERMISSION_MASK = 0; static final int ENFORCE_FINE_LOCATION_PERMISSION_MASK = // Starting in Q, almost all cellular location requires FINE location enforcement. // Prior to Q, cellular was available with COARSE location enforcement. Bits in this // list will be checked for COARSE on apps targeting P or earlier and FINE on Q or later. static final int ENFORCE_LOCATION_PERMISSION_MASK = PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_CELL_INFO; Loading Loading @@ -293,7 +293,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { + newDefaultSubId + " newDefaultPhoneId=" + newDefaultPhoneId); } //Due to possible risk condition,(notify call back using the new //Due to possible race condition,(notify call back using the new //defaultSubId comes before new defaultSubId update) we need to recall all //possible missed notify callback synchronized (mRecords) { Loading Loading @@ -715,11 +715,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION)) { try { if (DBG_LOC) log("listen: mCellLocation = " + mCellLocation[phoneId]); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellLocationChanged( new Bundle(mCellLocation[phoneId])); if (DBG_LOC) log("listen: mCellLocation= " + mCellLocation[phoneId]); if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { // null will be translated to empty CellLocation object in client. r.callback.onCellLocationChanged(mCellLocation[phoneId]); } } catch (RemoteException ex) { remove(r.binder); Loading Loading @@ -766,7 +766,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { try { if (DBG_LOC) log("listen: mCellInfo[" + phoneId + "] = " + mCellInfo.get(phoneId)); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellInfoChanged(mCellInfo.get(phoneId)); } } catch (RemoteException ex) { Loading Loading @@ -1267,7 +1268,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { for (Record r : mRecords) { if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_INFO) && idMatch(r.subId, subId, phoneId) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q))) { try { if (DBG_LOC) { log("notifyCellInfo: mCellInfo=" + cellInfo + " r=" + r); Loading Loading @@ -1578,7 +1580,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { for (Record r : mRecords) { if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION) && idMatch(r.subId, subId, phoneId) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q))) { try { if (DBG_LOC) { log("notifyCellLocation: cellLocation=" + cellLocation Loading Loading @@ -2247,19 +2250,13 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { .setCallingPid(Binder.getCallingPid()) .setCallingUid(Binder.getCallingUid()); boolean shouldCheckLocationPermissions = false; if ((events & ENFORCE_COARSE_LOCATION_PERMISSION_MASK) != 0) { locationQueryBuilder.setMinSdkVersionForCoarse(0); shouldCheckLocationPermissions = true; } if ((events & ENFORCE_FINE_LOCATION_PERMISSION_MASK) != 0) { if ((events & ENFORCE_LOCATION_PERMISSION_MASK) != 0) { // Everything that requires fine location started in Q. So far... locationQueryBuilder.setMinSdkVersionForFine(Build.VERSION_CODES.Q); shouldCheckLocationPermissions = true; } // If we're enforcing fine starting in Q, we also want to enforce coarse even for // older SDK versions. locationQueryBuilder.setMinSdkVersionForCoarse(0); if (shouldCheckLocationPermissions) { LocationAccessPolicy.LocationPermissionResult result = LocationAccessPolicy.checkLocationPermission( mContext, locationQueryBuilder.build()); Loading Loading @@ -2422,8 +2419,16 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { try { if (VDBG) log("checkPossibleMissNotify: onServiceStateChanged state=" + mServiceState[phoneId]); ServiceState ss = new ServiceState(mServiceState[phoneId]); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onServiceStateChanged(ss); } else if (checkCoarseLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onServiceStateChanged( new ServiceState(mServiceState[phoneId])); ss.sanitizeLocationInfo(false)); } else { r.callback.onServiceStateChanged( ss.sanitizeLocationInfo(true)); } } catch (RemoteException ex) { mRemoveList.add(r.binder); } Loading Loading @@ -2462,7 +2467,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("checkPossibleMissNotify: onCellInfoChanged[" + phoneId + "] = " + mCellInfo.get(phoneId)); } if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellInfoChanged(mCellInfo.get(phoneId)); } } catch (RemoteException ex) { Loading Loading @@ -2510,10 +2516,14 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION)) { try { if (DBG_LOC) log("checkPossibleMissNotify: onCellLocationChanged mCellLocation = " if (DBG_LOC) { log("checkPossibleMissNotify: onCellLocationChanged mCellLocation= " + mCellLocation[phoneId]); if (checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { r.callback.onCellLocationChanged(new Bundle(mCellLocation[phoneId])); } if (checkCoarseLocationAccess(r, Build.VERSION_CODES.BASE) && checkFineLocationAccess(r, Build.VERSION_CODES.Q)) { // null will be translated to empty CellLocation object in client. r.callback.onCellLocationChanged(mCellLocation[phoneId]); } } catch (RemoteException ex) { mRemoveList.add(r.binder); Loading
services/core/java/com/android/server/connectivity/Vpn.java +1 −1 Original line number Diff line number Diff line Loading @@ -1330,7 +1330,7 @@ public class Vpn { */ public synchronized void onUserStopped() { // Switch off networking lockdown (if it was enabled) setLockdown(false); setVpnForcedLocked(false); mAlwaysOn = false; // Quit any active connections Loading
services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2709,7 +2709,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub mContext, 0, Intent.createChooser(new Intent(Intent.ACTION_SET_WALLPAPER), mContext.getText(com.android.internal.R.string.chooser_wallpaper)), 0, null, new UserHandle(serviceUserId))); PendingIntent.FLAG_IMMUTABLE, null, new UserHandle(serviceUserId))); if (!mContext.bindServiceAsUser(intent, newConn, Context.BIND_AUTO_CREATE | Context.BIND_SHOWING_UI | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE Loading
wifi/java/android/net/wifi/WifiManager.java +16 −7 Original line number Diff line number Diff line Loading @@ -775,19 +775,26 @@ public class WifiManager { /** * Broadcast intent action indicating that the configured networks changed. * This can be as a result of adding/updating/deleting a network. If * {@link #EXTRA_MULTIPLE_NETWORKS_CHANGED} is set to true the new configuration * can be retreived with the {@link #EXTRA_WIFI_CONFIGURATION} extra. If multiple * Wi-Fi configurations changed, {@link #EXTRA_WIFI_CONFIGURATION} will not be present. * This can be as a result of adding/updating/deleting a network. * <br /> * {@link #EXTRA_CHANGE_REASON} contains whether the configuration was added/changed/removed. * {@link #EXTRA_WIFI_CONFIGURATION} is never set starting in Android 11. * {@link #EXTRA_MULTIPLE_NETWORKS_CHANGED} is set for backwards compatibility reasons, but * its value is always true, even if only a single network changed. * <br /> * The {@link android.Manifest.permission#ACCESS_WIFI_STATE ACCESS_WIFI_STATE} permission is * required to receive this broadcast. * * @hide */ @SystemApi public static final String CONFIGURED_NETWORKS_CHANGED_ACTION = "android.net.wifi.CONFIGURED_NETWORKS_CHANGE"; /** * The lookup key for a (@link android.net.wifi.WifiConfiguration} object representing * The lookup key for a {@link android.net.wifi.WifiConfiguration} object representing * the changed Wi-Fi configuration when the {@link #CONFIGURED_NETWORKS_CHANGED_ACTION} * broadcast is sent. * Note: this extra is never set starting in Android 11. * @hide */ @SystemApi Loading @@ -795,14 +802,16 @@ public class WifiManager { /** * Multiple network configurations have changed. * @see #CONFIGURED_NETWORKS_CHANGED_ACTION * * Note: this extra is always true starting in Android 11. * @hide */ @SystemApi public static final String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges"; /** * The lookup key for an integer indicating the reason a Wi-Fi network configuration * has changed. Only present if {@link #EXTRA_MULTIPLE_NETWORKS_CHANGED} is {@code false} * has changed. One of {@link #CHANGE_REASON_ADDED}, {@link #CHANGE_REASON_REMOVED}, * {@link #CHANGE_REASON_CONFIG_CHANGE}. * * @see #CONFIGURED_NETWORKS_CHANGED_ACTION * @hide */ Loading