Fix PopupWindow test even though when window inset is zero
If the window inset is zero.
For example in LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
window inset top will be zero,
The expected position should according to upperAnchor.getWindowDisplayFrame
Bug: 115706065
Test: PopupWindowTest#testShowAtLocation
Test: PopupWindowTest#testUpdatePositionAndDimension
Change-Id: Iec7724c8faad1fd6ef58666ca14a76b10ae7a03e
diff --git a/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java b/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
index c25c620..2c483d7 100644
--- a/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
+++ b/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
@@ -635,6 +635,7 @@
public void testShowAtLocation() throws Throwable {
int[] popupContentViewInWindowXY = new int[2];
int[] popupContentViewOnScreenXY = new int[2];
+ Rect containingRect = new Rect();
mPopupWindow = createPopupWindow(createPopupContent(CONTENT_SIZE_DP, CONTENT_SIZE_DP));
// Do not attach within the decor; we will be measuring location
@@ -658,11 +659,12 @@
assertTrue(mPopupWindow.isShowing());
mPopupWindow.getContentView().getLocationInWindow(popupContentViewInWindowXY);
mPopupWindow.getContentView().getLocationOnScreen(popupContentViewOnScreenXY);
+ upperAnchor.getWindowDisplayFrame(containingRect);
assertTrue(popupContentViewInWindowXY[0] >= 0);
assertTrue(popupContentViewInWindowXY[1] >= 0);
- assertEquals(popupContentViewInWindowXY[0] + xOff, popupContentViewOnScreenXY[0]);
- assertEquals(popupContentViewInWindowXY[1] + yOff, popupContentViewOnScreenXY[1]);
+ assertEquals(containingRect.left + popupContentViewInWindowXY[0] + xOff, popupContentViewOnScreenXY[0]);
+ assertEquals(containingRect.top + popupContentViewInWindowXY[1] + yOff, popupContentViewOnScreenXY[1]);
dismissPopup();
}
@@ -943,6 +945,7 @@
int[] fstXY = new int[2];
int[] sndXY = new int[2];
int[] viewInWindowXY = new int[2];
+ Rect containingRect = new Rect();
final Point popupPos = new Point();
mActivityRule.runOnUiThread(() -> {
@@ -962,6 +965,7 @@
showPopup();
mPopupWindow.getContentView().getLocationInWindow(viewInWindowXY);
final View containerView = mActivity.findViewById(R.id.main_container);
+ containerView.getWindowDisplayFrame(containingRect);
// update if it is not shown
mActivityRule.runOnUiThread(() -> mPopupWindow.update(80, 80));
@@ -983,8 +987,8 @@
assertEquals(50, mPopupWindow.getHeight());
mPopupWindow.getContentView().getLocationOnScreen(fstXY);
- assertEquals(popupPos.x + viewInWindowXY[0], fstXY[0]);
- assertEquals(popupPos.y + viewInWindowXY[1], fstXY[1]);
+ assertEquals(containingRect.left + popupPos.x + viewInWindowXY[0], fstXY[0]);
+ assertEquals(containingRect.top + popupPos.y + viewInWindowXY[1], fstXY[1]);
popupPos.set(windowInsets.getStableInsetLeft() + 4, windowInsets.getStableInsetTop());
@@ -998,8 +1002,8 @@
assertEquals(50, mPopupWindow.getHeight());
mPopupWindow.getContentView().getLocationOnScreen(sndXY);
- assertEquals(popupPos.x + viewInWindowXY[0], sndXY[0]);
- assertEquals(popupPos.y + viewInWindowXY[1], sndXY[1]);
+ assertEquals(containingRect.left + popupPos.x + viewInWindowXY[0], sndXY[0]);
+ assertEquals(containingRect.top + popupPos.y + viewInWindowXY[1], sndXY[1]);
dismissPopup();
}