Fix CtsSyncAccountAccessOtherCertTestCases to handle Wear.

Bug:63134847
Test: run cts -m CtsSyncContentHostTestCases

Change-Id: I2b615ab31041b0ccad0eee61a7712a520a24c809
diff --git a/hostsidetests/content/test-apps/CtsSyncAccountAccessOtherCertTests/src/com/android/cts/content/CtsSyncAccountAccessOtherCertTestCases.java b/hostsidetests/content/test-apps/CtsSyncAccountAccessOtherCertTests/src/com/android/cts/content/CtsSyncAccountAccessOtherCertTestCases.java
index 785711b..1999b36 100644
--- a/hostsidetests/content/test-apps/CtsSyncAccountAccessOtherCertTests/src/com/android/cts/content/CtsSyncAccountAccessOtherCertTestCases.java
+++ b/hostsidetests/content/test-apps/CtsSyncAccountAccessOtherCertTests/src/com/android/cts/content/CtsSyncAccountAccessOtherCertTestCases.java
@@ -27,6 +27,7 @@
 import android.content.SyncResult;
 import android.content.cts.FlakyTestRule;
 import android.content.pm.PackageManager;
+import android.content.res.Configuration;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.os.Bundle;
@@ -36,7 +37,9 @@
 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.util.Log;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -118,12 +121,17 @@
             assertFalse(latch.await(SYNC_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS));
 
             UiDevice uiDevice = getUiDevice();
+            if (isWatch()) {
+                UiObject2 notification = findPermissionNotificationInStream(uiDevice);
+                notification.click();
+            } else {
+                uiDevice.openNotification();
+                uiDevice.wait(Until.hasObject(By.text("Permission requested")),
+                        UI_TIMEOUT_MILLIS);
 
-            uiDevice.openNotification();
-            uiDevice.wait(Until.hasObject(By.text("Permission requested")),
-                    UI_TIMEOUT_MILLIS);
+                uiDevice.findObject(By.text("Permission requested")).click();
+            }
 
-            uiDevice.findObject(By.text("Permission requested")).click();
             uiDevice.wait(Until.hasObject(By.text("ALLOW")),
                     UI_TIMEOUT_MILLIS);
 
@@ -136,9 +144,44 @@
             // Ask the differently signed authenticator to drop all accounts
             accountManager.getAuthToken(addedAccount, TOKEN_TYPE_REMOVE_ACCOUNTS,
                     null, false, null, null);
+            activity.finish();
         }
     }
 
+    private UiObject2 findPermissionNotificationInStream(UiDevice uiDevice) {
+        uiDevice.pressHome();
+        swipeUp(uiDevice);
+        if (uiDevice.hasObject(By.text("Permission requested"))) {
+          return uiDevice.findObject(By.text("Permission requested"));
+        }
+        for (int i = 0; i < 100; i++) {
+          if (!swipeUp(uiDevice)) {
+            // We have reached the end of the stream and not found the target.
+            break;
+          }
+          if (uiDevice.hasObject(By.text("Permission requested"))) {
+            return uiDevice.findObject(By.text("Permission requested"));
+          }
+        }
+        return null;
+    }
+
+    private boolean swipeUp(UiDevice uiDevice) {
+        int width = uiDevice.getDisplayWidth();
+        int height = uiDevice.getDisplayHeight();
+        return uiDevice.swipe(
+            width / 2 /* startX */,
+            height - 1 /* startY */,
+            width / 2 /* endX */,
+            1 /* endY */,
+            50 /* numberOfSteps */);
+    }
+
+    private boolean isWatch() {
+        return (getContext().getResources().getConfiguration().uiMode
+                & Configuration.UI_MODE_TYPE_WATCH) == Configuration.UI_MODE_TYPE_WATCH;
+    }
+
     private Context getContext() {
         return InstrumentationRegistry.getInstrumentation().getContext();
     }