From b7bad8883708d6e1bfb58c5d09be32f61c07f103 Mon Sep 17 00:00:00 2001 From: uazo <29201891+uazo@users.noreply.github.com> Date: Fri, 29 Apr 2022 15:39:18 +0200 Subject: [PATCH] Fix Move-navigation-bar-to-bottom.patch (#2029) * fix 1995 and 2011 * fixgit apply Co-authored-by: Carmelo Messina --- .../Move-navigation-bar-to-bottom.patch | 104 ++++++++++++++++-- 1 file changed, 95 insertions(+), 9 deletions(-) diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index 569ef107..4534b813 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -18,6 +18,7 @@ Support for tablet mode is also included. .../tab_management/TabGroupUiProperties.java | 6 ++- .../tab_management/TabGroupUiToolbarView.java | 18 +++++++ .../tab_management/TabGroupUiViewBinder.java | 3 ++ + .../tab_management/TabListRecyclerView.java | 18 ++++++- .../tab_management/TabSwitcherMediator.java | 15 ++++++ .../ChromeAccessibilitySettingsDelegate.java | 52 +++++++++++++++++++ .../chrome/browser/app/ChromeActivity.java | 8 +++ @@ -52,7 +53,7 @@ Support for tablet mode is also included. .../flags/android/chrome_feature_list.cc | 2 + .../browser/flags/CachedFeatureFlags.java | 19 +++++++ .../browser/flags/ChromeFeatureList.java | 2 + - .../chrome/browser/ui/appmenu/AppMenu.java | 4 ++ + .../chrome/browser/ui/appmenu/AppMenu.java | 19 +++++++ .../omnibox/LocationBarCoordinator.java | 9 +++- .../browser/omnibox/UrlBarCoordinator.java | 11 +++- .../suggestions/AutocompleteCoordinator.java | 16 +++++- @@ -75,7 +76,7 @@ Support for tablet mode is also included. .../accessibility/AccessibilitySettings.java | 16 ++++++ .../AccessibilitySettingsDelegate.java | 6 +++ .../render_widget_host_view_android.cc | 3 ++ - 66 files changed, 674 insertions(+), 51 deletions(-) + 67 files changed, 706 insertions(+), 52 deletions(-) diff --git a/cc/base/features.cc b/cc/base/features.cc --- a/cc/base/features.cc @@ -356,6 +357,69 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } } } +diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java +--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java ++++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java +@@ -65,6 +65,8 @@ class TabListRecyclerView + public static final long BASE_ANIMATION_DURATION_MS = 218; + public static final long FINAL_FADE_IN_DURATION_MS = 50; + ++ private boolean mIsVisible = false; ++ + /** + * Field trial parameter for downsampling scaling factor. + */ +@@ -192,6 +194,7 @@ class TabListRecyclerView + ? FINAL_FADE_IN_DURATION_MS + : BASE_ANIMATION_DURATION_MS; + ++ mIsVisible = true; + setAlpha(0); + setVisibility(View.VISIBLE); + mFadeInAnimator = ObjectAnimator.ofFloat(this, View.ALPHA, 1); +@@ -220,6 +223,11 @@ class TabListRecyclerView + } + + void setShadowVisibility(boolean shouldShowShadow) { ++ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM) ++ && mIsVisible) { ++ // always show shadow ++ shouldShowShadow = true; ++ } + if (mShadowImageView == null) { + Context context = getContext(); + mShadowImageView = new ImageView(context); +@@ -238,7 +246,10 @@ class TabListRecyclerView + if (getParent() instanceof FrameLayout) { + // Add shadow for grid tab switcher. + FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( +- LayoutParams.MATCH_PARENT, shadowHeight, Gravity.TOP); ++ LayoutParams.MATCH_PARENT, shadowHeight, ++ (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM) ? ++ Gravity.BOTTOM : ++ Gravity.TOP)); + mShadowImageView.setLayoutParams(params); + mShadowImageView.setTranslationY(mShadowTopOffset); + FrameLayout parent = (FrameLayout) getParent(); +@@ -265,6 +276,10 @@ class TabListRecyclerView + + void setShadowTopOffset(int shadowTopOffset) { + mShadowTopOffset = shadowTopOffset; ++ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) { ++ // invert the offset since Gravity is set to BOTTOM ++ mShadowTopOffset = -mShadowTopOffset; ++ } + + if (mShadowImageView != null && getParent() instanceof FrameLayout) { + // Since the shadow has no functionality, other than just existing visually, we can use +@@ -445,6 +460,7 @@ class TabListRecyclerView + mListener.finishedHiding(); + } + }); ++ mIsVisible = false; + setShadowVisibility(false); + mFadeOutAnimator.start(); + if (!animate) mFadeOutAnimator.end(); diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java @@ -1507,15 +1571,37 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import org.chromium.chrome.browser.ui.appmenu.internal.R; import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.browser_ui.widget.chips.ChipView; -@@ -522,6 +524,8 @@ class AppMenu implements OnItemClickListener, OnKeyListener, AppMenuClickHandler - View anchorView, @IdRes int groupDividerResourceId) { - anchorView.getLocationOnScreen(mTempLocation); - int anchorViewY = mTempLocation[1] - appDimensions.top; -+ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) -+ anchorViewY += mNegativeVerticalOffsetNotTopAnchored; +@@ -341,6 +343,14 @@ class AppMenu implements OnItemClickListener, OnKeyListener, AppMenuClickHandler + int anchorViewX = tempLocation[0]; + int anchorViewY = tempLocation[1]; - int anchorViewImpactHeight = mIsByPermanentButton ? anchorView.getHeight() : 0; ++ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) { ++ // moves the view offset up by the height of the popup ++ anchorViewY -= popupHeight; ++ // fix it if it goes offscreen ++ if (anchorViewY <= negativeSoftwareVerticalOffset) ++ anchorViewY = negativeSoftwareVerticalOffset; ++ } ++ + int[] offsets = new int[2]; + // If we have a hardware menu button, locate the app menu closer to the estimated + // hardware menu button location. +@@ -531,6 +541,15 @@ class AppMenu implements OnItemClickListener, OnKeyListener, AppMenuClickHandler + } + int availableScreenSpace = Math.max( + anchorViewY, appDimensions.height() - anchorViewY - anchorViewImpactHeight); ++ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) { ++ // use all available space ++ availableScreenSpace = appDimensions.height() - anchorViewImpactHeight; ++ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.N) { ++ // due to a bug in A7, the popup does not appear above the anchorview. ++ // the display is not pleasant, so we reduce the space ++ availableScreenSpace -= anchorView.getHeight(); ++ } ++ } + availableScreenSpace -= (padding.bottom + footerHeight + headerHeight); + if (mIsByPermanentButton) availableScreenSpace -= padding.top; diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java