Commit 38a8cb1d authored by Sky Malice's avatar Sky Malice Committed by Chromium LUCI CQ

Revert "[Messages] Fix clipping of message banner because of SurfaceView hole"

This reverts commit 6a340039.

Reason for revert: Causes test failure, see https://ci.chromium.org/ui/p/chromium/builders/ci/android-bfcache-rel/7275/overview

Original change's description:
> [Messages] Fix clipping of message banner because of SurfaceView hole
>
> This CL delegates the Animator#start calls in MessageBannerMediator to
> WindowAndroid#startAnimationOverContent.
>
> Bug: 1159429
> Change-Id: I865e62718efa46eae8e1bf733271854475edaa00
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2628497
> Commit-Queue: Sinan Sahin <sinansahin@google.com>
> Reviewed-by: Theresa  <twellington@chromium.org>
> Reviewed-by: Pavel Yatsuk <pavely@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#843685}

TBR=pavely@chromium.org,twellington@chromium.org,sinansahin@google.com,chromium-scoped@luci-project-accounts.iam.gserviceaccount.com

Change-Id: Id20e63d9c11d00514ce5f40796a724aa760535e4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1159429
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2630448Reviewed-by: default avatarSky Malice <skym@chromium.org>
Reviewed-by: default avatarWenyu Fu <wenyufu@chromium.org>
Commit-Queue: Wenyu Fu <wenyufu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#843780}
parent 75601d5c
...@@ -438,9 +438,8 @@ public class RootUiCoordinator ...@@ -438,9 +438,8 @@ public class RootUiCoordinator
MessageContainer container = mActivity.findViewById(R.id.message_container); MessageContainer container = mActivity.findViewById(R.id.message_container);
mMessageContainerCoordinator = mMessageContainerCoordinator =
new MessageContainerCoordinator(container, getBrowserControlsManager()); new MessageContainerCoordinator(container, getBrowserControlsManager());
mMessageDispatcher = MessagesFactory.createMessageDispatcher(container, mMessageDispatcher = MessagesFactory.createMessageDispatcher(
mMessageContainerCoordinator::getMessageMaxTranslation, container, mMessageContainerCoordinator::getMessageMaxTranslation);
mActivity.getWindowAndroid());
mMessageQueueMediator = new ChromeMessageQueueMediator( mMessageQueueMediator = new ChromeMessageQueueMediator(
mActivity.getBrowserControlsManager(), mMessageContainerCoordinator, mActivity.getBrowserControlsManager(), mMessageContainerCoordinator,
mActivity.getFullscreenManager(), mLayoutStateProviderOneShotSupplier, mActivity.getFullscreenManager(), mLayoutStateProviderOneShotSupplier,
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
package org.chromium.components.messages; package org.chromium.components.messages;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
/** /**
...@@ -16,27 +15,23 @@ public class MessageDispatcherImpl implements ManagedMessageDispatcher { ...@@ -16,27 +15,23 @@ public class MessageDispatcherImpl implements ManagedMessageDispatcher {
private final MessageQueueManager mMessageQueueManager = new MessageQueueManager(); private final MessageQueueManager mMessageQueueManager = new MessageQueueManager();
private final MessageContainer mMessageContainer; private final MessageContainer mMessageContainer;
private final Supplier<Integer> mMessageMaxTranslationSupplier; private final Supplier<Integer> mMessageMaxTranslationSupplier;
private final WindowAndroid mWindowAndroid;
/** /**
* Build a new message dispatcher * Build a new message dispatcher
* @param messageContainer A container view for displaying message banners. * @param messageContainer A container view for displaying message banners.
* @param messageMaxTranslation A {@link Supplier} that supplies the maximum translation Y value * @param messageMaxTranslationSupplier A {@link Supplier} that supplies the maximum translation
* the message banner can have as a result of the animations or the gestures. * Y value the message banner can have as a result of the animations or the gestures.
* @param windowAndroid The {@link WindowAndroid} with which the Message is associated.
*/ */
public MessageDispatcherImpl(MessageContainer messageContainer, public MessageDispatcherImpl(
Supplier<Integer> messageMaxTranslation, WindowAndroid windowAndroid) { MessageContainer messageContainer, Supplier<Integer> messageMaxTranslation) {
mMessageContainer = messageContainer; mMessageContainer = messageContainer;
mMessageMaxTranslationSupplier = messageMaxTranslation; mMessageMaxTranslationSupplier = messageMaxTranslation;
mWindowAndroid = windowAndroid;
} }
@Override @Override
public void enqueueMessage(PropertyModel messageProperties) { public void enqueueMessage(PropertyModel messageProperties) {
MessageStateHandler messageStateHandler = MessageStateHandler messageStateHandler = new SingleActionMessage(mMessageContainer,
new SingleActionMessage(mMessageContainer, messageProperties, this::dismissMessage, messageProperties, this::dismissMessage, mMessageMaxTranslationSupplier);
mMessageMaxTranslationSupplier, mWindowAndroid);
mMessageQueueManager.enqueueMessage(messageStateHandler, messageProperties); mMessageQueueManager.enqueueMessage(messageStateHandler, messageProperties);
} }
......
...@@ -17,12 +17,11 @@ public class MessagesFactory { ...@@ -17,12 +17,11 @@ public class MessagesFactory {
* to the MessageContainer. When messages are shown, they will be animated down the * to the MessageContainer. When messages are shown, they will be animated down the
* screen, starting at the negative |messageMaxTranslation| y translation to the resting * screen, starting at the negative |messageMaxTranslation| y translation to the resting
* position in the MessageContainer. * position in the MessageContainer.
* @param windowAndroid The {@link WindowAndroid} with which the Message is associated.
* @return The constructed ManagedMessageDispatcher. * @return The constructed ManagedMessageDispatcher.
*/ */
public static ManagedMessageDispatcher createMessageDispatcher(MessageContainer container, public static ManagedMessageDispatcher createMessageDispatcher(
Supplier<Integer> messageMaxTranslation, WindowAndroid windowAndroid) { MessageContainer container, Supplier<Integer> messageMaxTranslation) {
return new MessageDispatcherImpl(container, messageMaxTranslation, windowAndroid); return new MessageDispatcherImpl(container, messageMaxTranslation);
} }
/** /**
......
...@@ -11,7 +11,6 @@ import androidx.core.view.ViewCompat; ...@@ -11,7 +11,6 @@ import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
...@@ -33,17 +32,15 @@ class MessageBannerCoordinator { ...@@ -33,17 +32,15 @@ class MessageBannerCoordinator {
* @param resources The {@link Resources}. * @param resources The {@link Resources}.
* @param messageDismissed The {@link Runnable} that will run if and when the user dismisses the * @param messageDismissed The {@link Runnable} that will run if and when the user dismisses the
* message. * message.
* @param windowAndroid The {@link WindowAndroid} that will be used to start the animations so
* the message is not clipped as a result of some Android SurfaceView optimization.
*/ */
MessageBannerCoordinator(MessageBannerView view, PropertyModel model, MessageBannerCoordinator(MessageBannerView view, PropertyModel model,
Supplier<Integer> maxTranslationSupplier, Resources resources, Supplier<Integer> maxTranslationSupplier, Resources resources,
Runnable messageDismissed, WindowAndroid windowAndroid) { Runnable messageDismissed) {
mView = view; mView = view;
mModel = model; mModel = model;
PropertyModelChangeProcessor.create(model, view, MessageBannerViewBinder::bind); PropertyModelChangeProcessor.create(model, view, MessageBannerViewBinder::bind);
mMediator = new MessageBannerMediator( mMediator = new MessageBannerMediator(
model, maxTranslationSupplier, resources, messageDismissed, windowAndroid); model, maxTranslationSupplier, resources, messageDismissed);
view.setSwipeHandler(mMediator); view.setSwipeHandler(mMediator);
ViewCompat.replaceAccessibilityAction( ViewCompat.replaceAccessibilityAction(
view, AccessibilityActionCompat.ACTION_DISMISS, null, (v, c) -> { view, AccessibilityActionCompat.ACTION_DISMISS, null, (v, c) -> {
......
...@@ -25,7 +25,6 @@ import org.chromium.components.browser_ui.widget.animation.CancelAwareAnimatorLi ...@@ -25,7 +25,6 @@ import org.chromium.components.browser_ui.widget.animation.CancelAwareAnimatorLi
import org.chromium.components.browser_ui.widget.animation.Interpolators; import org.chromium.components.browser_ui.widget.animation.Interpolators;
import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.ScrollDirection; import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.ScrollDirection;
import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.SwipeHandler; import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.SwipeHandler;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyModel.WritableFloatPropertyKey; import org.chromium.ui.modelutil.PropertyModel.WritableFloatPropertyKey;
import org.chromium.ui.modelutil.PropertyModelAnimatorFactory; import org.chromium.ui.modelutil.PropertyModelAnimatorFactory;
...@@ -70,7 +69,6 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -70,7 +69,6 @@ class MessageBannerMediator implements SwipeHandler {
private final float mHorizontalHideThresholdPx; private final float mHorizontalHideThresholdPx;
private final Supplier<Float> mMaxHorizontalTranslationPx; private final Supplier<Float> mMaxHorizontalTranslationPx;
private final Runnable mMessageDismissed; private final Runnable mMessageDismissed;
private final WindowAndroid mWindowAndroid;
private Animator mAnimation; private Animator mAnimation;
@State @State
...@@ -84,7 +82,7 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -84,7 +82,7 @@ class MessageBannerMediator implements SwipeHandler {
* Constructs the message banner mediator. * Constructs the message banner mediator.
*/ */
MessageBannerMediator(PropertyModel model, Supplier<Integer> maxTranslationSupplier, MessageBannerMediator(PropertyModel model, Supplier<Integer> maxTranslationSupplier,
Resources resources, Runnable messageDismissed, WindowAndroid windowAndroid) { Resources resources, Runnable messageDismissed) {
mModel = model; mModel = model;
mMaxTranslationYSupplier = maxTranslationSupplier; mMaxTranslationYSupplier = maxTranslationSupplier;
mVerticalHideThresholdPx = mVerticalHideThresholdPx =
...@@ -98,7 +96,6 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -98,7 +96,6 @@ class MessageBannerMediator implements SwipeHandler {
screenWidth / 2); screenWidth / 2);
}; };
mMessageDismissed = messageDismissed; mMessageDismissed = messageDismissed;
mWindowAndroid = windowAndroid;
} }
/** /**
...@@ -110,7 +107,8 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -110,7 +107,8 @@ class MessageBannerMediator implements SwipeHandler {
mModel.set(TRANSLATION_Y, -mMaxTranslationYSupplier.get()); mModel.set(TRANSLATION_Y, -mMaxTranslationYSupplier.get());
} }
cancelAnyAnimations(); cancelAnyAnimations();
startAnimation(true, 0, false, messageShown); mAnimation = createAnimation(true, 0, false, messageShown);
mAnimation.start();
} }
/** /**
...@@ -124,7 +122,8 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -124,7 +122,8 @@ class MessageBannerMediator implements SwipeHandler {
} }
cancelAnyAnimations(); cancelAnyAnimations();
startAnimation(true, -mMaxTranslationYSupplier.get(), false, messageHidden); mAnimation = createAnimation(true, -mMaxTranslationYSupplier.get(), false, messageHidden);
mAnimation.start();
} }
void setOnTouchRunnable(Runnable runnable) { void setOnTouchRunnable(Runnable runnable) {
...@@ -190,8 +189,9 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -190,8 +189,9 @@ class MessageBannerMediator implements SwipeHandler {
? 0 ? 0
: MathUtils.flipSignIf(mMaxHorizontalTranslationPx.get(), translationX < 0); : MathUtils.flipSignIf(mMaxHorizontalTranslationPx.get(), translationX < 0);
} }
startAnimation( mAnimation = createAnimation(
isVertical, translateTo, false, translateTo != 0 ? mMessageDismissed : () -> {}); isVertical, translateTo, false, translateTo != 0 ? mMessageDismissed : () -> {});
mAnimation.start();
} }
@Override @Override
...@@ -222,8 +222,9 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -222,8 +222,9 @@ class MessageBannerMediator implements SwipeHandler {
// TODO(crbug.com/1157213): See if we can use velocity to change the animation // TODO(crbug.com/1157213): See if we can use velocity to change the animation
// speed/duration. // speed/duration.
startAnimation(isVertical(mSwipeDirection), translateTo, velocity != 0, mAnimation = createAnimation(isVertical(mSwipeDirection), translateTo, velocity != 0,
translateTo != 0 ? mMessageDismissed : () -> {}); translateTo != 0 ? mMessageDismissed : () -> {});
mAnimation.start();
} }
@Override @Override
...@@ -235,13 +236,14 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -235,13 +236,14 @@ class MessageBannerMediator implements SwipeHandler {
// endregion // endregion
/** /**
* Create and start an animation. * Create an animation.
* @param vertical Whether the message is being animated vertically. * @param vertical Whether the message is being animated vertically.
* @param translateTo Target translation value for the animation. * @param translateTo Target translation value for the animation.
* @param didFling Whether the animation is the result of a fling gesture. * @param didFling Whether the animation is the result of a fling gesture.
* @param onEndCallback Callback that will be called after the animation. * @param onEndCallback Callback that will be called after the animation.
* @return The {@link Animator}
*/ */
private void startAnimation( private Animator createAnimation(
boolean vertical, float translateTo, boolean didFling, Runnable onEndCallback) { boolean vertical, float translateTo, boolean didFling, Runnable onEndCallback) {
final long duration = translateTo == 0 ? ENTER_DURATION_MS : EXIT_DURATION_MS; final long duration = translateTo == 0 ? ENTER_DURATION_MS : EXIT_DURATION_MS;
...@@ -284,8 +286,7 @@ class MessageBannerMediator implements SwipeHandler { ...@@ -284,8 +286,7 @@ class MessageBannerMediator implements SwipeHandler {
} }
}); });
mAnimation = animatorSet; return animatorSet;
mWindowAndroid.startAnimationOverContent(mAnimation);
} }
private void cancelAnyAnimations() { private void cancelAnyAnimations() {
......
...@@ -7,15 +7,12 @@ package org.chromium.components.messages; ...@@ -7,15 +7,12 @@ package org.chromium.components.messages;
import static android.os.Looper.getMainLooper; import static android.os.Looper.getMainLooper;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf; import static org.robolectric.Shadows.shadowOf;
import static org.robolectric.annotation.LooperMode.Mode.PAUSED; import static org.robolectric.annotation.LooperMode.Mode.PAUSED;
import android.animation.Animator;
import android.content.res.Resources; import android.content.res.Resources;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.MotionEvent; import android.view.MotionEvent;
...@@ -35,7 +32,6 @@ import org.chromium.base.MathUtils; ...@@ -35,7 +32,6 @@ import org.chromium.base.MathUtils;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.ScrollDirection; import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.ScrollDirection;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
/** Unit tests for {@link MessageBannerMediator}. */ /** Unit tests for {@link MessageBannerMediator}. */
...@@ -58,8 +54,6 @@ public class MessageBannerMediatorUnitTest { ...@@ -58,8 +54,6 @@ public class MessageBannerMediatorUnitTest {
private Runnable mShownRunnable; private Runnable mShownRunnable;
@Mock @Mock
private Runnable mHiddenRunnable; private Runnable mHiddenRunnable;
@Mock
private WindowAndroid mWindowAndroid;
private MessageBannerMediator mMediator; private MessageBannerMediator mMediator;
private PropertyModel mModel; private PropertyModel mModel;
...@@ -78,14 +72,8 @@ public class MessageBannerMediatorUnitTest { ...@@ -78,14 +72,8 @@ public class MessageBannerMediatorUnitTest {
.thenReturn(24); .thenReturn(24);
when(mResources.getDimensionPixelSize(R.dimen.message_max_horizontal_translation)) when(mResources.getDimensionPixelSize(R.dimen.message_max_horizontal_translation))
.thenReturn(120); .thenReturn(120);
doAnswer(invocation -> {
((Animator) invocation.getArguments()[0]).start();
return null;
})
.when(mWindowAndroid)
.startAnimationOverContent(any(Animator.class));
mMediator = new MessageBannerMediator( mMediator = new MessageBannerMediator(
mModel, mMaxTranslationSupplier, mResources, mDismissedRunnable, mWindowAndroid); mModel, mMaxTranslationSupplier, mResources, mDismissedRunnable);
when(mMaxTranslationSupplier.get()).thenReturn(100); when(mMaxTranslationSupplier.get()).thenReturn(100);
} }
......
...@@ -13,7 +13,6 @@ import androidx.annotation.VisibleForTesting; ...@@ -13,7 +13,6 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
/** /**
...@@ -30,7 +29,6 @@ public class SingleActionMessage implements MessageStateHandler { ...@@ -30,7 +29,6 @@ public class SingleActionMessage implements MessageStateHandler {
private final Callback<PropertyModel> mDismissHandler; private final Callback<PropertyModel> mDismissHandler;
private MessageAutoDismissTimer mAutoDismissTimer; private MessageAutoDismissTimer mAutoDismissTimer;
private final Supplier<Integer> mMaxTranslationSupplier; private final Supplier<Integer> mMaxTranslationSupplier;
private final WindowAndroid mWindowAndroid;
/** /**
* @param container The container holding messages. * @param container The container holding messages.
...@@ -40,19 +38,14 @@ public class SingleActionMessage implements MessageStateHandler { ...@@ -40,19 +38,14 @@ public class SingleActionMessage implements MessageStateHandler {
* property model. * property model.
* @param maxTranslationSupplier A {@link Supplier} that supplies the maximum translation Y * @param maxTranslationSupplier A {@link Supplier} that supplies the maximum translation Y
* value the message banner can have as a result of the animations or the gestures. * value the message banner can have as a result of the animations or the gestures.
* @param windowAndroid The {@link WindowAndroid} that will be used by the message banner to
* start the animations so the message is not clipped as a result of some Android
* SurfaceView optimization.
*/ */
public SingleActionMessage(MessageContainer container, PropertyModel model, public SingleActionMessage(MessageContainer container, PropertyModel model,
Callback<PropertyModel> dismissHandler, Supplier<Integer> maxTranslationSupplier, Callback<PropertyModel> dismissHandler, Supplier<Integer> maxTranslationSupplier) {
WindowAndroid windowAndroid) {
mModel = model; mModel = model;
mContainer = container; mContainer = container;
mDismissHandler = dismissHandler; mDismissHandler = dismissHandler;
mAutoDismissTimer = new MessageAutoDismissTimer(getAutoDismissDuration()); mAutoDismissTimer = new MessageAutoDismissTimer(getAutoDismissDuration());
mMaxTranslationSupplier = maxTranslationSupplier; mMaxTranslationSupplier = maxTranslationSupplier;
mWindowAndroid = windowAndroid;
mModel.set( mModel.set(
MessageBannerProperties.PRIMARY_BUTTON_CLICK_LISTENER, this::handlePrimaryAction); MessageBannerProperties.PRIMARY_BUTTON_CLICK_LISTENER, this::handlePrimaryAction);
...@@ -68,7 +61,7 @@ public class SingleActionMessage implements MessageStateHandler { ...@@ -68,7 +61,7 @@ public class SingleActionMessage implements MessageStateHandler {
mView = (MessageBannerView) LayoutInflater.from(mContainer.getContext()) mView = (MessageBannerView) LayoutInflater.from(mContainer.getContext())
.inflate(R.layout.message_banner_view, mContainer, false); .inflate(R.layout.message_banner_view, mContainer, false);
mMessageBanner = new MessageBannerCoordinator(mView, mModel, mMaxTranslationSupplier, mMessageBanner = new MessageBannerCoordinator(mView, mModel, mMaxTranslationSupplier,
mContainer.getResources(), mDismissHandler.bind(mModel), mWindowAndroid); mContainer.getResources(), mDismissHandler.bind(mModel));
} }
mContainer.addMessage(mView); mContainer.addMessage(mView);
......
...@@ -18,7 +18,6 @@ import org.junit.Rule; ...@@ -18,7 +18,6 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule; import org.mockito.junit.MockitoRule;
...@@ -27,7 +26,6 @@ import org.chromium.base.ApiCompatibilityUtils; ...@@ -27,7 +26,6 @@ import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.test.BaseJUnit4ClassRunner; import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CallbackHelper;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.test.util.DummyUiActivityTestCase; import org.chromium.ui.test.util.DummyUiActivityTestCase;
import org.chromium.ui.util.AccessibilityUtil; import org.chromium.ui.util.AccessibilityUtil;
...@@ -39,8 +37,6 @@ import org.chromium.ui.util.AccessibilityUtil; ...@@ -39,8 +37,6 @@ import org.chromium.ui.util.AccessibilityUtil;
public class SingleActionMessageTest extends DummyUiActivityTestCase { public class SingleActionMessageTest extends DummyUiActivityTestCase {
@Rule @Rule
public MockitoRule mMockitoRule = MockitoJUnit.rule(); public MockitoRule mMockitoRule = MockitoJUnit.rule();
@Mock
private WindowAndroid mWindowAndroid;
private CallbackHelper mDismissCallback; private CallbackHelper mDismissCallback;
private Callback<PropertyModel> mEmptyDismissCallback = (model) -> {}; private Callback<PropertyModel> mEmptyDismissCallback = (model) -> {};
...@@ -59,8 +55,8 @@ public class SingleActionMessageTest extends DummyUiActivityTestCase { ...@@ -59,8 +55,8 @@ public class SingleActionMessageTest extends DummyUiActivityTestCase {
public void testAddAndRemoveSingleActionMessage() throws Exception { public void testAddAndRemoveSingleActionMessage() throws Exception {
MessageContainer container = new MessageContainer(getActivity(), null); MessageContainer container = new MessageContainer(getActivity(), null);
PropertyModel model = createBasicSingleActionMessageModel(); PropertyModel model = createBasicSingleActionMessageModel();
SingleActionMessage message = new SingleActionMessage( SingleActionMessage message =
container, model, mEmptyDismissCallback, () -> 0, mWindowAndroid); new SingleActionMessage(container, model, mEmptyDismissCallback, () -> 0);
final MessageBannerCoordinator messageBanner = Mockito.mock(MessageBannerCoordinator.class); final MessageBannerCoordinator messageBanner = Mockito.mock(MessageBannerCoordinator.class);
doNothing().when(messageBanner).show(any(Runnable.class)); doNothing().when(messageBanner).show(any(Runnable.class));
doNothing().when(messageBanner).setOnTouchRunnable(any(Runnable.class)); doNothing().when(messageBanner).setOnTouchRunnable(any(Runnable.class));
...@@ -91,8 +87,8 @@ public class SingleActionMessageTest extends DummyUiActivityTestCase { ...@@ -91,8 +87,8 @@ public class SingleActionMessageTest extends DummyUiActivityTestCase {
MessageContainer container = new MessageContainer(getActivity(), null); MessageContainer container = new MessageContainer(getActivity(), null);
PropertyModel m1 = createBasicSingleActionMessageModel(); PropertyModel m1 = createBasicSingleActionMessageModel();
PropertyModel m2 = createBasicSingleActionMessageModel(); PropertyModel m2 = createBasicSingleActionMessageModel();
SingleActionMessage message1 = new SingleActionMessage( SingleActionMessage message1 =
container, m1, mEmptyDismissCallback, () -> 0, mWindowAndroid); new SingleActionMessage(container, m1, mEmptyDismissCallback, () -> 0);
final MessageBannerCoordinator messageBanner1 = final MessageBannerCoordinator messageBanner1 =
Mockito.mock(MessageBannerCoordinator.class); Mockito.mock(MessageBannerCoordinator.class);
doNothing().when(messageBanner1).show(any(Runnable.class)); doNothing().when(messageBanner1).show(any(Runnable.class));
...@@ -100,8 +96,8 @@ public class SingleActionMessageTest extends DummyUiActivityTestCase { ...@@ -100,8 +96,8 @@ public class SingleActionMessageTest extends DummyUiActivityTestCase {
view1.setId(R.id.message_banner); view1.setId(R.id.message_banner);
message1.setMessageBannerForTesting(messageBanner1); message1.setMessageBannerForTesting(messageBanner1);
message1.setViewForTesting(view1); message1.setViewForTesting(view1);
SingleActionMessage message2 = new SingleActionMessage( SingleActionMessage message2 =
container, m2, mEmptyDismissCallback, () -> 0, mWindowAndroid); new SingleActionMessage(container, m2, mEmptyDismissCallback, () -> 0);
final MessageBannerCoordinator messageBanner2 = final MessageBannerCoordinator messageBanner2 =
Mockito.mock(MessageBannerCoordinator.class); Mockito.mock(MessageBannerCoordinator.class);
doNothing().when(messageBanner2).show(any(Runnable.class)); doNothing().when(messageBanner2).show(any(Runnable.class));
......
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