Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
| index 974ff2037ff4793325de81dfde61a45289f14e5c..7174c52b01b29267d3b2599aa5635d8d9b988892 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
| @@ -35,6 +35,7 @@ import org.chromium.chrome.browser.fullscreen.FullscreenHtmlApiHandler.Fullscree |
| import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
| import org.chromium.content.browser.ContentViewCore; |
| +import java.lang.ref.WeakReference; |
| import java.util.ArrayList; |
| import java.util.HashSet; |
| @@ -148,6 +149,34 @@ public class ChromeFullscreenManager |
| } |
| }; |
| + // This static inner class holds a WeakReference to the outer object, to avoid triggering the |
| + // lint HandlerLeak warning. |
| + private static class FullscreenHandler extends Handler { |
| + private final WeakReference<ChromeFullscreenManager> mChromeFullscreenManager; |
| + |
| + public FullscreenHandler(ChromeFullscreenManager chromeFullscreenManager) { |
| + mChromeFullscreenManager = new WeakReference<ChromeFullscreenManager>( |
| + chromeFullscreenManager); |
| + } |
| + |
| + @Override |
| + public void handleMessage(Message msg) { |
| + if (msg == null) return; |
| + ChromeFullscreenManager chromeFullscreenManager = mChromeFullscreenManager.get(); |
|
nyquist
2015/01/10 01:27:05
I wonder, are there any cases whatsoever where thi
wajahat
2015/01/12 08:06:46
The reasoning behind this CL was CFM would hold th
|
| + switch (msg.what) { |
| + case MSG_ID_CONTROLS_REQUEST_LAYOUT: |
| + chromeFullscreenManager.getControlContainer().requestLayout(); |
| + break; |
| + case MSG_ID_HIDE_CONTROLS: |
| + chromeFullscreenManager.update(false); |
| + break; |
| + default: |
| + assert false : "Unexpected message for ID: " + msg.what; |
| + break; |
| + } |
| + } |
| + } |
| + |
| /** |
| * Creates an instance of the fullscreen mode manager. |
| * @param activity The activity that supports fullscreen. |
| @@ -166,23 +195,7 @@ public class ChromeFullscreenManager |
| .registerWindowFocusChangedListener(this); |
| mWindow = activity.getWindow(); |
| - mHandler = new Handler() { |
| - @Override |
| - public void handleMessage(Message msg) { |
| - if (msg == null) return; |
| - switch (msg.what) { |
| - case MSG_ID_CONTROLS_REQUEST_LAYOUT: |
| - mControlContainer.requestLayout(); |
| - break; |
| - case MSG_ID_HIDE_CONTROLS: |
| - update(false); |
| - break; |
| - default: |
| - assert false : "Unexpected message for ID: " + msg.what; |
| - break; |
| - } |
| - } |
| - }; |
| + mHandler = new FullscreenHandler(this); |
| setControlContainer(controlContainer); |
| Resources resources = mWindow.getContext().getResources(); |
| mControlContainerHeight = resources.getDimensionPixelSize(resControlContainerHeight); |
| @@ -208,6 +221,13 @@ public class ChromeFullscreenManager |
| mControlContainer = controlContainer; |
| } |
| + /** |
| + * Gets the container at the top of the screen that contains the controls. |
| + */ |
| + public View getControlContainer() { |
|
Ted C
2015/01/09 19:53:36
this doesn't need to be exposed (and shouldn't be
wajahat
2015/01/12 08:06:46
Done.
|
| + return mControlContainer; |
| + } |
| + |
| @Override |
| public void onActivityStateChange(Activity activity, int newState) { |
| if (newState == ActivityState.STOPPED) { |