gecko-dev/mobile/android/base/tests/testPrefsObserver.java.in
Nathan Froyd 56d585567f Bug 906088 - part 6 - update tests to use the new API; r=kats
Fixed testPrefsObserver to use the correct requestId for unregistering observers.
Changed all tests to use th same hexadecimal constant, per Kats's feedback.  Asking
for actual review now.  Local robocop testing shows the failing tests on try now pass
locally, so I'm assuming I have fixed the issues...
2013-09-04 09:58:32 -04:00

118 lines
3.8 KiB
Java

#filter substitution
package @ANDROID_PACKAGE_NAME@.tests;
import @ANDROID_PACKAGE_NAME@.*;
import android.app.Instrumentation;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Basic test to check bounce-back from overscroll.
* - Load the page and verify it draws
* - Drag page downwards by 100 pixels into overscroll, verify it snaps back.
* - Drag page rightwards by 100 pixels into overscroll, verify it snaps back.
*/
public class testPrefsObserver extends BaseTest {
private static final String PREF_TEST_PREF = "robocop.tests.dummy";
private static final int PREF_OBSERVE_REQUEST_ID = 0x7357;
private static final long PREF_TIMEOUT = 10000;
private Actions.RepeatedEventExpecter mExpecter;
@Override
protected int getTestType() {
return TEST_MOCHITEST;
}
public void setPref(boolean value) throws JSONException {
mAsserter.dumpLog("Setting pref");
JSONObject jsonPref = new JSONObject();
jsonPref.put("name", PREF_TEST_PREF);
jsonPref.put("type", "bool");
jsonPref.put("value", value);
mActions.sendGeckoEvent("Preferences:Set", jsonPref.toString());
}
public void waitAndCheckPref(boolean value) throws JSONException {
mAsserter.dumpLog("Waiting to check pref");
JSONObject data = null;
int requestId = -1;
while (requestId != PREF_OBSERVE_REQUEST_ID) {
data = new JSONObject(mExpecter.blockForEventData());
if (!mExpecter.eventReceived()) {
mAsserter.ok(false, "Checking pref is correct value", "Didn't receive pref");
return;
}
requestId = data.getInt("requestId");
}
JSONObject pref = data.getJSONArray("preferences").getJSONObject(0);
mAsserter.is(pref.getString("name"), PREF_TEST_PREF, "Pref name is correct");
mAsserter.is(pref.getString("type"), "bool", "Pref type is correct");
mAsserter.is(pref.getBoolean("value"), value, "Pref value is correct");
}
public void verifyDisconnect() throws JSONException {
mAsserter.dumpLog("Checking pref observer is removed");
JSONObject pref = null;
int requestId = -1;
while (requestId != PREF_OBSERVE_REQUEST_ID) {
String data = mExpecter.blockForEventDataWithTimeout(PREF_TIMEOUT);
if (data == null) {
mAsserter.ok(true, "Verifying pref is unobserved", "Didn't get unobserved pref");
return;
}
pref = new JSONObject(data);
requestId = pref.getInt("requestId");
}
mAsserter.ok(false, "Received unobserved pref change", "");
}
public void observePref() throws JSONException {
mAsserter.dumpLog("Setting up pref observer");
// Setup the pref observer
mExpecter = mActions.expectGeckoEvent("Preferences:Data");
mActions.sendPreferencesObserveEvent(PREF_OBSERVE_REQUEST_ID, new String[] { PREF_TEST_PREF });
}
public void removePrefObserver() {
mAsserter.dumpLog("Removing pref observer");
mActions.sendPreferencesRemoveObserversEvent(PREF_OBSERVE_REQUEST_ID);
}
public void testPrefsObserver() {
blockForGeckoReady();
try {
setPref(false);
observePref();
waitAndCheckPref(false);
setPref(true);
waitAndCheckPref(true);
removePrefObserver();
setPref(false);
verifyDisconnect();
} catch (Exception ex) {
mAsserter.ok(false, "exception in testPrefsObserver", ex.toString());
} finally {
// Make sure we remove the observer - if it's already removed, this
// will do nothing.
removePrefObserver();
}
mExpecter.unregisterListener();
}
}