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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java

Issue 2542883004: Bottom browser controls position based on window height (Closed)
Patch Set: rebase Created 4 years 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
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;
}

Powered by Google App Engine
This is Rietveld 408576698