Merge "Use proper lock when accessing the generation registry" into nyc-dev

This commit is contained in:
Svetoslav Ganov
2016-07-06 22:10:08 +00:00
committed by Android (Google) Code Review

View File

@@ -1548,7 +1548,7 @@ public final class Settings {
private IContentProvider lazyGetProvider(ContentResolver cr) { private IContentProvider lazyGetProvider(ContentResolver cr) {
IContentProvider cp = null; IContentProvider cp = null;
synchronized (this) { synchronized (NameValueCache.this) {
cp = mContentProvider; cp = mContentProvider;
if (cp == null) { if (cp == null) {
cp = mContentProvider = cr.acquireProvider(mUri.getAuthority()); cp = mContentProvider = cr.acquireProvider(mUri.getAuthority());
@@ -1575,7 +1575,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());
if (isSelf) { if (isSelf) {
synchronized (this) { synchronized (NameValueCache.this) {
if (mGenerationTracker != null) { if (mGenerationTracker != null) {
if (mGenerationTracker.isGenerationChanged()) { if (mGenerationTracker.isGenerationChanged()) {
if (DEBUG) { if (DEBUG) {
@@ -1608,7 +1608,7 @@ public final class Settings {
args.putInt(CALL_METHOD_USER_KEY, userHandle); args.putInt(CALL_METHOD_USER_KEY, userHandle);
} }
boolean needsGenerationTracker = false; boolean needsGenerationTracker = false;
synchronized (this) { synchronized (NameValueCache.this) {
if (isSelf && mGenerationTracker == null) { if (isSelf && mGenerationTracker == null) {
needsGenerationTracker = true; needsGenerationTracker = true;
if (args == null) { if (args == null) {
@@ -1627,7 +1627,7 @@ public final class Settings {
String value = b.getString(Settings.NameValueTable.VALUE); String value = b.getString(Settings.NameValueTable.VALUE);
// Don't update our cache for reads of other users' data // Don't update our cache for reads of other users' data
if (isSelf) { if (isSelf) {
synchronized (this) { synchronized (NameValueCache.this) {
if (needsGenerationTracker) { if (needsGenerationTracker) {
MemoryIntArray array = b.getParcelable( MemoryIntArray array = b.getParcelable(
CALL_METHOD_TRACK_GENERATION_KEY); CALL_METHOD_TRACK_GENERATION_KEY);
@@ -1644,7 +1644,7 @@ public final class Settings {
} }
mGenerationTracker = new GenerationTracker(array, index, mGenerationTracker = new GenerationTracker(array, index,
generation, () -> { generation, () -> {
synchronized (this) { synchronized (NameValueCache.this) {
Log.e(TAG, "Error accessing generation" Log.e(TAG, "Error accessing generation"
+ " tracker - removing"); + " tracker - removing");
if (mGenerationTracker != null) { if (mGenerationTracker != null) {
@@ -1685,7 +1685,7 @@ public final class Settings {
} }
String value = c.moveToNext() ? c.getString(0) : null; String value = c.moveToNext() ? c.getString(0) : null;
synchronized (this) { synchronized (NameValueCache.this) {
mValues.put(name, value); mValues.put(name, value);
} }
if (LOCAL_LOGV) { if (LOCAL_LOGV) {