Bug 888784 - Modify testFormHistory Fennec test to wait until FormHistory database is created. r?nalexander
MozReview-Commit-ID: Joysv4Qu9Li
--- 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");