Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1054)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java

Issue 844473002: Refactor handleMessage() functionality in fullscreen (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698