Commit ed3219e6 authored by Yue Zhang's avatar Yue Zhang Committed by Commit Bot

Remove PopupWindow usage in TabGridDialog

Currently, TabGridDialog component uses PopupWindow as a container which
has shown some disadvantages as feature evolves (https://docs.google.com/document/d/1z49-ehX2VzoY_KcMUOSDi3FU7NzqLlrQocD_M-bPZ1A/edit?usp=sharing)
This CL removes the PopupWindow usage in TabGridDialog. Things happened
in this CL:
* Instead of using PopupWindow as a container, we insert the inflated
  view into the root view hierarchy and make all TabGridDialog instances
  share this same view.
* Use the ScrimView in RootUiCoordinator instead of creating a new one.
  This gives us a bonus that the scrim now covers the status bar.
* Tweaks in TabGridDialogMediator to make sure the component behaves the
  same before/after.
* Fix tests to adapt to change that TabGridDialog is not in a separate
  window.

Bug: 1069803, 1064140, 997239
Change-Id: I1da2db2bf7ef5b8f304782c4bcc95e951b23623b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2119188
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Reviewed-by: default avatarMei Liang <meiliang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#771898}
parent 678e108d
...@@ -12,6 +12,7 @@ import static android.support.test.espresso.assertion.ViewAssertions.doesNotExis ...@@ -12,6 +12,7 @@ import static android.support.test.espresso.assertion.ViewAssertions.doesNotExis
import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition; import static android.support.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition;
import static android.support.test.espresso.matcher.ViewMatchers.Visibility.GONE; import static android.support.test.espresso.matcher.ViewMatchers.Visibility.GONE;
import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility; import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withId;
...@@ -1364,7 +1365,8 @@ public class StartSurfaceLayoutTest { ...@@ -1364,7 +1365,8 @@ public class StartSurfaceLayoutTest {
prepareTabs(1, 0, null); prepareTabs(1, 0, null);
enterGTSWithThumbnailChecking(); enterGTSWithThumbnailChecking();
onView(allOf(withId(R.id.action_button), withParent(withId(R.id.content_view)))) onView(allOf(withId(R.id.action_button), withParent(withId(R.id.content_view)),
withEffectiveVisibility(VISIBLE)))
.perform(click()); .perform(click());
} }
......
...@@ -117,7 +117,7 @@ android_library("java") { ...@@ -117,7 +117,7 @@ android_library("java") {
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuCoordinator.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuCoordinator.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemBinder.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemBinder.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemProperties.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemProperties.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogParent.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogView.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogCoordinator.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogCoordinator.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogView.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphDialogView.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback.java",
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Use of this source code is governed by a BSD-style license that can be Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. --> found in the LICENSE file. -->
<FrameLayout <org.chromium.chrome.browser.tasks.tab_management.TabGridDialogView
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -58,4 +58,4 @@ ...@@ -58,4 +58,4 @@
android:alpha="0.0"> android:alpha="0.0">
<include layout="@layout/tab_grid_card_item"/> <include layout="@layout/tab_grid_card_item"/>
</FrameLayout> </FrameLayout>
</FrameLayout> </org.chromium.chrome.browser.tasks.tab_management.TabGridDialogView>
\ No newline at end of file \ No newline at end of file
...@@ -15,6 +15,7 @@ import androidx.annotation.Nullable; ...@@ -15,6 +15,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.SysUtils; import org.chromium.base.SysUtils;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
...@@ -37,10 +38,9 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon ...@@ -37,10 +38,9 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon
private final TabGridDialogMediator mMediator; private final TabGridDialogMediator mMediator;
private final PropertyModel mModel; private final PropertyModel mModel;
private final PropertyModelChangeProcessor mModelChangeProcessor; private final PropertyModelChangeProcessor mModelChangeProcessor;
private final TabGridDialogParent mParentLayout;
private TabSelectionEditorCoordinator mTabSelectionEditorCoordinator; private TabSelectionEditorCoordinator mTabSelectionEditorCoordinator;
private ViewGroup mContainerView; private ViewGroup mContainerView;
private TabGridDialogView mDialogView;
private boolean mIsInitialized; private boolean mIsInitialized;
TabGridDialogCoordinator(Context context, TabModelSelector tabModelSelector, TabGridDialogCoordinator(Context context, TabModelSelector tabModelSelector,
...@@ -55,7 +55,13 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon ...@@ -55,7 +55,13 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon
mModel = new PropertyModel(TabGridPanelProperties.ALL_KEYS); mModel = new PropertyModel(TabGridPanelProperties.ALL_KEYS);
mContainerView = containerView; mContainerView = containerView;
mParentLayout = new TabGridDialogParent(context, containerView); mDialogView = containerView.findViewById(R.id.dialog_parent_view);
if (mDialogView == null) {
LayoutInflater.from(context).inflate(
R.layout.tab_grid_dialog_layout, containerView, true);
mDialogView = containerView.findViewById(R.id.dialog_parent_view);
mDialogView.setupScrimView(((ChromeActivity) context).getScrim());
}
mMediator = new TabGridDialogMediator(context, this, mModel, tabModelSelector, mMediator = new TabGridDialogMediator(context, this, mModel, tabModelSelector,
tabCreatorManager, resetHandler, animationSourceViewProvider, shareDelegateSupplier, tabCreatorManager, resetHandler, animationSourceViewProvider, shareDelegateSupplier,
...@@ -81,7 +87,7 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon ...@@ -81,7 +87,7 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon
toolbarView.hideTabGroupsContinuationWidgets(); toolbarView.hideTabGroupsContinuationWidgets();
} }
mModelChangeProcessor = PropertyModelChangeProcessor.create(mModel, mModelChangeProcessor = PropertyModelChangeProcessor.create(mModel,
new TabGridPanelViewBinder.ViewHolder(toolbarView, recyclerView, mParentLayout), new TabGridPanelViewBinder.ViewHolder(toolbarView, recyclerView, mDialogView),
TabGridPanelViewBinder::bind); TabGridPanelViewBinder::bind);
} }
...@@ -95,7 +101,7 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon ...@@ -95,7 +101,7 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon
int mode = SysUtils.isLowEndDevice() ? TabListCoordinator.TabListMode.LIST int mode = SysUtils.isLowEndDevice() ? TabListCoordinator.TabListMode.LIST
: TabListCoordinator.TabListMode.GRID; : TabListCoordinator.TabListMode.GRID;
mTabSelectionEditorCoordinator = new TabSelectionEditorCoordinator(context, mTabSelectionEditorCoordinator = new TabSelectionEditorCoordinator(context,
mContainerView, tabModelSelector, tabContentManager, mParentLayout, mode); mContainerView, tabModelSelector, tabContentManager, mDialogView, mode);
controller = mTabSelectionEditorCoordinator.getController(); controller = mTabSelectionEditorCoordinator.getController();
} else { } else {
...@@ -111,7 +117,6 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon ...@@ -111,7 +117,6 @@ public class TabGridDialogCoordinator implements TabGridDialogMediator.DialogCon
public void destroy() { public void destroy() {
mTabListCoordinator.destroy(); mTabListCoordinator.destroy();
mMediator.destroy(); mMediator.destroy();
mParentLayout.destroy();
mModelChangeProcessor.destroy(); mModelChangeProcessor.destroy();
if (mTabSelectionEditorCoordinator != null) { if (mTabSelectionEditorCoordinator != null) {
mTabSelectionEditorCoordinator.destroy(); mTabSelectionEditorCoordinator.destroy();
......
...@@ -99,6 +99,7 @@ public class TabGridDialogMediator { ...@@ -99,6 +99,7 @@ public class TabGridDialogMediator {
private final AnimationSourceViewProvider mAnimationSourceViewProvider; private final AnimationSourceViewProvider mAnimationSourceViewProvider;
private final DialogHandler mTabGridDialogHandler; private final DialogHandler mTabGridDialogHandler;
private final ObservableSupplier<ShareDelegate> mShareDelegateSupplier; private final ObservableSupplier<ShareDelegate> mShareDelegateSupplier;
private final ScrimView.ScrimObserver mScrimObserver;
private final String mComponentName; private final String mComponentName;
private TabGroupTitleEditor mTabGroupTitleEditor; private TabGroupTitleEditor mTabGroupTitleEditor;
...@@ -206,6 +207,19 @@ public class TabGridDialogMediator { ...@@ -206,6 +207,19 @@ public class TabGridDialogMediator {
} }
}; };
mTabModelSelector.addObserver(mTabModelSelectorObserver); mTabModelSelector.addObserver(mTabModelSelectorObserver);
// Setup ScrimView observer.
mScrimObserver = new ScrimView.ScrimObserver() {
@Override
public void onScrimClick() {
mModel.set(TabGridPanelProperties.IS_KEYBOARD_VISIBLE, false);
mModel.set(TabGridPanelProperties.IS_TITLE_TEXT_FOCUSED, false);
hideDialog(true);
RecordUserAction.record("TabGridDialog.Exit");
}
@Override
public void onScrimVisibilityChanged(boolean visible) {}
};
} }
public void initWithNative(@Nullable TabSelectionEditorCoordinator public void initWithNative(@Nullable TabSelectionEditorCoordinator
...@@ -219,7 +233,8 @@ public class TabGridDialogMediator { ...@@ -219,7 +233,8 @@ public class TabGridDialogMediator {
mToolbarMenuCallback = result -> { mToolbarMenuCallback = result -> {
if (result == R.id.ungroup_tab) { if (result == R.id.ungroup_tab) {
mModel.set(TabGridPanelProperties.IS_POPUP_WINDOW_FOCUSABLE, false); mModel.set(TabGridPanelProperties.IS_KEYBOARD_VISIBLE, false);
mModel.set(TabGridPanelProperties.IS_TITLE_TEXT_FOCUSED, false);
List<Tab> tabs = getRelatedTabs(mCurrentTabId); List<Tab> tabs = getRelatedTabs(mCurrentTabId);
if (mTabSelectionEditorController != null) { if (mTabSelectionEditorController != null) {
mTabSelectionEditorController.show(tabs); mTabSelectionEditorController.show(tabs);
...@@ -258,9 +273,6 @@ public class TabGridDialogMediator { ...@@ -258,9 +273,6 @@ public class TabGridDialogMediator {
setupDialogSelectionEditor(); setupDialogSelectionEditor();
mModel.set(TabGridPanelProperties.MENU_CLICK_LISTENER, getMenuButtonClickListener()); mModel.set(TabGridPanelProperties.MENU_CLICK_LISTENER, getMenuButtonClickListener());
} }
// Setup ScrimView observer.
setupScrimViewObserver();
} }
void hideDialog(boolean showAnimation) { void hideDialog(boolean showAnimation) {
...@@ -297,6 +309,7 @@ public class TabGridDialogMediator { ...@@ -297,6 +309,7 @@ public class TabGridDialogMediator {
} }
updateDialog(); updateDialog();
updateDialogScrollPosition(); updateDialogScrollPosition();
mModel.set(TabGridPanelProperties.SCRIMVIEW_OBSERVER, mScrimObserver);
mModel.set(TabGridPanelProperties.IS_DIALOG_VISIBLE, true); mModel.set(TabGridPanelProperties.IS_DIALOG_VISIBLE, true);
} else { } else {
mModel.set(TabGridPanelProperties.IS_DIALOG_VISIBLE, false); mModel.set(TabGridPanelProperties.IS_DIALOG_VISIBLE, false);
...@@ -385,9 +398,9 @@ public class TabGridDialogMediator { ...@@ -385,9 +398,9 @@ public class TabGridDialogMediator {
mKeyboardVisibilityListener = isShowing -> { mKeyboardVisibilityListener = isShowing -> {
mModel.set(TabGridPanelProperties.TITLE_CURSOR_VISIBILITY, isShowing); mModel.set(TabGridPanelProperties.TITLE_CURSOR_VISIBILITY, isShowing);
mModel.set(TabGridPanelProperties.IS_TITLE_TEXT_FOCUSED, isShowing); mModel.set(TabGridPanelProperties.IS_TITLE_TEXT_FOCUSED, isShowing);
mModel.set(TabGridPanelProperties.IS_KEYBOARD_VISIBLE, isShowing);
if (!isShowing) { if (!isShowing) {
saveCurrentGroupModifiedTitle(); saveCurrentGroupModifiedTitle();
mModel.set(TabGridPanelProperties.IS_POPUP_WINDOW_FOCUSABLE, false);
} }
}; };
KeyboardVisibilityDelegate.getInstance().addKeyboardVisibilityListener( KeyboardVisibilityDelegate.getInstance().addKeyboardVisibilityListener(
...@@ -411,31 +424,11 @@ public class TabGridDialogMediator { ...@@ -411,31 +424,11 @@ public class TabGridDialogMediator {
View.OnFocusChangeListener onFocusChangeListener = View.OnFocusChangeListener onFocusChangeListener =
(v, hasFocus) -> mIsUpdatingTitle = hasFocus; (v, hasFocus) -> mIsUpdatingTitle = hasFocus;
mModel.set(TabGridPanelProperties.TITLE_TEXT_ON_FOCUS_LISTENER, onFocusChangeListener); mModel.set(TabGridPanelProperties.TITLE_TEXT_ON_FOCUS_LISTENER, onFocusChangeListener);
View.OnTouchListener onTouchListener = (v, event) -> {
// When touching title text field, make the PopupWindow focusable and request focus.
mModel.set(TabGridPanelProperties.IS_POPUP_WINDOW_FOCUSABLE, true);
v.performClick();
return false;
};
mModel.set(TabGridPanelProperties.TITLE_TEXT_ON_TOUCH_LISTENER, onTouchListener);
}
private void setupScrimViewObserver() {
ScrimView.ScrimObserver scrimObserver = new ScrimView.ScrimObserver() {
@Override
public void onScrimClick() {
hideDialog(true);
RecordUserAction.record("TabGridDialog.Exit");
}
@Override
public void onScrimVisibilityChanged(boolean visible) {}
};
mModel.set(TabGridPanelProperties.SCRIMVIEW_OBSERVER, scrimObserver);
} }
private View.OnClickListener getCollapseButtonClickListener() { private View.OnClickListener getCollapseButtonClickListener() {
return view -> { return view -> {
mModel.set(TabGridPanelProperties.IS_KEYBOARD_VISIBLE, false);
hideDialog(true); hideDialog(true);
RecordUserAction.record("TabGridDialog.Exit"); RecordUserAction.record("TabGridDialog.Exit");
}; };
...@@ -517,7 +510,7 @@ public class TabGridDialogMediator { ...@@ -517,7 +510,7 @@ public class TabGridDialogMediator {
*/ */
class DialogHandler implements TabListMediator.TabGridDialogHandler { class DialogHandler implements TabListMediator.TabGridDialogHandler {
@Override @Override
public void updateUngroupBarStatus(@TabGridDialogParent.UngroupBarStatus int status) { public void updateUngroupBarStatus(@TabGridDialogView.UngroupBarStatus int status) {
mModel.set(TabGridPanelProperties.UNGROUP_BAR_STATUS, status); mModel.set(TabGridPanelProperties.UNGROUP_BAR_STATUS, status);
} }
...@@ -573,4 +566,9 @@ public class TabGridDialogMediator { ...@@ -573,4 +566,9 @@ public class TabGridDialogMediator {
Callback<Integer> getToolbarMenuCallbackForTesting() { Callback<Integer> getToolbarMenuCallbackForTesting() {
return mToolbarMenuCallback; return mToolbarMenuCallback;
} }
@VisibleForTesting
ScrimView.ScrimObserver getScrimObserverForTesting() {
return mScrimObserver;
}
} }
...@@ -236,7 +236,7 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba ...@@ -236,7 +236,7 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba
mUnGroupTabIndex = TabModel.INVALID_TAB_INDEX; mUnGroupTabIndex = TabModel.INVALID_TAB_INDEX;
if (mTabGridDialogHandler != null) { if (mTabGridDialogHandler != null) {
mTabGridDialogHandler.updateUngroupBarStatus( mTabGridDialogHandler.updateUngroupBarStatus(
TabGridDialogParent.UngroupBarStatus.HIDE); TabGridDialogView.UngroupBarStatus.HIDE);
} }
} }
} }
...@@ -317,10 +317,10 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba ...@@ -317,10 +317,10 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba
mUnGroupTabIndex = isHoveredOnUngroupBar ? viewHolder.getAdapterPosition() mUnGroupTabIndex = isHoveredOnUngroupBar ? viewHolder.getAdapterPosition()
: TabModel.INVALID_TAB_INDEX; : TabModel.INVALID_TAB_INDEX;
mTabGridDialogHandler.updateUngroupBarStatus(isHoveredOnUngroupBar mTabGridDialogHandler.updateUngroupBarStatus(isHoveredOnUngroupBar
? TabGridDialogParent.UngroupBarStatus.HOVERED ? TabGridDialogView.UngroupBarStatus.HOVERED
: (mSelectedTabIndex == TabModel.INVALID_TAB_INDEX : (mSelectedTabIndex == TabModel.INVALID_TAB_INDEX
? TabGridDialogParent.UngroupBarStatus.HIDE ? TabGridDialogView.UngroupBarStatus.HIDE
: TabGridDialogParent.UngroupBarStatus.SHOW)); : TabGridDialogView.UngroupBarStatus.SHOW));
} }
} }
......
...@@ -35,7 +35,7 @@ class TabGridPanelProperties { ...@@ -35,7 +35,7 @@ class TabGridPanelProperties {
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel public static final PropertyModel
.WritableObjectPropertyKey<ScrimView.ScrimObserver> SCRIMVIEW_OBSERVER = .WritableObjectPropertyKey<ScrimView.ScrimObserver> SCRIMVIEW_OBSERVER =
new PropertyModel.WritableObjectPropertyKey<>(); new PropertyModel.WritableObjectPropertyKey<>(true);
public static final PropertyModel.WritableObjectPropertyKey<View> ANIMATION_SOURCE_VIEW = public static final PropertyModel.WritableObjectPropertyKey<View> ANIMATION_SOURCE_VIEW =
new PropertyModel.WritableObjectPropertyKey<>(true); new PropertyModel.WritableObjectPropertyKey<>(true);
public static final PropertyModel.WritableIntPropertyKey UNGROUP_BAR_STATUS = public static final PropertyModel.WritableIntPropertyKey UNGROUP_BAR_STATUS =
...@@ -70,11 +70,8 @@ class TabGridPanelProperties { ...@@ -70,11 +70,8 @@ class TabGridPanelProperties {
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey IS_TITLE_TEXT_FOCUSED = public static final PropertyModel.WritableBooleanPropertyKey IS_TITLE_TEXT_FOCUSED =
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey IS_POPUP_WINDOW_FOCUSABLE = public static final PropertyModel.WritableBooleanPropertyKey IS_KEYBOARD_VISIBLE =
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel
.WritableObjectPropertyKey<View.OnTouchListener> TITLE_TEXT_ON_TOUCH_LISTENER =
new PropertyModel.WritableObjectPropertyKey<View.OnTouchListener>();
public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {COLLAPSE_CLICK_LISTENER, public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {COLLAPSE_CLICK_LISTENER,
ADD_CLICK_LISTENER, HEADER_TITLE, CONTENT_TOP_MARGIN, PRIMARY_COLOR, TINT, ADD_CLICK_LISTENER, HEADER_TITLE, CONTENT_TOP_MARGIN, PRIMARY_COLOR, TINT,
IS_DIALOG_VISIBLE, SCRIMVIEW_OBSERVER, ANIMATION_SOURCE_VIEW, UNGROUP_BAR_STATUS, IS_DIALOG_VISIBLE, SCRIMVIEW_OBSERVER, ANIMATION_SOURCE_VIEW, UNGROUP_BAR_STATUS,
...@@ -82,5 +79,5 @@ class TabGridPanelProperties { ...@@ -82,5 +79,5 @@ class TabGridPanelProperties {
DIALOG_UNGROUP_BAR_HOVERED_BACKGROUND_COLOR_ID, DIALOG_UNGROUP_BAR_TEXT_APPEARANCE, DIALOG_UNGROUP_BAR_HOVERED_BACKGROUND_COLOR_ID, DIALOG_UNGROUP_BAR_TEXT_APPEARANCE,
INITIAL_SCROLL_INDEX, IS_MAIN_CONTENT_VISIBLE, MENU_CLICK_LISTENER, TITLE_TEXT_WATCHER, INITIAL_SCROLL_INDEX, IS_MAIN_CONTENT_VISIBLE, MENU_CLICK_LISTENER, TITLE_TEXT_WATCHER,
TITLE_TEXT_ON_FOCUS_LISTENER, TITLE_CURSOR_VISIBILITY, IS_TITLE_TEXT_FOCUSED, TITLE_TEXT_ON_FOCUS_LISTENER, TITLE_CURSOR_VISIBILITY, IS_TITLE_TEXT_FOCUSED,
IS_POPUP_WINDOW_FOCUSABLE, TITLE_TEXT_ON_TOUCH_LISTENER}; IS_KEYBOARD_VISIBLE};
} }
...@@ -15,8 +15,8 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelPrope ...@@ -15,8 +15,8 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelPrope
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.HEADER_TITLE; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.HEADER_TITLE;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.INITIAL_SCROLL_INDEX; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.INITIAL_SCROLL_INDEX;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_DIALOG_VISIBLE; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_DIALOG_VISIBLE;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_KEYBOARD_VISIBLE;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_MAIN_CONTENT_VISIBLE; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_MAIN_CONTENT_VISIBLE;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_POPUP_WINDOW_FOCUSABLE;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_TITLE_TEXT_FOCUSED; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.IS_TITLE_TEXT_FOCUSED;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.MENU_CLICK_LISTENER; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.MENU_CLICK_LISTENER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.PRIMARY_COLOR; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.PRIMARY_COLOR;
...@@ -24,7 +24,6 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelPrope ...@@ -24,7 +24,6 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelPrope
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TINT; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TINT;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TITLE_CURSOR_VISIBILITY; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TITLE_CURSOR_VISIBILITY;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TITLE_TEXT_ON_FOCUS_LISTENER; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TITLE_TEXT_ON_FOCUS_LISTENER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TITLE_TEXT_ON_TOUCH_LISTENER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TITLE_TEXT_WATCHER; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.TITLE_TEXT_WATCHER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.UNGROUP_BAR_STATUS; import static org.chromium.chrome.browser.tasks.tab_management.TabGridPanelProperties.UNGROUP_BAR_STATUS;
...@@ -49,10 +48,10 @@ class TabGridPanelViewBinder { ...@@ -49,10 +48,10 @@ class TabGridPanelViewBinder {
public final TabGroupUiToolbarView toolbarView; public final TabGroupUiToolbarView toolbarView;
public final RecyclerView contentView; public final RecyclerView contentView;
@Nullable @Nullable
public TabGridDialogParent dialogView; public TabGridDialogView dialogView;
ViewHolder(TabGroupUiToolbarView toolbarView, RecyclerView contentView, ViewHolder(TabGroupUiToolbarView toolbarView, RecyclerView contentView,
@Nullable TabGridDialogParent dialogView) { @Nullable TabGridDialogView dialogView) {
this.toolbarView = toolbarView; this.toolbarView = toolbarView;
this.contentView = contentView; this.contentView = contentView;
this.dialogView = dialogView; this.dialogView = dialogView;
...@@ -135,10 +134,11 @@ class TabGridPanelViewBinder { ...@@ -135,10 +134,11 @@ class TabGridPanelViewBinder {
if (!model.get(IS_TITLE_TEXT_FOCUSED)) { if (!model.get(IS_TITLE_TEXT_FOCUSED)) {
viewHolder.toolbarView.clearTitleTextFocus(); viewHolder.toolbarView.clearTitleTextFocus();
} }
} else if (IS_POPUP_WINDOW_FOCUSABLE == propertyKey) { } else if (IS_KEYBOARD_VISIBLE == propertyKey) {
viewHolder.dialogView.setPopupWindowFocusable(model.get(IS_POPUP_WINDOW_FOCUSABLE)); // Don't explicitly show keyboard since it should happen automatically.
} else if (TITLE_TEXT_ON_TOUCH_LISTENER == propertyKey) { if (!model.get(IS_KEYBOARD_VISIBLE)) {
viewHolder.toolbarView.setTitleOnTouchListener(model.get(TITLE_TEXT_ON_TOUCH_LISTENER)); viewHolder.toolbarView.hideKeyboard();
}
} }
} }
} }
...@@ -101,8 +101,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T ...@@ -101,8 +101,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T
TabGridDialogMediator.DialogController dialogController = null; TabGridDialogMediator.DialogController dialogController = null;
if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()) { if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()) {
mTabGridDialogCoordinator = new TabGridDialogCoordinator(mContext, tabModelSelector, mTabGridDialogCoordinator = new TabGridDialogCoordinator(mContext, tabModelSelector,
tabContentManager, activity, activity.getCompositorViewHolder(), null, null, tabContentManager, activity, activity.findViewById(R.id.coordinator), null,
null, mActivity.getShareDelegateSupplier()); null, null, mActivity.getShareDelegateSupplier());
mTabGridDialogCoordinator.initWithNative(mContext, tabModelSelector, tabContentManager, mTabGridDialogCoordinator.initWithNative(mContext, tabModelSelector, tabContentManager,
mTabStripCoordinator.getTabGroupTitleEditor()); mTabStripCoordinator.getTabGroupTitleEditor());
dialogController = mTabGridDialogCoordinator.getDialogController(); dialogController = mTabGridDialogCoordinator.getDialogController();
......
...@@ -21,6 +21,7 @@ import androidx.core.widget.TextViewCompat; ...@@ -21,6 +21,7 @@ import androidx.core.widget.TextViewCompat;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.tab_ui.R; import org.chromium.chrome.tab_ui.R;
import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.widget.ChromeImageView; import org.chromium.ui.widget.ChromeImageView;
/** /**
...@@ -83,8 +84,9 @@ public class TabGroupUiToolbarView extends FrameLayout { ...@@ -83,8 +84,9 @@ public class TabGroupUiToolbarView extends FrameLayout {
mTitleTextView.clearFocus(); mTitleTextView.clearFocus();
} }
void setTitleOnTouchListener(View.OnTouchListener listener) { void hideKeyboard() {
mTitleTextView.setOnTouchListener(listener); KeyboardVisibilityDelegate delegate = KeyboardVisibilityDelegate.getInstance();
delegate.hideKeyboard(this);
} }
ViewGroup getViewContainer() { ViewGroup getViewContainer() {
......
...@@ -117,10 +117,10 @@ class TabListMediator { ...@@ -117,10 +117,10 @@ class TabListMediator {
/** /**
* This method updates the status of the ungroup bar in TabGridDialog. * This method updates the status of the ungroup bar in TabGridDialog.
* *
* @param status The status in {@link TabGridDialogParent.UngroupBarStatus} that the ungroup * @param status The status in {@link TabGridDialogView.UngroupBarStatus} that the ungroup
* bar should be updated to. * bar should be updated to.
*/ */
void updateUngroupBarStatus(@TabGridDialogParent.UngroupBarStatus int status); void updateUngroupBarStatus(@TabGridDialogView.UngroupBarStatus int status);
/** /**
* This method updates the content of the TabGridDialog. * This method updates the content of the TabGridDialog.
......
...@@ -171,9 +171,8 @@ public class TabSwitcherCoordinator ...@@ -171,9 +171,8 @@ public class TabSwitcherCoordinator
if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()) { if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()) {
mTabGridDialogCoordinator = new TabGridDialogCoordinator(context, tabModelSelector, mTabGridDialogCoordinator = new TabGridDialogCoordinator(context, tabModelSelector,
tabContentManager, tabCreatorManager, tabContentManager, tabCreatorManager,
((ChromeTabbedActivity) context).getCompositorViewHolder(), this, mMediator, ((ChromeTabbedActivity) context).findViewById(R.id.coordinator), this,
this::getTabGridDialogAnimationSourceView, shareDelegateSupplier); mMediator, this::getTabGridDialogAnimationSourceView, shareDelegateSupplier);
mMediator.setTabGridDialogController(mTabGridDialogCoordinator.getDialogController()); mMediator.setTabGridDialogController(mTabGridDialogCoordinator.getDialogController());
} else { } else {
mTabGridDialogCoordinator = null; mTabGridDialogCoordinator = null;
...@@ -381,7 +380,7 @@ public class TabSwitcherCoordinator ...@@ -381,7 +380,7 @@ public class TabSwitcherCoordinator
@Override @Override
@VisibleForTesting @VisibleForTesting
public void setSourceRectCallbackForTesting(Callback<RectF> callback) { public void setSourceRectCallbackForTesting(Callback<RectF> callback) {
TabGridDialogParent.setSourceRectCallbackForTesting(callback); TabGridDialogView.setSourceRectCallbackForTesting(callback);
} }
// ResetHandler implementation. // ResetHandler implementation.
......
...@@ -179,7 +179,7 @@ public class TabGroupPopupUiTest { ...@@ -179,7 +179,7 @@ public class TabGroupPopupUiTest {
// Re-verify that tab strip never shows in single tab. // Re-verify that tab strip never shows in single tab.
clickFirstCardFromTabSwitcher(cta); clickFirstCardFromTabSwitcher(cta);
closeFirstTabInDialog(cta); closeFirstTabInDialog();
clickFirstTabInDialog(cta); clickFirstTabInDialog(cta);
CriteriaHelper.pollInstrumentationThread(() -> isTabStripHidden(cta)); CriteriaHelper.pollInstrumentationThread(() -> isTabStripHidden(cta));
triggerTabStripAndVerify(cta, 0); triggerTabStripAndVerify(cta, 0);
......
...@@ -6,6 +6,8 @@ package org.chromium.chrome.browser.tasks.tab_management; ...@@ -6,6 +6,8 @@ package org.chromium.chrome.browser.tasks.tab_management;
import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withParent; import static android.support.test.espresso.matcher.ViewMatchers.withParent;
...@@ -150,7 +152,8 @@ public class TabGroupUiTest { ...@@ -150,7 +152,8 @@ public class TabGroupUiTest {
// Disable animation to reduce flakiness. // Disable animation to reduce flakiness.
stripRecyclerView.setItemAnimator(null); stripRecyclerView.setItemAnimator(null);
}); });
onView(allOf(withId(R.id.toolbar_right_button), withParent(withId(R.id.main_content)))) onView(allOf(withId(R.id.toolbar_right_button), withParent(withId(R.id.main_content)),
withEffectiveVisibility(VISIBLE)))
.perform(click()); .perform(click());
mRenderTestRule.render(recyclerViewReference.get(), "11th_tab_selected"); mRenderTestRule.render(recyclerViewReference.get(), "11th_tab_selected");
} }
......
...@@ -159,8 +159,7 @@ public class TabUiTestHelper { ...@@ -159,8 +159,7 @@ public class TabUiTestHelper {
*/ */
static void clickNthTabInDialog(ChromeTabbedActivity cta, int index) { static void clickNthTabInDialog(ChromeTabbedActivity cta, int index) {
OverviewModeBehaviorWatcher hideWatcher = createOverviewHideWatcher(cta); OverviewModeBehaviorWatcher hideWatcher = createOverviewHideWatcher(cta);
onView(withId(R.id.tab_list_view)) onView(allOf(withId(R.id.tab_list_view), withParent(withId(R.id.dialog_container_view))))
.inRoot(withDecorView(not(cta.getWindow().getDecorView())))
.perform(RecyclerViewActions.actionOnItemAtPosition(index, click())); .perform(RecyclerViewActions.actionOnItemAtPosition(index, click()));
hideWatcher.waitForBehavior(); hideWatcher.waitForBehavior();
} }
...@@ -169,18 +168,16 @@ public class TabUiTestHelper { ...@@ -169,18 +168,16 @@ public class TabUiTestHelper {
* Close the first tab in tab gri dialog. * Close the first tab in tab gri dialog.
* @param cta The current running activity. * @param cta The current running activity.
*/ */
static void closeFirstTabInDialog(ChromeTabbedActivity cta) { static void closeFirstTabInDialog() {
closeNthTabInDialog(cta, 0); closeNthTabInDialog(0);
} }
/** /**
* Close the Nth tab in tab gri dialog. * Close the Nth tab in tab gri dialog.
* @param cta The current running activity.
* @param index The index of the target tab to close. * @param index The index of the target tab to close.
*/ */
static void closeNthTabInDialog(ChromeTabbedActivity cta, int index) { static void closeNthTabInDialog(int index) {
onView(withId(R.id.tab_list_view)) onView(allOf(withId(R.id.tab_list_view), withParent(withId(R.id.dialog_container_view))))
.inRoot(withDecorView(not(cta.getWindow().getDecorView())))
.perform(new ViewAction() { .perform(new ViewAction() {
@Override @Override
public Matcher<View> getConstraints() { public Matcher<View> getConstraints() {
......
...@@ -403,7 +403,7 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -403,7 +403,7 @@ public class TabGridItemTouchHelperCallbackUnitTest {
mMockViewHolder1, ItemTouchHelper.ACTION_STATE_IDLE); mMockViewHolder1, ItemTouchHelper.ACTION_STATE_IDLE);
verify(mTabGridDialogHandler) verify(mTabGridDialogHandler)
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HIDE); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.HIDE);
} }
@Test @Test
...@@ -418,7 +418,7 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -418,7 +418,7 @@ public class TabGridItemTouchHelperCallbackUnitTest {
verify(mTabGroupModelFilter).moveTabOutOfGroup(TAB1_ID); verify(mTabGroupModelFilter).moveTabOutOfGroup(TAB1_ID);
verify(mTabGridDialogHandler) verify(mTabGridDialogHandler)
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HIDE); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.HIDE);
verify(mGridLayoutManager).removeView(mItemView1); verify(mGridLayoutManager).removeView(mItemView1);
} }
...@@ -437,7 +437,7 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -437,7 +437,7 @@ public class TabGridItemTouchHelperCallbackUnitTest {
verify(mTabGroupModelFilter, never()).moveTabOutOfGroup(TAB1_ID); verify(mTabGroupModelFilter, never()).moveTabOutOfGroup(TAB1_ID);
verify(mTabGridDialogHandler) verify(mTabGridDialogHandler)
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HIDE); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.HIDE);
verify(mGridLayoutManager, never()).removeView(mItemView1); verify(mGridLayoutManager, never()).removeView(mItemView1);
} }
...@@ -456,7 +456,7 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -456,7 +456,7 @@ public class TabGridItemTouchHelperCallbackUnitTest {
verify(mTabGroupModelFilter, never()).moveTabOutOfGroup(TAB1_ID); verify(mTabGroupModelFilter, never()).moveTabOutOfGroup(TAB1_ID);
verify(mTabGridDialogHandler) verify(mTabGridDialogHandler)
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HIDE); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.HIDE);
verify(mGridLayoutManager, never()).removeView(mItemView1); verify(mGridLayoutManager, never()).removeView(mItemView1);
} }
...@@ -647,14 +647,14 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -647,14 +647,14 @@ public class TabGridItemTouchHelperCallbackUnitTest {
ItemTouchHelper.ACTION_STATE_DRAG, true); ItemTouchHelper.ACTION_STATE_DRAG, true);
verify(mTabGridDialogHandler) verify(mTabGridDialogHandler)
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HOVERED); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.HOVERED);
// Simulate dragging card#3 down to the ungroup bar. // Simulate dragging card#3 down to the ungroup bar.
mItemTouchHelperCallback.onChildDraw(mCanvas, mRecyclerView, mDummyViewHolder1, 0, 2, mItemTouchHelperCallback.onChildDraw(mCanvas, mRecyclerView, mDummyViewHolder1, 0, 2,
ItemTouchHelper.ACTION_STATE_DRAG, true); ItemTouchHelper.ACTION_STATE_DRAG, true);
verify(mTabGridDialogHandler) verify(mTabGridDialogHandler)
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HOVERED); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.HOVERED);
} }
@Test @Test
...@@ -674,10 +674,10 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -674,10 +674,10 @@ public class TabGridItemTouchHelperCallbackUnitTest {
ItemTouchHelper.ACTION_STATE_DRAG, true); ItemTouchHelper.ACTION_STATE_DRAG, true);
verify(mTabGridDialogHandler, times(2)) verify(mTabGridDialogHandler, times(2))
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.SHOW); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.SHOW);
verify(mTabGridDialogHandler, never()) verify(mTabGridDialogHandler, never())
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HOVERED); .updateUngroupBarStatus(TabGridDialogView.UngroupBarStatus.HOVERED);
} }
@Test @Test
......
...@@ -37,8 +37,8 @@ tab_management_test_java_sources = [ ...@@ -37,8 +37,8 @@ tab_management_test_java_sources = [
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardViewBinderTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardViewBinderTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/RecyclerViewMatcherUtils.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/RecyclerViewMatcherUtils.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridAccessibilityHelperTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridAccessibilityHelperTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogParentTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridPanelViewBinderTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridPanelViewBinderTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupPopupUiTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupPopupUiTest.java",
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
-org.chromium.chrome.browser.shape_detection.ShapeDetectionTest.testTextDetection -org.chromium.chrome.browser.shape_detection.ShapeDetectionTest.testTextDetection
# crbug/1036552 # crbug/1036552
-org.chromium.chrome.browser.tasks.tab_management.TabGridDialogParentTest.testDialog_ZoomInFadeOut -org.chromium.chrome.browser.tasks.tab_management.TabGridDialogViewTest.testDialog_ZoomInFadeOut
-org.chromium.chrome.browser.tasks.tab_management.TabGridDialogParentTest.testDialog_ZoomInZoomOut -org.chromium.chrome.browser.tasks.tab_management.TabGridDialogViewTest.testDialog_ZoomInZoomOut
# vr tests do not apply to emulator # vr tests do not apply to emulator
-org.chromium.chrome.browser.hardware_acceleration.ManifestHWATest.testAccelerationDisabled -org.chromium.chrome.browser.hardware_acceleration.ManifestHWATest.testAccelerationDisabled
......
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
-org.chromium.chrome.browser.suggestions.tile.TileGroupTest.testDismissTileWithContextMenu -org.chromium.chrome.browser.suggestions.tile.TileGroupTest.testDismissTileWithContextMenu
# crbug/1036552 # crbug/1036552
-org.chromium.chrome.browser.tasks.tab_management.TabGridDialogParentTest.testDialog_ZoomInFadeOut -org.chromium.chrome.browser.tasks.tab_management.TabGridDialogViewTest.testDialog_ZoomInFadeOut
-org.chromium.chrome.browser.tasks.tab_management.TabGridDialogParentTest.testDialog_ZoomInZoomOut -org.chromium.chrome.browser.tasks.tab_management.TabGridDialogViewTest.testDialog_ZoomInZoomOut
# crbug/1036553 # crbug/1036553
-org.chromium.chrome.browser.translate.TranslateCompactInfoBarTest.testTabMenuDismissedOnOrientationChange -org.chromium.chrome.browser.translate.TranslateCompactInfoBarTest.testTabMenuDismissedOnOrientationChange
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment