Commit 32ca944e authored by Alice Wang's avatar Alice Wang Committed by Commit Bot

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

This CL fixes bookmark signin promo dismiss tests on phone and on
tablet.

Bug: 789531
Change-Id: Ic71c24c9c46e00ccdf66b80240698e08c6da285b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1893286
Commit-Queue: Alice Wang <aliceywang@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712200}
parent 6a40803f
......@@ -60,6 +60,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",
......
......@@ -18,6 +18,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.signin.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
import org.chromium.chrome.browser.signin.ProfileDataCache;
......@@ -266,4 +267,10 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
static void forcePromoStateForTests(@Nullable @PromoState Integer promoState) {
sPromoStateForTests = promoState;
}
@VisibleForTesting
static void setPrefPersonalizedSigninPromoDeclinedForTests(boolean isDeclined) {
SharedPreferencesManager.getInstance().writeBoolean(
PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, isDeclined);
}
}
......@@ -21,6 +21,7 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.metrics.ImpressionTracker;
import org.chromium.chrome.browser.metrics.OneShotImpressionListener;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.signin.SigninActivity.AccessPoint;
import org.chromium.components.signin.metrics.SigninAccessPoint;
......@@ -351,6 +352,18 @@ public class SigninPromoController {
}
}
@VisibleForTesting
public static void setSigninPromoImpressionsCountBookmarksForTests(int count) {
SharedPreferencesManager.getInstance().writeInt(
SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS, count);
}
@VisibleForTesting
public static int getSigninPromoImpressionsCountBookmarksForTests() {
return SharedPreferencesManager.getInstance().readInt(
SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS, 0);
}
@VisibleForTesting
public static int getMaxImpressionsBookmarksForTests() {
return MAX_IMPRESSIONS_BOOKMARKS;
......
// 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() {
BookmarkPromoHeader.forcePromoStateForTests(null);
BookmarkPromoHeader.setPrefPersonalizedSigninPromoDeclinedForTests(false);
SigninPromoController.setSigninPromoImpressionsCountBookmarksForTests(0);
mActivityTestRule.startMainActivityFromLauncher();
}
@After
public void tearDown() {
SigninPromoController.setSigninPromoImpressionsCountBookmarksForTests(0);
BookmarkPromoHeader.setPrefPersonalizedSigninPromoDeclinedForTests(false);
}
@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.setSigninPromoImpressionsCountBookmarksForTests(
SigninPromoController.getMaxImpressionsBookmarksForTests());
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
}
@Test
@MediumTest
public void testPromoImpressionCountIncrementAfterDisplayingSigninPromo() {
assertEquals(0, SigninPromoController.getSigninPromoImpressionsCountBookmarksForTests());
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
assertEquals(1, SigninPromoController.getSigninPromoImpressionsCountBookmarksForTests());
}
}
......@@ -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;
......@@ -23,7 +21,6 @@ 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;
......@@ -33,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;
......@@ -49,7 +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.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() {
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(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++) {
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
pressBack();
}
BookmarkTestUtil.showBookmarkManager(mActivityTestRule.getActivity());
onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
}
@Test
@MediumTest
public void testSigninButtonDefaultAccount() {
......
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