Commit 397fa8ff authored by Tanmoy Mollik's avatar Tanmoy Mollik Committed by Commit Bot

[Android] Implement Sync Promo for New Tab page

This cl creates personalized sync promo for New Tab page.

Screenshot: https://crbug.com/1116038#c1
Bug: 1116038
Change-Id: I73153ec34aad74cecd8a0c7bfa9bd5c5d7fada21
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2353258Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Commit-Queue: Tanmoy Mollik <triploblastic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#800952}
parent 2fdf7aa4
......@@ -642,8 +642,13 @@ public class FeedSurfaceMediator
// blocking the UI thread for several seconds if the accounts cache is not populated
// yet.
if (!isVisible()) return;
SigninPromoUtil.setupSigninPromoViewFromCache(mSigninPromoController, mProfileDataCache,
mCoordinator.getSigninPromoView(), null);
if (isUserSignedInButNotSyncing()) {
SigninPromoUtil.setupSyncPromoViewFromCache(mSigninPromoController,
mProfileDataCache, mCoordinator.getSigninPromoView(), null);
} else {
SigninPromoUtil.setupSigninPromoViewFromCache(mSigninPromoController,
mProfileDataCache, mCoordinator.getSigninPromoView(), null);
}
}
}
......
......@@ -13,8 +13,11 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.ProfileDataCache;
import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninManager.SignInAllowedObserver;
......@@ -24,6 +27,8 @@ import org.chromium.chrome.browser.signin.SigninPromoController;
import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.components.signin.AccountManagerFacadeProvider;
import org.chromium.components.signin.AccountsChangeObserver;
import org.chromium.components.signin.identitymanager.ConsentLevel;
import org.chromium.components.signin.identitymanager.IdentityManager;
import org.chromium.components.signin.metrics.SigninAccessPoint;
/**
......@@ -75,8 +80,8 @@ public abstract class SignInPromo extends OptionalLeaf {
mAccountsReady = AccountManagerFacadeProvider.getInstance().isCachePopulated();
updateVisibility();
int imageSize = context.getResources().getDimensionPixelSize(R.dimen.user_picture_size);
mProfileDataCache = new ProfileDataCache(context, imageSize);
mProfileDataCache = ProfileDataCache.createProfileDataCache(
context, isUserSignedInButNotSyncing() ? R.drawable.ic_sync_badge_off_20dp : 0);
mSigninPromoController =
new SigninPromoController(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS);
......@@ -128,6 +133,16 @@ public abstract class SignInPromo extends OptionalLeaf {
return false;
}
public boolean isUserSignedInButNotSyncing() {
if (!ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)) {
return false;
}
IdentityManager identityManager = IdentityServicesProvider.get().getIdentityManager(
Profile.getLastUsedRegularProfile());
return identityManager.getPrimaryAccountInfo(ConsentLevel.NOT_REQUIRED) != null
&& identityManager.getPrimaryAccountInfo(ConsentLevel.SYNC) == null;
}
@Override
@ItemViewType
protected int getItemViewType() {
......@@ -148,8 +163,11 @@ public abstract class SignInPromo extends OptionalLeaf {
protected abstract void notifyDataChanged();
private void updateVisibility() {
setVisibilityInternal(
!mDismissed && mCanSignIn && mCanShowPersonalizedSuggestions && mAccountsReady);
boolean canShowPersonalizedSigninPromo =
!mDismissed && mCanSignIn && mCanShowPersonalizedSuggestions && mAccountsReady;
boolean canShowPersonalizedSyncPromo = !mDismissed && isUserSignedInButNotSyncing()
&& mCanShowPersonalizedSuggestions && mAccountsReady;
setVisibilityInternal(canShowPersonalizedSigninPromo || canShowPersonalizedSyncPromo);
}
@Override
......@@ -229,12 +247,16 @@ public abstract class SignInPromo extends OptionalLeaf {
@Override
public void onSignedIn() {
mCanSignIn = false;
if (isUserSignedInButNotSyncing()) {
mProfileDataCache.updateBadgeConfig(R.drawable.ic_sync_badge_off_20dp);
}
updateVisibility();
}
@Override
public void onSignedOut() {
mCanSignIn = mSigninManager.isSignInAllowed();
mProfileDataCache.updateBadgeConfig(0);
updateVisibility();
}
......
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