From fbfe223a44c924c36c131eb1514eb1145c82ccb8 Mon Sep 17 00:00:00 2001 From: Kevin Hufnagle Date: Tue, 3 Sep 2019 21:54:29 +0000 Subject: [PATCH 1/6] docs: Fixed contradictory info in IntentFilter The docs now (correctly) state that, if an intent filter specifies no actions, then it only matches intents that don't specify/contain an action. Test: make ds-docs -j32 Bug: 140435265 Change-Id: I8931c6540cb22edd15e8caa1be984ca70efcdc96 --- core/java/android/content/IntentFilter.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/java/android/content/IntentFilter.java b/core/java/android/content/IntentFilter.java index 9d523633feb66..099dea29eaf7f 100644 --- a/core/java/android/content/IntentFilter.java +++ b/core/java/android/content/IntentFilter.java @@ -60,9 +60,7 @@ import java.util.Set; * multiple possible matching values (via {@link #addAction}, * {@link #addDataType}, {@link #addDataScheme}, {@link #addDataSchemeSpecificPart}, * {@link #addDataAuthority}, {@link #addDataPath}, and {@link #addCategory}, respectively). - * For actions, the field - * will not be tested if no values have been given (treating it as a wildcard); - * if no data characteristics are specified, however, then the filter will + * For actions, if no data characteristics are specified, then the filter will * only match intents that contain no data. * *

The data characteristic is From 298fd2cf7e442626644d6df721be928dc2e76bdd Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Wed, 28 Aug 2019 13:19:42 -0700 Subject: [PATCH 2/6] GestureNav: Fix bug in exlcusion limit device config Fixes an issue, where the DeviceConfig exclusion limit was reset whenever another key in the android:window_manager namespace changed. Fixes: 140190037 Test: Set limit device config flag to value >200, set unrelated flag, verify limit is still >200. Change-Id: I2df5b6661cc5e545d7c3de38dec5c86e66baea22 Merged-In: I2df5b6661cc5e545d7c3de38dec5c86e66baea22 --- .../core/java/com/android/server/wm/WindowManagerService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index c108752c951aa..f67b4fe78f585 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1167,7 +1167,8 @@ public class WindowManagerService extends IWindowManager.Stub new HandlerExecutor(mH), properties -> { synchronized (mGlobalLock) { final int exclusionLimitDp = Math.max(MIN_GESTURE_EXCLUSION_LIMIT_DP, - properties.getInt(KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP, 0)); + DeviceConfig.getInt(DeviceConfig.NAMESPACE_WINDOW_MANAGER, + KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP, 0)); final boolean excludedByPreQSticky = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_WINDOW_MANAGER, KEY_SYSTEM_GESTURES_EXCLUDED_BY_PRE_Q_STICKY_IMMERSIVE, false); From 0aa0f133b7b390bb6643f1a557b15b2872ea2240 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Thu, 12 Sep 2019 18:15:21 -0700 Subject: [PATCH 3/6] Redraw legacy navigation bar paint onLayout Navigation bar background wasn't being redrawn when using legacy navigation bar. Fixes: 140096278 Test: Open Sheets app, turn landscape, select a cell, press the "Fx" button on buttom left, turn portrait and observe no black bar. Open Sheets app, turn landscape, open recents and select sheets icon and go into split screen, choose any other app, click on cell, press "Fx", turn portrait, observe no black bar. Change-Id: Ibfe1abdba87a0d66c68478ee206b992c933cd9ad (cherry picked from commit 7ab1fb8f370cc87faafd4eda2d4c04791190b0e9) --- core/java/com/android/internal/policy/DecorView.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index 7c52a40d4494d..07002d7889081 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -796,7 +796,9 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind updateElevation(); mAllowUpdateElevation = true; - if (changed && mResizeMode == RESIZE_MODE_DOCKED_DIVIDER) { + if (changed + && (mResizeMode == RESIZE_MODE_DOCKED_DIVIDER + || mDrawLegacyNavigationBarBackground)) { getViewRootImpl().requestInvalidateRootRenderNode(); } } From 687bcb7f3390cfba1ca0362367d5c9010dffc507 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 10 Sep 2019 10:52:32 -0700 Subject: [PATCH 4/6] Skip updating exclusion rects unless one is set Bug: 140775753 Bug: 140701977 Bug: 140758369 Test: atest google/perf/jank/SystemUI/UbSystemUIJankTests:android.platform.systemui.tests.jank.SystemUiJankTests#testQuickSettingsPull -v Change-Id: I824ca918d141eb88aa99b1e90adafe64ca3eb672 --- core/java/android/view/View.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 84665f78c7029..c6536bb71cba1 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -14431,8 +14431,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } notifyAppearedOrDisappearedForContentCaptureIfNeeded(isVisible); - if (isVisible != oldVisible) { - updateSystemGestureExclusionRects(); + if (!getSystemGestureExclusionRects().isEmpty() && isVisible != oldVisible) { + postUpdateSystemGestureExclusionRects(); } } From 7f356e28de3d9e69913c9cce55c2fad31a0c27be Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Thu, 12 Sep 2019 11:03:39 -0700 Subject: [PATCH 5/6] Fix status bar flickering The keyguard status bar would be visible momentarily while the keyguard is fading out. Let's keep it hidden until the keyguard is gone. Test: reach, auth, press power, look at status bar: gone Test: reach, press power, look at status bar: gone Test: reboot, reach, press power, look at status bar: visible Test: reach, press power, wait for auth filure, look at status bar: visible Test: reach, pull down, wait for auth filure, look at status bar: visible Fixes: 140259100 Change-Id: I0aa705107e11e3ad8182ac8d5b6104c9f86754be --- .../phone/NotificationPanelView.java | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 83c5566305380..6bc0cf6e0a3d6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -96,6 +96,7 @@ import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.statusbar.policy.KeyguardMonitor; import com.android.systemui.statusbar.policy.KeyguardUserSwitcher; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.systemui.statusbar.policy.ZenModeController; @@ -169,12 +170,22 @@ public class NotificationPanelView extends PanelView implements @VisibleForTesting final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback = new KeyguardUpdateMonitorCallback() { + + @Override + public void onBiometricAuthenticated(int userId, + BiometricSourceType biometricSourceType) { + if (mFirstBypassAttempt && mUpdateMonitor.isUnlockingWithBiometricAllowed()) { + mDelayShowingKeyguardStatusBar = true; + } + } + @Override public void onBiometricRunningStateChanged(boolean running, BiometricSourceType biometricSourceType) { boolean keyguardOrShadeLocked = mBarState == StatusBarState.KEYGUARD || mBarState == StatusBarState.SHADE_LOCKED; - if (!running && mFirstBypassAttempt && keyguardOrShadeLocked && !mDozing) { + if (!running && mFirstBypassAttempt && keyguardOrShadeLocked && !mDozing + && !mDelayShowingKeyguardStatusBar) { mFirstBypassAttempt = false; animateKeyguardStatusBarIn(StackStateAnimator.ANIMATION_DURATION_STANDARD); } @@ -183,6 +194,17 @@ public class NotificationPanelView extends PanelView implements @Override public void onFinishedGoingToSleep(int why) { mFirstBypassAttempt = mKeyguardBypassController.getBypassEnabled(); + mDelayShowingKeyguardStatusBar = false; + } + }; + private final KeyguardMonitor.Callback mKeyguardMonitorCallback = + new KeyguardMonitor.Callback() { + @Override + public void onKeyguardFadingAwayChanged() { + if (!mKeyguardMonitor.isKeyguardFadingAway()) { + mFirstBypassAttempt = false; + mDelayShowingKeyguardStatusBar = false; + } } }; @@ -404,7 +426,17 @@ public class NotificationPanelView extends PanelView implements private boolean mShowingKeyguardHeadsUp; private boolean mAllowExpandForSmallExpansion; private Runnable mExpandAfterLayoutRunnable; + + /** + * If face auth with bypass is running for the first time after you turn on the screen. + * (From aod or screen off) + */ private boolean mFirstBypassAttempt; + /** + * If auth happens successfully during {@code mFirstBypassAttempt}, and we should wait until + * the keyguard is dismissed to show the status bar. + */ + private boolean mDelayShowingKeyguardStatusBar; @Inject public NotificationPanelView(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, @@ -436,6 +468,7 @@ public class NotificationPanelView extends PanelView implements mKeyguardBypassController = bypassController; mUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext); mFirstBypassAttempt = mKeyguardBypassController.getBypassEnabled(); + mKeyguardMonitor.addCallback(mKeyguardMonitorCallback); dynamicPrivacyController.addListener(this); mBottomAreaShadeAlphaAnimator = ValueAnimator.ofFloat(1f, 0); @@ -2263,7 +2296,8 @@ public class NotificationPanelView extends PanelView implements * mKeyguardStatusBarAnimateAlpha; newAlpha *= 1.0f - mKeyguardHeadsUpShowingAmount; mKeyguardStatusBar.setAlpha(newAlpha); - boolean hideForBypass = mFirstBypassAttempt && mUpdateMonitor.shouldListenForFace(); + boolean hideForBypass = mFirstBypassAttempt && mUpdateMonitor.shouldListenForFace() + || mDelayShowingKeyguardStatusBar; mKeyguardStatusBar.setVisibility(newAlpha != 0f && !mDozing && !hideForBypass ? VISIBLE : INVISIBLE); } From a090fe062a4ec69f18f39c43eaa6d7d034fc59b0 Mon Sep 17 00:00:00 2001 From: jovanak Date: Tue, 3 Sep 2019 19:22:41 -0700 Subject: [PATCH 6/6] Adding scrim bubble to car's super_status_bar.xml Bug: 140308332 Test: sys ui boots on hawk Change-Id: I111a5eef67ebe599d65b96687643cf1949d6bfbe (cherry picked from commit 481a1040258f13ffc99b92ecfca146240a680382) --- packages/CarSystemUI/res/layout/super_status_bar.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/CarSystemUI/res/layout/super_status_bar.xml b/packages/CarSystemUI/res/layout/super_status_bar.xml index 728a239a4ca94..e1bcc2e5f86c2 100644 --- a/packages/CarSystemUI/res/layout/super_status_bar.xml +++ b/packages/CarSystemUI/res/layout/super_status_bar.xml @@ -41,6 +41,14 @@ android:visibility="invisible"/> + +