Browse Source

Fix Move-navigation-bar-to-bottom.patch (#2029)

* fix 1995 and 2011

* fixgit apply

Co-authored-by: Carmelo Messina <uazo@users.noreply.github.com>
uazo 3 years ago
parent
commit
b7bad88837
1 changed files with 95 additions and 9 deletions
  1. 95 9
      build/patches/Move-navigation-bar-to-bottom.patch

+ 95 - 9
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