base: add API getSessionStatus to StatusBarService

used in combination with registerSessionListener to get
current status

Change-Id: Iee62aa6131b64fd0d9c8bd9b2ca3d026338e0965
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index bd01afb..4f3c717 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -236,4 +236,5 @@
      */
     void toggleCameraFlash();
     void toggleCameraFlashState(boolean enable);
+    boolean getSessionStatus(int sessionType);
 }
diff --git a/services/core/java/com/android/server/statusbar/SessionMonitor.java b/services/core/java/com/android/server/statusbar/SessionMonitor.java
index f4356bd..321ee67 100644
--- a/services/core/java/com/android/server/statusbar/SessionMonitor.java
+++ b/services/core/java/com/android/server/statusbar/SessionMonitor.java
@@ -44,6 +44,7 @@
     private final Context mContext;
     private final Map<Integer, Set<ISessionListener>> mSessionToListeners =
             new HashMap<>();
+    private final Map<Integer, Boolean> mSessionStatus = new HashMap<>();
 
     /** */
     public SessionMonitor(Context context) {
@@ -97,6 +98,8 @@
             return;
         }
 
+        mSessionStatus.put(sessionType, true);
+
         synchronized (mSessionToListeners) {
             for (ISessionListener listener : mSessionToListeners.get(sessionType)) {
                 try {
@@ -122,6 +125,8 @@
             return;
         }
 
+        mSessionStatus.put(sessionType, false);
+
         synchronized (mSessionToListeners) {
             for (ISessionListener listener : mSessionToListeners.get(sessionType)) {
                 try {
@@ -133,6 +138,13 @@
         }
     }
 
+    public boolean getSessionStatus(@SessionFlags int sessionType) {
+        if (mSessionStatus.containsKey(sessionType)) {
+            return mSessionStatus.get(sessionType);
+        }
+        return false;
+    }
+
     private boolean isValidSessionType(@SessionFlags int sessionType) {
         return ALL_SESSIONS.contains(sessionType);
     }
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 947bac0..4c4853a 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -2246,6 +2246,11 @@
         mSessionMonitor.unregisterSessionListener(sessionFlags, listener);
     }
 
+    @Override
+    public boolean getSessionStatus(@SessionFlags int sessionType) {
+        return  mSessionMonitor.getSessionStatus(sessionType);
+    }
+
     public String[] getStatusBarIcons() {
         return mContext.getResources().getStringArray(R.array.config_statusBarIcons);
     }