Add ability to enable/disable navigation features from In-Call UI

Also automatically reenables all navigation in unBind

Bug: 10692603
Change-Id: I88c79b9761da5c3462acfeb720442439148a8ddc
diff --git a/src/com/android/phone/CallCommandService.java b/src/com/android/phone/CallCommandService.java
index 90297d8..60c5802 100644
--- a/src/com/android/phone/CallCommandService.java
+++ b/src/com/android/phone/CallCommandService.java
@@ -25,6 +25,7 @@
 import com.android.internal.telephony.CallManager;
 import com.android.internal.telephony.PhoneConstants;
 import com.android.phone.CallModeler.CallResult;
+import com.android.phone.NotificationMgr.StatusBarHelper;
 import com.android.services.telephony.common.AudioMode;
 import com.android.services.telephony.common.Call;
 import com.android.services.telephony.common.ICallCommandService;
@@ -253,4 +254,17 @@
             result.getConnection().proceedAfterWaitChar();
         }
     }
+
+    @Override
+    public void setSystemBarNavigationEnabled(boolean enable) {
+        try {
+            final StatusBarHelper statusBarHelper = PhoneGlobals.getInstance().notificationMgr.
+                    statusBarHelper;
+            statusBarHelper.enableSystemBarNavigation(enable);
+            statusBarHelper.enableExpandedView(enable);
+        } catch (Exception e) {
+            Log.e(TAG, "Error enabling or disabling system bar navigation", e);
+        }
+    }
+
 }
diff --git a/src/com/android/phone/CallHandlerServiceProxy.java b/src/com/android/phone/CallHandlerServiceProxy.java
index 1d43fe8..0681fb4 100644
--- a/src/com/android/phone/CallHandlerServiceProxy.java
+++ b/src/com/android/phone/CallHandlerServiceProxy.java
@@ -32,6 +32,7 @@
 import android.util.Log;
 
 import com.android.phone.AudioRouter.AudioModeListener;
+import com.android.phone.NotificationMgr.StatusBarHelper;
 import com.android.services.telephony.common.AudioMode;
 import com.android.services.telephony.common.Call;
 import com.android.services.telephony.common.ICallHandlerService;
@@ -383,6 +384,12 @@
 
     private void unbind() {
         synchronized (mServiceAndQueueLock) {
+            // On unbind, reenable the notification shade and navigation bar just in case the
+            // in-call UI crashed on an incoming call.
+            final StatusBarHelper statusBarHelper = PhoneGlobals.getInstance().notificationMgr.
+                    statusBarHelper;
+            statusBarHelper.enableSystemBarNavigation(true);
+            statusBarHelper.enableExpandedView(true);
             if (mCallHandlerServiceGuarded != null) {
                 Log.d(TAG, "Unbinding service.");
                 mCallHandlerServiceGuarded = null;