From 402517c6677e81adf93d11462aeb1b86bfbf9f8a Mon Sep 17 00:00:00 2001 From: ianwen Date: Fri, 14 Aug 2015 11:21:44 -0700 Subject: [PATCH] Fix Custom Action Bar for custom tabs on tablet Custom tabs on tablet is special in that it does not have a tab strip. Therefore ContextualMenuBar will calculate the wrong offset when animating the bar. BUG=510284 Review URL: https://codereview.chromium.org/1292693002 Cr-Commit-Position: refs/heads/master@{#343437} --- .../java/src/org/chromium/chrome/browser/ContextualMenuBar.java | 7 +++++++ .../src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java | 5 +++++ .../src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java | 7 +++++++ .../src/org/chromium/chrome/browser/toolbar/ToolbarManager.java | 8 +++++--- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java b/chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java index 9c877bd88381..eab406d7cb5a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java @@ -87,6 +87,13 @@ public class ContextualMenuBar { } /** + * Overrides the preset height of the tab strip. + */ + public void setTabStripHeight(int tabStripHeight) { + mTabStripHeight = tabStripHeight; + } + + /** * @return The delegate handling action bar positioning for the contextual menu bar. */ public ActionBarDelegate getActionBarDelegate() { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java index d17381d1bcb4..83b6525c6f3f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java @@ -164,6 +164,11 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar, } @Override + public int getTabStripHeight() { + return 0; + } + + @Override public ChromeTab getCurrentTab() { return ChromeTab.fromTab(getToolbarDataProvider().getTab()); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java index 5b156f993d92..ee5b052321eb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java @@ -392,6 +392,13 @@ abstract class ToolbarLayout extends FrameLayout implements Toolbar { OnClickListener listener) { } /** + * @return The height of the tab strip. Return 0 for toolbars that do not have a tabstrip. + */ + public int getTabStripHeight() { + return getResources().getDimensionPixelSize(R.dimen.tab_strip_height); + } + + /** * Triggered when the content view for the specified tab has changed. */ protected void onTabContentViewChanged() { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java index 80ce2c430579..9ccb80fe19d0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java @@ -186,9 +186,6 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe // TODO(tedchoc): Add support for changing the color based on the brand color. } }; - mContextualMenuBar = new ContextualMenuBar(activity, mActionBarDelegate); - mContextualMenuBar.setCustomSelectionActionModeCallback( - new CustomSelectionActionModeCallback()); mToolbarModel = new ToolbarModelImpl(); mControlContainer = controlContainer; @@ -198,6 +195,11 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe mToolbar.setPaintInvalidator(invalidator); + mContextualMenuBar = new ContextualMenuBar(activity, mActionBarDelegate); + mContextualMenuBar.setCustomSelectionActionModeCallback( + new CustomSelectionActionModeCallback()); + mContextualMenuBar.setTabStripHeight(mToolbar.getTabStripHeight()); + MenuDelegatePhone menuDelegate = new MenuDelegatePhone() { @Override public void updateReloadButtonState(boolean isLoading) { -- 2.11.4.GIT