Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7e3b214 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Reduce amount of appop work location does"

parents 5d52ce9b 387a2d01
Loading
Loading
Loading
Loading
+21 −12
Original line number Original line Diff line number Diff line
@@ -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(
@@ -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);
            }
        }
        }
    }
    }