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 = [ ...@@ -60,6 +60,7 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java", "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/BookmarkModelTest.java",
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoTest.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/BookmarkReorderTest.java",
"javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java",
"javatests/src/org/chromium/chrome/browser/browserservices/OriginVerifierTest.java", "javatests/src/org/chromium/chrome/browser/browserservices/OriginVerifierTest.java",
......
...@@ -18,6 +18,7 @@ import androidx.annotation.Nullable; ...@@ -18,6 +18,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R; 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.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView; import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
import org.chromium.chrome.browser.signin.ProfileDataCache; import org.chromium.chrome.browser.signin.ProfileDataCache;
...@@ -266,4 +267,10 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs ...@@ -266,4 +267,10 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
static void forcePromoStateForTests(@Nullable @PromoState Integer promoState) { static void forcePromoStateForTests(@Nullable @PromoState Integer promoState) {
sPromoStateForTests = 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; ...@@ -21,6 +21,7 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.metrics.ImpressionTracker; import org.chromium.chrome.browser.metrics.ImpressionTracker;
import org.chromium.chrome.browser.metrics.OneShotImpressionListener; 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.chrome.browser.signin.SigninActivity.AccessPoint;
import org.chromium.components.signin.metrics.SigninAccessPoint; import org.chromium.components.signin.metrics.SigninAccessPoint;
...@@ -351,6 +352,18 @@ public class SigninPromoController { ...@@ -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 @VisibleForTesting
public static int getMaxImpressionsBookmarksForTests() { public static int getMaxImpressionsBookmarksForTests() {
return MAX_IMPRESSIONS_BOOKMARKS; 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 @@ ...@@ -5,9 +5,7 @@
package org.chromium.chrome.browser.bookmarks; package org.chromium.chrome.browser.bookmarks;
import static android.support.test.espresso.Espresso.onView; 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.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.assertion.ViewAssertions.matches;
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.withId; import static android.support.test.espresso.matcher.ViewMatchers.withId;
...@@ -23,7 +21,6 @@ import static org.mockito.Mockito.verify; ...@@ -23,7 +21,6 @@ import static org.mockito.Mockito.verify;
import android.accounts.Account; import android.accounts.Account;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.support.test.filters.LargeTest;
import android.support.test.filters.MediumTest; import android.support.test.filters.MediumTest;
import org.junit.After; import org.junit.After;
...@@ -33,13 +30,10 @@ import org.junit.Test; ...@@ -33,13 +30,10 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags; 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.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.signin.SigninActivityLauncher; 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.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.BookmarkTestUtil; import org.chromium.chrome.test.util.BookmarkTestUtil;
...@@ -49,7 +43,6 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; ...@@ -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.AccountHolder;
import org.chromium.components.signin.test.util.AccountManagerTestRule; import org.chromium.components.signin.test.util.AccountManagerTestRule;
import org.chromium.components.signin.test.util.FakeAccountManagerDelegate; 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. * Tests for the personalized signin promo on the Bookmarks page.
...@@ -85,31 +78,6 @@ public class BookmarkPersonalizedSigninPromoTest { ...@@ -85,31 +78,6 @@ public class BookmarkPersonalizedSigninPromoTest {
BookmarkPromoHeader.forcePromoStateForTests(null); 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 @Test
@MediumTest @MediumTest
public void testSigninButtonDefaultAccount() { 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