Commit d38953e7 authored by Alice Wang's avatar Alice Wang Committed by Commit Bot

[Android][Test] Test uma recording when account picker suppressed

This CL adds tests to check uma recording when account picker is
suppressed when no accounts are on device and when sign-in is not
allowed.

Bug: 1134874
Change-Id: I88817b536d9dcb02b34fcee3a294801a3706ae5e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2448797
Commit-Queue: Alice Wang <aliceywang@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814611}
parent cd674447
...@@ -212,6 +212,7 @@ chrome_junit_test_java_sources = [ ...@@ -212,6 +212,7 @@ chrome_junit_test_java_sources = [
"junit/src/org/chromium/chrome/browser/signin/SigninManagerTest.java", "junit/src/org/chromium/chrome/browser/signin/SigninManagerTest.java",
"junit/src/org/chromium/chrome/browser/signin/SigninPreferencesManagerTest.java", "junit/src/org/chromium/chrome/browser/signin/SigninPreferencesManagerTest.java",
"junit/src/org/chromium/chrome/browser/signin/SigninPromoUtilTest.java", "junit/src/org/chromium/chrome/browser/signin/SigninPromoUtilTest.java",
"junit/src/org/chromium/chrome/browser/signin/SigninUtilsAccountPickerTest.java",
"junit/src/org/chromium/chrome/browser/signin/SigninUtilsStartActivityTest.java", "junit/src/org/chromium/chrome/browser/signin/SigninUtilsStartActivityTest.java",
"junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerDelegateTest.java", "junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerDelegateTest.java",
"junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerMediatorTest.java", "junit/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerMediatorTest.java",
......
...@@ -12,6 +12,7 @@ import android.os.Build; ...@@ -12,6 +12,7 @@ import android.os.Build;
import android.provider.Settings; import android.provider.Settings;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.IntentUtils; import org.chromium.base.IntentUtils;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
...@@ -79,8 +80,8 @@ public class SigninUtils { ...@@ -79,8 +80,8 @@ public class SigninUtils {
} }
@CalledByNative @CalledByNative
private static void openAccountPickerBottomSheet( @VisibleForTesting
WindowAndroid windowAndroid, String continueUrl) { static void openAccountPickerBottomSheet(WindowAndroid windowAndroid, String continueUrl) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
SigninManager signinManager = IdentityServicesProvider.get().getSigninManager( SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(
Profile.getLastUsedRegularProfile()); Profile.getLastUsedRegularProfile());
......
// Copyright 2020 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.signin;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import androidx.test.filters.SmallTest;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.chromium.base.metrics.UmaRecorder;
import org.chromium.base.metrics.UmaRecorderHolder;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.account_picker.AccountConsistencyPromoAction;
import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
import org.chromium.ui.base.WindowAndroid;
/**
* This class tests the method {@link SigninUtils#openAccountPickerBottomSheet}
*/
@RunWith(BaseRobolectricTestRunner.class)
public class SigninUtilsAccountPickerTest {
private static final String CONTINUE_URL = "https://test-continue-url.com";
@Rule
public final AccountManagerTestRule mAccountManagerTestRule = new AccountManagerTestRule();
@Mock
private Profile mProfileMock;
@Mock
private IdentityServicesProvider mIdentityServicesProviderMock;
@Mock
private SigninManager mSigninManagerMock;
@Mock
private WindowAndroid mWindowAndroidMock;
@Mock
private UmaRecorder mUmaRecorderMock;
@Before
public void setUp() {
initMocks(this);
UmaRecorderHolder.setNonNativeDelegate(mUmaRecorderMock);
Profile.setLastUsedProfileForTesting(mProfileMock);
IdentityServicesProvider.setInstanceForTests(mIdentityServicesProviderMock);
when(mIdentityServicesProviderMock.getSigninManager(mProfileMock))
.thenReturn(mSigninManagerMock);
}
@Test
@SmallTest
public void testAccountPickerSuppressedWhenSigninNotAllowed() {
when(mSigninManagerMock.isSignInAllowed()).thenReturn(false);
SigninUtils.openAccountPickerBottomSheet(mWindowAndroidMock, CONTINUE_URL);
checkHistogramRecording(AccountConsistencyPromoAction.SUPPRESSED_SIGNIN_NOT_ALLOWED);
}
@Test
@SmallTest
public void testAccountPickerSuppressedWhenNoAccountsOnDevice() {
when(mSigninManagerMock.isSignInAllowed()).thenReturn(true);
SigninUtils.openAccountPickerBottomSheet(mWindowAndroidMock, CONTINUE_URL);
checkHistogramRecording(AccountConsistencyPromoAction.SUPPRESSED_NO_ACCOUNTS);
}
private void checkHistogramRecording(@AccountConsistencyPromoAction int action) {
verify(mUmaRecorderMock)
.recordLinearHistogram("Signin.AccountConsistencyPromoAction", action, 1,
AccountConsistencyPromoAction.MAX, AccountConsistencyPromoAction.MAX + 1);
}
}
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