Merge "Allow for callers to subscribe to UI visibility" into lmp-mr1-dev
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 2f78142..1299dd3 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -69,6 +69,8 @@
     private final List<IncomingCallListener> mIncomingCallListeners = new CopyOnWriteArrayList<>();
     private final Set<InCallDetailsListener> mDetailsListeners = Collections.newSetFromMap(
             new ConcurrentHashMap<InCallDetailsListener, Boolean>(8, 0.9f, 1));
+    private final Set<InCallUiListener> mInCallUiListeners = Collections.newSetFromMap(
+            new ConcurrentHashMap<InCallUiListener, Boolean>(8, 0.9f, 1));
     private final Set<InCallOrientationListener> mOrientationListeners = Collections.newSetFromMap(
             new ConcurrentHashMap<InCallOrientationListener, Boolean>(8, 0.9f, 1));
     private final Set<InCallEventListener> mInCallEventListeners = Collections.newSetFromMap(
@@ -624,6 +626,18 @@
         if (showing) {
             mIsActivityPreviouslyStarted = true;
         }
+
+        for (InCallUiListener listener : mInCallUiListeners) {
+            listener.onUiShowing(showing);
+        }
+    }
+
+    public void addInCallUiListener(InCallUiListener listener) {
+        mInCallUiListeners.add(listener);
+    }
+
+    public boolean removeInCallUiListener(InCallUiListener listener) {
+        return mInCallUiListeners.remove(listener);
     }
 
     /**
@@ -1153,4 +1167,8 @@
     public interface InCallEventListener {
         public void onFullScreenVideoStateChanged(boolean isFullScreenVideo);
     }
+
+    public interface InCallUiListener {
+        void onUiShowing(boolean showing);
+    }
 }