Merge "Add @TestApi to test STYLUS_BUTTONS_ENABLED." into udc-dev
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 7107bf7..e93467b 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -415,6 +415,7 @@
method public void clickNotification(@Nullable String, int, int, boolean);
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void collapsePanels();
method public void expandNotificationsPanel();
+ method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public int getLastSystemKey();
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void handleSystemKey(int);
method public void sendNotificationFeedback(@Nullable String, @Nullable android.os.Bundle);
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setExpansionDisabledForSimNetworkLock(boolean);
@@ -2628,6 +2629,7 @@
field public static final String SELECTED_SPELL_CHECKER_SUBTYPE = "selected_spell_checker_subtype";
field public static final String SHOW_FIRST_CRASH_DIALOG_DEV_OPTION = "show_first_crash_dialog_dev_option";
field public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard";
+ field public static final String STYLUS_BUTTONS_ENABLED = "stylus_buttons_enabled";
field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds";
field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
}
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index f74be22..29f774c 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -752,6 +752,29 @@
}
/**
+ * Gets the last handled system key. A system key is a KeyEvent that the
+ * {@link com.android.server.policy.PhoneWindowManager} sends directly to the
+ * status bar, rather than forwarding to apps. If a key has never been sent to the
+ * status bar, will return -1.
+ *
+ * @return the keycode of the last KeyEvent that has been sent to the system.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.STATUS_BAR)
+ @TestApi
+ public int getLastSystemKey() {
+ try {
+ final IStatusBarService svc = getService();
+ if (svc != null) {
+ return svc.getLastSystemKey();
+ }
+ } catch (RemoteException ex) {
+ throw ex.rethrowFromSystemServer();
+ }
+ return -1;
+ }
+
+ /**
* Expand the settings panel.
*
* @hide
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 893fce2..7ae280f 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -7414,6 +7414,8 @@
*
* @hide
*/
+ @TestApi
+ @Readable
@SuppressLint("NoSettingsProvider")
public static final String STYLUS_BUTTONS_ENABLED = "stylus_buttons_enabled";
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 8f04cda..c1dbc87 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -111,6 +111,7 @@
void clickTile(in ComponentName tile);
@UnsupportedAppUsage
void handleSystemKey(in int key);
+ int getLastSystemKey();
/**
* Methods to show toast messages for screen pinning
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 88d64df..35e88c1 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -33,6 +33,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.TestApi;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.ActivityThread;
@@ -178,6 +179,7 @@
private final SessionMonitor mSessionMonitor;
private int mCurrentUserId;
private boolean mTracingEnabled;
+ private int mLastSystemKey = -1;
private final TileRequestTracker mTileRequestTracker;
@@ -905,6 +907,8 @@
return;
}
+ mLastSystemKey = key;
+
if (mBar != null) {
try {
mBar.handleSystemKey(key);
@@ -914,6 +918,14 @@
}
@Override
+ @TestApi
+ public int getLastSystemKey() {
+ enforceStatusBar();
+
+ return mLastSystemKey;
+ }
+
+ @Override
public void showPinningEnterExitToast(boolean entering) throws RemoteException {
if (mBar != null) {
try {