Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java |
index dca21ab25cf2137f034dcf6b1c1aedfe1ef3e34a..4e65c0f6e1334bead7ba1911b30f89173b46e650 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java |
@@ -45,9 +45,6 @@ public class ToolbarSceneLayer extends SceneOverlayLayer implements SceneOverlay |
/** A LayoutRenderHost for accessing drawing information about the toolbar. */ |
private LayoutRenderHost mRenderHost; |
- /** The size of the viewport (full-screen minus status bar). */ |
- private RectF mViewport; |
- |
/** |
* @param context An Android context to use. |
* @param provider A LayoutProvider for accessing the current layout. |
@@ -58,7 +55,6 @@ public class ToolbarSceneLayer extends SceneOverlayLayer implements SceneOverlay |
mContext = context; |
mLayoutProvider = provider; |
mRenderHost = renderHost; |
- mViewport = new RectF(); |
} |
/** |
@@ -71,10 +67,12 @@ public class ToolbarSceneLayer extends SceneOverlayLayer implements SceneOverlay |
* @param forceHideAndroidBrowserControls True if the Android browser controls are being hidden. |
* @param sizingFlags The sizing flags for the toolbar. |
* @param isTablet If the device is a tablet. |
+ * @param windowHeight The height of the window. |
*/ |
private void update(int browserControlsBackgroundColor, float browserControlsUrlBarAlpha, |
ChromeFullscreenManager fullscreenManager, ResourceManager resourceManager, |
- boolean forceHideAndroidBrowserControls, ViewportMode viewportMode, boolean isTablet) { |
+ boolean forceHideAndroidBrowserControls, ViewportMode viewportMode, boolean isTablet, |
+ float windowHeight) { |
if (!DeviceClassManager.enableFullscreen()) return; |
if (fullscreenManager == null) return; |
@@ -86,21 +84,21 @@ public class ToolbarSceneLayer extends SceneOverlayLayer implements SceneOverlay |
assert mProgressBarDrawingInfo == null; |
} |
- mLayoutProvider.getViewportPixel(mViewport); |
- |
// Texture is always used unless it is completely off-screen. |
boolean useTexture = !fullscreenManager.areBrowserControlsOffScreen() |
&& viewportMode != ViewportMode.ALWAYS_FULLSCREEN; |
boolean showShadow = fullscreenManager.drawControlsAsTexture() |
|| forceHideAndroidBrowserControls; |
- // Note that the bottom controls offset is not passed here. Conveniently, the viewport |
- // size changes will push the controls off screen when they are at the bottom; see |
- // mViewport.height(). |
+ // Use either top or bottom offset depending on the browser controls state. |
+ float controlsOffset = fullscreenManager.areBrowserControlsAtBottom() |
+ ? fullscreenManager.getBottomControlOffset() |
+ : fullscreenManager.getTopControlOffset(); |
+ |
nativeUpdateToolbarLayer(mNativePtr, resourceManager, R.id.control_container, |
browserControlsBackgroundColor, R.drawable.textbox, browserControlsUrlBarAlpha, |
- fullscreenManager.getTopControlOffset(), mViewport.height(), useTexture, |
- showShadow, fullscreenManager.areBrowserControlsAtBottom()); |
+ controlsOffset, windowHeight, useTexture, showShadow, |
+ fullscreenManager.areBrowserControlsAtBottom()); |
if (mProgressBarDrawingInfo == null) return; |
nativeUpdateProgressBar(mNativePtr, |
@@ -141,8 +139,8 @@ public class ToolbarSceneLayer extends SceneOverlayLayer implements SceneOverlay |
// SceneOverlay implementation. |
@Override |
- public SceneOverlayLayer getUpdatedSceneOverlayTree(LayerTitleCache layerTitleCache, |
- ResourceManager resourceManager, float yOffset) { |
+ public SceneOverlayLayer getUpdatedSceneOverlayTree(RectF viewport, RectF visibleViewport, |
+ LayerTitleCache layerTitleCache, ResourceManager resourceManager, float yOffset) { |
boolean forceHideBrowserControlsAndroidView = |
mLayoutProvider.getActiveLayout().forceHideBrowserControlsAndroidView(); |
ViewportMode viewportMode = mLayoutProvider.getActiveLayout().getViewportMode(); |
@@ -150,7 +148,7 @@ public class ToolbarSceneLayer extends SceneOverlayLayer implements SceneOverlay |
update(mRenderHost.getBrowserControlsBackgroundColor(), |
mRenderHost.getBrowserControlsUrlBarAlpha(), mLayoutProvider.getFullscreenManager(), |
resourceManager, forceHideBrowserControlsAndroidView, viewportMode, |
- DeviceFormFactor.isTablet(mContext)); |
+ DeviceFormFactor.isTablet(mContext), viewport.height()); |
return this; |
} |