diff --git a/tests/uitests/Android.mk b/tests/uitests/Android.mk
deleted file mode 100644
index b905088ff21..00000000000
--- a/tests/uitests/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := SettingsUITests
-LOCAL_COMPATIBILITY_SUITE := device-tests
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE_TAGS := tests
-LOCAL_JAVA_LIBRARIES := android.test.runner android.test.base
-LOCAL_STATIC_JAVA_LIBRARIES := \
- app-helpers-base \
- launcher-helper-lib \
- settings-helper \
- timeresult-helper-lib \
- ub-uiautomator \
- sysui-helper \
- google-sysui-helper \
- metrics-helper-lib \
- platform-test-annotations \
-
-#LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/tests/uitests/AndroidManifest.xml b/tests/uitests/AndroidManifest.xml
deleted file mode 100644
index 0e6e91e0d75..00000000000
--- a/tests/uitests/AndroidManifest.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/uitests/AndroidTest.xml b/tests/uitests/AndroidTest.xml
deleted file mode 100644
index 99bd76f4249..00000000000
--- a/tests/uitests/AndroidTest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/uitests/src/com/android/settings/functional/AboutPhoneSettingsTests.java b/tests/uitests/src/com/android/settings/functional/AboutPhoneSettingsTests.java
deleted file mode 100644
index 09814f4f5d4..00000000000
--- a/tests/uitests/src/com/android/settings/functional/AboutPhoneSettingsTests.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Intent;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.text.TextUtils;
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-
-/** Verifies basic functionality of the About Phone screen */
-public class AboutPhoneSettingsTests extends InstrumentationTestCase {
- private static final boolean LOCAL_LOGV = false;
- private static final String TAG = "AboutPhoneSettingsTest";
- private static final int TIMEOUT = 2000;
- private static final String SETTINGS_PACKAGE = "com.android.settings";
-
- private UiDevice mDevice;
-
- // TODO: retrieve using name/ids from com.android.settings package
- private static final String[] sResourceTexts = {
- "Status",
- "Legal information",
- "Regulatory labels",
- "Model",
- "Android version",
- "Android security patch level",
- "Baseband version",
- "Kernel version",
- "Build number"
- };
-
- private static final String[] sClickableResourceTexts = {
- "Status", "Legal information", "Regulatory labels",
- };
-
- @Override
- public void setUp() throws Exception {
- if (LOCAL_LOGV) {
- Log.d(TAG, "-------");
- }
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("Failed to freeze device orientaion", e);
- }
-
- // make sure we are in a clean state before starting the test
- mDevice.pressHome();
- Thread.sleep(TIMEOUT * 2);
- launchAboutPhoneSettings(Settings.ACTION_DEVICE_INFO_SETTINGS);
- // TODO: make sure we are always at the top of the app
- // currently this will fail if the user has navigated into submenus
- UiObject2 view =
- mDevice.wait(
- Until.findObject(By.res(SETTINGS_PACKAGE + ":id/main_content")), TIMEOUT);
- assertNotNull("Could not find main About Phone screen", view);
- view.scroll(Direction.UP, 1.0f);
- }
-
- @Override
- protected void tearDown() throws Exception {
- // Adding an extra pressBack so we exit About Phone Settings
- // and finish the test cleanly
- mDevice.pressBack();
- mDevice.pressHome(); // finish settings activity
- mDevice.waitForIdle(TIMEOUT * 2); // give UI time to finish animating
- super.tearDown();
- }
-
- private void launchAboutPhoneSettings(String aboutSetting) throws Exception {
- Intent aboutIntent = new Intent(aboutSetting);
- aboutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- getInstrumentation().getContext().startActivity(aboutIntent);
- }
-
- /**
- * Callable actions that can be taken when a UIObject2 is found
- *
- * @param device The current UiDevice
- * @param item The UiObject2 that was found and can be acted on
- *
- * @return {@code true} if the call was successful, and {@code false} otherwise
- */
- public interface UIObject2Callback {
- boolean call(UiDevice device, UiObject2 item) throws Exception;
- }
-
- /**
- * Clicks the given item and then presses the Back button
- *
- *
Used to test whether a given UiObject2 can be successfully clicked.
- * Presses Back to restore state to the previous screen.
- *
- * @param device The device that can be used to press Back
- * @param item The item to click
- *
- * @return {@code true} if clicking the item succeeded, and {@code false} otherwise
- */
- public class UiObject2Clicker implements UIObject2Callback {
- public boolean call(UiDevice device, UiObject2 item) throws Exception {
- item.click();
- Thread.sleep(TIMEOUT * 2); // give UI time to finish animating
- boolean pressWorked = device.pressBack();
- Thread.sleep(TIMEOUT * 2);
- return pressWorked;
- }
- }
-
- /**
- * Removes items found in the view and optionally takes some action.
- *
- * @param device The current UiDevice
- * @param itemsLeftToFind The items to search for in the current view
- * @param action Action to call on each item that is found; pass {@code null} to take no action
- */
- private void removeItemsAndTakeAction(
- UiDevice device, ArrayList itemsLeftToFind, UIObject2Callback action) throws Exception {
- for (Iterator iterator = itemsLeftToFind.iterator(); iterator.hasNext(); ) {
- String itemText = iterator.next();
- UiObject2 item = device.wait(Until.findObject(By.text(itemText)), TIMEOUT);
- if (item != null) {
- if (LOCAL_LOGV) {
- Log.d(TAG, itemText + " is present");
- }
- iterator.remove();
- if (action != null) {
- boolean success = action.call(device, item);
- assertTrue("Calling action after " + itemText + " did not work", success);
- }
- } else {
- if (LOCAL_LOGV) {
- Log.d(TAG, "Could not find " + itemText);
- }
- }
- }
- }
-
- /**
- * Searches for UI elements in the current view and optionally takes some action.
- *
- *
Will scroll down the screen until it has found all elements or reached the bottom.
- * This allows elements to be found and acted on even if they change order.
- *
- * @param device The current UiDevice
- * @param itemsToFind The items to search for in the current view
- * @param action Action to call on each item that is found; pass {@code null} to take no action
- */
- public void searchForItemsAndTakeAction(UiDevice device, String[] itemsToFind, UIObject2Callback action)
- throws Exception {
-
- ArrayList itemsLeftToFind = new ArrayList(Arrays.asList(itemsToFind));
- assertFalse(
- "There must be at least one item to search for on the screen!",
- itemsLeftToFind.isEmpty());
-
- if (LOCAL_LOGV) {
- Log.d(TAG, "items: " + TextUtils.join(", ", itemsLeftToFind));
- }
- boolean canScrollDown = true;
- while (canScrollDown && !itemsLeftToFind.isEmpty()) {
- removeItemsAndTakeAction(device, itemsLeftToFind, action);
-
- // when we've finished searching the current view, scroll down
- UiObject2 view =
- device.wait(
- Until.findObject(By.res(SETTINGS_PACKAGE + ":id/main_content")),
- TIMEOUT * 2);
- if (view != null) {
- canScrollDown = view.scroll(Direction.DOWN, 1.0f);
- } else {
- canScrollDown = false;
- }
- }
- // check the last items once we have reached the bottom of the view
- removeItemsAndTakeAction(device, itemsLeftToFind, action);
-
- assertTrue(
- "The following items were not found on the screen: "
- + TextUtils.join(", ", itemsLeftToFind),
- itemsLeftToFind.isEmpty());
- }
-
- @MediumTest // UI interaction
- public void testAllMenuEntriesExist() throws Exception {
- searchForItemsAndTakeAction(mDevice, sResourceTexts, null);
- }
-
- // Suppressing this test as it might be causing other test failures
- // Will verify that this test is the cause before proceeding with solution
- @Suppress
- @MediumTest // UI interaction
- public void testClickableEntriesCanBeClicked() throws Exception {
- searchForItemsAndTakeAction(mDevice, sClickableResourceTexts, new UiObject2Clicker());
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/AccessibilitySettingsTests.java b/tests/uitests/src/com/android/settings/functional/AccessibilitySettingsTests.java
deleted file mode 100644
index f5896191075..00000000000
--- a/tests/uitests/src/com/android/settings/functional/AccessibilitySettingsTests.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Context;
-import android.net.wifi.WifiManager;
-import android.os.RemoteException;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.support.test.metricshelper.MetricsAsserts;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.SettingsHelper;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-
-import android.metrics.MetricsReader;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-
-public class AccessibilitySettingsTests extends InstrumentationTestCase {
-
- private static final String SETTINGS_PACKAGE = "com.android.settings";
- private static final int TIMEOUT = 2000;
- private UiDevice mDevice;
- private MetricsReader mMetricsReader;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- mMetricsReader = new MetricsReader();
- // Clear out old logs
- mMetricsReader.checkpoint();
- }
-
- @Override
- protected void tearDown() throws Exception {
- // Need to finish settings activity
- mDevice.pressBack();
- mDevice.pressHome();
- mDevice.waitForIdle();
- super.tearDown();
- }
-
- @Presubmit
- @MediumTest
- public void testHighContrastTextOn() throws Exception {
- verifyAccessibilitySettingOnOrOff("High contrast text",
- Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, 0, 1);
- }
-
- @Presubmit
- @MediumTest
- public void testHighContrastTextOff() throws Exception {
- verifyAccessibilitySettingOnOrOff("High contrast text",
- Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, 1, 0);
- }
-
- @Presubmit
- @MediumTest
- public void testPowerButtonEndsCallOn() throws Exception {
- verifyAccessibilitySettingOnOrOff("Power button ends call",
- Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, 1, 2);
- }
-
- @Presubmit
- @MediumTest
- public void testPowerButtonEndsCallOff() throws Exception {
- verifyAccessibilitySettingOnOrOff("Power button ends call",
- Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, 2, 1);
- }
-
- /* Suppressing these four tests. The settings don't play
- * nice with Settings.System.putInt or Settings.Secure.putInt.
- * Need further clarification. Filed bug b/27792029
- */
- @Suppress
- @MediumTest
- public void testAutoRotateScreenOn() throws Exception {
- verifyAccessibilitySettingOnOrOff("Auto-rotate screen",
- Settings.System.ACCELEROMETER_ROTATION, 0, 1);
- }
-
- @Suppress
- @MediumTest
- public void testAutoRotateScreenOff() throws Exception {
- verifyAccessibilitySettingOnOrOff("Auto-rotate screen",
- Settings.System.ACCELEROMETER_ROTATION, 1, 0);
- }
-
- @Suppress
- @MediumTest
- public void testMonoAudioOn() throws Exception {
- verifyAccessibilitySettingOnOrOff("Mono audio",
- Settings.System.MASTER_MONO, 0, 1);
- }
-
- @Suppress
- @MediumTest
- public void testMonoAudioOff() throws Exception {
- verifyAccessibilitySettingOnOrOff("Mono audio",
- Settings.System.MASTER_MONO, 1, 0);
- }
-
- @Presubmit
- @MediumTest
- public void testLargeMousePointerOn() throws Exception {
- verifyAccessibilitySettingOnOrOff("Large mouse pointer",
- Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 0, 1);
- }
-
- @Presubmit
- @MediumTest
- public void testLargeMousePointerOff() throws Exception {
- verifyAccessibilitySettingOnOrOff("Large mouse pointer",
- Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 1, 0);
- }
-
- @Presubmit
- @MediumTest
- public void testColorCorrection() throws Exception {
- verifySettingToggleAfterScreenLoad("Color correction",
- Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED);
- MetricsAsserts.assertHasVisibilityLog("Missing color correction log",
- mMetricsReader, MetricsEvent.ACCESSIBILITY_TOGGLE_DALTONIZER, true);
- }
-
- // Suppressing this test, since UiAutomator + talkback don't play nice
- @Suppress
- @MediumTest
- public void testTalkback() throws Exception {
- verifySettingToggleAfterScreenLoad("TalkBack",
- Settings.Secure.ACCESSIBILITY_ENABLED);
- }
-
- @Presubmit
- @MediumTest
- public void testCaptions() throws Exception {
- verifySettingToggleAfterScreenLoad("Captions",
- Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED);
- MetricsAsserts.assertHasVisibilityLog("Missing captions log",
- mMetricsReader, MetricsEvent.ACCESSIBILITY_CAPTION_PROPERTIES, true);
- }
-
- @Presubmit
- @MediumTest
- public void testMagnificationGesture() throws Exception {
- verifySettingToggleAfterScreenLoad("Magnification", "Magnify with triple-tap",
- Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
- MetricsAsserts.assertHasVisibilityLog("Missing magnification log",
- mMetricsReader, MetricsEvent.ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION, true);
- }
-
- @MediumTest
- public void testClickAfterPointerStopsMoving() throws Exception {
- verifySettingToggleAfterScreenLoad("Click after pointer stops moving",
- Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED);
- }
-
- @MediumTest
- public void testAccessibilitySettingsLoadLog() throws Exception {
- launchAccessibilitySettings();
- MetricsAsserts.assertHasVisibilityLog("Missing accessibility settings load log",
- mMetricsReader, MetricsEvent.ACCESSIBILITY, true);
- }
-
- public void launchAccessibilitySettings() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_ACCESSIBILITY_SETTINGS);
- }
-
- private void verifyAccessibilitySettingOnOrOff(String settingText,
- String settingFlag, int initialFlagValue, int expectedFlagValue)
- throws Exception {
- Settings.Secure.putInt(getInstrumentation().getContext().getContentResolver(),
- settingFlag, initialFlagValue);
- launchAccessibilitySettings();
- UiObject2 settingsTitle = findItemOnScreen(settingText);
- settingsTitle.click();
- Thread.sleep(TIMEOUT);
- int settingValue = Settings.Secure
- .getInt(getInstrumentation().getContext().getContentResolver(), settingFlag);
- assertEquals(settingText + " not correctly set after toggle",
- expectedFlagValue, settingValue);
- }
-
- private void verifySettingToggleAfterScreenLoad(String settingText, String settingFlag)
- throws Exception {
- verifySettingToggleAfterScreenLoad(settingText, null, settingFlag);
- }
-
- private void verifySettingToggleAfterScreenLoad
- (String settingText, String subSetting, String settingFlag) throws Exception {
- // Load accessibility settings
- launchAccessibilitySettings();
- Settings.Secure.putInt(getInstrumentation().getContext().getContentResolver(),
- settingFlag, 0);
- Thread.sleep(TIMEOUT);
- // Tap on setting required
- UiObject2 settingTitle = findItemOnScreen(settingText);
- // Load screen
- settingTitle.click();
- Thread.sleep(TIMEOUT);
- if (subSetting != null) {
- UiObject2 subSettingObject = findItemOnScreen(subSetting);
- subSettingObject.click();
- Thread.sleep(TIMEOUT);
- }
- // Toggle value
- UiObject2 settingToggle = mDevice.wait(Until.findObject(By.text("Off")),
- TIMEOUT);
- settingToggle.click();
- dismissOpenDialog();
- Thread.sleep(TIMEOUT);
- // Assert new value
- int settingValue = Settings.Secure.
- getInt(getInstrumentation().getContext().getContentResolver(), settingFlag);
- assertEquals(settingText + " value not set correctly", 1, settingValue);
- // Toogle value
- settingToggle.click();
- dismissOpenDialog();
- mDevice.pressBack();
- Thread.sleep(TIMEOUT);
- // Assert reset to old value
- settingValue = Settings.Secure.
- getInt(getInstrumentation().getContext().getContentResolver(), settingFlag);
- assertEquals(settingText + " value not set correctly", 0, settingValue);
- }
-
- private UiObject2 findItemOnScreen(String item) throws Exception {
- int count = 0;
- UiObject2 settingsPanel = mDevice.wait(Until.findObject
- (By.res(SETTINGS_PACKAGE, "list")), TIMEOUT);
- while (settingsPanel.fling(Direction.UP) && count < 3) {
- count++;
- }
- count = 0;
- UiObject2 setting = null;
- while(count < 3 && setting == null) {
- setting = mDevice.wait(Until.findObject(By.text(item)), TIMEOUT);
- if (setting == null) {
- settingsPanel.scroll(Direction.DOWN, 1.0f);
- }
- count++;
- }
- return setting;
- }
-
- private void dismissOpenDialog() throws Exception {
- UiObject2 okButton = mDevice.wait(Until.findObject
- (By.res("android:id/button1")), TIMEOUT*2);
- if (okButton != null) {
- okButton.click();
- }
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/AppsSettingsTests.java b/tests/uitests/src/com/android/settings/functional/AppsSettingsTests.java
deleted file mode 100644
index 473d2f38d21..00000000000
--- a/tests/uitests/src/com/android/settings/functional/AppsSettingsTests.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Intent;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.ActivityHelper;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.text.TextUtils;
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-
-/** Verifies basic functionality of the About Phone screen */
-public class AppsSettingsTests extends InstrumentationTestCase {
- private static final boolean LOCAL_LOGV = false;
- private static final String SETTINGS_PACKAGE = "com.android.settings";
- private static final String TAG = "AboutPhoneSettingsTest";
- private static final int TIMEOUT = 2000;
- private ActivityHelper mActivityHelper = null;
-
- private UiDevice mDevice;
-
- private static final String[] sResourceTexts = {
- "Storage",
- "Data usage",
- "Permissions",
- "App notifications",
- "Open by default",
- "Battery",
- "Memory"
- };
-
- @Override
- public void setUp() throws Exception {
- if (LOCAL_LOGV) {
- Log.d(TAG, "-------");
- }
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- mActivityHelper = ActivityHelper.getInstance();
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("Failed to freeze device orientaion", e);
- }
-
- // make sure we are in a clean state before starting the test
- mDevice.pressHome();
- Thread.sleep(TIMEOUT * 2);
- launchAppsSettings();
- UiObject2 view =
- mDevice.wait(
- Until.findObject(By.text("All apps")), TIMEOUT);
- assertNotNull("Could not find Settings > Apps screen", view);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mDevice.pressBack();
- mDevice.pressHome(); // finish settings activity
- mDevice.waitForIdle(TIMEOUT * 2); // give UI time to finish animating
- super.tearDown();
- }
-
- @MediumTest
- public void testAppSettingsListForCalculator() {
- UiObject2 calculator = mDevice.wait(
- Until.findObject(By.text("Calculator")), TIMEOUT);
- calculator.click();
- for (String setting : sResourceTexts) {
- UiObject2 appSetting =
- mDevice.wait(
- Until.findObject(By.text(setting)), TIMEOUT);
- assertNotNull("Missing setting for Calculator: " + setting, appSetting);
- appSetting.scroll(Direction.DOWN, 10.0f);
- }
- }
-
- @MediumTest
- public void testDisablingAndEnablingSystemApp() throws Exception {
- launchAppsSettings();
- UiObject2 calculator = mDevice.wait(
- Until.findObject(By.text("Calculator")), TIMEOUT);
- calculator.click();
- mDevice.waitForIdle(TIMEOUT);
- UiObject2 appInfoList = mDevice.wait(
- Until.findObject(By.res(SETTINGS_PACKAGE, "list")), TIMEOUT);
- appInfoList.scroll(Direction.DOWN, 100.0f);
- UiObject2 disableButton = mDevice.wait(
- Until.findObject(By.text("DISABLE")), TIMEOUT);
- disableButton.click();
- mDevice.waitForIdle(TIMEOUT);
- // Click on "Disable App" on dialog.
- mDevice.wait(
- Until.findObject(By.text("DISABLE APP")), TIMEOUT).click();
- mDevice.waitForIdle(TIMEOUT);
- UiObject2 enableButton = mDevice.wait(
- Until.findObject(By.text("ENABLE")), TIMEOUT);
- assertNotNull("App not disabled successfully", enableButton);
- enableButton.click();
- mDevice.waitForIdle(TIMEOUT);
- disableButton = mDevice.wait(
- Until.findObject(By.text("DISABLE")), TIMEOUT);
- assertNotNull("App not enabled successfully", disableButton);
- }
-
- private void launchAppsSettings() throws Exception {
- Intent appsSettingsIntent = new
- Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
- mActivityHelper.launchIntent(appsSettingsIntent);
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/BluetoothNetworkSettingsTests.java b/tests/uitests/src/com/android/settings/functional/BluetoothNetworkSettingsTests.java
deleted file mode 100644
index ac008490141..00000000000
--- a/tests/uitests/src/com/android/settings/functional/BluetoothNetworkSettingsTests.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothManager;
-import android.content.Context;
-import android.content.Intent;
-import android.metrics.MetricsReader;
-import android.os.RemoteException;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.support.test.metricshelper.MetricsAsserts;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-
-public class BluetoothNetworkSettingsTests extends InstrumentationTestCase {
-
- private static final String SETTINGS_PACKAGE = "com.android.settings";
- private static final int TIMEOUT = 2000;
- private static final int LONG_TIMEOUT = 40000;
- private UiDevice mDevice;
- private MetricsReader mMetricsReader;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- mMetricsReader = new MetricsReader();
- // Clear out old logs
- mMetricsReader.checkpoint();
- }
-
- @Override
- protected void tearDown() throws Exception {
- mDevice.pressBack();
- mDevice.pressHome();
- mDevice.waitForIdle();
- super.tearDown();
- }
-
- @Presubmit
- @MediumTest
- public void testBluetoothEnabled() throws Exception {
- verifyBluetoothOnOrOff(true);
- MetricsAsserts.assertHasActionLog("missing bluetooth toggle log",
- mMetricsReader, MetricsEvent.ACTION_BLUETOOTH_TOGGLE);
- }
-
- @Presubmit
- @MediumTest
- public void testBluetoothDisabled() throws Exception {
- verifyBluetoothOnOrOff(false);
- MetricsAsserts.assertHasActionLog("missing bluetooth toggle log",
- mMetricsReader, MetricsEvent.ACTION_BLUETOOTH_TOGGLE);
- }
-
- @MediumTest
- public void testRenameOption() throws Exception {
- launchBluetoothSettings();
- verifyUiObjectClicked(By.text("Device name"), "Rename preference");
- verifyUiObjectClicked(By.text("CANCEL"), "CANCEL button");
-
- MetricsAsserts.assertHasActionLog("missing bluetooth rename device log",
- mMetricsReader, MetricsEvent.ACTION_BLUETOOTH_RENAME);
- MetricsAsserts.assertHasVisibilityLog("missing bluetooth rename dialog log",
- mMetricsReader, MetricsEvent.DIALOG_BLUETOOTH_RENAME, true);
- }
-
- @MediumTest
- public void testReceivedFilesOption() throws Exception {
- launchBluetoothSettings();
- verifyUiObjectClicked(By.text("Received files"), "Received files preference");
-
- MetricsAsserts.assertHasActionLog("missing bluetooth received files log",
- mMetricsReader, MetricsEvent.ACTION_BLUETOOTH_FILES);
- }
-
- @MediumTest
- public void testHelpFeedbackOverflowOption() throws Exception {
- launchBluetoothSettings();
-
- // Verify help & feedback
- assertNotNull("Help & feedback item not found under Bluetooth Settings",
- mDevice.wait(Until.findObject(By.desc("Help & feedback")), TIMEOUT));
- }
-
- public void launchBluetoothSettings() throws Exception {
- Intent btIntent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
- btIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- getInstrumentation().getContext().startActivity(btIntent);
- Thread.sleep(TIMEOUT * 2);
- }
-
- /**
- * Find the {@link UiObject2} by {@code itemSelector} and try to click it if possible.
- *
- * If not find, throw assertion error
- * @param itemSelector used to find the {@link UiObject2}
- * @param text the description of the {@link UiObject2}
- */
- private void verifyUiObjectClicked(BySelector itemSelector, String text) throws Exception {
- UiObject2 uiObject2 = mDevice.wait(Until.findObject(itemSelector), TIMEOUT);
- assertNotNull(text + "is not present in bluetooth settings page", uiObject2);
- uiObject2.click();
- }
-
- /**
- * Toggles the Bluetooth switch and verifies that the change is reflected in Settings
- *
- * @param verifyOn set to whether you want the setting turned On or Off
- */
- private void verifyBluetoothOnOrOff(boolean verifyOn) throws Exception {
- String switchText = "ON";
- BluetoothAdapter bluetoothAdapter = ((BluetoothManager) getInstrumentation().getContext()
- .getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter();
- if (verifyOn) {
- switchText = "OFF";
- bluetoothAdapter.disable();
- } else {
- bluetoothAdapter.enable();
- }
- launchBluetoothSettings();
- mDevice.wait(Until
- .findObject(By.res(SETTINGS_PACKAGE, "switch_widget").text(switchText)), TIMEOUT)
- .click();
- Thread.sleep(TIMEOUT);
- String bluetoothValue =
- Settings.Global.getString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.BLUETOOTH_ON);
- if (verifyOn) {
- assertEquals("1", bluetoothValue);
- } else {
- assertEquals("0", bluetoothValue);
- }
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/ConnectedDeviceTests.java b/tests/uitests/src/com/android/settings/functional/ConnectedDeviceTests.java
deleted file mode 100644
index e8d8bab574a..00000000000
--- a/tests/uitests/src/com/android/settings/functional/ConnectedDeviceTests.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Context;
-import android.content.Intent;
-import android.nfc.NfcAdapter;
-import android.nfc.NfcManager;
-import android.os.RemoteException;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class ConnectedDeviceTests {
-
- private static final String SETTINGS_PACKAGE = "com.android.settings";
- private static final int TIMEOUT = 2000;
- private UiDevice mDevice;
-
- @Before
- public void setUp() throws Exception {
- mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientation", e);
- }
- }
-
- @After
- public void tearDown() throws Exception {
- mDevice.pressBack();
- mDevice.pressHome();
- }
-
- // This NFC toggle test is set up this way since there's no way to set
- // the NFC flag to enabled or disabled without touching UI.
- // This way, we get coverage for whether or not the toggle button works.
- @Test
- public void testNFCToggle() throws Exception {
- NfcManager manager = (NfcManager) InstrumentationRegistry.getTargetContext()
- .getSystemService(Context.NFC_SERVICE);
- NfcAdapter nfcAdapter = manager.getDefaultAdapter();
- boolean nfcInitiallyEnabled = nfcAdapter.isEnabled();
- InstrumentationRegistry.getContext().startActivity(new Intent()
- .setClassName(
- SETTINGS_PACKAGE,
- "com.android.settings.Settings$ConnectedDeviceDashboardActivity"));
- UiObject2 nfcSetting = mDevice.wait(Until.findObject(By.text("NFC")), TIMEOUT);
- nfcSetting.click();
- Thread.sleep(TIMEOUT * 2);
- if (nfcInitiallyEnabled) {
- assertFalse("NFC wasn't disabled on toggle", nfcAdapter.isEnabled());
- nfcSetting.click();
- Thread.sleep(TIMEOUT * 2);
- assertTrue("NFC wasn't enabled on toggle", nfcAdapter.isEnabled());
- } else {
- assertTrue("NFC wasn't enabled on toggle", nfcAdapter.isEnabled());
- nfcSetting.click();
- Thread.sleep(TIMEOUT * 2);
- assertFalse("NFC wasn't disabled on toggle", nfcAdapter.isEnabled());
- }
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/DataUsageSettingsTests.java b/tests/uitests/src/com/android/settings/functional/DataUsageSettingsTests.java
deleted file mode 100644
index 860d6f6f6dd..00000000000
--- a/tests/uitests/src/com/android/settings/functional/DataUsageSettingsTests.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.SettingsHelper;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-
-public class DataUsageSettingsTests extends InstrumentationTestCase {
-
- private static final String SETTINGS_PACKAGE = "com.android.settings";
- private static final int TIMEOUT = 2000;
- private UiDevice mDevice;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- }
-
- @Override
- protected void tearDown() throws Exception {
- // Need to finish settings activity
- mDevice.pressBack();
- mDevice.pressHome();
- super.tearDown();
- }
-
- @MediumTest
- public void testElementsOnDataUsageScreen() throws Exception {
- launchDataUsageSettings();
- assertNotNull("Data usage element not found",
- mDevice.wait(Until.findObject(By.text("Usage")),
- TIMEOUT));
- assertNotNull("Data usage bar not found",
- mDevice.wait(Until.findObject(By.res(SETTINGS_PACKAGE,
- "color_bar")), TIMEOUT));
- assertNotNull("WiFi Data usage element not found",
- mDevice.wait(Until.findObject(By.text("Wi-Fi data usage")),
- TIMEOUT));
- assertNotNull("Network restrictions element not found",
- mDevice.wait(Until.findObject(By.text("Network restrictions")),
- TIMEOUT));
- }
-
- public void launchDataUsageSettings() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_SETTINGS);
- mDevice.wait(Until
- .findObject(By.text("Network & Internet")), TIMEOUT)
- .click();
- Thread.sleep(TIMEOUT * 2);
- assertNotNull("Network & internet screen not loaded", mDevice.wait(
- Until.findObject(By.text("Data usage")), TIMEOUT));
- mDevice.wait(Until
- .findObject(By.text("Data usage")), TIMEOUT)
- .click();
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/DisplaySettingsTest.java b/tests/uitests/src/com/android/settings/functional/DisplaySettingsTest.java
deleted file mode 100644
index 44bfbee4f1c..00000000000
--- a/tests/uitests/src/com/android/settings/functional/DisplaySettingsTest.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.ContentResolver;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.SettingsHelper;
-import android.system.helpers.SettingsHelper.SettingsType;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-
-import java.util.regex.Pattern;
-
-public class DisplaySettingsTest extends InstrumentationTestCase {
-
- private static final String PAGE = Settings.ACTION_DISPLAY_SETTINGS;
- private static final int TIMEOUT = 2000;
- private static final FontSetting FONT_SMALL = new FontSetting("Small", 0.85f);
- private static final FontSetting FONT_NORMAL = new FontSetting("Default", 1.00f);
- private static final FontSetting FONT_LARGE = new FontSetting("Large", 1.15f);
- private static final FontSetting FONT_HUGE = new FontSetting("Largest", 1.30f);
-
- private UiDevice mDevice;
- private ContentResolver mResolver;
- private SettingsHelper mHelper;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- mDevice.setOrientationNatural();
- mResolver = getInstrumentation().getContext().getContentResolver();
- mHelper = new SettingsHelper();
- }
-
- @Override
- public void tearDown() throws Exception {
- // reset settings we touched that may impact others
- Settings.System.putFloat(mResolver, Settings.System.FONT_SCALE, 1.00f);
- mDevice.waitForIdle();
- super.tearDown();
- }
-
- @Presubmit
- @MediumTest
- public void testAdaptiveBrightness() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- Thread.sleep(1000);
-
- assertTrue(mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE, "Adaptive brightness",
- Settings.System.SCREEN_BRIGHTNESS_MODE));
- assertTrue(mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE, "Adaptive brightness",
- Settings.System.SCREEN_BRIGHTNESS_MODE));
- }
-
-
- // blocked on b/27487224
- @MediumTest
- @Suppress
- public void testDaydreamToggle() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- clickMore();
- Pattern p = Pattern.compile("On|Off");
- mHelper.clickSetting("Screen saver");
- Thread.sleep(1000);
- try {
- assertTrue(mHelper.verifyToggleSetting(SettingsType.SECURE, PAGE, p,
- Settings.Secure.SCREENSAVER_ENABLED, false));
- assertTrue(mHelper.verifyToggleSetting(SettingsType.SECURE, PAGE, p,
- Settings.Secure.SCREENSAVER_ENABLED, false));
- } finally {
- mDevice.pressBack();
- }
- }
-
- @MediumTest
- public void testAccelRotation() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- clickMore();
- Thread.sleep(4000);
- int currentAccelSetting = Settings.System.getInt(
- mResolver, Settings.System.ACCELEROMETER_ROTATION);
- mHelper.clickSetting("Auto-rotate screen");
- int newAccelSetting = Settings.System.getInt(
- mResolver, Settings.System.ACCELEROMETER_ROTATION);
- assertTrue("Accelorometer setting unchanged after toggle", currentAccelSetting != newAccelSetting);
- mHelper.clickSetting("Auto-rotate screen");
- int revertedAccelSetting = Settings.System.getInt(
- mResolver, Settings.System.ACCELEROMETER_ROTATION);
- assertTrue("Accelorometer setting unchanged after toggle", revertedAccelSetting != newAccelSetting);
- }
-
- @MediumTest
- public void testDaydream() throws Exception {
- Settings.Secure.putInt(mResolver, Settings.Secure.SCREENSAVER_ENABLED, 1);
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- clickMore();
- mHelper.scrollVert(false);
- mDevice.wait(Until.findObject(By.text("Screen saver")), TIMEOUT).click();
- try {
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SECURE, PAGE,
- "Current screen saver", "Clock", Settings.Secure.SCREENSAVER_COMPONENTS,
- "com.google.android.deskclock/com.android.deskclock.Screensaver"));
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SECURE, PAGE,
- "Current screen saver", "Colors", Settings.Secure.SCREENSAVER_COMPONENTS,
- "com.android.dreams.basic/com.android.dreams.basic.Colors"));
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SECURE, PAGE,
- "Current screen saver", "Photos", Settings.Secure.SCREENSAVER_COMPONENTS,
- "com.google.android.apps.photos/com.google.android.apps.photos.daydream"
- + ".PhotosDreamService"));
- } finally {
- mDevice.pressBack();
- Thread.sleep(2000);
- }
- }
-
- @Presubmit
- @MediumTest
- public void testSleep15Seconds() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SYSTEM, PAGE,
- "Sleep", "15 seconds", Settings.System.SCREEN_OFF_TIMEOUT, "15000"));
- }
-
- @MediumTest
- public void testSleep30Seconds() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SYSTEM, PAGE,
- "Sleep", "30 seconds", Settings.System.SCREEN_OFF_TIMEOUT, "30000"));
- }
-
- @MediumTest
- public void testSleep1Minute() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SYSTEM, PAGE,
- "Sleep", "1 minute", Settings.System.SCREEN_OFF_TIMEOUT, "60000"));
- }
-
- @MediumTest
- public void testSleep2Minutes() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SYSTEM, PAGE,
- "Sleep", "2 minutes", Settings.System.SCREEN_OFF_TIMEOUT, "120000"));
- }
-
- @MediumTest
- public void testSleep5Minutes() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SYSTEM, PAGE,
- "Sleep", "5 minutes", Settings.System.SCREEN_OFF_TIMEOUT, "300000"));
- }
-
- @MediumTest
- public void testSleep10Minutes() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SYSTEM, PAGE,
- "Sleep", "10 minutes", Settings.System.SCREEN_OFF_TIMEOUT, "600000"));
- }
-
- @MediumTest
- public void testSleep30Minutes() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(true);
- assertTrue(mHelper.verifyRadioSetting(SettingsType.SYSTEM, PAGE,
- "Sleep", "30 minutes", Settings.System.SCREEN_OFF_TIMEOUT, "1800000"));
- }
-
- @Presubmit
- @MediumTest
- public void testFontSizeLarge() throws Exception {
- verifyFontSizeSetting(1.00f, FONT_LARGE);
- // Leaving the font size at large can make later tests fail, so reset it
- Settings.System.putFloat(mResolver, Settings.System.FONT_SCALE, 1.00f);
- // It takes a second for the new font size to be picked up
- Thread.sleep(2000);
- }
-
- @MediumTest
- public void testFontSizeDefault() throws Exception {
- verifyFontSizeSetting(1.15f, FONT_NORMAL);
- }
-
- @MediumTest
- public void testFontSizeLargest() throws Exception {
- verifyFontSizeSetting(1.00f, FONT_HUGE);
- // Leaving the font size at huge can make later tests fail, so reset it
- Settings.System.putFloat(mResolver, Settings.System.FONT_SCALE, 1.00f);
- // It takes a second for the new font size to be picked up
- Thread.sleep(2000);
- }
-
- @MediumTest
- public void testFontSizeSmall() throws Exception {
- verifyFontSizeSetting(1.00f, FONT_SMALL);
- }
-
- private void verifyFontSizeSetting(float resetValue, FontSetting setting)
- throws Exception {
- Settings.System.putFloat(mResolver, Settings.System.FONT_SCALE, resetValue);
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- clickMore();
- mHelper.clickSetting("Font size");
- try {
- mDevice.wait(Until.findObject(By.desc(setting.getName())), TIMEOUT).click();
- Thread.sleep(1000);
- float changedValue = Settings.System.getFloat(
- mResolver, Settings.System.FONT_SCALE);
- assertEquals(setting.getSize(), changedValue, 0.0001);
- } finally {
- // Make sure to back out of the font menu
- mDevice.pressBack();
- }
- }
-
- private void clickMore() throws InterruptedException {
- UiObject2 more = mDevice.wait(Until.findObject(By.text("Advanced")), TIMEOUT);
- if (more != null) {
- more.click();
- Thread.sleep(TIMEOUT);
- }
- }
-
- private static class FontSetting {
- private final String mSizeName;
- private final float mSizeVal;
-
- public FontSetting(String sizeName, float sizeVal) {
- mSizeName = sizeName;
- mSizeVal = sizeVal;
- }
-
- public String getName() {
- return mSizeName;
- }
-
- public float getSize() {
- return mSizeVal;
- }
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/HomepageDisplayTests.java b/tests/uitests/src/com/android/settings/functional/HomepageDisplayTests.java
deleted file mode 100644
index 6f4ec88c922..00000000000
--- a/tests/uitests/src/com/android/settings/functional/HomepageDisplayTests.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.SettingsHelper;
-
-import com.android.settings.functional.testutils.SettingsTestUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static com.android.settings.functional.testutils.SettingsTestUtils.SETTINGS_PACKAGE;
-import static com.android.settings.functional.testutils.SettingsTestUtils.TIMEOUT;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class HomepageDisplayTests {
-
- private static final String[] HOMEPAGE_ITEMS = {
- "Network & internet",
- "Connected devices",
- "Apps & notifications",
- "Battery",
- "Display",
- "Sound",
- "Storage",
- "Security & location",
- "Users & accounts",
- "Accessibility",
- "System",
- "Support & tips"
- };
-
- private UiDevice mDevice;
- private SettingsHelper mSettingsHelper;
-
- @Before
- public void setUp() throws Exception {
- mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
- mSettingsHelper = new SettingsHelper();
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- }
-
- @After
- public void tearDown() throws Exception {
- // Need to finish settings activity
- mDevice.pressHome();
- }
-
- @Presubmit
- @Test
- public void testHomepageCategory() throws Exception {
- // Launch Settings
- SettingsHelper.launchSettingsPage(
- InstrumentationRegistry.getContext(), Settings.ACTION_SETTINGS);
-
- // Scroll to top
- final UiObject2 view = mDevice.wait(
- Until.findObject(By.res(SETTINGS_PACKAGE, "main_content")),
- TIMEOUT);
- view.scroll(Direction.UP, 100f);
-
- // Inspect each item
- for (String item : HOMEPAGE_ITEMS) {
- SettingsTestUtils.assertTitleMatch(mDevice, item);
- }
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/LocationSettingsTests.java b/tests/uitests/src/com/android/settings/functional/LocationSettingsTests.java
deleted file mode 100644
index d417eb1c357..00000000000
--- a/tests/uitests/src/com/android/settings/functional/LocationSettingsTests.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.SettingsHelper;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-
-public class LocationSettingsTests extends InstrumentationTestCase {
-
- private static final String SETTINGS_PACKAGE = "com.android.settings";
- private static final int TIMEOUT = 2000;
- private UiDevice mDevice;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- }
-
- @Override
- protected void tearDown() throws Exception {
- mDevice.pressBack();
- mDevice.pressHome();
- super.tearDown();
- }
-
- @MediumTest
- public void testLoadingLocationSettings () throws Exception {
- // Load Security
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_SECURITY_SETTINGS);
-
- SettingsHelper helper = new SettingsHelper();
- helper.scrollVert(true);
- // Tap on location
- UiObject2 settingsPanel = mDevice.wait(Until.findObject
- (By.res(SETTINGS_PACKAGE, "main_content")), TIMEOUT);
- int count = 0;
- UiObject2 locationTitle = null;
- while(count < 6 && locationTitle == null) {
- locationTitle = mDevice.wait(Until.findObject(By.text("Location")), TIMEOUT);
- if (locationTitle == null) {
- settingsPanel.scroll(Direction.DOWN, 1.0f);
- }
- count++;
- }
- // Verify location settings loads.
- locationTitle.click();
- Thread.sleep(TIMEOUT);
- assertNotNull("Location screen has not loaded correctly",
- mDevice.wait(Until.findObject(By.text("Location services")), TIMEOUT));
- }
-
- @Presubmit
- @MediumTest
- public void testLocationSettingOn() throws Exception {
- verifyLocationSettingsOnOrOff(true);
- }
-
- @MediumTest
- public void testLocationSettingOff() throws Exception {
- verifyLocationSettingsOnOrOff(false);
- }
-
- @MediumTest
- public void testLocationDeviceOnlyMode() throws Exception {
- // Changing the value from default before testing the toggle to Device only mode
- Settings.Secure.putInt(getInstrumentation().getContext().getContentResolver(),
- Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
- dismissAlertDialogs();
- Thread.sleep(TIMEOUT);
- verifyLocationSettingsMode(Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
- }
-
- @MediumTest
- public void testLocationBatterySavingMode() throws Exception {
- Settings.Secure.putInt(getInstrumentation().getContext().getContentResolver(),
- Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
- Thread.sleep(TIMEOUT);
- verifyLocationSettingsMode(Settings.Secure.LOCATION_MODE_BATTERY_SAVING);
- }
-
- @MediumTest
- public void testLocationHighAccuracyMode() throws Exception {
- Settings.Secure.putInt(getInstrumentation().getContext().getContentResolver(),
- Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
- Thread.sleep(TIMEOUT);
- verifyLocationSettingsMode(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
- }
-
- @MediumTest
- public void testLocationSettingsElements() throws Exception {
- String[] textElements = {"Location", "Mode", "Recent location requests",
- "Location services"};
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- Thread.sleep(TIMEOUT);
- for (String element : textElements) {
- assertNotNull(element + " item not found under Location Settings",
- mDevice.wait(Until.findObject(By.text(element)), TIMEOUT));
- }
- }
-
- @MediumTest
- public void testLocationSettingsOverflowMenuElements() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- // Verify help & feedback
- assertNotNull("Help & feedback item not found under Location Settings",
- mDevice.wait(Until.findObject(By.desc("Help & feedback")), TIMEOUT));
- // Verify scanning
- assertNotNull("Scanning item not found under Location Settings",
- mDevice.wait(Until.findObject(By.text("Scanning")), TIMEOUT));
- }
-
- private void verifyLocationSettingsMode(int mode) throws Exception {
- int modeIntValue = 1;
- String textMode = "Device only";
- if (mode == Settings.Secure.LOCATION_MODE_HIGH_ACCURACY) {
- modeIntValue = 3;
- textMode = "High accuracy";
- }
- else if (mode == Settings.Secure.LOCATION_MODE_BATTERY_SAVING) {
- modeIntValue = 2;
- textMode = "Battery saving";
- }
- // Load location settings
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- // Tap on mode
- dismissAlertDialogs();
- // Load location settings
- mDevice.wait(Until.findObject(By.text("Mode")), TIMEOUT).click();
- Thread.sleep(TIMEOUT);
- assertNotNull("Location mode screen not loaded", mDevice.wait(Until.findObject
- (By.text("Location mode")), TIMEOUT));
- // Choose said mode
- mDevice.wait(Until.findObject(By.text(textMode)), TIMEOUT).click();
- Thread.sleep(TIMEOUT);
- dismissAlertDialogs();
- mDevice.wait(Until.findObject(By.desc("Navigate up")), TIMEOUT).click();
- Thread.sleep(TIMEOUT);
- if (mode == Settings.Secure.LOCATION_MODE_HIGH_ACCURACY ||
- mode == Settings.Secure.LOCATION_MODE_BATTERY_SAVING) {
- dismissAlertDialogs();
- }
- // get setting and verify value
- // Verify change of mode
- int locationSettingMode =
- Settings.Secure.getInt(getInstrumentation().getContext().getContentResolver(),
- Settings.Secure.LOCATION_MODE);
- assertEquals(mode + " value not set correctly for location.", modeIntValue,
- locationSettingMode);
- }
-
- private void verifyLocationSettingsOnOrOff(boolean verifyOn) throws Exception {
- // Set location flag
- if (verifyOn) {
- Settings.Secure.putInt(getInstrumentation().getContext().getContentResolver(),
- Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF);
- }
- else {
- Settings.Secure.putInt(getInstrumentation().getContext().getContentResolver(),
- Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
- }
- dismissAlertDialogs();
- // Load location settings
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- dismissAlertDialogs();
- // Toggle UI
- mDevice.wait(Until.findObject(By.res(SETTINGS_PACKAGE, "switch_widget")), TIMEOUT).click();
- dismissAlertDialogs();
- Thread.sleep(TIMEOUT);
- // Verify change in setting
- int locationEnabled = Settings.Secure.getInt(getInstrumentation()
- .getContext().getContentResolver(),
- Settings.Secure.LOCATION_MODE);
- if (verifyOn) {
- assertFalse("Location not enabled correctly", locationEnabled == 0);
- }
- else {
- assertEquals("Location not disabled correctly", 0, locationEnabled);
- }
- }
-
- // This method dismisses both alert dialogs that might popup and
- // interfere with the test. Since the order in which the dialog
- // shows up changes in no specific known way, we're checking for
- // both dialogs in any order for a robust test. Bug b/36233151
- // filed against Location team for specifications. This is a
- // workaround in the meantime to ensure coverage.
- private void dismissAlertDialogs() throws Exception {
- for (int count = 0; count < 2; count++) {
- UiObject2 agreeDialog = mDevice.wait(Until.findObject
- (By.text("Improve location accuracy?")), TIMEOUT);
- UiObject2 previousChoiceYesButton = mDevice.wait(Until.findObject
- (By.text("YES")), TIMEOUT);
- if (agreeDialog != null) {
- mDevice.wait(Until.findObject
- (By.text("AGREE")), TIMEOUT).click();
- Thread.sleep(TIMEOUT);
- assertNull("Improve location dialog not dismissed",
- mDevice.wait(Until.findObject
- (By.text("Improve location accuracy?")), TIMEOUT));
- }
- if (previousChoiceYesButton != null) {
- previousChoiceYesButton.click();
- // Short sleep to wait for the new screen
- Thread.sleep(TIMEOUT);
- }
- }
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/MoreWirelessSettingsTests.java b/tests/uitests/src/com/android/settings/functional/MoreWirelessSettingsTests.java
deleted file mode 100644
index 3349d2c3474..00000000000
--- a/tests/uitests/src/com/android/settings/functional/MoreWirelessSettingsTests.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.SettingsHelper;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-
-public class MoreWirelessSettingsTests extends InstrumentationTestCase {
-
- private static final String SETTINGS_PACKAGE = "com.android.settings";
- private static final int TIMEOUT = 2000;
- private UiDevice mDevice;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- }
-
- @Override
- protected void tearDown() throws Exception {
- mDevice.pressBack();
- mDevice.pressHome();
- super.tearDown();
- }
-
- @Presubmit
- @MediumTest
- public void testAirplaneModeEnabled() throws Exception {
- verifyAirplaneModeOnOrOff(true);
- // Toggling this via the wifi network settings page
- // because of bug b/34858716. Once that is fixed,
- // we should be able to set this via Settings putString.
- toggleAirplaneModeSwitch();
- }
-
- @Presubmit
- @MediumTest
- public void testAirplaneModeDisabled() throws Exception {
- verifyAirplaneModeOnOrOff(false);
- }
-
- @MediumTest
- public void testTetheringMenuLoad() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_WIRELESS_SETTINGS);
- mDevice.wait(Until
- .findObject(By.text("Hotspot & tethering")), TIMEOUT)
- .click();
- Thread.sleep(TIMEOUT);
- UiObject2 usbTethering = mDevice.wait(Until
- .findObject(By.text("USB tethering")), TIMEOUT);
- assertNotNull("Tethering screen did not load correctly", usbTethering);
- }
-
- @MediumTest
- public void testVPNMenuLoad() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_WIRELESS_SETTINGS);
- mDevice.wait(Until
- .findObject(By.text("VPN")), TIMEOUT)
- .click();
- Thread.sleep(TIMEOUT);
- UiObject2 usbTethering = mDevice.wait(Until
- .findObject(By.res(SETTINGS_PACKAGE, "vpn_create")), TIMEOUT);
- assertNotNull("VPN screen did not load correctly", usbTethering);
- }
-
- private void verifyAirplaneModeOnOrOff(boolean verifyOn) throws Exception {
- if (verifyOn) {
- Settings.Global.putString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, "0");
- }
- else {
- Settings.Global.putString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, "1");
- }
- toggleAirplaneModeSwitch();
- String airplaneModeValue = Settings.Global
- .getString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON);
- if (verifyOn) {
- assertEquals("1", airplaneModeValue);
- }
- else {
- assertEquals("0", airplaneModeValue);
- }
- }
-
- private void toggleAirplaneModeSwitch() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_WIRELESS_SETTINGS);
- mDevice.wait(Until
- .findObject(By.text("Airplane mode")), TIMEOUT)
- .click();
- Thread.sleep(TIMEOUT);
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/NotificationSettingsTests.java b/tests/uitests/src/com/android/settings/functional/NotificationSettingsTests.java
deleted file mode 100644
index 9ef55ce387a..00000000000
--- a/tests/uitests/src/com/android/settings/functional/NotificationSettingsTests.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Intent;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.ActivityHelper;
-import android.system.helpers.SettingsHelper;
-import android.widget.ListView;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-
-/** Verifies that you can get to the notification app listing page from the apps & notifications
- * page */
-public class NotificationSettingsTests extends InstrumentationTestCase {
- private static final boolean LOCAL_LOGV = false;
- private static final String TAG = "NotifiSettingsTests";
- private static final int TIMEOUT = 2000;
- private ActivityHelper mActivityHelper = null;
- private SettingsHelper mSettingsHelper = null;
-
- private UiDevice mDevice;
- @Override
- public void setUp() throws Exception {
- if (LOCAL_LOGV) {
- Log.d(TAG, "-------");
- }
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- mActivityHelper = ActivityHelper.getInstance();
- mSettingsHelper = SettingsHelper.getInstance();
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("Failed to freeze device orientaion", e);
- }
-
- // make sure we are in a clean state before starting the test
- mDevice.pressHome();
- Thread.sleep(TIMEOUT * 2);
- launchAppsSettings();
- }
-
- @Override
- protected void tearDown() throws Exception {
- mDevice.pressBack();
- mDevice.pressHome(); // finish settings activity
- mDevice.waitForIdle(TIMEOUT * 2); // give UI time to finish animating
- super.tearDown();
- }
-
- @MediumTest
- public void testNotificationsSettingsListForCalculator() {
- UiObject2 configureNotifications = mDevice.wait(
- Until.findObject(By.text("Notifications")), TIMEOUT);
- configureNotifications.click();
- mDevice.wait(Until.findObject(By.text("Blink light")), TIMEOUT);
- UiObject2 appNotifications = mDevice.wait(
- Until.findObject(By.text("On for all apps")), TIMEOUT);
- appNotifications.click();
- UiObject2 view =
- mDevice.wait(
- Until.findObject(By.text("All apps")), TIMEOUT);
- assertNotNull("Could not find Settings > Apps screen", view);
- UiObject2 app = mDevice.wait(Until.findObject(By.text("Calculator")), TIMEOUT);
- assertNotNull("Could not find Calculator notification settings", app);
- }
-
-
- @MediumTest
- public void testNotificationsSettingsListForPhone() {
- UiObject2 configureNotifications = mDevice.wait(
- Until.findObject(By.text("Notifications")), TIMEOUT);
- configureNotifications.click();
- mDevice.wait(Until.findObject(By.text("Blink light")), TIMEOUT);
- UiObject2 appNotifications = mDevice.wait(
- Until.findObject(By.text("On for all apps")), TIMEOUT);
- appNotifications.click();
- UiObject2 view =
- mDevice.wait(
- Until.findObject(By.text("All apps")), TIMEOUT);
- assertNotNull("Could not find Settings > Apps screen", view);
-
- final BySelector preferenceListSelector = By.clazz(ListView.class).res("android:id/list");
- UiObject2 apps = mDevice.wait(Until.findObject(preferenceListSelector), TIMEOUT);
-
- UiObject2 phone = scrollTo(mDevice, apps, By.text("Phone"), Direction.DOWN);
- assertNotNull("Could not find Phone notification settings", phone);
- phone.click();
- UiObject2 incomingCalls = mDevice.wait(Until.findObject(By.text("Incoming calls")), TIMEOUT);
- assertNotNull("Could not find incoming calls channel", incomingCalls);
- incomingCalls.click();
-
- // here's the meat of this test: make sure that you cannot change
- // most settings for this channel
-
- UiObject2 importance = mDevice.wait(Until.findObject(By.text("Importance")), TIMEOUT);
- assertNotNull("Could not find importance toggle", importance);
- assertFalse(importance.isEnabled());
- assertFalse(mDevice.wait(Until.findObject(By.text("Sound")), TIMEOUT).isEnabled());;
- assertFalse(mDevice.wait(Until.findObject(By.text("Vibrate")), TIMEOUT).isEnabled());
- assertFalse(mDevice.wait(Until.findObject(By.text("Override Do Not Disturb")), TIMEOUT).isEnabled());
-
-
-
-
-
-
- }
-
- private UiObject2 scrollTo(UiDevice device, UiObject2 scrollable,
- BySelector target, Direction direction) {
- while (!device.hasObject(target) && scrollable.scroll(direction, 1.0f)) {
- // continue
- }
- if (!device.hasObject(target)) {
- // Scroll once more if not found; in some cases UiObject2.scroll can return false when
- // the last item is not fully visible yet for list views.
- scrollable.scroll(direction, 1.0f);
- }
- return device.findObject(target);
- }
-
-
- private void launchAppsSettings() throws Exception {
- Intent appsSettingsIntent = new Intent(Settings.ACTION_SETTINGS);
- mActivityHelper.launchIntent(appsSettingsIntent);
- mSettingsHelper.flingSettingsToStart();
- UiObject2 view = mDevice.wait(
- Until.findObject(By.text("Apps & notifications")), TIMEOUT);
- view.click();
- UiObject2 title = mDevice.wait(
- Until.findObject(By.text("Apps & notifications")), TIMEOUT);
- assertNotNull("Could not find Settings > Apps & notifications screen", title);
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/SecuritySettingsLaunchTest.java b/tests/uitests/src/com/android/settings/functional/SecuritySettingsLaunchTest.java
deleted file mode 100644
index fa3bd022e39..00000000000
--- a/tests/uitests/src/com/android/settings/functional/SecuritySettingsLaunchTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.support.test.uiautomator.UiDevice;
-import android.system.helpers.SettingsHelper;
-
-import com.android.settings.functional.testutils.SettingsTestUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class SecuritySettingsLaunchTest {
-
- // Items we really want to always show
- private static final String[] CATEGORIES = new String[]{
- "Security status",
- "Device security",
- "Privacy",
- };
-
- private UiDevice mDevice;
- private SettingsHelper mHelper;
-
- @Before
- public void setUp() throws Exception {
- mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
- mHelper = SettingsHelper.getInstance();
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- }
-
- @After
- public void tearDown() throws Exception {
- // Go back to home for next test.
- mDevice.pressHome();
- }
-
- @Test
- public void launchSecuritySettings() throws Exception {
- // Launch Settings
- SettingsHelper.launchSettingsPage(
- InstrumentationRegistry.getContext(), Settings.ACTION_SECURITY_SETTINGS);
- mHelper.scrollVert(false);
- for (String category : CATEGORIES) {
- SettingsTestUtils.assertTitleMatch(mDevice, category);
- }
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/SoundSettingsTest.java b/tests/uitests/src/com/android/settings/functional/SoundSettingsTest.java
deleted file mode 100644
index 681ecb1ef7a..00000000000
--- a/tests/uitests/src/com/android/settings/functional/SoundSettingsTest.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.app.NotificationManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.os.Handler;
-import android.os.SystemClock;
-import android.provider.Settings;
-import android.service.notification.ZenModeConfig;
-import android.support.test.uiautomator.UiObject2;
-import android.system.helpers.SettingsHelper;
-import android.system.helpers.SettingsHelper.SettingsType;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.Until;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-
-import java.util.HashMap;
-
-public class SoundSettingsTest extends InstrumentationTestCase {
- private static final String PAGE = Settings.ACTION_SOUND_SETTINGS;
- private static final int TIMEOUT = 2000;
-
- private UiDevice mDevice;
- private ContentResolver mResolver;
- private SettingsHelper mHelper;
-
-
- private HashMap ringtoneSounds = new HashMap() {{
- put("angler","Dione");
- put("bullhead","Dione");
- put("marlin","Spaceship");
- put("sailfish","Spaceship");
- put("walleye","Copycat");
- put("taimen","Copycat");
- }};
-
- private HashMap ringtoneCodes = new HashMap() {{
- put("angler","38");
- put("bullhead","38");
- put("marlin","37");
- put("sailfish","37");
- put("walleye","26");
- put("taimen","26");
- }};
-
- private HashMap alarmSounds = new HashMap() {{
- put("angler","Awaken");
- put("bullhead","Awaken");
- put("marlin","Bounce");
- put("sailfish","Bounce");
- put("walleye","Cuckoo clock");
- put("taimen","Cuckoo clock");
- }};
-
- private HashMap alarmCodes = new HashMap() {{
- put("angler","6");
- put("bullhead","6");
- put("marlin","49");
- put("sailfish","49");
- put("walleye","15");
- put("taimen","15");
- }};
-
- private HashMap notificationSounds = new HashMap() {{
- put("angler","Ceres");
- put("bullhead","Ceres");
- put("marlin","Trill");
- put("sailfish","Trill");
- put("walleye","Pipes");
- put("taimen","Pipes");
- }};
-
-
- private HashMap notificationCodes = new HashMap() {{
- put("angler","26");
- put("bullhead","26");
- put("marlin","57");
- put("sailfish","57");
- put("walleye","69");
- put("taimen","69");
- }};
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- mDevice.setOrientationNatural();
- mResolver = getInstrumentation().getContext().getContentResolver();
- mHelper = new SettingsHelper();
- }
-
- @Override
- public void tearDown() throws Exception {
- mDevice.pressBack();
- mDevice.pressHome();
- mDevice.waitForIdle();
- mDevice.unfreezeRotation();
- super.tearDown();
- }
-
- @MediumTest
- public void testCallVibrate() throws Exception {
- assertTrue(mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE,
- "Also vibrate for calls", Settings.System.VIBRATE_WHEN_RINGING));
- assertTrue(mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE,
- "Also vibrate for calls", Settings.System.VIBRATE_WHEN_RINGING));
- }
-
- @MediumTest
- public void testOtherSoundsDialPadTones() throws Exception {
- loadOtherSoundsPage();
- assertTrue("Dial pad tones not toggled", mHelper.verifyToggleSetting(
- SettingsType.SYSTEM, PAGE, "Dial pad tones",
- Settings.System.DTMF_TONE_WHEN_DIALING));
- }
-
- @MediumTest
- public void testOtherSoundsScreenLocking() throws Exception {
- loadOtherSoundsPage();
- assertTrue("Screen locking sounds not toggled",
- mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE,
- "Screen locking sounds", Settings.System.LOCKSCREEN_SOUNDS_ENABLED));
- }
-
- @MediumTest
- public void testOtherSoundsCharging() throws Exception {
- loadOtherSoundsPage();
- assertTrue("Charging sounds not toggled",
- mHelper.verifyToggleSetting(SettingsType.GLOBAL, PAGE,
- "Charging sounds", Settings.Global.CHARGING_SOUNDS_ENABLED));
- }
-
- @MediumTest
- public void testOtherSoundsTouch() throws Exception {
- loadOtherSoundsPage();
- assertTrue("Touch sounds not toggled",
- mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE,
- "Touch sounds", Settings.System.SOUND_EFFECTS_ENABLED));
- }
-
- @MediumTest
- public void testOtherSoundsVibrateOnTap() throws Exception {
- loadOtherSoundsPage();
- assertTrue("Vibrate on tap not toggled",
- mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE,
- "Vibrate on tap", Settings.System.HAPTIC_FEEDBACK_ENABLED));
- }
-
- private void loadOtherSoundsPage() throws Exception {
- launchSoundSettings();
- mHelper.scrollVert(false);
- Thread.sleep(1000);
- }
-
- private void launchSoundSettings() throws Exception {
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), PAGE);
- mHelper.scrollVert(false);
- clickMore();
- Thread.sleep(1000);
- mHelper.scrollVert(true);
- Thread.sleep(1000);
- }
-
- /*
- * Rather than verifying every ringtone, verify the ones least likely to change
- * (None and Hangouts) and an arbitrary one from the ringtone pool.
- */
- @MediumTest
- public void testPhoneRingtoneNone() throws Exception {
- launchSoundSettings();
- mHelper.clickSetting("Phone ringtone");
- verifyRingtone(new RingtoneSetting("None", "null"),
- Settings.System.RINGTONE);
- }
-
- @MediumTest
- @Suppress
- public void testPhoneRingtoneHangouts() throws Exception {
- launchSoundSettings();
- mHelper.clickSetting("Phone ringtone");
- verifyRingtone(new RingtoneSetting("Hangouts Call", "31"), Settings.System.RINGTONE);
- }
-
- @MediumTest
- public void testPhoneRingtone() throws Exception {
- launchSoundSettings();
- mHelper.clickSetting("Phone ringtone");
- String ringtone = ringtoneSounds.get(mDevice.getProductName()).toString();
- String ringtoneSettingValue = ringtoneCodes.get(mDevice.getProductName()).toString();
- verifyRingtone(new RingtoneSetting(ringtone, ringtoneSettingValue),
- Settings.System.RINGTONE);
- }
-
- @MediumTest
- public void testNotificationRingtoneNone() throws Exception {
- launchSoundSettings();
- mHelper.clickSetting("Default notification sound");
- verifyRingtone(new RingtoneSetting("None", "null"),
- Settings.System.NOTIFICATION_SOUND);
- }
-
- @MediumTest
- @Suppress
- public void testNotificationRingtoneHangouts() throws Exception {
- launchSoundSettings();
- mHelper.clickSetting("Default notification sound");
- verifyRingtone(new RingtoneSetting("Hangouts Message", "30"),
- Settings.System.NOTIFICATION_SOUND);
- }
-
- @MediumTest
- public void testNotificationRingtone() throws Exception {
- launchSoundSettings();
- mHelper.clickSetting("Default notification sound");
- String notificationRingtone = notificationSounds.get(mDevice.getProductName()).toString();
- String notificationSettingValue = notificationCodes.get(mDevice.getProductName()).toString();
- verifyRingtone(new RingtoneSetting(notificationRingtone, notificationSettingValue),
- Settings.System.NOTIFICATION_SOUND);
- }
-
- @MediumTest
- public void testAlarmRingtoneNone() throws Exception {
- launchSoundSettings();
- mHelper.clickSetting("Default alarm sound");
- verifyRingtone(new RingtoneSetting("None", "null"),
- Settings.System.ALARM_ALERT);
- }
-
- @MediumTest
- public void testAlarmRingtone() throws Exception {
- launchSoundSettings();
- String alarmRingtone = alarmSounds.get(mDevice.getProductName()).toString();
- String alarmSettingValue = alarmCodes.get(mDevice.getProductName()).toString();
- mHelper.clickSetting("Default alarm sound");
- verifyRingtone(new RingtoneSetting(alarmRingtone, alarmSettingValue),
- Settings.System.ALARM_ALERT);
- }
-
- /*
- * This method verifies that setting a custom ringtone changes the
- * ringtone code setting on the system. Each ringtone sound corresponds
- * to an arbitrary code. To see which ringtone code this is on your device, run
- * adb shell settings get system ringtone
- * The number you see at the end of the file path is the one you need.
- * To see alarms and notifications ringtone codes, run the following:
- * adb shell settings get system alarm_alert
- * adb shell settings get system notification_sound
- * @param r Ringtone setting - the name of the ringtone as displayed on device
- * @param settingName - the code of the ringtone as explained above
- * @param dir - the direction in which to scroll
- */
- private void verifyRingtone(RingtoneSetting r, String settingName) throws Exception {
- findRingtoneInList(r.getName()).click();
- if (mDevice.getProductName().equals("walleye") || mDevice.getProductName().equals("taimen")) {
- mDevice.wait(Until.findObject(By.text("SAVE")), TIMEOUT).click();
- }
- else {
- mDevice.wait(Until.findObject(By.text("OK")), TIMEOUT).click();
- }
- SystemClock.sleep(1000);
- if (r.getVal().equals("null")) {
- assertEquals(null,
- Settings.System.getString(mResolver, settingName));
- } else if (r.getName().contains("Hangouts")) {
- assertEquals("content://media/external/audio/media/" + r.getVal(),
- Settings.System.getString(mResolver, settingName));
- } else {
- assertEquals("content://media/internal/audio/media/" + r.getVal(),
- Settings.System.getString(mResolver, settingName));
- }
- }
-
- private enum ScrollDir {
- UP,
- DOWN,
- NOSCROLL
- }
-
- class RingtoneSetting {
- private final String mName;
- private final String mMediaVal;
- public RingtoneSetting(String name, String fname) {
- mName = name;
- mMediaVal = fname;
- }
- public String getName() {
- return mName;
- }
- public String getVal() {
- return mMediaVal;
- }
- }
-
- private void clickMore() throws InterruptedException {
- UiObject2 more = mDevice.wait(Until.findObject(By.text("Advanced")), TIMEOUT);
- if (more != null) {
- more.click();
- Thread.sleep(TIMEOUT);
- }
- }
-
- private UiObject2 findRingtoneInList(String ringtone) throws Exception {
- mHelper.scrollVert(false);
- SystemClock.sleep(1000);
- UiObject2 ringToneObject = mDevice.wait(Until.findObject(By.text(ringtone)), TIMEOUT);
- int count = 0;
- while (ringToneObject == null && count < 5) {
- mHelper.scrollVert(true);
- SystemClock.sleep(1000);
- ringToneObject = mDevice.wait(Until.findObject(By.text(ringtone)), TIMEOUT);
- count++;
- }
- return ringToneObject;
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/SyncSettingsTest.java b/tests/uitests/src/com/android/settings/functional/SyncSettingsTest.java
deleted file mode 100644
index d80af61f215..00000000000
--- a/tests/uitests/src/com/android/settings/functional/SyncSettingsTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.system.helpers.SettingsHelper;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static junit.framework.Assert.assertTrue;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class SyncSettingsTest {
- private static final int TIMEOUT = 2000;
-
- private UiDevice mDevice;
-
- @Before
- public void setUp() throws Exception {
- mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientaion", e);
- }
- }
-
- @After
- public void tearDown() throws Exception {
- // Need to finish settings activity
- mDevice.pressHome();
- }
-
- @Test
- public void syncPageShouldHaveAddAccountButton() throws Exception {
- // Launch Settings
- SettingsHelper.launchSettingsPage(
- InstrumentationRegistry.getContext(), Settings.ACTION_SYNC_SETTINGS);
- UiObject2 addAccount = mDevice.wait(
- Until.findObject(By.text("Add account")), TIMEOUT);
- assertTrue(addAccount != null);
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/WirelessNetworkSettingsTests.java b/tests/uitests/src/com/android/settings/functional/WirelessNetworkSettingsTests.java
deleted file mode 100644
index 696d9e71405..00000000000
--- a/tests/uitests/src/com/android/settings/functional/WirelessNetworkSettingsTests.java
+++ /dev/null
@@ -1,777 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.wifi.WifiManager;
-import android.os.RemoteException;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.system.helpers.CommandsHelper;
-import android.system.helpers.SettingsHelper;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.StaleObjectException;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.util.Log;
-import junit.framework.AssertionFailedError;
-
-public class WirelessNetworkSettingsTests extends InstrumentationTestCase {
- // These back button presses are performed in tearDown() to exit Wifi
- // Settings sub-menus that a test might finish in. This number should be
- // high enough to account for the deepest sub-menu a test might enter.
- private static final int NUM_BACK_BUTTON_PRESSES = 5;
- private static final int TIMEOUT = 2000;
- private static final int SLEEP_TIME = 500;
- private static final String AIRPLANE_MODE_BROADCAST =
- "am broadcast -a android.intent.action.AIRPLANE_MODE";
- private static final String TAG="WirelessNetworkSettingsTests";
-
- // Note: The values of these variables might affect flakiness in tests that involve
- // scrolling. Adjust where necessary.
- private static final float SCROLL_UP_PERCENT = 10.0f;
- private static final float SCROLL_DOWN_PERCENT = 0.5f;
- private static final int MAX_SCROLL_ATTEMPTS = 10;
- private static final int MAX_ADD_NETWORK_BUTTON_ATTEMPTS = 3;
- private static final int SCROLL_SPEED = 2000;
-
- private static final String TEST_SSID = "testSsid";
- private static final String TEST_PW_GE_8_CHAR = "testPasswordGreaterThan8Char";
- private static final String TEST_PW_LT_8_CHAR = "lt8Char";
- private static final String TEST_DOMAIN = "testDomain.com";
-
- private static final String SETTINGS_PACKAGE = "com.android.settings";
-
- private static final String CHECKBOX_CLASS = "android.widget.CheckBox";
- private static final String SPINNER_CLASS = "android.widget.Spinner";
- private static final String EDIT_TEXT_CLASS = "android.widget.EditText";
- private static final String SCROLLVIEW_CLASS = "android.widget.ScrollView";
- private static final String LISTVIEW_CLASS = "android.widget.ListView";
-
- private static final String ADD_NETWORK_MENU_CANCEL_BUTTON_TEXT = "CANCEL";
- private static final String ADD_NETWORK_MENU_SAVE_BUTTON_TEXT = "SAVE";
- private static final String ADD_NETWORK_PREFERENCE_TEXT = "Add network";
- private static final String CONFIGURE_WIFI_PREFERENCE_TEXT = "Wi‑Fi preferences";
- private static final String CONFIGURE_WIFI_ADVANCED_PREFERENCE_TEXT = "Advanced";
- private static final String CACERT_MENU_PLEASE_SELECT_TEXT = "Please select";
- private static final String CACERT_MENU_USE_SYSTEM_CERTS_TEXT = "Use system certificates";
- private static final String CACERT_MENU_DO_NOT_VALIDATE_TEXT = "Do not validate";
- private static final String USERCERT_MENU_PLEASE_SELECT_TEXT = "Please select";
- private static final String USERCERT_MENU_DO_NOT_PROVIDE_TEXT = "Do not provide";
- private static final String SECURITY_OPTION_NONE_TEXT = "None";
- private static final String SECURITY_OPTION_WEP_TEXT = "WEP";
- private static final String SECURITY_OPTION_PSK_TEXT = "WPA/WPA2 PSK";
- private static final String SECURITY_OPTION_EAP_TEXT = "802.1x EAP";
- private static final String EAP_METHOD_PEAP_TEXT = "PEAP";
- private static final String EAP_METHOD_TLS_TEXT = "TLS";
- private static final String EAP_METHOD_TTLS_TEXT = "TTLS";
- private static final String EAP_METHOD_PWD_TEXT = "PWD";
- private static final String EAP_METHOD_SIM_TEXT = "SIM";
- private static final String EAP_METHOD_AKA_TEXT = "AKA";
- private static final String EAP_METHOD_AKA_PRIME_TEXT = "AKA'";
- private static final String PHASE2_MENU_NONE_TEXT = "None";
- private static final String PHASE2_MENU_MSCHAPV2_TEXT = "MSCHAPV2";
- private static final String PHASE2_MENU_GTC_TEXT = "GTC";
-
- private static final String ADD_NETWORK_MENU_ADV_TOGGLE_RES_ID = "wifi_advanced_togglebox";
- private static final String ADD_NETWORK_MENU_IP_SETTINGS_RES_ID = "ip_settings";
- private static final String ADD_NETWORK_MENU_PROXY_SETTINGS_RES_ID = "proxy_settings";
- private static final String ADD_NETWORK_MENU_SECURITY_OPTION_RES_ID = "security";
- private static final String ADD_NETWORK_MENU_EAP_METHOD_RES_ID = "method";
- private static final String ADD_NETWORK_MENU_SSID_RES_ID = "ssid";
- private static final String ADD_NETWORK_MENU_PHASE2_RES_ID = "phase2";
- private static final String ADD_NETWORK_MENU_CACERT_RES_ID = "ca_cert";
- private static final String ADD_NETWORK_MENU_USERCERT_RES_ID = "user_cert";
- private static final String ADD_NETWORK_MENU_NO_DOMAIN_WARNING_RES_ID = "no_domain_warning";
- private static final String ADD_NETWORK_MENU_NO_CACERT_WARNING_RES_ID = "no_ca_cert_warning";
- private static final String ADD_NETWORK_MENU_DOMAIN_LAYOUT_RES_ID = "l_domain";
- private static final String ADD_NETWORK_MENU_DOMAIN_RES_ID = "domain";
- private static final String ADD_NETWORK_MENU_IDENTITY_LAYOUT_RES_ID = "l_identity";
- private static final String ADD_NETWORK_MENU_ANONYMOUS_LAYOUT_RES_ID = "l_anonymous";
- private static final String ADD_NETWORK_MENU_PASSWORD_LAYOUT_RES_ID = "password_layout";
- private static final String ADD_NETWORK_MENU_SHOW_PASSWORD_LAYOUT_RES_ID =
- "show_password_layout";
- private static final String ADD_NETWORK_MENU_PASSWORD_RES_ID = "password";
-
- private static final BySelector ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR =
- By.scrollable(true).clazz(SCROLLVIEW_CLASS);
- private static final BySelector SPINNER_OPTIONS_SCROLLABLE_BY_SELECTOR =
- By.scrollable(true).clazz(LISTVIEW_CLASS);
-
- private UiDevice mDevice;
- private CommandsHelper mCommandsHelper;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mDevice = UiDevice.getInstance(getInstrumentation());
- try {
- mDevice.setOrientationNatural();
- } catch (RemoteException e) {
- throw new RuntimeException("failed to freeze device orientation", e);
- }
- // Ensure airplane mode is OFF so that wifi can be enabled using WiFiManager.
- Settings.Global.putString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, "0");
- Log.d(TAG, "sending airplane mode broadcast to device");
- mCommandsHelper = CommandsHelper.getInstance();
- mCommandsHelper.executeShellCommand(AIRPLANE_MODE_BROADCAST);
- }
-
- @Override
- protected void tearDown() throws Exception {
- // Exit all settings sub-menus.
- for (int i = 0; i < NUM_BACK_BUTTON_PRESSES; ++i) {
- mDevice.pressBack();
- }
- mDevice.pressHome();
- super.tearDown();
- }
-
- @Presubmit
- @MediumTest
- public void testWiFiEnabled() throws Exception {
- verifyWiFiOnOrOff(true);
- }
-
- @Presubmit
- @MediumTest
- public void testWiFiDisabled() throws Exception {
- verifyWiFiOnOrOff(false);
- }
-
- @MediumTest
- public void testWifiMenuLoadConfigure() throws Exception {
- loadWiFiConfigureMenu();
- Thread.sleep(SLEEP_TIME);
- UiObject2 configureWiFiHeading = mDevice.wait(Until.findObject
- (By.text(CONFIGURE_WIFI_PREFERENCE_TEXT)), TIMEOUT);
- assertNotNull("Configure WiFi menu has not loaded correctly", configureWiFiHeading);
- }
-
- @MediumTest
- public void testNetworkNotificationsOn() throws Exception {
- verifyNetworkNotificationsOnOrOff(true);
- }
-
- @MediumTest
- public void testNetworkNotificationsOff() throws Exception {
- verifyNetworkNotificationsOnOrOff(false);
- }
-
- @MediumTest
- public void testAddNetworkMenu_Default() throws Exception {
- loadAddNetworkMenu();
-
- // Submit button should be disabled by default, while cancel button should be enabled.
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_CANCEL_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Check that the SSID field is defaults to the hint.
- assertEquals("Enter the SSID", mDevice.wait(Until.findObject(By
- .res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_SSID_RES_ID)
- .clazz(EDIT_TEXT_CLASS)), TIMEOUT*2)
- .getText());
-
- // Check Security defaults to None.
- assertEquals("None", mDevice.wait(Until.findObject(By
- .res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_SECURITY_OPTION_RES_ID)
- .clazz(SPINNER_CLASS)), TIMEOUT)
- .getChildren().get(0).getText());
-
- // Check advanced options are collapsed by default.
- assertFalse(mDevice.wait(Until.findObject(By
- .res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_ADV_TOGGLE_RES_ID)
- .clazz(CHECKBOX_CLASS)), TIMEOUT).isChecked());
-
- }
-
- @Suppress
- @MediumTest
- public void testAddNetworkMenu_Proxy() throws Exception {
- loadAddNetworkMenu();
-
- // Toggle advanced options.
- mDevice.wait(Until.findObject(By
- .res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_ADV_TOGGLE_RES_ID)
- .clazz(CHECKBOX_CLASS)), TIMEOUT).click();
-
- // Verify Proxy defaults to None.
- BySelector proxySettingsBySelector =
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PROXY_SETTINGS_RES_ID)
- .clazz(SPINNER_CLASS);
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR, proxySettingsBySelector);
- assertEquals("None", mDevice.wait(Until.findObject(proxySettingsBySelector), TIMEOUT)
- .getChildren().get(0).getText());
-
- // Verify that Proxy Manual fields appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR, proxySettingsBySelector);
- mDevice.wait(Until.findObject(proxySettingsBySelector), TIMEOUT).click();
- mDevice.wait(Until.findObject(By.text("Manual")), TIMEOUT).click();
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "proxy_warning_limited_support"));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "proxy_hostname"));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "proxy_exclusionlist"));
-
- // Verify that Proxy Auto-Config options appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR, proxySettingsBySelector);
- mDevice.wait(Until.findObject(proxySettingsBySelector), TIMEOUT).click();
- mDevice.wait(Until.findObject(By.text("Proxy Auto-Config")), TIMEOUT).click();
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "proxy_pac"));
- }
-
- @Suppress
- @MediumTest
- public void testAddNetworkMenu_IpSettings() throws Exception {
- loadAddNetworkMenu();
-
- // Toggle advanced options.
- mDevice.wait(Until.findObject(By
- .res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_ADV_TOGGLE_RES_ID)
- .clazz(CHECKBOX_CLASS)), TIMEOUT).click();
-
- // Verify IP settings defaults to DHCP.
- BySelector ipSettingsBySelector =
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_IP_SETTINGS_RES_ID).clazz(SPINNER_CLASS);
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR, ipSettingsBySelector);
- assertEquals("DHCP", mDevice.wait(Until.findObject(ipSettingsBySelector), TIMEOUT)
- .getChildren().get(0).getText());
-
- // Verify that Static IP settings options appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR, ipSettingsBySelector).click();
- mDevice.wait(Until.findObject(By.text("Static")), TIMEOUT).click();
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "ipaddress"));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "gateway"));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "network_prefix_length"));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "dns1"));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, "dns2"));
- }
-
- @Suppress
- @MediumTest
- public void testPhase2Settings() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
-
- BySelector phase2SettingsBySelector =
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PHASE2_RES_ID).clazz(SPINNER_CLASS);
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR, phase2SettingsBySelector);
- assertEquals(PHASE2_MENU_NONE_TEXT, mDevice.wait(Until
- .findObject(phase2SettingsBySelector), TIMEOUT).getChildren().get(0).getText());
- mDevice.wait(Until.findObject(phase2SettingsBySelector), TIMEOUT).click();
- Thread.sleep(SLEEP_TIME);
-
- // Verify Phase 2 authentication spinner options.
- assertNotNull(mDevice.wait(Until.findObject(By.text(PHASE2_MENU_NONE_TEXT)), TIMEOUT));
- assertNotNull(mDevice.wait(Until.findObject(By.text(PHASE2_MENU_MSCHAPV2_TEXT)), TIMEOUT));
- assertNotNull(mDevice.wait(Until.findObject(By.text(PHASE2_MENU_GTC_TEXT)), TIMEOUT));
- }
-
- @Suppress
- @MediumTest
- public void testCaCertSettings() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
-
- BySelector caCertSettingsBySelector =
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_CACERT_RES_ID).clazz(SPINNER_CLASS);
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR, caCertSettingsBySelector);
- assertEquals(CACERT_MENU_PLEASE_SELECT_TEXT, mDevice.wait(Until
- .findObject(caCertSettingsBySelector), TIMEOUT).getChildren().get(0).getText());
- mDevice.wait(Until.findObject(caCertSettingsBySelector), TIMEOUT).click();
- Thread.sleep(SLEEP_TIME);
-
- // Verify CA certificate spinner options.
- assertNotNull(mDevice.wait(Until.findObject(
- By.text(CACERT_MENU_PLEASE_SELECT_TEXT)), TIMEOUT));
- assertNotNull(mDevice.wait(Until.findObject(
- By.text(CACERT_MENU_USE_SYSTEM_CERTS_TEXT)), TIMEOUT));
- assertNotNull(mDevice.wait(Until.findObject(
- By.text(CACERT_MENU_DO_NOT_VALIDATE_TEXT)), TIMEOUT));
-
- // Verify that a domain field and warning appear when the user selects the
- // "Use system certificates" option.
- mDevice.wait(Until.findObject(By.text(CACERT_MENU_USE_SYSTEM_CERTS_TEXT)), TIMEOUT).click();
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_DOMAIN_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_NO_DOMAIN_WARNING_RES_ID));
-
- // Verify that a warning appears when the user chooses the "Do Not Validate" option.
- mDevice.wait(Until.findObject(caCertSettingsBySelector), TIMEOUT).click();
- mDevice.wait(Until.findObject(By.text(CACERT_MENU_DO_NOT_VALIDATE_TEXT)), TIMEOUT).click();
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_NO_CACERT_WARNING_RES_ID));
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_NoSecurity() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_NONE_TEXT);
-
- // Entering an SSID is enough to enable the submit button. // TODO THIS GUY
- enterSSID(TEST_SSID);
- assertTrue(mDevice.wait(Until
- .findObject(By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_WEP() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_WEP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Verify that WEP fields appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PASSWORD_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_SHOW_PASSWORD_LAYOUT_RES_ID));
-
- // Entering an SSID alone does not enable the submit button.
- enterSSID(TEST_SSID);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Submit button is only enabled after a password is entered.
- enterPassword(TEST_PW_GE_8_CHAR);
- assertTrue(mDevice.wait(Until
- .findObject(By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_PSK() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_PSK_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Verify that PSK fields appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PASSWORD_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_SHOW_PASSWORD_LAYOUT_RES_ID));
-
- // Entering an SSID alone does not enable the submit button.
- enterSSID(TEST_SSID);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Entering an password that is too short does not enable submit button.
- enterPassword(TEST_PW_LT_8_CHAR);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Submit button is only enabled after a password of valid length is entered.
- enterPassword(TEST_PW_GE_8_CHAR);
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_EAP_PEAP() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- selectEAPMethod(EAP_METHOD_PEAP_TEXT);
-
- // Verify that EAP-PEAP fields appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PHASE2_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_CACERT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_IDENTITY_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_ANONYMOUS_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PASSWORD_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_SHOW_PASSWORD_LAYOUT_RES_ID));
-
- // Entering an SSID alone does not enable the submit button.
- enterSSID(TEST_SSID);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- verifyCaCertificateSubmitConditions();
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_EAP_TLS() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- selectEAPMethod(EAP_METHOD_TLS_TEXT);
-
- // Verify that EAP-TLS fields appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_CACERT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_USERCERT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_IDENTITY_LAYOUT_RES_ID));
-
- // Entering an SSID alone does not enable the submit button.
- enterSSID(TEST_SSID);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Selecting the User certificate "Do not provide" option alone does not enable the submit
- // button.
- selectUserCertificateOption(USERCERT_MENU_DO_NOT_PROVIDE_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- verifyCaCertificateSubmitConditions();
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_EAP_TTLS() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- selectEAPMethod(EAP_METHOD_TTLS_TEXT);
-
- // Verify that EAP-TLS fields appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PHASE2_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_CACERT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_IDENTITY_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_ANONYMOUS_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PASSWORD_LAYOUT_RES_ID));
-
- // Entering an SSID alone does not enable the submit button.
- enterSSID(TEST_SSID);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- verifyCaCertificateSubmitConditions();
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_EAP_PWD() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- selectEAPMethod(EAP_METHOD_PWD_TEXT);
-
- // Verify that EAP-TLS fields appear.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_IDENTITY_LAYOUT_RES_ID));
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PASSWORD_LAYOUT_RES_ID));
-
- // Entering an SSID alone enables the submit button.
- enterSSID(TEST_SSID);
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_EAP_SIM() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- selectEAPMethod(EAP_METHOD_SIM_TEXT);
-
- // Entering an SSID alone enables the submit button.
- enterSSID(TEST_SSID);
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_EAP_AKA() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- selectEAPMethod(EAP_METHOD_AKA_TEXT);
-
- // Entering an SSID alone enables the submit button.
- enterSSID(TEST_SSID);
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- @Suppress
- @MediumTest
- public void testAddNetwork_EAP_AKA_PRIME() throws Exception {
- loadAddNetworkMenu();
- selectSecurityOption(SECURITY_OPTION_EAP_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- selectEAPMethod(EAP_METHOD_AKA_PRIME_TEXT);
-
- // Entering an SSID alone enables the submit button.
- enterSSID(TEST_SSID);
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- private void verifyKeepWiFiOnDuringSleep(String settingToBeVerified, int settingValue)
- throws Exception {
- loadWiFiConfigureMenu();
- mDevice.wait(Until.findObject(By.text("Keep Wi‑Fi on during sleep")), TIMEOUT)
- .click();
- mDevice.wait(Until.findObject(By.clazz("android.widget.CheckedTextView")
- .text(settingToBeVerified)), TIMEOUT).click();
- Thread.sleep(SLEEP_TIME);
- int keepWiFiOnSetting =
- Settings.Global.getInt(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.WIFI_SLEEP_POLICY);
- assertEquals(settingValue, keepWiFiOnSetting);
- }
-
- private void verifyNetworkNotificationsOnOrOff(boolean verifyOn)
- throws Exception {
- // Enable network recommendations to enable the toggle switch for Network
- // notifications
- Settings.Global.putString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, "1");
- if (verifyOn) {
- Settings.Global.putString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, "0");
- }
- else {
- Settings.Global.putString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, "1");
- }
- loadWiFiConfigureMenu();
- mDevice.wait(Until.findObject(By.text("Open network notification")), TIMEOUT)
- .click();
- Thread.sleep(SLEEP_TIME);
- String wifiNotificationValue =
- Settings.Global.getString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
- if (verifyOn) {
- assertEquals("1", wifiNotificationValue);
- }
- else {
- assertEquals("0", wifiNotificationValue);
- }
- }
-
- private void verifyWiFiOnOrOff(boolean verifyOn) throws Exception {
- String switchText = "On";
- if (verifyOn) {
- switchText = "Off";
- }
- loadWiFiSettingsPage(!verifyOn);
- mDevice.wait(Until
- .findObject(By.res(SETTINGS_PACKAGE, "switch_bar").text(switchText)), TIMEOUT)
- .click();
- Thread.sleep(SLEEP_TIME);
- String wifiValue =
- Settings.Global.getString(getInstrumentation().getContext().getContentResolver(),
- Settings.Global.WIFI_ON);
- if (verifyOn) {
- // 1 is Enabled, 2 is Enabled while airplane mode is ON.
- assertTrue(wifiValue.equals("1") || wifiValue.equals("2"));
- }
- else {
- assertEquals("0", wifiValue);
- }
- }
-
- private void verifyCaCertificateSubmitConditions() throws Exception {
- // Selecting the CA certificate "Do not validate" option enables the submit button.
- selectCaCertificateOption(CACERT_MENU_DO_NOT_VALIDATE_TEXT);
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // However, selecting the CA certificate "Use system certificates option" is not enough to
- // enable the submit button.
- selectCaCertificateOption(CACERT_MENU_USE_SYSTEM_CERTS_TEXT);
- assertFalse(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
-
- // Submit button is only enabled after a domain is entered as well.
- enterDomain(TEST_DOMAIN);
- assertTrue(mDevice.wait(Until.findObject(
- By.text(ADD_NETWORK_MENU_SAVE_BUTTON_TEXT)), TIMEOUT).isEnabled());
- }
-
- private void loadWiFiSettingsPage(boolean wifiEnabled) throws Exception {
- WifiManager wifiManager = (WifiManager)getInstrumentation().getContext()
- .getSystemService(Context.WIFI_SERVICE);
- wifiManager.setWifiEnabled(wifiEnabled);
- SettingsHelper.launchSettingsPage(getInstrumentation().getContext(),
- Settings.ACTION_WIFI_SETTINGS);
- }
-
- private void loadWiFiConfigureMenu() throws Exception {
- loadWiFiSettingsPage(false);
- Thread.sleep(TIMEOUT);
- mDevice.wait(Until.findObject(By.text(CONFIGURE_WIFI_PREFERENCE_TEXT)), TIMEOUT).click();
- mDevice.wait(Until.findObject(
- By.text(CONFIGURE_WIFI_ADVANCED_PREFERENCE_TEXT)), TIMEOUT).click();
- }
-
- private void loadAddNetworkMenu() throws Exception {
- loadWiFiSettingsPage(true);
- for (int attempts = 0; attempts < MAX_ADD_NETWORK_BUTTON_ATTEMPTS; ++attempts) {
- try {
- findOrScrollToObject(By.scrollable(true), By.text(ADD_NETWORK_PREFERENCE_TEXT))
- .click();
- } catch (StaleObjectException e) {
- // The network list might have been updated between when the Add network button was
- // found, and when it UI automator attempted to click on it. Retry.
- continue;
- }
- // If we get here, we successfully clicked on the Add network button, so we are done.
- Thread.sleep(SLEEP_TIME*5);
- return;
- }
-
- fail("Failed to load Add Network Menu after " + MAX_ADD_NETWORK_BUTTON_ATTEMPTS
- + " retries");
- }
-
- private void selectSecurityOption(String securityOption) throws Exception {
- // We might not need to scroll to the security options if not enough add network menu
- // options are visible.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_SECURITY_OPTION_RES_ID)
- .clazz(SPINNER_CLASS)).click();
- Thread.sleep(SLEEP_TIME);
- mDevice.wait(Until.findObject(By.text(securityOption)), TIMEOUT).click();
- }
-
- private void selectEAPMethod(String eapMethod) throws Exception {
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_EAP_METHOD_RES_ID).clazz(SPINNER_CLASS))
- .click();
- Thread.sleep(SLEEP_TIME);
- findOrScrollToObject(SPINNER_OPTIONS_SCROLLABLE_BY_SELECTOR, By.text(eapMethod)).click();
- }
-
- private void selectUserCertificateOption(String userCertificateOption) throws Exception {
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_USERCERT_RES_ID).clazz(SPINNER_CLASS))
- .click();
- mDevice.wait(Until.findObject(By.text(userCertificateOption)), TIMEOUT).click();
- }
-
- private void selectCaCertificateOption(String caCertificateOption) throws Exception {
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_CACERT_RES_ID).clazz(SPINNER_CLASS))
- .click();
- mDevice.wait(Until.findObject(By.text(caCertificateOption)), TIMEOUT).click();
- }
-
- private void enterSSID(String ssid) throws Exception {
- // We might not need to scroll to the SSID option if not enough add network menu options
- // are visible.
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_SSID_RES_ID).clazz(EDIT_TEXT_CLASS))
- .setText(ssid);
- }
-
- private void enterPassword(String password) throws Exception {
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_PASSWORD_RES_ID).clazz(EDIT_TEXT_CLASS))
- .setText(password);
- }
-
- private void enterDomain(String domain) throws Exception {
- findOrScrollToObject(ADD_NETWORK_MENU_SCROLLABLE_BY_SELECTOR,
- By.res(SETTINGS_PACKAGE, ADD_NETWORK_MENU_DOMAIN_RES_ID)).setText(domain);
- }
-
- // Use this if the UI object might or might not need to be scrolled to.
- private UiObject2 findOrScrollToObject(BySelector scrollableSelector, BySelector objectSelector)
- throws Exception {
- UiObject2 object = mDevice.wait(Until.findObject(objectSelector), TIMEOUT);
- if (object == null) {
- object = scrollToObject(scrollableSelector, objectSelector);
- }
- return object;
- }
-
- private UiObject2 scrollToObject(BySelector scrollableSelector, BySelector objectSelector)
- throws Exception {
- UiObject2 scrollable = mDevice.wait(Until.findObject(scrollableSelector), TIMEOUT);
- if (scrollable == null) {
- fail("Could not find scrollable UI object identified by " + scrollableSelector);
- }
- UiObject2 found = null;
- // Scroll all the way up first, then all the way down.
- while (true) {
- // Optimization: terminate if we find the object while scrolling up to reset, so
- // we save the time spent scrolling down again.
- boolean canScrollAgain = scrollable.scroll(Direction.UP, SCROLL_UP_PERCENT,
- SCROLL_SPEED);
- found = mDevice.findObject(objectSelector);
- if (found != null) return found;
- if (!canScrollAgain) break;
- }
- for (int attempts = 0; found == null && attempts < MAX_SCROLL_ATTEMPTS; ++attempts) {
- // Return value of UiObject2.scroll() is not reliable, so do not use it in loop
- // condition, in case it causes this loop to terminate prematurely.
- scrollable.scroll(Direction.DOWN, SCROLL_DOWN_PERCENT, SCROLL_SPEED);
- found = mDevice.findObject(objectSelector);
- }
- if (found == null) {
- fail("Could not scroll to UI object identified by " + objectSelector);
- }
- return found;
- }
-}
diff --git a/tests/uitests/src/com/android/settings/functional/testutils/SettingsTestUtils.java b/tests/uitests/src/com/android/settings/functional/testutils/SettingsTestUtils.java
deleted file mode 100644
index 834eeccca05..00000000000
--- a/tests/uitests/src/com/android/settings/functional/testutils/SettingsTestUtils.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.functional.testutils;
-
-import static org.junit.Assert.assertNotNull;
-
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-
-public class SettingsTestUtils {
-
- public static final String SETTINGS_PACKAGE = "com.android.settings";
- public static final int TIMEOUT = 2000;
-
- private void scrollToTop(UiDevice device) throws Exception {
- int count = 5;
- UiObject2 view = null;
- while (count >= 0) {
- view = device.wait(
- Until.findObject(By.res(SETTINGS_PACKAGE, "main_content")),
- TIMEOUT);
- view.scroll(Direction.UP, 1.0f);
- count--;
- }
- }
-
- public static void assertTitleMatch(UiDevice device, String title) {
- int maxAttempt = 5;
- UiObject2 item = null;
- UiObject2 view = null;
- while (maxAttempt-- > 0) {
- item = device.wait(Until.findObject(By.res("android:id/title").text(title)), TIMEOUT);
- if (item == null) {
- view = device.wait(
- Until.findObject(By.res(SETTINGS_PACKAGE, "main_content")),
- TIMEOUT);
- view.scroll(Direction.DOWN, 1.0f);
- } else {
- return;
- }
- }
- assertNotNull(String.format("%s in Setting has not been loaded correctly", title), item);
- }
-}