Merge "Fix ContentResolverTest Race Conditions" into froyo
diff --git a/tests/tests/content/src/android/content/cts/ContentResolverTest.java b/tests/tests/content/src/android/content/cts/ContentResolverTest.java
index f28b6f0..b866375 100644
--- a/tests/tests/content/src/android/content/cts/ContentResolverTest.java
+++ b/tests/tests/content/src/android/content/cts/ContentResolverTest.java
@@ -24,6 +24,7 @@
import dalvik.annotation.TestTargets;
import dalvik.annotation.ToBeFixed;
+import android.accounts.Account;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -34,7 +35,7 @@
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.test.AndroidTestCase;
-import android.accounts.Account;
+import android.view.animation.cts.DelayedCheck;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -627,7 +628,7 @@
"ContentResolver#unregisterContentObserver(ContentObserver) when the input " +
"params are null")
public void testRegisterContentObserver() {
- MockContentObserver mco = new MockContentObserver();
+ final MockContentObserver mco = new MockContentObserver();
mContentResolver.registerContentObserver(TABLE1_URI, true, mco);
assertFalse(mco.hadOnChanged());
@@ -636,8 +637,12 @@
values.put(COLUMN_KEY_NAME, "key10");
values.put(COLUMN_VALUE_NAME, 10);
mContentResolver.update(TABLE1_URI, values, null, null);
-
- assertTrue(mco.hadOnChanged());
+ new DelayedCheck() {
+ @Override
+ protected boolean check() {
+ return mco.hadOnChanged();
+ }
+ }.run();
mco.reset();
mContentResolver.unregisterContentObserver(mco);
@@ -677,14 +682,19 @@
)
@ToBeFixed(bug = "1695243", explanation = "should add @throws clause into javadoc of " +
"ContentResolver#notifyChange(Uri, ContentObserver) when uri is null")
- public void testNotifyChange1() throws InterruptedException {
- MockContentObserver mco = new MockContentObserver();
+ public void testNotifyChange1() {
+ final MockContentObserver mco = new MockContentObserver();
mContentResolver.registerContentObserver(TABLE1_URI, true, mco);
assertFalse(mco.hadOnChanged());
mContentResolver.notifyChange(TABLE1_URI, mco);
- assertTrue(mco.hadOnChanged());
+ new DelayedCheck() {
+ @Override
+ protected boolean check() {
+ return mco.hadOnChanged();
+ }
+ }.run();
mContentResolver.unregisterContentObserver(mco);
}
@@ -697,13 +707,18 @@
@ToBeFixed(bug = "1695243", explanation = "should add @throws clause into javadoc of " +
"ContentResolver#notifyChange(Uri, ContentObserver, boolean) when uri is null ")
public void testNotifyChange2() {
- MockContentObserver mco = new MockContentObserver();
+ final MockContentObserver mco = new MockContentObserver();
mContentResolver.registerContentObserver(TABLE1_URI, true, mco);
assertFalse(mco.hadOnChanged());
mContentResolver.notifyChange(TABLE1_URI, mco, false);
- assertTrue(mco.hadOnChanged());
+ new DelayedCheck() {
+ @Override
+ protected boolean check() {
+ return mco.hadOnChanged();
+ }
+ }.run();
mContentResolver.unregisterContentObserver(mco);
}
@@ -789,16 +804,16 @@
}
@Override
- public void onChange(boolean selfChange) {
+ public synchronized void onChange(boolean selfChange) {
super.onChange(selfChange);
mHadOnChanged = true;
}
- public boolean hadOnChanged() {
+ public synchronized boolean hadOnChanged() {
return mHadOnChanged;
}
- public void reset() {
+ public synchronized void reset() {
mHadOnChanged = false;
}
}