Added config system navigation keys.

1. Added config_supportSystemNavigationKeys to config and symbols
2. Added SYSTEM_NAVIGATION_KEYS_ENABLED to Settings.Global
3. Updated PhoneWindowManager to check for the system navigation keys enabled
   flag before expanding or collapsing the notification panel.

Bug 29120082

Change-Id: Ia73078520474ce5a1cbf2256c0d793ed74bbf589
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index d558070..ec5f45d 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -9025,6 +9025,13 @@
          * @hide
          */
         public static final String MAX_NOTIFICATION_ENQUEUE_RATE = "max_notification_enqueue_rate";
+
+        /**
+         * Whether SystemUI navigation keys is enabled.
+         * @hide
+         */
+        public static final String SYSTEM_NAVIGATION_KEYS_ENABLED =
+                "system_navigation_keys_enabled";
     }
 
     /**
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index cc976c3..5fd3c36 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2492,4 +2492,7 @@
     <!-- Flag indicating whether round icons should be parsed from the application manifest. -->
     <bool name="config_useRoundIcon">false</bool>
 
+    <!-- True if the device supports system navigation keys. -->
+    <bool name="config_supportSystemNavigationKeys">false</bool>
+
 </resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 1f6e8cf..f4da457 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2617,4 +2617,7 @@
   <java-symbol type="id" name="cross_task_transition" />
 
   <java-symbol type="bool" name="config_useRoundIcon" />
+
+  <!-- For System navigation keys -->
+  <java-symbol type="bool" name="config_supportSystemNavigationKeys" />
 </resources>
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index fae743c..2cc4984 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -5851,7 +5851,7 @@
      */
     private void interceptStatusBarKey(KeyEvent event) {
         final int e = event.getKeyCode();
-        if (event.getAction() == KeyEvent.ACTION_UP) {
+        if (event.getAction() == KeyEvent.ACTION_UP && areSystemNavigationKeysEnabled()) {
             boolean doOpen = false;
             boolean doClose = false;
             doOpen = (e == KeyEvent.KEYCODE_FP_NAV_DOWN);
@@ -7264,6 +7264,11 @@
                 Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1;
     }
 
+    private boolean areSystemNavigationKeysEnabled() {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.SYSTEM_NAVIGATION_KEYS_ENABLED, 0) == 1;
+    }
+
     @Override
     public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) {
         if (!mVibrator.hasVibrator()) {