Commit 27138bd6 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Fix a bug at tab switching

TabWebContentsDelegateAndroid should always be able to get
the fullscreen manager to return the right control height
(https://crrev.com/c/1475677).

This CL replaces FullscreenManager.from() which can return
|null| while tabs are in transition with the reinstated
getFullscreenManager() that always returns the ChromeActivity's
FullscreenManager correctly.

Bug: 963820
Change-Id: Iafef11ed7dff14de38a305e6494eb0f3f83b6b46
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1615406Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661237}
parent 03210167
...@@ -473,21 +473,28 @@ public class TabWebContentsDelegateAndroid extends WebContentsDelegateAndroid { ...@@ -473,21 +473,28 @@ public class TabWebContentsDelegateAndroid extends WebContentsDelegateAndroid {
mTab.getActivity().setOverlayMode(useOverlayMode); mTab.getActivity().setOverlayMode(useOverlayMode);
} }
private ChromeFullscreenManager getFullscreenManager() {
// Following get* methods use this method instead of |FullscreenManager.from()|
// because the latter can return null if invoked while the tab is in detached state.
ChromeActivity activity = mTab.getActivity();
return activity != null ? activity.getFullscreenManager() : null;
}
@Override @Override
public int getTopControlsHeight() { public int getTopControlsHeight() {
FullscreenManager manager = FullscreenManager.from(mTab); FullscreenManager manager = getFullscreenManager();
return manager != null ? manager.getTopControlsHeight() : 0; return manager != null ? manager.getTopControlsHeight() : 0;
} }
@Override @Override
public int getBottomControlsHeight() { public int getBottomControlsHeight() {
FullscreenManager manager = FullscreenManager.from(mTab); FullscreenManager manager = getFullscreenManager();
return manager != null ? manager.getBottomControlsHeight() : 0; return manager != null ? manager.getBottomControlsHeight() : 0;
} }
@Override @Override
public boolean controlsResizeView() { public boolean controlsResizeView() {
FullscreenManager manager = FullscreenManager.from(mTab); FullscreenManager manager = getFullscreenManager();
return manager != null ? ((ChromeFullscreenManager) manager).controlsResizeView() : false; return manager != null ? ((ChromeFullscreenManager) manager).controlsResizeView() : false;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment