From b182ef3c77b7170ab09df72b86550a67eadbcfdd Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Fri, 14 Oct 2016 10:46:03 -0700 Subject: [PATCH] Set stay awake while wireless charging. Now if you select "stay awake" in Developer options, the screen will keep on when wireless charging. Bug:31696030 Test: make SettingsTests Change-Id: If88bf559519c19654822c70d7684be583d907e00 --- .../android/settings/DevelopmentSettings.java | 3 +- .../settings/tests/KeepOnScreenTest.java | 70 +++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 tests/app/src/com/android/settings/tests/KeepOnScreenTest.java diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index a4ced353d21..4be74d3b92c 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -1982,7 +1982,8 @@ public class DevelopmentSettings extends RestrictedSettingsFragment Settings.Global.putInt(getActivity().getContentResolver(), Settings.Global.STAY_ON_WHILE_PLUGGED_IN, mKeepScreenOn.isChecked() ? - (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0); + (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB + | BatteryManager.BATTERY_PLUGGED_WIRELESS) : 0); } else if (preference == mBtHciSnoopLog) { writeBtHciSnoopLogOptions(); } else if (preference == mEnableOemUnlock && mEnableOemUnlock.isEnabled()) { diff --git a/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java b/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java new file mode 100644 index 00000000000..0b1308e6d03 --- /dev/null +++ b/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2016 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.tests; + +import android.app.Instrumentation; +import android.content.Context; +import android.content.Intent; +import android.os.BatteryManager; +import android.provider.Settings; +import android.support.test.InstrumentationRegistry; +import org.junit.After; +import org.junit.Before; +import org.junit.runner.RunWith; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; +import org.junit.Test; +import com.android.settings.R; + +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.action.ViewActions.click; +import static android.support.test.espresso.matcher.ViewMatchers.*; +import static junit.framework.Assert.assertEquals; + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class KeepOnScreenTest { + private static int EXPECTED_FLAG = BatteryManager.BATTERY_PLUGGED_AC + | BatteryManager.BATTERY_PLUGGED_USB | BatteryManager.BATTERY_PLUGGED_WIRELESS; + + @Test + public void testStayAwake_turnOn_StayAwakeWhileWirelessCharging() throws Exception{ + Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); + instrumentation.startActivitySync(new Intent(android.provider.Settings + .ACTION_APPLICATION_DEVELOPMENT_SETTINGS)); + + final Context targetContext = instrumentation.getTargetContext(); + final int prevFlag = Settings.Global.getInt(targetContext.getContentResolver(), Settings + .Global.STAY_ON_WHILE_PLUGGED_IN); + + // Turn on "Stay Awake" if needed + if (prevFlag == 0) { + onView(withText(R.string.keep_screen_on)).perform(click()); + } + + final int currentFlag = Settings.Global.getInt(targetContext.getContentResolver(), Settings + .Global.STAY_ON_WHILE_PLUGGED_IN); + + assertEquals(EXPECTED_FLAG, currentFlag); + + // Since this app doesn't have permission(and shouldn't have) to change global setting, we + // can only tearDown in this way + if (prevFlag != currentFlag) { + onView(withText(R.string.keep_screen_on)).perform(click()); + } + } +}