Bug 888784 - Modify testFormHistory Fennec test to wait until FormHistory database is created. r?nalexander draft
authorMike Conley <mconley@mozilla.com>
Wed, 10 Jan 2018 17:17:31 -0500
changeset 723121 2efb0ecf250ff79f3b462fb73a066cdd0e956a71
parent 723120 93083f577f645a2c2921030be91e0e5471a80126
child 746781 584d341717cd5c5dc93188d70cfd14a555e9a61b
push id96341
push usermconley@mozilla.com
push dateMon, 22 Jan 2018 16:46:17 +0000
reviewersnalexander
bugs888784
milestone60.0a1
Bug 888784 - Modify testFormHistory Fennec test to wait until FormHistory database is created. r?nalexander MozReview-Commit-ID: Joysv4Qu9Li
mobile/android/chrome/content/browser.js
mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/OldBaseTest.java
mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testFormHistory.java
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -1685,17 +1685,21 @@ var BrowserApp = {
         break;
 
       case "Fonts:Reload":
         FontEnumerator.updateFontList();
         break;
 
       case "FormHistory:Init": {
         // Force creation/upgrade of formhistory.sqlite
-        FormHistory.count({});
+        FormHistory.count({}, {
+          handleCompletion() {
+            GlobalEventDispatcher.sendRequest({ type: "FormHistory:Ready" });
+          },
+        });
         GlobalEventDispatcher.unregisterListener(this, event);
         break;
       }
 
       case "FullScreen:Exit":
         browser.contentDocument.exitFullscreen();
         break;
 
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/OldBaseTest.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/OldBaseTest.java
@@ -9,16 +9,17 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.HashSet;
 
 import org.mozilla.gecko.Actions;
 import org.mozilla.gecko.Element;
+import org.mozilla.gecko.EventDispatcher;
 import org.mozilla.gecko.GeckoAppShell;
 import org.mozilla.gecko.GeckoProfile;
 import org.mozilla.gecko.GeckoThread;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.RobocopUtils;
 import org.mozilla.gecko.Tab;
 import org.mozilla.gecko.Tabs;
 import org.mozilla.gecko.toolbar.BrowserToolbar;
@@ -54,16 +55,17 @@ import com.robotium.solo.Timeout;
 abstract class OldBaseTest extends BaseRobocopTest {
     private static final int VERIFY_URL_TIMEOUT = 2000;
     private static final int MAX_WAIT_ENABLED_TEXT_MS = 15000;
     private static final int MAX_WAIT_HOME_PAGER_HIDDEN_MS = 15000;
     private static final int MAX_WAIT_VERIFY_PAGE_TITLE_MS = 15000;
     public static final int MAX_WAIT_MS = 4500;
     public static final int LONG_PRESS_TIME = 6000;
     private static final int GECKO_READY_WAIT_MS = 180000;
+    private static final int FORMHISTORY_READY_WAIT_MS = 180000;
 
     protected static final String URL_HTTP_PREFIX = "http://";
 
     public Device mDevice;
     protected DatabaseHelper mDatabaseHelper;
     protected int mScreenMidWidth;
     protected int mScreenMidHeight;
     private final HashSet<Integer> mKnownTabIDs = new HashSet<Integer>();
@@ -87,16 +89,28 @@ abstract class OldBaseTest extends BaseR
                 geckoReadyExpector.blockForEvent(GECKO_READY_WAIT_MS, true);
             }
             geckoReadyExpector.unregisterListener();
         } catch (Exception e) {
             mAsserter.dumpLog("Exception in blockForGeckoReady", e);
         }
     }
 
+    protected void blockForFormHistoryReady() {
+        try {
+            Actions.EventExpecter formHistoryReadyExpector =
+                    mActions.expectGlobalEvent(Actions.EventType.UI, "FormHistory:Ready");
+            EventDispatcher.getInstance().dispatch("FormHistory:Init", null);
+            formHistoryReadyExpector.blockForEvent(FORMHISTORY_READY_WAIT_MS, true);
+            formHistoryReadyExpector.unregisterListener();
+        } catch (Exception e) {
+            mAsserter.dumpLog("Exception in blockForFormHistoryReady", e);
+        }
+    }
+
     @Override
     public void setUp() throws Exception {
         super.setUp();
 
         mDevice = new Device();
         mDatabaseHelper = new DatabaseHelper(getActivity(), mAsserter);
 
         // Ensure Robocop tests have access to network, and are run with Display powered on.
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testFormHistory.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testFormHistory.java
@@ -23,18 +23,19 @@ import android.net.Uri;
 public class testFormHistory extends OldBaseTest {
     private static final String DB_NAME = "formhistory.sqlite";
 
     public void testFormHistory() {
         Context context = (Context)getActivity();
         ContentResolver cr = context.getContentResolver();
         ContentValues[] cvs = new ContentValues[1];
         cvs[0] = new ContentValues();
- 
+
         blockForGeckoReady();
+        blockForFormHistoryReady();
 
         Uri formHistoryUri;
         Uri insertUri;
         Uri expectedUri;
         int numUpdated;
         int numDeleted;
 
         cvs[0].put("fieldname", "fieldname");