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

Commit a9a05c63 authored by Songchun Fan's avatar Songchun Fan
Browse files

[SettingsProvider] properly clear stale GenerationTracker for Settings.Config

Previously we never cleared outdated GenerationTracker and never fetched
a new one. Subsequent calls have always been IPC which is inefficient.
It doesn't affect in-SystemServer calls but it can be costly for
non-SystemServer clients.

BUG: 228619157
BUG: 277448672
Test: atest Settings_ConfigTest

Change-Id: I55b325a28ce7e0cfa69a6b1b6d70adea86bd87eb
parent 34660c5e
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3601,12 +3601,17 @@ public final class Settings {
                                    + " type:" + mUri.getPath()
                                    + " in package:" + cr.getPackageName());
                        }
                        // When a generation number changes, remove cached values, remove the old
                        // generation tracker and request a new one
                        generationTracker.destroy();
                        mGenerationTrackers.remove(prefix);
                        for (int i = mValues.size() - 1; i >= 0; i--) {
                            String key = mValues.keyAt(i);
                            if (key.startsWith(prefix)) {
                                mValues.remove(key);
                            }
                        }
                        needsGenerationTracker = true;
                    } else {
                        boolean prefixCached = mValues.containsKey(prefix);
                        if (prefixCached) {