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

Commit 97ebbf87 authored by xulicheng's avatar xulicheng Committed by android-build-merger
Browse files

Merge "Ensure the generation is not changed before put value to cache" am:...

Merge "Ensure the generation is not changed before put value to cache" am: 11ae580f am: 489f2c2c am: 848cde3b
am: 4755a1a4

Change-Id: Ibe36de21f657b42ab8c7c27d53d0298d7275d09b
parents a3d92b12 4755a1a4
Loading
Loading
Loading
Loading
+16 −2
Original line number Original line Diff line number Diff line
@@ -1750,6 +1750,10 @@ public final class Settings {
            return true;
            return true;
        }
        }


        public int getCurrentGeneration() {
            return mCurrentGeneration;
        }

        private int readCurrentGeneration() {
        private int readCurrentGeneration() {
            try {
            try {
                return mArray.get(mIndex);
                return mArray.get(mIndex);
@@ -1858,6 +1862,7 @@ public final class Settings {


        public String getStringForUser(ContentResolver cr, String name, final int userHandle) {
        public String getStringForUser(ContentResolver cr, String name, final int userHandle) {
            final boolean isSelf = (userHandle == UserHandle.myUserId());
            final boolean isSelf = (userHandle == UserHandle.myUserId());
            int currentGeneration = -1;
            if (isSelf) {
            if (isSelf) {
                synchronized (NameValueCache.this) {
                synchronized (NameValueCache.this) {
                    if (mGenerationTracker != null) {
                    if (mGenerationTracker != null) {
@@ -1871,6 +1876,9 @@ public final class Settings {
                        } else if (mValues.containsKey(name)) {
                        } else if (mValues.containsKey(name)) {
                            return mValues.get(name);
                            return mValues.get(name);
                        }
                        }
                        if (mGenerationTracker != null) {
                            currentGeneration = mGenerationTracker.getCurrentGeneration();
                        }
                    }
                    }
                }
                }
            } else {
            } else {
@@ -1961,8 +1969,11 @@ public final class Settings {
                                        });
                                        });
                                    }
                                    }
                                }
                                }
                                if (mGenerationTracker != null && currentGeneration ==
                                        mGenerationTracker.getCurrentGeneration()) {
                                    mValues.put(name, value);
                                    mValues.put(name, value);
                                }
                                }
                            }
                        } else {
                        } else {
                            if (LOCAL_LOGV) Log.i(TAG, "call-query of user " + userHandle
                            if (LOCAL_LOGV) Log.i(TAG, "call-query of user " + userHandle
                                    + " by " + UserHandle.myUserId()
                                    + " by " + UserHandle.myUserId()
@@ -2002,8 +2013,11 @@ public final class Settings {


                String value = c.moveToNext() ? c.getString(0) : null;
                String value = c.moveToNext() ? c.getString(0) : null;
                synchronized (NameValueCache.this) {
                synchronized (NameValueCache.this) {
                    if(mGenerationTracker != null &&
                            currentGeneration == mGenerationTracker.getCurrentGeneration()) {
                        mValues.put(name, value);
                        mValues.put(name, value);
                    }
                    }
                }
                if (LOCAL_LOGV) {
                if (LOCAL_LOGV) {
                    Log.v(TAG, "cache miss [" + mUri.getLastPathSegment() + "]: " +
                    Log.v(TAG, "cache miss [" + mUri.getLastPathSegment() + "]: " +
                            name + " = " + (value == null ? "(null)" : value));
                            name + " = " + (value == null ? "(null)" : value));