Merge "Avoid unexpected screen off during perf testing" into rvc-dev am: 92b6167fc8

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11836347

Change-Id: I98737c7605fbfb5d38ade02af334006ae5bb8b82
This commit is contained in:
TreeHugger Robot
2020-06-12 21:41:28 +00:00
committed by Automerger Merge Worker
3 changed files with 25 additions and 11 deletions

View File

@@ -23,6 +23,7 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat
import static org.hamcrest.core.AnyOf.anyOf; import static org.hamcrest.core.AnyOf.anyOf;
import static org.hamcrest.core.Is.is; import static org.hamcrest.core.Is.is;
import android.app.ActivityManager;
import android.app.ActivityManager.TaskSnapshot; import android.app.ActivityManager.TaskSnapshot;
import android.app.ActivityTaskManager; import android.app.ActivityTaskManager;
import android.app.IActivityTaskManager; import android.app.IActivityTaskManager;
@@ -121,6 +122,12 @@ public class RecentsAnimationPerfTest extends WindowManagerPerfTestBase {
@AfterClass @AfterClass
public static void tearDownClass() { public static void tearDownClass() {
sSetUpClassException = null; sSetUpClassException = null;
try {
// Recents activity may stop app switches. Restore the state to avoid affecting
// the next test.
ActivityManager.resumeAppSwitches();
} catch (RemoteException ignored) {
}
sUiAutomation.dropShellPermissionIdentity(); sUiAutomation.dropShellPermissionIdentity();
} }

View File

@@ -88,10 +88,7 @@ public class RelayoutPerfTest extends WindowManagerPerfTestBase {
public void testRelayout() throws Throwable { public void testRelayout() throws Throwable {
final Activity activity = mActivityRule.getActivity(); final Activity activity = mActivityRule.getActivity();
final ContentView contentView = new ContentView(activity); final ContentView contentView = new ContentView(activity);
mActivityRule.runOnUiThread(() -> { mActivityRule.runOnUiThread(() -> activity.setContentView(contentView));
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
activity.setContentView(contentView);
});
getInstrumentation().waitForIdleSync(); getInstrumentation().waitForIdleSync();
final RelayoutRunner relayoutRunner = new RelayoutRunner(activity, contentView.getWindow(), final RelayoutRunner relayoutRunner = new RelayoutRunner(activity, contentView.getWindow(),

View File

@@ -19,11 +19,13 @@ package android.wm;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import android.app.Activity; import android.app.Activity;
import android.app.KeyguardManager;
import android.app.UiAutomation; import android.app.UiAutomation;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.BatteryManager; import android.os.BatteryManager;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.os.PowerManager;
import android.perftests.utils.PerfTestActivity; import android.perftests.utils.PerfTestActivity;
import android.provider.Settings; import android.provider.Settings;
@@ -61,25 +63,33 @@ public class WindowManagerPerfTestBase {
@BeforeClass @BeforeClass
public static void setUpOnce() { public static void setUpOnce() {
final Context context = getInstrumentation().getContext(); final Context context = getInstrumentation().getContext();
sOriginalStayOnWhilePluggedIn = Settings.Global.getInt(context.getContentResolver(), final int stayOnWhilePluggedIn = Settings.Global.getInt(context.getContentResolver(),
Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0); Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0);
sOriginalStayOnWhilePluggedIn = -1;
if (stayOnWhilePluggedIn != BatteryManager.BATTERY_PLUGGED_ANY) {
sOriginalStayOnWhilePluggedIn = stayOnWhilePluggedIn;
// Keep the device awake during testing. // Keep the device awake during testing.
setStayOnWhilePluggedIn(BatteryManager.BATTERY_PLUGGED_USB); setStayOnWhilePluggedIn(BatteryManager.BATTERY_PLUGGED_ANY);
}
if (!BASE_OUT_PATH.exists()) { if (!BASE_OUT_PATH.exists()) {
executeShellCommand("mkdir -p " + BASE_OUT_PATH); executeShellCommand("mkdir -p " + BASE_OUT_PATH);
} }
// In order to be closer to the real use case. if (!context.getSystemService(PowerManager.class).isInteractive()
|| context.getSystemService(KeyguardManager.class).isKeyguardLocked()) {
executeShellCommand("input keyevent KEYCODE_WAKEUP"); executeShellCommand("input keyevent KEYCODE_WAKEUP");
executeShellCommand("wm dismiss-keyguard"); executeShellCommand("wm dismiss-keyguard");
}
context.startActivity(new Intent(Intent.ACTION_MAIN) context.startActivity(new Intent(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); .addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
} }
@AfterClass @AfterClass
public static void tearDownOnce() { public static void tearDownOnce() {
if (sOriginalStayOnWhilePluggedIn != -1) {
setStayOnWhilePluggedIn(sOriginalStayOnWhilePluggedIn); setStayOnWhilePluggedIn(sOriginalStayOnWhilePluggedIn);
} }
}
private static void setStayOnWhilePluggedIn(int value) { private static void setStayOnWhilePluggedIn(int value) {
executeShellCommand(String.format("settings put global %s %d", executeShellCommand(String.format("settings put global %s %d",