Merge "Add "tablet_device" parameter in sensor_fusion_scene's config.yml and its_base_tests.py" into android13-tests-dev
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/WindowUntrustedTouchTest.java b/tests/framework/base/windowmanager/src/android/server/wm/WindowUntrustedTouchTest.java
index 04d18fa..aa21407 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/WindowUntrustedTouchTest.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/WindowUntrustedTouchTest.java
@@ -62,6 +62,7 @@
import android.server.wm.settings.SettingsSession;
import android.server.wm.shared.BlockingResultReceiver;
import android.server.wm.shared.IUntrustedTouchTestService;
+import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.view.Display;
@@ -70,6 +71,7 @@
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
+import android.view.accessibility.AccessibilityWindowInfo;
import android.widget.Toast;
import androidx.annotation.AnimRes;
@@ -1034,6 +1036,13 @@
private void addActivity(ComponentName component, @Nullable Bundle extras,
@Nullable Bundle options) {
+ final int focusedWindowIdBeforeStart =
+ mInstrumentation.getUiAutomation().getWindows()
+ .stream()
+ .filter(AccessibilityWindowInfo::isFocused)
+ .mapToInt(AccessibilityWindowInfo::getId)
+ .findFirst().orElse(-1);
+
Intent intent = new Intent();
intent.setComponent(component);
if (extras != null) {
@@ -1042,10 +1051,35 @@
mActivity.startActivity(intent, options);
String packageName = component.getPackageName();
String activity = ComponentNameUtils.getActivityName(component);
+ final boolean transparent = extras != null
+ && extras.getFloat(Components.OverlayActivity.EXTRA_OPACITY, 1.f) == 0;
if (!mWmState.waitFor("activity window " + activity,
- state -> activity.equals(state.getFocusedActivity())
- && state.hasActivityState(component, STATE_RESUMED)
- && state.isWindowSurfaceShown(activity))) {
+ state -> {
+ if (!TextUtils.equals(activity, state.getFocusedActivity())
+ || !state.hasActivityState(component, STATE_RESUMED)
+ || !state.isWindowSurfaceShown(activity)) {
+ return false;
+ }
+
+ // We need to make sure that InputFlinger has populated window info before
+ // proceeding. This checks AccessibilityWindowInfo because it is accessible from
+ // test and information comes from input.
+
+ if (transparent) {
+ // TODO: window with opacity=0 is not exposed to a11y. Skip checking them.
+ // This can be resolved by directly querying WindowInfo.
+ return true;
+ }
+ return mInstrumentation.getUiAutomation().getWindows()
+ .stream()
+ .anyMatch(w -> {
+ Rect rect = new Rect();
+ w.getBoundsInScreen(rect);
+ return w.isFocused()
+ && w.getId() != focusedWindowIdBeforeStart
+ && rect.equals(state.getActivity(component).getBounds());
+ });
+ })) {
fail("Activity from app " + packageName + " did not appear on time");
}
}
diff --git a/tests/tests/permission3/src/android/permission3/cts/PermissionHistoryTest.kt b/tests/tests/permission3/src/android/permission3/cts/PermissionHistoryTest.kt
index 0f80633..72a6795 100644
--- a/tests/tests/permission3/src/android/permission3/cts/PermissionHistoryTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/PermissionHistoryTest.kt
@@ -80,6 +80,9 @@
@Before
fun setUpTest() {
+ // Wear does not currently support the permission dashboard
+ assumeFalse(isWatch)
+
SystemUtil.runWithShellPermissionIdentity {
was7DayToggleEnabled = DeviceConfig.getBoolean(NAMESPACE_PRIVACY,
PRIV_DASH_7_DAY_ENABLED, false)