Merge "Fix CTS failures on fugu" into nyc-dev
diff --git a/hostsidetests/services/activitymanager/src/android/server/cts/ActivityAndWindowManagersState.java b/hostsidetests/services/activitymanager/src/android/server/cts/ActivityAndWindowManagersState.java
index f2445c0..54892de 100644
--- a/hostsidetests/services/activitymanager/src/android/server/cts/ActivityAndWindowManagersState.java
+++ b/hostsidetests/services/activitymanager/src/android/server/cts/ActivityAndWindowManagersState.java
@@ -31,6 +31,7 @@
 import java.util.Objects;
 
 import static android.server.cts.ActivityManagerTestBase.FREEFORM_WORKSPACE_STACK_ID;
+import static android.server.cts.ActivityManagerTestBase.PINNED_STACK_ID;
 import static android.server.cts.StateLogger.log;
 
 /** Combined state of the activity manager and window manager. */
@@ -349,7 +350,8 @@
                         }
 
                         if (aStackBounds.getWidth() >= aTaskMinWidth
-                                && aStackBounds.getHeight() >= aTaskMinHeight) {
+                                && aStackBounds.getHeight() >= aTaskMinHeight
+                                || stackId == PINNED_STACK_ID) {
                             // Bounds are not smaller then minimal possible, so stack and task
                             // bounds must be equal.
                             assertEquals("Task bounds must be equal to stack bounds taskId="
diff --git a/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerState.java b/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerState.java
index 8eb0361..e56c32f 100644
--- a/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerState.java
+++ b/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerState.java
@@ -33,6 +33,7 @@
 
 import static android.server.cts.ActivityManagerTestBase.HOME_STACK_ID;
 import static android.server.cts.StateLogger.log;
+import static android.server.cts.StateLogger.logE;
 
 class ActivityManagerState {
     private static final String DUMPSYS_ACTIVITY_ACTIVITIES = "dumpsys activity activities";
@@ -96,16 +97,16 @@
         }
 
         if (mStacks.isEmpty()) {
-            log("No stacks found...");
+            logE("No stacks found...");
         }
         if (mFocusedStackId == -1) {
-            log("No focused stack found...");
+            logE("No focused stack found...");
         }
         if (mFocusedActivityRecord == null) {
-            log("No focused activity found...");
+            logE("No focused activity found...");
         }
         if (mResumedActivities.isEmpty()) {
-            log("No resumed activities found...");
+            logE("No resumed activities found...");
         }
     }
 
diff --git a/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerTestBase.java b/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerTestBase.java
index e330a9d..d91983d 100644
--- a/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerTestBase.java
+++ b/hostsidetests/services/activitymanager/src/android/server/cts/ActivityManagerTestBase.java
@@ -98,6 +98,7 @@
     protected ActivityAndWindowManagersState mAmWmState = new ActivityAndWindowManagersState();
 
     private int mInitialAccelerometerRotation;
+    private int mUserRotation;
 
     @Override
     protected void setUp() throws Exception {
@@ -106,6 +107,7 @@
         // Get the device, this gives a handle to run commands and install APKs.
         mDevice = getDevice();
         mInitialAccelerometerRotation = getAccelerometerRotation();
+        mUserRotation = getUserRotation();
     }
 
     @Override
@@ -114,6 +116,7 @@
         try {
             mDevice.executeShellCommand(AM_FORCE_STOP_TEST_PACKAGE);
             setAccelerometerRotation(mInitialAccelerometerRotation);
+            setUserRotation(mUserRotation);
             // Remove special stacks.
             mDevice.executeShellCommand(AM_REMOVE_STACK + PINNED_STACK_ID);
             mDevice.executeShellCommand(AM_REMOVE_STACK + DOCKED_STACK_ID);
@@ -224,13 +227,13 @@
 
     protected void setDeviceRotation(int rotation) throws DeviceNotAvailableException {
         setAccelerometerRotation(0);
-        runCommandAndPrintOutput("settings put system user_rotation " + rotation);
+        setUserRotation(rotation);
     }
 
     private int getAccelerometerRotation() throws DeviceNotAvailableException {
         final String rotation =
                 runCommandAndPrintOutput("settings get system accelerometer_rotation");
-        return Integer.valueOf(rotation.trim());
+        return Integer.parseInt(rotation.trim());
     }
 
     private void setAccelerometerRotation(int rotation) throws DeviceNotAvailableException {
@@ -238,6 +241,25 @@
                 "settings put system accelerometer_rotation " + rotation);
     }
 
+    private int getUserRotation() throws DeviceNotAvailableException {
+        final String rotation =
+                runCommandAndPrintOutput("settings get system user_rotation").trim();
+        if ("null".equals(rotation)) {
+            return -1;
+        }
+        return Integer.parseInt(rotation);
+    }
+
+    private void setUserRotation(int rotation) throws DeviceNotAvailableException {
+        if (rotation == -1) {
+            runCommandAndPrintOutput(
+                    "settings delete system user_rotation");
+        } else {
+            runCommandAndPrintOutput(
+                    "settings put system user_rotation " + rotation);
+        }
+    }
+
     protected String runCommandAndPrintOutput(String command) throws DeviceNotAvailableException {
         final String output = mDevice.executeShellCommand(command);
         CLog.logAndDisplay(LogLevel.INFO, command);
diff --git a/hostsidetests/services/activitymanager/src/android/server/cts/StateLogger.java b/hostsidetests/services/activitymanager/src/android/server/cts/StateLogger.java
index 1266102..335f26c 100644
--- a/hostsidetests/services/activitymanager/src/android/server/cts/StateLogger.java
+++ b/hostsidetests/services/activitymanager/src/android/server/cts/StateLogger.java
@@ -19,6 +19,7 @@
 import com.android.tradefed.log.LogUtil.CLog;
 
 import static com.android.ddmlib.Log.LogLevel.INFO;
+import static com.android.ddmlib.Log.LogLevel.ERROR;
 
 /**
  * Util class to perform simple state logging.
@@ -32,4 +33,8 @@
             CLog.logAndDisplay(INFO, logText);
         }
     }
+
+    public static void logE(String logText) {
+        CLog.logAndDisplay(ERROR, logText);
+    }
 }
diff --git a/hostsidetests/services/activitymanager/src/android/server/cts/WindowManagerState.java b/hostsidetests/services/activitymanager/src/android/server/cts/WindowManagerState.java
index ffa3b83..da346ac 100644
--- a/hostsidetests/services/activitymanager/src/android/server/cts/WindowManagerState.java
+++ b/hostsidetests/services/activitymanager/src/android/server/cts/WindowManagerState.java
@@ -32,6 +32,7 @@
 import java.util.regex.Matcher;
 
 import static android.server.cts.StateLogger.log;
+import static android.server.cts.StateLogger.logE;
 
 class WindowManagerState {
     private static final String DUMPSYS_WINDOWS_APPS = "dumpsys window apps";
@@ -105,13 +106,13 @@
         }
 
         if (mWindows.isEmpty()) {
-            log("No Windows found...");
+            logE("No Windows found...");
         }
         if (mFocusedWindow == null) {
-            log("No Focused Window...");
+            logE("No Focused Window...");
         }
         if (mFocusedApp == null) {
-            log("No Focused App...");
+            logE("No Focused App...");
         }
     }