Files
tubestation/mobile/android/tests/browser/robocop/testStumblerSetting.java

91 lines
3.6 KiB
Java

/* This Source Code Form is subject to the terms of the Mozilla Public
* * License, v. 2.0. If a copy of the MPL was not distributed with this
* * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.tests;
import org.mozilla.gecko.AppConstants;
import org.mozilla.gecko.preferences.GeckoPreferences;
import org.mozilla.mozstumbler.service.AppGlobals;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import com.jayway.android.robotium.solo.Condition;
/*
* This test enables (checkbox checked) the Fennec setting to contribute to MLS, then waits for
* a response Intent from the stumbler service to confirm it has started. Then, it disables the
* service in the setting, and waits for confirmation that the servie has stopped.
*/
public class testStumblerSetting extends BaseTest {
boolean mIsEnabled;
public void testStumblerSetting() {
if (!AppConstants.MOZ_STUMBLER_BUILD_TIME_ENABLED) {
mAsserter.info("Checking stumbler build config.", "Skipping test as Stumbler is not enabled in this build.");
return;
}
blockForGeckoReady();
selectMenuItem(mStringHelper.SETTINGS_LABEL);
mAsserter.ok(mSolo.waitForText(mStringHelper.SETTINGS_LABEL),
"The Settings menu did not load", mStringHelper.SETTINGS_LABEL);
String section = "^" + mStringHelper.MOZILLA_SECTION_LABEL + "$";
waitForEnabledText(section);
mSolo.clickOnText(section);
String itemTitle = "^" + mStringHelper.LOCATION_SERVICES_LABEL + "$";
boolean foundText = waitForPreferencesText(itemTitle);
mAsserter.ok(foundText, "Waiting for settings item " + itemTitle + " in section " + section,
"The " + itemTitle + " option is present in section " + section);
BroadcastReceiver enabledDisabledReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(AppGlobals.ACTION_TEST_SETTING_ENABLED)) {
mIsEnabled = true;
} else {
mIsEnabled = false;
}
}
};
Context context = getInstrumentation().getTargetContext();
IntentFilter intentFilter = new IntentFilter(AppGlobals.ACTION_TEST_SETTING_ENABLED);
intentFilter.addAction(AppGlobals.ACTION_TEST_SETTING_DISABLED);
context.registerReceiver(enabledDisabledReceiver, intentFilter);
boolean checked = mSolo.isCheckBoxChecked(itemTitle);
try {
mAsserter.ok(!checked, "Checking stumbler setting is unchecked.", "Unchecked as expected.");
waitForEnabledText(itemTitle);
mSolo.clickOnText(itemTitle);
mSolo.waitForCondition(new Condition() {
@Override
public boolean isSatisfied() {
return mIsEnabled;
}
}, 15000);
mAsserter.ok(mIsEnabled, "Checking if stumbler became enabled.", "Stumbler is enabled.");
mSolo.clickOnText(itemTitle);
mSolo.waitForCondition(new Condition() {
@Override
public boolean isSatisfied() {
return !mIsEnabled;
}
}, 15000);
mAsserter.ok(!mIsEnabled, "Checking if stumbler became disabled.", "Stumbler is disabled.");
} finally {
context.unregisterReceiver(enabledDisabledReceiver);
}
}
}