From 0390fff82c37c705670a6c8937c11b52e2af4cb6 Mon Sep 17 00:00:00 2001 From: Sujith Ramakrishnan Date: Thu, 8 Jun 2017 18:18:12 -0700 Subject: Prevent unwanted keypress actions during TV Setup. - Prevent Search or long-press Home actions while TV setup is being completed based on flag TV_USER_SETUP_COMPLETE. Test: Manual - Reset device, ran Setup, tried keys. Test: Manual - Rebooted device after Setup, tried keys. Bug: 62419382 Change-Id: Ic8fb0f10943ab7c39a7d9857f62e6ab292231b40 --- core/java/com/android/internal/policy/PhoneWindow.java | 17 +++++++++++++++++ .../com/android/server/policy/PhoneWindowManager.java | 11 ++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java index 8fe9100d2011..544afd993b37 100644 --- a/core/java/com/android/internal/policy/PhoneWindow.java +++ b/core/java/com/android/internal/policy/PhoneWindow.java @@ -3102,6 +3102,18 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } } + /** + * Check if Setup or Post-Setup update is completed on TV + * @return true if completed + */ + private boolean isTvUserSetupComplete() { + boolean isTvSetupComplete = Settings.Secure.getInt(getContext().getContentResolver(), + Settings.Secure.USER_SETUP_COMPLETE, 0) != 0; + isTvSetupComplete &= Settings.Secure.getInt(getContext().getContentResolver(), + Settings.Secure.TV_USER_SETUP_COMPLETE, 0) != 0; + return isTvSetupComplete; + } + /** * Helper method for adding launch-search to most applications. Opens the * search window using default settings. @@ -3109,6 +3121,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { * @return true if search window opened */ private boolean launchDefaultSearch(KeyEvent event) { + if (getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK) + && !isTvUserSetupComplete()) { + // If we are in Setup or Post-Setup update mode on TV, consume the search key + return false; + } boolean result; final Callback cb = getCallback(); if (cb == null || isDestroyed()) { diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 8112f9998c58..4477e5a0f173 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -1689,8 +1689,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { } boolean isUserSetupComplete() { - return Settings.Secure.getIntForUser(mContext.getContentResolver(), + boolean isSetupComplete = Settings.Secure.getIntForUser(mContext.getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0; + if (mHasFeatureLeanback) { + isSetupComplete &= isTvUserSetupComplete(); + } + return isSetupComplete; + } + + private boolean isTvUserSetupComplete() { + return Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.TV_USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0; } private void handleShortPressOnHome() { -- cgit v1.2.3-59-g8ed1b