Commit ef266e86 authored by Sky Malice's avatar Sky Malice Committed by Commit Bot

Reland "[Android][Signin] Fix bookmark signin promo dismiss tests"

This reverts commit 5f5c6c4b.

Reason for revert: As Boris points out in https://bugs.chromium.org/p/chromium/issues/detail?id=789531#c56 , my original revert was mistaken, it wasn't the offending CL, but rather was fixing the issue. Relanding.

Original change's description:
> Revert "[Android][Signin] Fix bookmark signin promo dismiss tests"
> 
> This reverts commit 04962c50.
> 
> Reason for revert: Test failures, see https://ci.chromium.org/p/chromium/builders/ci/Lollipop%20Tablet%20Tester/14131
> 
> Original change's description:
> > [Android][Signin] Fix bookmark signin promo dismiss tests
> > 
> > This CL fixes the bookmark signin promo tests when the promo is
> > dismissed in different scenarios.
> > 
> > Bug: 789531
> > Change-Id: I852e60cb3e56f9db737cb0e03073d36373908f68
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1883628
> > Reviewed-by: Boris Sazonov <bsazonov@chromium.org>
> > Reviewed-by: Theresa  <twellington@chromium.org>
> > Commit-Queue: Alice Wang <aliceywang@chromium.org>
> > Auto-Submit: Alice Wang <aliceywang@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#710784}
> 
> TBR=twellington@chromium.org,bsazonov@chromium.org,aliceywang@chromium.org
> 
> Change-Id: I68d849103de344e495520b8c015edfba75fd6388
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 789531
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1890506
> Reviewed-by: Sky Malice <skym@chromium.org>
> Commit-Queue: Sky Malice <skym@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#710853}

TBR=twellington@chromium.org,skym@chromium.org,bsazonov@chromium.org,aliceywang@chromium.org

Change-Id: I43787dce3fd7d0004ef777b1724fec1935db0347
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 789531
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1891230Reviewed-by: default avatarSky Malice <skym@chromium.org>
Commit-Queue: Sky Malice <skym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710889}
parent 5c202a24
......@@ -59,6 +59,7 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java",
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkModelTest.java",
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoTest.java",
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoDismissTest.java",
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkReorderTest.java",
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java",
"javatests/src/org/chromium/chrome/browser/browserservices/OriginVerifierTest.java",
......
......@@ -46,7 +46,8 @@ public class SigninPromoController {
private static final String SIGNIN_PROMO_IMPRESSIONS_COUNT_SETTINGS =
"signin_promo_impressions_count_settings";
private static final int MAX_IMPRESSIONS_BOOKMARKS = 20;
@VisibleForTesting
public static final int MAX_IMPRESSIONS_BOOKMARKS = 20;
private static final int MAX_IMPRESSIONS_SETTINGS = 20;
private @Nullable DisplayableProfileData mProfileData;
......@@ -352,7 +353,14 @@ public class SigninPromoController {
}
@VisibleForTesting
public static int getMaxImpressionsBookmarksForTests() {
return MAX_IMPRESSIONS_BOOKMARKS;
public static void setSigninPromoImpressionsCountBookmarksForTest(int count) {
SharedPreferences preferences = ContextUtils.getAppSharedPreferences();
preferences.edit().putInt(SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS, count).apply();
}
@VisibleForTesting
public static int getSigninPromoImpressionsCountBookmarksForTest() {
return ContextUtils.getAppSharedPreferences().getInt(
SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS, 0);
}
}
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.bookmarks;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
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.withId;
import static org.junit.Assert.assertEquals;
import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.matcher.ViewMatchers;
import android.support.test.filters.MediumTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.signin.SigninPromoController;
import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.BookmarkTestUtil;
import org.chromium.chrome.test.util.ChromeTabUtils;
/**
* Tests different scenarios when the bookmark personalized signin promo is not shown.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
public class BookmarkPersonalizedSigninPromoDismissTest {
@Rule
public final ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
new ChromeActivityTestRule<>(ChromeActivity.class);
@Before
public void setUp() {
SigninPromoController.setSigninPromoImpressionsCountBookmarksForTest(0);
mActivityTestRule.startMainActivityFromLauncher();
}
@After
public void tearDown() {
SigninPromoController.setSigninPromoImpressionsCountBookmarksForTest(0);
}
@Test
@MediumTest
public void testPromoNotShownAfterBeingDismissed() {
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
onView(withId(R.id.signin_promo_close_button)).perform(click());
onView(withId(R.id.signin_promo_view_container))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
closeBookmarkManager();
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
}
private void closeBookmarkManager() {
if (mActivityTestRule.getActivity().isTablet()) {
ChromeTabbedActivity chromeTabbedActivity =
(ChromeTabbedActivity) mActivityTestRule.getActivity();
ChromeTabUtils.closeCurrentTab(
InstrumentationRegistry.getInstrumentation(), chromeTabbedActivity);
} else {
onView(withId(R.id.close_menu_id)).perform(click());
}
}
@Test
@MediumTest
public void testPromoNotExistWhenImpressionLimitReached() {
SigninPromoController.setSigninPromoImpressionsCountBookmarksForTest(
SigninPromoController.MAX_IMPRESSIONS_BOOKMARKS);
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
}
@Test
@MediumTest
public void testPromoImpressionCountIncrementAfterDisplayingSigninPromo() {
assertEquals(0, SigninPromoController.getSigninPromoImpressionsCountBookmarksForTest());
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
assertEquals(1, SigninPromoController.getSigninPromoImpressionsCountBookmarksForTest());
}
}
......@@ -5,9 +5,7 @@
package org.chromium.chrome.browser.bookmarks;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.Espresso.pressBack;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
......@@ -21,8 +19,8 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import android.accounts.Account;
import android.app.Activity;
import android.content.Context;
import android.support.test.filters.LargeTest;
import android.support.test.filters.MediumTest;
import org.junit.After;
......@@ -32,13 +30,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIf;
import org.chromium.base.test.util.DisabledTest;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.signin.SigninActivityLauncher;
import org.chromium.chrome.browser.signin.SigninPromoController;
import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.BookmarkTestUtil;
......@@ -48,8 +43,6 @@ import org.chromium.components.signin.metrics.SigninAccessPoint;
import org.chromium.components.signin.test.util.AccountHolder;
import org.chromium.components.signin.test.util.AccountManagerTestRule;
import org.chromium.components.signin.test.util.FakeAccountManagerDelegate;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.ui.test.util.UiDisableIf;
/**
* Tests for the personalized signin promo on the Bookmarks page.
......@@ -85,31 +78,6 @@ public class BookmarkPersonalizedSigninPromoTest {
BookmarkPromoHeader.forcePromoStateForTests(null);
}
@Test
@MediumTest
@DisabledTest(message = "crbug.com/789531")
public void testManualDismissPromo() {
openBookmarkManager();
onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
onView(withId(R.id.signin_promo_close_button)).perform(click());
onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
}
@Test
@LargeTest
@DisableIf.Device(type = {UiDisableIf.TABLET}) // https://crbug.com/776405.
@DisabledTest(message = "crbug.com/789531")
public void testAutoDismissPromo() {
int impressionCap = SigninPromoController.getMaxImpressionsBookmarksForTests();
for (int impression = 0; impression < impressionCap; impression++) {
openBookmarkManager();
onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
pressBack();
}
openBookmarkManager();
onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
}
@Test
@MediumTest
public void testSigninButtonDefaultAccount() {
......@@ -117,10 +85,10 @@ public class BookmarkPersonalizedSigninPromoTest {
.when(SigninActivityLauncher.get())
.launchActivityForPromoDefaultFlow(any(Context.class), anyInt(), anyString());
addTestAccount();
openBookmarkManagerAndCheckSigninPromoIsDisplayed();
showBookmarkManagerAndCheckSigninPromoIsDisplayed();
onView(withId(R.id.signin_promo_signin_button)).perform(click());
verify(mMockSigninActivityLauncher)
.launchActivityForPromoDefaultFlow(any(BookmarkActivity.class),
.launchActivityForPromoDefaultFlow(any(Activity.class),
eq(SigninAccessPoint.BOOKMARK_MANAGER), eq(TEST_ACCOUNT_NAME));
}
......@@ -131,10 +99,10 @@ public class BookmarkPersonalizedSigninPromoTest {
.when(SigninActivityLauncher.get())
.launchActivityForPromoChooseAccountFlow(any(Context.class), anyInt(), anyString());
addTestAccount();
openBookmarkManagerAndCheckSigninPromoIsDisplayed();
showBookmarkManagerAndCheckSigninPromoIsDisplayed();
onView(withId(R.id.signin_promo_choose_account_button)).perform(click());
verify(mMockSigninActivityLauncher)
.launchActivityForPromoChooseAccountFlow(any(BookmarkActivity.class),
.launchActivityForPromoChooseAccountFlow(any(Activity.class),
eq(SigninAccessPoint.BOOKMARK_MANAGER), eq(TEST_ACCOUNT_NAME));
}
......@@ -144,24 +112,18 @@ public class BookmarkPersonalizedSigninPromoTest {
doNothing()
.when(SigninActivityLauncher.get())
.launchActivityForPromoAddAccountFlow(any(Context.class), anyInt());
openBookmarkManagerAndCheckSigninPromoIsDisplayed();
showBookmarkManagerAndCheckSigninPromoIsDisplayed();
onView(withId(R.id.signin_promo_signin_button)).perform(click());
verify(mMockSigninActivityLauncher)
.launchActivityForPromoAddAccountFlow(
any(BookmarkActivity.class), eq(SigninAccessPoint.BOOKMARK_MANAGER));
any(Activity.class), eq(SigninAccessPoint.BOOKMARK_MANAGER));
}
private void openBookmarkManagerAndCheckSigninPromoIsDisplayed() {
openBookmarkManager();
private void showBookmarkManagerAndCheckSigninPromoIsDisplayed() {
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
}
private void openBookmarkManager() {
TestThreadUtils.runOnUiThreadBlocking(
() -> BookmarkUtils.showBookmarkManager(mActivityTestRule.getActivity()));
BookmarkTestUtil.waitForBookmarkModelLoaded();
}
private void addTestAccount() {
Account account = AccountManagerFacade.createAccountFromName(TEST_ACCOUNT_NAME);
AccountHolder.Builder accountHolder = AccountHolder.builder(account).alwaysAccept(true);
......
......@@ -4,7 +4,9 @@
package org.chromium.chrome.test.util;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
......@@ -25,4 +27,12 @@ public class BookmarkTestUtil {
TestThreadUtils.runOnUiThreadBlocking(bookmarkModel::destroy);
}
/**
* Show BookmarkManager and wait till the bookmark model is loaded.
*/
public static void showBookmarkManager(ChromeActivity activity) {
TestThreadUtils.runOnUiThreadBlocking(() -> BookmarkUtils.showBookmarkManager(activity));
waitForBookmarkModelLoaded();
}
}
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