Merge "AOD: Fix rotation during screen off (again)" into oc-dr1-dev
diff --git a/packages/SystemUI/res-keyguard/values/strings.xml b/packages/SystemUI/res-keyguard/values/strings.xml
index b951c4c..589f1c1 100644
--- a/packages/SystemUI/res-keyguard/values/strings.xml
+++ b/packages/SystemUI/res-keyguard/values/strings.xml
@@ -99,12 +99,12 @@
<string name="keyguard_sim_unlock_progress_dialog_message">Unlocking SIM card\u2026</string>
<!-- Time format strings for fall-back clock widget -->
- <string name="keyguard_widget_12_hours_format" translatable="false">h\uee01mm</string>
+ <string name="keyguard_widget_12_hours_format" translatable="false">h:mm</string>
<!-- Time format strings for fall-back clock widget -->
- <string name="keyguard_widget_24_hours_format" translatable="false">kk\uee01mm</string>
+ <string name="keyguard_widget_24_hours_format" translatable="false">kk:mm</string>
<!-- The character used in keyguard_widget_12_hours_format and keyguard_widget_24_hours_format
to represent a ":". -->
- <string name="keyguard_fancy_colon" translatable="false">\uee01</string>
+ <string name="keyguard_fancy_colon" translatable="false"></string>
<!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
<string name="keyguard_accessibility_pin_area">PIN area</string>
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockAccessibilityDelegate.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockAccessibilityDelegate.java
index 80509a6..6a83c71 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockAccessibilityDelegate.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockAccessibilityDelegate.java
@@ -36,6 +36,9 @@
@Override
public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(host, event);
+ if (TextUtils.isEmpty(mFancyColon)) {
+ return;
+ }
CharSequence text = event.getContentDescription();
if (!TextUtils.isEmpty(text)) {
event.setContentDescription(replaceFancyColon(text));
@@ -44,15 +47,22 @@
@Override
public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
- CharSequence text = ((TextView) host).getText();
- if (!TextUtils.isEmpty(text)) {
- event.getText().add(replaceFancyColon(text));
+ if (TextUtils.isEmpty(mFancyColon)) {
+ super.onPopulateAccessibilityEvent(host, event);
+ } else {
+ CharSequence text = ((TextView) host).getText();
+ if (!TextUtils.isEmpty(text)) {
+ event.getText().add(replaceFancyColon(text));
+ }
}
}
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
+ if (TextUtils.isEmpty(mFancyColon)) {
+ return;
+ }
if (!TextUtils.isEmpty(info.getText())) {
info.setText(replaceFancyColon(info.getText()));
}
@@ -62,6 +72,13 @@
}
private CharSequence replaceFancyColon(CharSequence text) {
+ if (TextUtils.isEmpty(mFancyColon)) {
+ return text;
+ }
return text.toString().replace(mFancyColon, ":");
}
+
+ public static boolean isNeeded(Context context) {
+ return !TextUtils.isEmpty(context.getString(R.string.keyguard_fancy_colon));
+ }
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
index a9d583f..bc2a59d 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
@@ -153,7 +153,9 @@
mDateView = findViewById(R.id.date_view);
mClockView = findViewById(R.id.clock_view);
mClockView.setShowCurrentUserTime(true);
- mClockView.setAccessibilityDelegate(new KeyguardClockAccessibilityDelegate(mContext));
+ if (KeyguardClockAccessibilityDelegate.isNeeded(mContext)) {
+ mClockView.setAccessibilityDelegate(new KeyguardClockAccessibilityDelegate(mContext));
+ }
mOwnerInfo = findViewById(R.id.owner_info);
mBatteryDoze = findViewById(R.id.battery_doze);
mKeyguardStatusArea = findViewById(R.id.keyguard_status_area);
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index 0d5527c..bf1c060 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -184,6 +184,13 @@
pw.print("ProxSensor: "); pw.println(mProxSensor.toString());
}
+ /**
+ * @return true if prox is currently far, false if near or null if unknown.
+ */
+ public Boolean isProximityCurrentlyFar() {
+ return mProxSensor.mCurrentlyFar;
+ }
+
private class ProxSensor implements SensorEventListener {
static final long COOLDOWN_TRIGGER = 2 * 1000;
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index d1f5337..ea06479 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -103,8 +103,11 @@
private void proximityCheckThenCall(IntConsumer callback,
boolean alreadyPerformedProxCheck,
int pulseReason) {
+ Boolean cachedProxFar = mDozeSensors.isProximityCurrentlyFar();
if (alreadyPerformedProxCheck) {
callback.accept(ProximityCheck.RESULT_NOT_CHECKED);
+ } else if (cachedProxFar != null) {
+ callback.accept(cachedProxFar ? ProximityCheck.RESULT_FAR : ProximityCheck.RESULT_NEAR);
} else {
final long start = SystemClock.uptimeMillis();
new ProximityCheck() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
index df059e3..b4fe900 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
@@ -29,6 +29,7 @@
import com.android.keyguard.LatencyTracker;
import com.android.systemui.Dependency;
import com.android.systemui.keyguard.KeyguardViewMediator;
+import com.android.systemui.keyguard.WakefulnessLifecycle;
/**
* Controller which coordinates all the fingerprint unlocking actions with the UI.
@@ -99,6 +100,7 @@
private final UnlockMethodCache mUnlockMethodCache;
private final Context mContext;
private int mPendingAuthenticatedUserId = -1;
+ private boolean mPendingShowBouncer;
public FingerprintUnlockController(Context context,
DozeScrimController dozeScrimController,
@@ -110,6 +112,7 @@
mPowerManager = context.getSystemService(PowerManager.class);
mUpdateMonitor = KeyguardUpdateMonitor.getInstance(context);
mUpdateMonitor.registerCallback(this);
+ Dependency.get(WakefulnessLifecycle.class).addObserver(mWakefulnessObserver);
mStatusBarWindowManager = Dependency.get(StatusBarWindowManager.class);
mDozeScrimController = dozeScrimController;
mKeyguardViewMediator = keyguardViewMediator;
@@ -212,9 +215,10 @@
Trace.beginSection("MODE_UNLOCK or MODE_SHOW_BOUNCER");
if (!wasDeviceInteractive) {
mStatusBarKeyguardViewManager.notifyDeviceWakeUpRequested();
+ mPendingShowBouncer = true;
+ } else {
+ showBouncer();
}
- mStatusBarKeyguardViewManager.animateCollapsePanels(
- FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR);
Trace.endSection();
break;
case MODE_WAKE_AND_UNLOCK_PULSING:
@@ -247,6 +251,12 @@
Trace.endSection();
}
+ private void showBouncer() {
+ mStatusBarKeyguardViewManager.animateCollapsePanels(
+ FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR);
+ mPendingShowBouncer = false;
+ }
+
@Override
public void onStartedGoingToSleep(int why) {
mPendingAuthenticatedUserId = -1;
@@ -338,4 +348,14 @@
}
mStatusBar.notifyFpAuthModeChanged();
}
+
+ private final WakefulnessLifecycle.Observer mWakefulnessObserver =
+ new WakefulnessLifecycle.Observer() {
+ @Override
+ public void onFinishedWakingUp() {
+ if (mPendingShowBouncer) {
+ FingerprintUnlockController.this.showBouncer();
+ }
+ }
+ };
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 75a2768..d2d4311 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -5150,6 +5150,7 @@
mStackScroller.setAnimationsEnabled(true);
mVisualStabilityManager.setScreenOn(true);
mNotificationPanel.setTouchDisabled(false);
+ mDozeServiceHost.stopDozing();
updateVisibleToUser();
updateIsKeyguard();
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockAccessibilityDelegateTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockAccessibilityDelegateTest.java
index 855adb4..e37ea95 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockAccessibilityDelegateTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockAccessibilityDelegateTest.java
@@ -16,6 +16,7 @@
package com.android.keyguard;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -36,12 +37,17 @@
public class KeyguardClockAccessibilityDelegateTest extends SysuiTestCase {
private TextView mView;
+ private String m12HoursFormat;
+ private String m24HoursFormat;
@Before
public void setUp() throws Exception {
+ m12HoursFormat = mContext.getString(R.string.keyguard_widget_12_hours_format);
+ m24HoursFormat = mContext.getString(R.string.keyguard_widget_24_hours_format);
+
mView = new TextView(mContext);
- mView.setText(R.string.keyguard_widget_12_hours_format);
- mView.setContentDescription(mContext.getString(R.string.keyguard_widget_12_hours_format));
+ mView.setText(m12HoursFormat);
+ mView.setContentDescription(m12HoursFormat);
mView.setAccessibilityDelegate(new KeyguardClockAccessibilityDelegate(mContext));
}
@@ -77,6 +83,21 @@
assertTrue(isAscii(info.getContentDescription()));
}
+ @Test
+ public void isNeeded_returnsTrueIfDateFormatsContainNonAscii() {
+ if (!isAscii(m12HoursFormat) || !isAscii(m24HoursFormat)) {
+ assertTrue(KeyguardClockAccessibilityDelegate.isNeeded(mContext));
+ }
+ }
+
+ @Test
+ public void isNeeded_returnsWhetherFancyColonExists() {
+ boolean hasFancyColon = !TextUtils.isEmpty(mContext.getString(
+ R.string.keyguard_fancy_colon));
+
+ assertEquals(hasFancyColon, KeyguardClockAccessibilityDelegate.isNeeded(mContext));
+ }
+
private boolean isAscii(CharSequence text) {
return text.chars().allMatch((i) -> i < 128);
}
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 777a368..51e0e3b 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1912,9 +1912,11 @@
} else if (mStackId == FULLSCREEN_WORKSPACE_STACK_ID) {
if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Skipping after task=" + task
+ " returning to non-application type=" + task.getTaskToReturnTo());
- // Once we reach a fullscreen task that should return to another task, then no
- // other activities behind that one should be visible.
- if (task.getTaskToReturnTo() != APPLICATION_ACTIVITY_TYPE) {
+ // Once we reach a fullscreen stack task that has a running activity and should
+ // return to another stack task, then no other activities behind that one should
+ // be visible.
+ if (task.topRunningActivityLocked() != null &&
+ task.getTaskToReturnTo() != APPLICATION_ACTIVITY_TYPE) {
behindFullscreenActivity = true;
}
}
diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
index 4df566f..25fab9e 100644
--- a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
+++ b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
@@ -40,7 +40,7 @@
// Change this value to control whether tether offload is enabled or
// disabled by default in the absence of an explicit Settings value.
// See accompanying unittest to distinguish 0 from non-0 values.
- private static final int DEFAULT_TETHER_OFFLOAD_DISABLED = 0;
+ private static final int DEFAULT_TETHER_OFFLOAD_DISABLED = 1;
private static final String NO_INTERFACE_NAME = "";
private static final String NO_IPV4_ADDRESS = "";
private static final String NO_IPV4_GATEWAY = "";
diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java
index e737328..447d639 100644
--- a/services/core/java/com/android/server/vr/VrManagerService.java
+++ b/services/core/java/com/android/server/vr/VrManagerService.java
@@ -779,7 +779,8 @@
}
if ((calling != null || mPersistentVrModeEnabled)
- && !Objects.equals(calling, mCurrentVrModeComponent)) {
+ && !Objects.equals(calling, mCurrentVrModeComponent)
+ || mRunning2dInVr != running2dInVr) {
sendUpdatedCaller = true;
}
mCurrentVrModeComponent = calling;