269 lines
11 KiB
Java
269 lines
11 KiB
Java
/*
|
|
* Copyright (C) 2018 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;
|
|
}
|
|
}
|
|
}
|