Fixes the order of the tabs in the tablist
This commit is contained in:
parent
a0daaacf6d
commit
2379086afb
1 changed files with 169 additions and 89 deletions
|
@ -12,81 +12,80 @@ Support for tablet mode is also included.
|
|||
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
---
|
||||
cc/base/features.cc | 4 ++
|
||||
cc/base/features.cc | 4 +
|
||||
cc/base/features.h | 1 +
|
||||
cc/input/browser_controls_offset_manager.cc | 6 +++
|
||||
cc/trees/layer_tree_host_impl.cc | 3 ++
|
||||
cc/input/browser_controls_offset_manager.cc | 6 ++
|
||||
cc/trees/layer_tree_host_impl.cc | 3 +
|
||||
.../start_surface/StartSurfaceMediator.java | 5 ++
|
||||
.../tab_management/TabGroupUiCoordinator.java | 7 ++-
|
||||
.../tab_management/TabGroupUiMediator.java | 50 +++++++++++++++++-
|
||||
.../tab_management/TabGroupUiProperties.java | 6 ++-
|
||||
.../tab_management/TabGroupUiToolbarView.java | 18 +++++++
|
||||
.../tab_management/TabGroupUiViewBinder.java | 3 ++
|
||||
.../TabListContainerViewBinder.java | 4 ++
|
||||
.../tab_management/TabListCoordinator.java | 6 +++
|
||||
.../tab_management/TabListRecyclerView.java | 19 ++++++-
|
||||
.../tab_management/TabSwitcherMediator.java | 16 ++++++
|
||||
.../ChromeAccessibilitySettingsDelegate.java | 52 +++++++++++++++++++
|
||||
.../chrome/browser/app/ChromeActivity.java | 13 +++++
|
||||
.../tab_management/TabGroupUiCoordinator.java | 7 +-
|
||||
.../tab_management/TabGroupUiMediator.java | 50 +++++++++++-
|
||||
.../tab_management/TabGroupUiProperties.java | 6 +-
|
||||
.../tab_management/TabGroupUiToolbarView.java | 18 +++++
|
||||
.../tab_management/TabGroupUiViewBinder.java | 3 +
|
||||
.../tab_management/TabListCoordinator.java | 77 +++++++++++++++++++
|
||||
.../tab_management/TabListRecyclerView.java | 19 ++++-
|
||||
.../tab_management/TabSwitcherMediator.java | 19 +++++
|
||||
.../ChromeAccessibilitySettingsDelegate.java | 52 +++++++++++++
|
||||
.../chrome/browser/app/ChromeActivity.java | 13 ++++
|
||||
.../browser/app/flags/ChromeCachedFlags.java | 1 +
|
||||
.../compositor/CompositorViewHolder.java | 6 +++
|
||||
.../layouts/LayoutManagerChrome.java | 18 +++++--
|
||||
.../compositor/CompositorViewHolder.java | 6 ++
|
||||
.../layouts/LayoutManagerChrome.java | 18 ++++-
|
||||
.../layouts/LayoutManagerChromeTablet.java | 4 +-
|
||||
.../layouts/ToolbarSwipeLayout.java | 15 +++++-
|
||||
.../layouts/ToolbarSwipeLayout.java | 15 +++-
|
||||
.../overlays/strip/StripLayoutHelper.java | 2 +-
|
||||
.../strip/StripLayoutHelperManager.java | 36 +++++++++++--
|
||||
.../scene_layer/StaticTabSceneLayer.java | 8 ++-
|
||||
.../scene_layer/TabListSceneLayer.java | 14 +++++
|
||||
.../scene_layer/TabStripSceneLayer.java | 15 +++++-
|
||||
.../browser/findinpage/FindToolbarTablet.java | 11 ++--
|
||||
.../fullscreen/BrowserControlsManager.java | 13 +++++
|
||||
.../messages/MessageContainerCoordinator.java | 17 +++++-
|
||||
.../strip/StripLayoutHelperManager.java | 36 +++++++--
|
||||
.../scene_layer/StaticTabSceneLayer.java | 8 +-
|
||||
.../scene_layer/TabListSceneLayer.java | 14 ++++
|
||||
.../scene_layer/TabStripSceneLayer.java | 15 +++-
|
||||
.../browser/findinpage/FindToolbarTablet.java | 11 ++-
|
||||
.../fullscreen/BrowserControlsManager.java | 13 ++++
|
||||
.../messages/MessageContainerCoordinator.java | 17 +++-
|
||||
.../modaldialog/ChromeTabModalPresenter.java | 2 +-
|
||||
.../chrome/browser/ntp/NewTabPage.java | 13 +++--
|
||||
.../chrome/browser/ntp/RecentTabsPage.java | 22 ++++++--
|
||||
.../browser/searchwidget/SearchActivity.java | 13 ++++-
|
||||
.../chrome/browser/ntp/NewTabPage.java | 13 +++-
|
||||
.../chrome/browser/ntp/RecentTabsPage.java | 22 +++++-
|
||||
.../browser/searchwidget/SearchActivity.java | 13 +++-
|
||||
.../browser/settings/SettingsActivity.java | 5 ++
|
||||
.../StatusIndicatorCoordinator.java | 10 ++++
|
||||
.../StatusIndicatorSceneLayer.java | 7 ++-
|
||||
.../browser/toolbar/ToolbarManager.java | 37 +++++++++++--
|
||||
.../chrome/browser/ui/BottomContainer.java | 19 +++++++
|
||||
.../ui/system/StatusBarColorController.java | 9 ++++
|
||||
.../StatusIndicatorCoordinator.java | 10 +++
|
||||
.../StatusIndicatorSceneLayer.java | 7 +-
|
||||
.../browser/toolbar/ToolbarManager.java | 37 +++++++--
|
||||
.../chrome/browser/ui/BottomContainer.java | 19 +++++
|
||||
.../ui/system/StatusBarColorController.java | 9 +++
|
||||
chrome/browser/about_flags.cc | 5 ++
|
||||
.../scene_layer/tab_strip_scene_layer.cc | 16 ++++--
|
||||
.../BrowserControlsMarginSupplier.java | 6 +++
|
||||
.../BrowserControlsStateProvider.java | 6 +++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++
|
||||
chrome/browser/flag_descriptions.h | 3 ++
|
||||
.../flags/android/cached_feature_flags.cc | 18 +++++++
|
||||
.../scene_layer/tab_strip_scene_layer.cc | 16 +++-
|
||||
.../BrowserControlsMarginSupplier.java | 6 ++
|
||||
.../BrowserControlsStateProvider.java | 6 ++
|
||||
chrome/browser/flag_descriptions.cc | 4 +
|
||||
chrome/browser/flag_descriptions.h | 3 +
|
||||
.../flags/android/cached_feature_flags.cc | 18 +++++
|
||||
.../flags/android/chrome_feature_list.cc | 2 +
|
||||
.../browser/flags/CachedFeatureFlags.java | 19 +++++++
|
||||
.../browser/flags/ChromeFeatureList.java | 4 ++
|
||||
.../chrome/browser/ui/appmenu/AppMenu.java | 30 +++++++++++
|
||||
.../ui/appmenu/AppMenuHandlerImpl.java | 11 ++++
|
||||
.../omnibox/LocationBarCoordinator.java | 9 +++-
|
||||
.../browser/omnibox/UrlBarCoordinator.java | 11 +++-
|
||||
.../suggestions/AutocompleteCoordinator.java | 18 ++++++-
|
||||
.../suggestions/AutocompleteMediator.java | 7 ++-
|
||||
.../OmniboxSuggestionsDropdown.java | 22 +++++++-
|
||||
.../OmniboxSuggestionsDropdownEmbedder.java | 4 ++
|
||||
.../strings/android_chrome_strings.grd | 6 +++
|
||||
.../browser/flags/CachedFeatureFlags.java | 19 +++++
|
||||
.../browser/flags/ChromeFeatureList.java | 4 +
|
||||
.../chrome/browser/ui/appmenu/AppMenu.java | 30 ++++++++
|
||||
.../ui/appmenu/AppMenuHandlerImpl.java | 11 +++
|
||||
.../omnibox/LocationBarCoordinator.java | 9 ++-
|
||||
.../browser/omnibox/UrlBarCoordinator.java | 11 ++-
|
||||
.../suggestions/AutocompleteCoordinator.java | 18 ++++-
|
||||
.../suggestions/AutocompleteMediator.java | 7 +-
|
||||
.../OmniboxSuggestionsDropdown.java | 22 +++++-
|
||||
.../OmniboxSuggestionsDropdownEmbedder.java | 4 +
|
||||
.../strings/android_chrome_strings.grd | 6 ++
|
||||
chrome/browser/ui/android/toolbar/BUILD.gn | 1 +
|
||||
.../toolbar/LocationBarFocusScrimHandler.java | 7 +++
|
||||
.../bottom/BottomControlsContentDelegate.java | 9 +++-
|
||||
.../bottom/BottomControlsCoordinator.java | 11 +++-
|
||||
.../bottom/BottomControlsMediator.java | 9 ++++
|
||||
.../toolbar/LocationBarFocusScrimHandler.java | 7 ++
|
||||
.../bottom/BottomControlsContentDelegate.java | 9 ++-
|
||||
.../bottom/BottomControlsCoordinator.java | 11 ++-
|
||||
.../bottom/BottomControlsMediator.java | 9 +++
|
||||
.../bottom/BottomControlsProperties.java | 5 +-
|
||||
.../bottom/BottomControlsViewBinder.java | 2 +
|
||||
.../bottom/ScrollingBottomViewSceneLayer.java | 20 ++++++-
|
||||
.../toolbar/top/ToolbarControlContainer.java | 11 ++++
|
||||
.../top/TopToolbarOverlayCoordinator.java | 7 +++
|
||||
.../top/TopToolbarOverlayProperties.java | 8 ++-
|
||||
.../toolbar/top/TopToolbarSceneLayer.java | 11 +++-
|
||||
.../res/xml/accessibility_preferences.xml | 4 ++
|
||||
.../accessibility/AccessibilitySettings.java | 16 ++++++
|
||||
.../AccessibilitySettingsDelegate.java | 6 +++
|
||||
.../render_widget_host_view_android.cc | 3 ++
|
||||
74 files changed, 784 insertions(+), 57 deletions(-)
|
||||
.../bottom/ScrollingBottomViewSceneLayer.java | 20 ++++-
|
||||
.../toolbar/top/ToolbarControlContainer.java | 11 +++
|
||||
.../top/TopToolbarOverlayCoordinator.java | 7 ++
|
||||
.../top/TopToolbarOverlayProperties.java | 8 +-
|
||||
.../toolbar/top/TopToolbarSceneLayer.java | 11 ++-
|
||||
.../res/xml/accessibility_preferences.xml | 4 +
|
||||
.../accessibility/AccessibilitySettings.java | 16 ++++
|
||||
.../AccessibilitySettingsDelegate.java | 6 ++
|
||||
.../render_widget_host_view_android.cc | 3 +
|
||||
73 files changed, 854 insertions(+), 57 deletions(-)
|
||||
|
||||
diff --git a/cc/base/features.cc b/cc/base/features.cc
|
||||
--- a/cc/base/features.cc
|
||||
|
@ -390,31 +389,18 @@ 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/TabListContainerViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
|
||||
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
|
||||
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
|
||||
@@ -21,6 +21,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import org.chromium.components.browser_ui.styles.ChromeColors;
|
||||
import org.chromium.ui.modelutil.PropertyKey;
|
||||
import org.chromium.ui.modelutil.PropertyModel;
|
||||
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
|
||||
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||
|
||||
/**
|
||||
* ViewBinder for TabListRecyclerView.
|
||||
@@ -57,6 +59,8 @@ class TabListContainerViewBinder {
|
||||
params.topMargin = newTopMargin;
|
||||
view.requestLayout();
|
||||
} else if (BOTTOM_CONTROLS_HEIGHT == propertyKey) {
|
||||
+ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM))
|
||||
+ return;
|
||||
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
|
||||
params.bottomMargin = model.get(BOTTOM_CONTROLS_HEIGHT);
|
||||
view.requestLayout();
|
||||
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
|
||||
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
|
||||
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
|
||||
@@ -47,6 +47,9 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter;
|
||||
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.tasks.tab_management;
|
||||
import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.CARD_TYPE;
|
||||
|
||||
import android.content.Context;
|
||||
+import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
@@ -47,6 +48,9 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter;
|
||||
import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
|
||||
import org.chromium.ui.widget.ViewLookupCachingFrameLayout;
|
||||
|
||||
|
@ -424,16 +410,100 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
|||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.List;
|
||||
@@ -255,6 +258,9 @@ public class TabListCoordinator
|
||||
@@ -95,6 +99,70 @@ public class TabListCoordinator
|
||||
private boolean mLayoutListenerRegistered;
|
||||
private @Nullable TabStripSnapshotter mTabStripSnapshotter;
|
||||
|
||||
+ public class GridLayoutManagerDockBottom extends GridLayoutManager {
|
||||
+ Context mContext;
|
||||
+
|
||||
+ TabListRecyclerView mRecyclerView;
|
||||
+
|
||||
+ int mTopPadding = 99999;
|
||||
+ int mLastPosition = -1;
|
||||
+ boolean mIsFirstLayout = true;
|
||||
+
|
||||
+ public GridLayoutManagerDockBottom(Context context, int spanCount) {
|
||||
+ super(context, spanCount);
|
||||
+ mContext = context;
|
||||
+ }
|
||||
+
|
||||
+ public void setTabListRecyclerView(TabListRecyclerView recyclerView) {
|
||||
+ mRecyclerView = recyclerView;
|
||||
+ }
|
||||
+
|
||||
+ public void ResetTopPosition() {
|
||||
+ mIsFirstLayout = true;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getPaddingTop() {
|
||||
+ if (mContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||
+ mTopPadding = 99999;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (mTopPadding == 99999) return super.getPaddingTop();
|
||||
+ return mTopPadding;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getPaddingBottom() {
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void scrollToPositionWithOffset(int position, int offset) {
|
||||
+ mLastPosition = position;
|
||||
+ super.scrollToPositionWithOffset(position, getPaddingBottom());
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onLayoutCompleted(RecyclerView.State state) {
|
||||
+ super.onLayoutCompleted(state);
|
||||
+
|
||||
+ if (state.isPreLayout()) return;
|
||||
+ View lastView = findViewByPosition(findFirstVisibleItemPosition());
|
||||
+ if (lastView != null) {
|
||||
+ mTopPadding = Math.min(mTopPadding, mRecyclerView.getHeight() - lastView.getHeight());
|
||||
+ if (mIsFirstLayout) {
|
||||
+ mIsFirstLayout = false;
|
||||
+ scrollToPositionWithOffset(mLastPosition, 0);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (mLastPosition != -1 && mLastPosition >= state.getItemCount()) {
|
||||
+ ResetTopPosition();
|
||||
+ scrollToPositionWithOffset(state.getItemCount()-getSpanCount(), 0);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Construct a coordinator for UI that shows a list of tabs.
|
||||
* @param mode Modes of showing the list of tabs. Can be used in GRID or STRIP.
|
||||
@@ -255,6 +323,12 @@ public class TabListCoordinator
|
||||
if (mMode == TabListMode.GRID) {
|
||||
GridLayoutManager gridLayoutManager =
|
||||
new GridLayoutManager(context, GRID_LAYOUT_SPAN_COUNT_COMPACT);
|
||||
+ // invert the order if the toolbar is at bottom
|
||||
+ if (titleProvider != null && CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM))
|
||||
+ gridLayoutManager.setReverseLayout(true);
|
||||
+ if (titleProvider != null && CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) {
|
||||
+ gridLayoutManager =
|
||||
+ new GridLayoutManagerDockBottom(context, GRID_LAYOUT_SPAN_COUNT_COMPACT);
|
||||
+ ((GridLayoutManagerDockBottom)gridLayoutManager)
|
||||
+ .setTabListRecyclerView(mRecyclerView);
|
||||
+ }
|
||||
mRecyclerView.setLayoutManager(gridLayoutManager);
|
||||
mMediator.registerOrientationListener(gridLayoutManager);
|
||||
mMediator.updateSpanCount(gridLayoutManager,
|
||||
@@ -434,6 +508,9 @@ public class TabListCoordinator
|
||||
}
|
||||
registerLayoutChangeListener();
|
||||
mRecyclerView.prepareTabSwitcherView();
|
||||
+ GridLayoutManager glm = (GridLayoutManager) mRecyclerView.getLayoutManager();
|
||||
+ if (glm instanceof GridLayoutManagerDockBottom)
|
||||
+ ((GridLayoutManagerDockBottom)glm).ResetTopPosition();
|
||||
mMediator.prepareTabSwitcherView();
|
||||
mMediator.registerOnScrolledListener(mRecyclerView);
|
||||
}
|
||||
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
|
||||
|
@ -550,6 +620,16 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
|||
mContainerViewModel.set(SHADOW_TOP_OFFSET, contentOffset);
|
||||
}
|
||||
|
||||
@@ -744,6 +760,9 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView
|
||||
private void setInitialScrollIndexOffset() {
|
||||
int offset = mMode == TabListMode.CAROUSEL ? INITIAL_SCROLL_INDEX_OFFSET_CAROUSEL
|
||||
: INITIAL_SCROLL_INDEX_OFFSET_GTS;
|
||||
+ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) {
|
||||
+ offset = 0;
|
||||
+ }
|
||||
int initialPosition = Math.max(
|
||||
mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter().index()
|
||||
- offset,
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
|
||||
|
|
Loading…
Add table
Reference in a new issue