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

* fix 1995 and 2011

* fixgit apply

Co-authored-by: Carmelo Messina <uazo@users.noreply.github.com>
This commit is contained in:
uazo 2022-04-29 15:39:18 +02:00 committed by GitHub
parent 685c40dbda
commit b7bad88837
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -18,6 +18,7 @@ Support for tablet mode is also included.
.../tab_management/TabGroupUiProperties.java | 6 ++- .../tab_management/TabGroupUiProperties.java | 6 ++-
.../tab_management/TabGroupUiToolbarView.java | 18 +++++++ .../tab_management/TabGroupUiToolbarView.java | 18 +++++++
.../tab_management/TabGroupUiViewBinder.java | 3 ++ .../tab_management/TabGroupUiViewBinder.java | 3 ++
.../tab_management/TabListRecyclerView.java | 18 ++++++-
.../tab_management/TabSwitcherMediator.java | 15 ++++++ .../tab_management/TabSwitcherMediator.java | 15 ++++++
.../ChromeAccessibilitySettingsDelegate.java | 52 +++++++++++++++++++ .../ChromeAccessibilitySettingsDelegate.java | 52 +++++++++++++++++++
.../chrome/browser/app/ChromeActivity.java | 8 +++ .../chrome/browser/app/ChromeActivity.java | 8 +++
@ -52,7 +53,7 @@ Support for tablet mode is also included.
.../flags/android/chrome_feature_list.cc | 2 + .../flags/android/chrome_feature_list.cc | 2 +
.../browser/flags/CachedFeatureFlags.java | 19 +++++++ .../browser/flags/CachedFeatureFlags.java | 19 +++++++
.../browser/flags/ChromeFeatureList.java | 2 + .../browser/flags/ChromeFeatureList.java | 2 +
.../chrome/browser/ui/appmenu/AppMenu.java | 4 ++ .../chrome/browser/ui/appmenu/AppMenu.java | 19 +++++++
.../omnibox/LocationBarCoordinator.java | 9 +++- .../omnibox/LocationBarCoordinator.java | 9 +++-
.../browser/omnibox/UrlBarCoordinator.java | 11 +++- .../browser/omnibox/UrlBarCoordinator.java | 11 +++-
.../suggestions/AutocompleteCoordinator.java | 16 +++++- .../suggestions/AutocompleteCoordinator.java | 16 +++++-
@ -75,7 +76,7 @@ Support for tablet mode is also included.
.../accessibility/AccessibilitySettings.java | 16 ++++++ .../accessibility/AccessibilitySettings.java | 16 ++++++
.../AccessibilitySettingsDelegate.java | 6 +++ .../AccessibilitySettingsDelegate.java | 6 +++
.../render_widget_host_view_android.cc | 3 ++ .../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 diff --git a/cc/base/features.cc b/cc/base/features.cc
--- a/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 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 --- 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 +++ 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.chrome.browser.ui.appmenu.internal.R;
import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.browser_ui.styles.ChromeColors;
import org.chromium.components.browser_ui.widget.chips.ChipView; import org.chromium.components.browser_ui.widget.chips.ChipView;
@@ -522,6 +524,8 @@ class AppMenu implements OnItemClickListener, OnKeyListener, AppMenuClickHandler @@ -341,6 +343,14 @@ class AppMenu implements OnItemClickListener, OnKeyListener, AppMenuClickHandler
View anchorView, @IdRes int groupDividerResourceId) { int anchorViewX = tempLocation[0];
anchorView.getLocationOnScreen(mTempLocation); int anchorViewY = tempLocation[1];
int anchorViewY = mTempLocation[1] - appDimensions.top;
+ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM))
+ anchorViewY += mNegativeVerticalOffsetNotTopAnchored;
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 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 --- 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 +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java