Loading services/core/java/com/android/server/LocationManagerService.java +21 −12 Original line number Original line Diff line number Diff line Loading @@ -305,11 +305,7 @@ public class LocationManagerService extends ILocationManager.Stub { public void onOpChanged(int op, String packageName) { public void onOpChanged(int op, String packageName) { // onOpChanged invoked on ui thread, move to our thread to reduce risk // onOpChanged invoked on ui thread, move to our thread to reduce risk // of blocking ui thread // of blocking ui thread mHandler.post(() -> { mHandler.post(() -> onAppOpChanged(packageName)); synchronized (mLock) { onAppOpChangedLocked(); } }); } } }); }); mPackageManager.addOnPermissionsChangeListener( mPackageManager.addOnPermissionsChangeListener( Loading Loading @@ -392,13 +388,26 @@ public class LocationManagerService extends ILocationManager.Stub { } } } } @GuardedBy("mLock") private void onAppOpChanged(String packageName) { private void onAppOpChangedLocked() { synchronized (mLock) { for (Receiver receiver : mReceivers.values()) { for (Receiver receiver : mReceivers.values()) { if (receiver.mCallerIdentity.mPackageName.equals(packageName)) { receiver.updateMonitoring(true); receiver.updateMonitoring(true); } } for (LocationProviderManager manager : mProviderManagers) { } applyRequirementsLocked(manager); HashSet<String> affectedProviders = new HashSet<>(mRecordsByProvider.size()); for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) { String provider = entry.getKey(); for (UpdateRecord record : entry.getValue()) { if (record.mReceiver.mCallerIdentity.mPackageName.equals(packageName)) { affectedProviders.add(provider); } } } for (String provider : affectedProviders) { applyRequirementsLocked(provider); } } } } } Loading Loading
services/core/java/com/android/server/LocationManagerService.java +21 −12 Original line number Original line Diff line number Diff line Loading @@ -305,11 +305,7 @@ public class LocationManagerService extends ILocationManager.Stub { public void onOpChanged(int op, String packageName) { public void onOpChanged(int op, String packageName) { // onOpChanged invoked on ui thread, move to our thread to reduce risk // onOpChanged invoked on ui thread, move to our thread to reduce risk // of blocking ui thread // of blocking ui thread mHandler.post(() -> { mHandler.post(() -> onAppOpChanged(packageName)); synchronized (mLock) { onAppOpChangedLocked(); } }); } } }); }); mPackageManager.addOnPermissionsChangeListener( mPackageManager.addOnPermissionsChangeListener( Loading Loading @@ -392,13 +388,26 @@ public class LocationManagerService extends ILocationManager.Stub { } } } } @GuardedBy("mLock") private void onAppOpChanged(String packageName) { private void onAppOpChangedLocked() { synchronized (mLock) { for (Receiver receiver : mReceivers.values()) { for (Receiver receiver : mReceivers.values()) { if (receiver.mCallerIdentity.mPackageName.equals(packageName)) { receiver.updateMonitoring(true); receiver.updateMonitoring(true); } } for (LocationProviderManager manager : mProviderManagers) { } applyRequirementsLocked(manager); HashSet<String> affectedProviders = new HashSet<>(mRecordsByProvider.size()); for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) { String provider = entry.getKey(); for (UpdateRecord record : entry.getValue()) { if (record.mReceiver.mCallerIdentity.mPackageName.equals(packageName)) { affectedProviders.add(provider); } } } for (String provider : affectedProviders) { applyRequirementsLocked(provider); } } } } } Loading