Index: content/public/android/java/src/org/chromium/content/browser/BindingManager.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/BindingManager.java b/content/public/android/java/src/org/chromium/content/browser/BindingManager.java |
index 01e0bfabb1506dcb6a7a631dc961a9477339a09f..c080895d9ba158d4585e187b6ad7dcc75cbb40de 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/BindingManager.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/BindingManager.java |
@@ -10,13 +10,14 @@ package org.chromium.content.browser; |
* normal conditions (it can still be killed under drastic memory pressure). ChildProcessConnections |
* have two oom bindings: initial binding and strong binding. |
* |
- * BindingManager receives calls that signal visibility of each service (setInForeground()) and the |
- * entire embedding application (onSentToBackground(), onBroughtToForeground()) and manipulates |
- * child process bindings accordingly. |
+ * BindingManager receives calls that signal status of each service (setInForeground(), |
+ * determinedVisibility()) and the entire embedding application (onSentToBackground(), |
+ * onBroughtToForeground()) and manipulates child process bindings accordingly. |
* |
* In particular, BindingManager is responsible for: |
- * - removing the initial binding of a service when its visibility is determined for the first time |
- * - addition and (possibly delayed) removal of a strong binding when service visibility changes |
+ * - adding and removing the strong binding as service visibility changes (setInForeground()) |
+ * - removing the initial binding of a service when we can start to rely on the visibility signal / |
+ * strong binding exclusively (after determinedVisibility()) |
* - dropping the current oom bindings when a new connection is started on a low-memory device |
* - keeping a strong binding on the foreground service while the entire application is in |
* background |
@@ -42,6 +43,13 @@ public interface BindingManager { |
void setInForeground(int pid, boolean inForeground); |
/** |
+ * Called when we can begin to rely on the visibility signal only and remove the initial |
+ * binding. It's safe to call it multiple times, only the first call matters. |
+ * @param pid handle of the service process |
+ */ |
+ void determinedVisibility(int pid); |
+ |
+ /** |
* Called when the embedding application is sent to background. We want to maintain a strong |
* binding on the most recently used renderer while the embedder is in background, to indicate |
* the relative importance of the renderer to system oom killer. |