summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-10-02 23:02:55 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-10-02 23:02:55 +0000
commit2ed2c83c83286ee033b78b6fa11394ea405e57ed (patch)
treef8ddc19c3cfd8a94eb02162b92350a91fde0690b
parent8b40176ea5c0230cdbec729fadc7364f0f0ff4de (diff)
parent467128aef528e1314f144d4e1d3be58202723f30 (diff)
downloadbase-2ed2c83c83286ee033b78b6fa11394ea405e57ed.tar.gz
Snap for 6880396 from 467128aef528e1314f144d4e1d3be58202723f30 to rvc-qpr1-release
Change-Id: Iaac5d68b2bbb5c46d7654447349c95f040007c6c
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml2
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml2
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml2
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml2
-rw-r--r--packages/SystemUI/res/values-in/strings.xml2
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml2
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml12
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java20
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java2
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java9
-rw-r--r--services/core/java/com/android/server/wm/DisplayPolicy.java42
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java21
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java46
13 files changed, 141 insertions, 23 deletions
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index c5d52eea74f5..05f796a4702f 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -1070,7 +1070,7 @@
<string name="accessibility_control_favorite" msgid="8694362691985545985">"تمت الإضافة إلى المفضّلة"</string>
<string name="accessibility_control_favorite_position" msgid="54220258048929221">"تمت الإضافة إلى المفضّلة، الموضع <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="accessibility_control_not_favorite" msgid="1291760269563092359">"تمت الإزالة من المفضّلة"</string>
- <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"إضافة إلى المُفضلة"</string>
+ <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"إضافة إلى المحتوى المفضّل"</string>
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"إزالة من المفضّلة"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"نقل إلى الموضع <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"عناصر التحكّم"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 4827ace9503f..0e7345d0db34 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -246,7 +246,7 @@
<string name="accessibility_remove_notification" msgid="1641455251495815527">"پاک کردن اعلان"</string>
<string name="accessibility_gps_enabled" msgid="4061313248217660858">"‏GPS فعال شد."</string>
<string name="accessibility_gps_acquiring" msgid="896207402196024040">"‏دستیابی به GPS."</string>
- <string name="accessibility_tty_enabled" msgid="1123180388823381118">"‏TeleTypewriter فعال شد."</string>
+ <string name="accessibility_tty_enabled" msgid="1123180388823381118">"تله‌تایپ فعال شد."</string>
<string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"زنگ لرزشی."</string>
<string name="accessibility_ringer_silent" msgid="8994620163934249882">"زنگ بی‌صدا."</string>
<!-- no translation found for accessibility_casting (8708751252897282313) -->
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 42831c3a5aee..480da3051639 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -246,7 +246,7 @@
<string name="accessibility_remove_notification" msgid="1641455251495815527">"Eliminar notificación."</string>
<string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS activado"</string>
<string name="accessibility_gps_acquiring" msgid="896207402196024040">"Obtendo GPS."</string>
- <string name="accessibility_tty_enabled" msgid="1123180388823381118">"TeleTypewriter activado"</string>
+ <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletipo activado"</string>
<string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Timbre en vibración"</string>
<string name="accessibility_ringer_silent" msgid="8994620163934249882">"Timbre silenciado"</string>
<!-- no translation found for accessibility_casting (8708751252897282313) -->
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 214a6d710bbc..77c5141b8167 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -246,7 +246,7 @@
<string name="accessibility_remove_notification" msgid="1641455251495815527">"Մաքրել ծանուցումը:"</string>
<string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS-ը միացված է:"</string>
<string name="accessibility_gps_acquiring" msgid="896207402196024040">"GPS-ի ստացում:"</string>
- <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Հեռամուտքագրիչը միացված է:"</string>
+ <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Հեռատիպը միացված է:"</string>
<string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Թրթռազանգ:"</string>
<string name="accessibility_ringer_silent" msgid="8994620163934249882">"Զանգակը լռեցված է:"</string>
<!-- no translation found for accessibility_casting (8708751252897282313) -->
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 97652f0c6ae6..62167361363b 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -597,7 +597,7 @@
<string name="screen_pinning_description_accessible" msgid="7386449191953535332">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Ringkasan untuk melepas pin."</string>
<string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Beranda untuk melepas pin."</string>
<string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"Data pribadi dapat diakses (seperti kontak dan konten email)."</string>
- <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"Aplikasi yang dipasangi pin dapat membuka aplikasi lain."</string>
+ <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"Aplikasi yang disematkan dapat membuka aplikasi lain."</string>
<string name="screen_pinning_toast" msgid="8177286912533744328">"Untuk melepas pin aplikasi ini, sentuh &amp; lama tombol Kembali dan Ringkasan"</string>
<string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"Untuk melepas pin aplikasi ini, sentuh &amp; lama tombol Kembali dan Layar utama"</string>
<string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"Untuk melepas pin aplikasi ini, geser ke atas &amp; tahan"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index a67130bb7d3a..912b25ef4337 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -246,7 +246,7 @@
<string name="accessibility_remove_notification" msgid="1641455251495815527">"Pastro njoftimin."</string>
<string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS-ja është e aktivizuar."</string>
<string name="accessibility_gps_acquiring" msgid="896207402196024040">"Po siguron GPS-në."</string>
- <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teleprinteri është i aktivizuar."</string>
+ <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletajpi është i aktivizuar."</string>
<string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Zile me dridhje."</string>
<string name="accessibility_ringer_silent" msgid="8994620163934249882">"Zilja është heshtur."</string>
<!-- no translation found for accessibility_casting (8708751252897282313) -->
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 3d77bd7ae01c..99219d1c1b44 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -882,12 +882,12 @@
<string name="accessibility_action_divider_top_50" msgid="6275211443706497621">"மேலே 50%"</string>
<string name="accessibility_action_divider_top_30" msgid="5780597635887574916">"மேலே 30%"</string>
<string name="accessibility_action_divider_bottom_full" msgid="7352434720610115395">"கீழ்ப்புறம் முழுத் திரை"</string>
- <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"டைலை அகற்றும்"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"கடைசியில் டைலைச் சேர்க்கும்"</string>
- <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"டைலை நகர்த்து"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"டைலைச் சேர்"</string>
- <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> இடத்திற்கு நகர்த்தும்"</string>
- <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> என்ற இடத்தில் சேர்க்கும்"</string>
+ <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"கட்டத்தை அகற்றும்"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"கடைசியில் கட்டத்தைச் சேர்க்கும்"</string>
+ <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"கட்டத்தை நகர்த்து"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"கட்டத்தைச் சேர்"</string>
+ <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g>க்கு நகர்த்தும்"</string>
+ <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g>ல் சேர்க்கும்"</string>
<string name="accessibility_qs_edit_position" msgid="4509277359815711830">"இடம்: <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"விரைவு அமைப்புகள் திருத்தி."</string>
<string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> அறிவிப்பு: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index b3eb53116d49..ffa518e266d9 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -586,7 +586,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private final NetworkPolicyLogger mLogger = new NetworkPolicyLogger();
- /** List of apps indexed by appId and whether they have the internet permission */
+ /** List of apps indexed by uid and whether they have the internet permission */
@GuardedBy("mUidRulesFirstLock")
private final SparseBooleanArray mInternetPermissionMap = new SparseBooleanArray();
@@ -972,7 +972,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
if (LOGV) Slog.v(TAG, "ACTION_PACKAGE_ADDED for uid=" + uid);
// Clear the cache for the app
synchronized (mUidRulesFirstLock) {
- mInternetPermissionMap.delete(UserHandle.getAppId(uid));
+ mInternetPermissionMap.delete(uid);
updateRestrictionRulesForUidUL(uid);
}
}
@@ -4194,16 +4194,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
@GuardedBy("mUidRulesFirstLock")
private boolean hasInternetPermissionUL(int uid) {
try {
- final int appId = UserHandle.getAppId(uid);
- final boolean hasPermission;
- if (mInternetPermissionMap.indexOfKey(appId) < 0) {
- hasPermission =
- mIPm.checkUidPermission(Manifest.permission.INTERNET, uid)
- == PackageManager.PERMISSION_GRANTED;
- mInternetPermissionMap.put(appId, hasPermission);
- } else {
- hasPermission = mInternetPermissionMap.get(appId);
+ if (mInternetPermissionMap.get(uid)) {
+ return true;
}
+ // If the cache shows that uid doesn't have internet permission,
+ // then always re-check with PackageManager just to be safe.
+ final boolean hasPermission = mIPm.checkUidPermission(Manifest.permission.INTERNET,
+ uid) == PackageManager.PERMISSION_GRANTED;
+ mInternetPermissionMap.put(uid, hasPermission);
return hasPermission;
} catch (RemoteException e) {
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index d42c7eae18ce..c20a912152cd 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -3655,6 +3655,8 @@ public class PackageManagerService extends IPackageManager.Stub
PackageParser.readConfigUseRoundIcon(mContext.getResources());
mServiceStartWithDelay = SystemClock.uptimeMillis() + (60 * 1000L);
+
+ Slog.i(TAG, "Fix for b/169414761 is applied");
}
/**
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 553aad1a43cd..946d797b8348 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -1496,6 +1496,15 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
// intermediate orientation change, it is more stable to freeze the display.
return false;
}
+ if (r.isState(RESUMED) && !r.getRootTask().mInResumeTopActivity) {
+ // If the activity is executing or has done the lifecycle callback, use normal
+ // rotation animation so the display info can be updated immediately (see
+ // updateDisplayAndOrientation). This prevents a compatibility issue such as
+ // calling setRequestedOrientation in Activity#onCreate and then get display info.
+ // If fixed rotation is applied, the display rotation will still be the old one,
+ // unless the client side gets the rotation again after the adjustments arrive.
+ return false;
+ }
} else if (r != topRunningActivity()) {
// If the transition has not started yet, the activity must be the top.
return false;
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index c691a0e220ed..515d1f58d3ef 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -2659,6 +2659,14 @@ public class DisplayPolicy {
}
win.computeFrame(displayFrames);
+
+ // When system bars are added to the Android device through {@link #layoutStatusBar} and
+ // {@link #layoutNavigationBar}, the displayFrames are adjusted to take the system bars into
+ // account. The call below adjusts the display frames for system bars which use flexible
+ // insets mapping instead of {@link #layoutStatusbar} and {@link #layoutNavigationBar}. Note
+ // that this call is a no-op if not using flexible insets mapping.
+ adjustDisplayFramesForFlexibleInsets(win, displayFrames);
+
// Dock windows carve out the bottom of the screen, so normal windows
// can't appear underneath them.
if (type == TYPE_INPUT_METHOD && win.isVisibleLw()
@@ -2671,6 +2679,40 @@ public class DisplayPolicy {
}
}
+ private void adjustDisplayFramesForFlexibleInsets(WindowState win,
+ DisplayFrames displayFrames) {
+ if (win == mStatusBarAlt) {
+ adjustDisplayFramesForWindow(win, mStatusBarAltPosition, displayFrames);
+ } else if (win == mNavigationBarAlt) {
+ adjustDisplayFramesForWindow(win, mNavigationBarAltPosition, displayFrames);
+ } else if (win == mClimateBarAlt) {
+ adjustDisplayFramesForWindow(win, mClimateBarAltPosition, displayFrames);
+ } else if (win == mExtraNavBarAlt) {
+ adjustDisplayFramesForWindow(win, mExtraNavBarAltPosition, displayFrames);
+ }
+ }
+
+ private static void adjustDisplayFramesForWindow(WindowState win,
+ @WindowManagerPolicy.AltBarPosition int position, DisplayFrames displayFrames) {
+ final Rect frame = win.getFrameLw();
+
+ // Note: This doesn't take into account display cutouts.
+ switch (position) {
+ case ALT_BAR_TOP:
+ displayFrames.mStable.top = frame.bottom;
+ break;
+ case ALT_BAR_BOTTOM:
+ displayFrames.mStable.bottom = displayFrames.mStableFullscreen.bottom = frame.top;
+ break;
+ case ALT_BAR_LEFT:
+ displayFrames.mStable.left = displayFrames.mStableFullscreen.left = frame.right;
+ break;
+ case ALT_BAR_RIGHT:
+ displayFrames.mStable.right = displayFrames.mStableFullscreen.right = frame.left;
+ break;
+ }
+ }
+
private void layoutWallpaper(DisplayFrames displayFrames, Rect pf, Rect df, Rect cf) {
// The wallpaper has Real Ultimate Power
df.set(displayFrames.mUnrestricted);
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index c7a8bd857674..1948003a7499 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -1276,6 +1276,27 @@ public class DisplayContentTests extends WindowTestsBase {
}
@Test
+ public void testNoFixedRotationOnResumedScheduledApp() {
+ final ActivityRecord app = new ActivityTestsBase.StackBuilder(mWm.mRoot)
+ .setDisplay(mDisplayContent).build().getTopMostActivity();
+ app.setVisible(false);
+ app.setState(ActivityStack.ActivityState.RESUMED, "test");
+ mDisplayContent.prepareAppTransition(WindowManager.TRANSIT_ACTIVITY_OPEN,
+ false /* alwaysKeepCurrent */);
+ mDisplayContent.mOpeningApps.add(app);
+ final int newOrientation = getRotatedOrientation(mDisplayContent);
+ app.setRequestedOrientation(newOrientation);
+
+ // The condition should reject using fixed rotation because the resumed client in real case
+ // might get display info immediately. And the fixed rotation adjustments haven't arrived
+ // client side so the info may be inconsistent with the requested orientation.
+ verify(mDisplayContent).handleTopActivityLaunchingInDifferentOrientation(eq(app),
+ eq(true) /* checkOpening */);
+ assertFalse(app.isFixedRotationTransforming());
+ assertFalse(mDisplayContent.hasTopFixedRotationLaunchingApp());
+ }
+
+ @Test
public void testRecentsNotRotatingWithFixedRotation() {
final DisplayRotation displayRotation = mDisplayContent.getDisplayRotation();
doCallRealMethod().when(displayRotation).updateRotationUnchecked(anyBoolean());
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java
index cb9b49abfe2b..58d4104bf2b0 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java
@@ -45,6 +45,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
+import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL;
import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL;
import static android.view.WindowManagerPolicyConstants.ALT_BAR_BOTTOM;
import static android.view.WindowManagerPolicyConstants.ALT_BAR_LEFT;
@@ -753,6 +754,51 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase {
}
@Test
+ public void layoutWindowLw_withFlexibleSystemBars_adjustStableFrame() {
+ mDisplayPolicy.removeWindowLw(mStatusBarWindow);
+ mDisplayPolicy.removeWindowLw(mNavBarWindow);
+
+ WindowState statusWin = spy(createWindow(null, TYPE_STATUS_BAR_ADDITIONAL,
+ "StatusBarAdditional"));
+ doNothing().when(statusWin).computeFrameLw();
+ statusWin.mAttrs.providesInsetsTypes = new int[]{ITYPE_STATUS_BAR};
+ statusWin.mAttrs.gravity = Gravity.TOP;
+ statusWin.mAttrs.height = STATUS_BAR_HEIGHT;
+ statusWin.mAttrs.width = MATCH_PARENT;
+ statusWin.getFrameLw().set(0, 0, DISPLAY_WIDTH, STATUS_BAR_HEIGHT);
+ addWindow(statusWin);
+
+ WindowState navWin = spy(createWindow(null, TYPE_NAVIGATION_BAR_PANEL,
+ "NavigationBarPanel"));
+ doNothing().when(navWin).computeFrameLw();
+ navWin.mAttrs.providesInsetsTypes = new int[]{ITYPE_NAVIGATION_BAR};
+ navWin.mAttrs.gravity = Gravity.BOTTOM;
+ navWin.mAttrs.height = NAV_BAR_HEIGHT;
+ navWin.mAttrs.width = MATCH_PARENT;
+ navWin.getFrameLw().set(0, DISPLAY_HEIGHT - NAV_BAR_HEIGHT, DISPLAY_WIDTH, DISPLAY_HEIGHT);
+ addWindow(navWin);
+
+ WindowState climateWin = spy(createWindow(null, TYPE_NAVIGATION_BAR_PANEL,
+ "ClimatePanel"));
+ doNothing().when(climateWin).computeFrameLw();
+ climateWin.mAttrs.providesInsetsTypes = new int[]{ITYPE_CLIMATE_BAR};
+ climateWin.mAttrs.gravity = Gravity.LEFT;
+ climateWin.mAttrs.height = MATCH_PARENT;
+ climateWin.mAttrs.width = 20;
+ climateWin.getFrameLw().set(0, 0, 20, DISPLAY_HEIGHT);
+ addWindow(climateWin);
+
+ mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
+ mDisplayPolicy.layoutWindowLw(statusWin, null, mFrames);
+ mDisplayPolicy.layoutWindowLw(navWin, null, mFrames);
+ mDisplayPolicy.layoutWindowLw(climateWin, null, mFrames);
+
+ assertThat(mFrames.mStable,
+ is(new Rect(20, STATUS_BAR_HEIGHT, DISPLAY_WIDTH,
+ DISPLAY_HEIGHT - NAV_BAR_HEIGHT)));
+ }
+
+ @Test
public void layoutHint_appWindow() {
mWindow.mAttrs.flags =
FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;