mobile/android/base/tests/testPrefsObserver.java

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 package org.mozilla.gecko.tests;
     3 import org.json.JSONException;
     4 import org.json.JSONObject;
     5 import org.mozilla.gecko.Actions;
     7 /**
     8  * Basic test to check bounce-back from overscroll.
     9  * - Load the page and verify it draws
    10  * - Drag page downwards by 100 pixels into overscroll, verify it snaps back.
    11  * - Drag page rightwards by 100 pixels into overscroll, verify it snaps back.
    12  */
    13 public class testPrefsObserver extends BaseTest {
    14     private static final String PREF_TEST_PREF = "robocop.tests.dummy";
    15     private static final int PREF_OBSERVE_REQUEST_ID = 0x7357;
    16     private static final long PREF_TIMEOUT = 10000;
    18     private Actions.RepeatedEventExpecter mExpecter;
    20     public void setPref(boolean value) throws JSONException {
    21         mAsserter.dumpLog("Setting pref");
    23         JSONObject jsonPref = new JSONObject();
    24         jsonPref.put("name", PREF_TEST_PREF);
    25         jsonPref.put("type", "bool");
    26         jsonPref.put("value", value);
    27         mActions.sendGeckoEvent("Preferences:Set", jsonPref.toString());
    28     }
    30     public void waitAndCheckPref(boolean value) throws JSONException {
    31         mAsserter.dumpLog("Waiting to check pref");
    33         JSONObject data = null;
    34         int requestId = -1;
    36         while (requestId != PREF_OBSERVE_REQUEST_ID) {
    37             data = new JSONObject(mExpecter.blockForEventData());
    38             if (!mExpecter.eventReceived()) {
    39                 mAsserter.ok(false, "Checking pref is correct value", "Didn't receive pref");
    40                 return;
    41             }
    42             requestId = data.getInt("requestId");
    43         }
    45         JSONObject pref = data.getJSONArray("preferences").getJSONObject(0);
    46         mAsserter.is(pref.getString("name"), PREF_TEST_PREF, "Pref name is correct");
    47         mAsserter.is(pref.getString("type"), "bool", "Pref type is correct");
    48         mAsserter.is(pref.getBoolean("value"), value, "Pref value is correct");
    49     }
    51     public void verifyDisconnect() throws JSONException {
    52         mAsserter.dumpLog("Checking pref observer is removed");
    54         JSONObject pref = null;
    55         int requestId = -1;
    57         while (requestId != PREF_OBSERVE_REQUEST_ID) {
    58             String data = mExpecter.blockForEventDataWithTimeout(PREF_TIMEOUT);
    59             if (data == null) {
    60                 mAsserter.ok(true, "Verifying pref is unobserved", "Didn't get unobserved pref");
    61                 return;
    62             }
    63             pref = new JSONObject(data);
    64             requestId = pref.getInt("requestId");
    65         }
    67         mAsserter.ok(false, "Received unobserved pref change", "");
    68     }
    70     public void observePref() throws JSONException {
    71         mAsserter.dumpLog("Setting up pref observer");
    73         // Setup the pref observer
    74         mExpecter = mActions.expectGeckoEvent("Preferences:Data");
    75         mActions.sendPreferencesObserveEvent(PREF_OBSERVE_REQUEST_ID, new String[] { PREF_TEST_PREF });
    76     }
    78     public void removePrefObserver() {
    79         mAsserter.dumpLog("Removing pref observer");
    81         mActions.sendPreferencesRemoveObserversEvent(PREF_OBSERVE_REQUEST_ID);
    82     }
    84     public void testPrefsObserver() {
    85         blockForGeckoReady();
    87         try {
    88             setPref(false);
    89             observePref();
    90             waitAndCheckPref(false);
    92             setPref(true);
    93             waitAndCheckPref(true);
    95             removePrefObserver();
    96             setPref(false);
    97             verifyDisconnect();
    98         } catch (Exception ex) {
    99             mAsserter.ok(false, "exception in testPrefsObserver", ex.toString());
   100         } finally {
   101             // Make sure we remove the observer - if it's already removed, this
   102             // will do nothing.
   103             removePrefObserver();
   104         }
   105         mExpecter.unregisterListener();
   106     }
   107 }

mercurial