mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
56d585567f
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...
118 lines
3.8 KiB
Java
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();
|
|
}
|
|
}
|
|
|