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 ...@@ -642,8 +642,13 @@ public class FeedSurfaceMediator
// blocking the UI thread for several seconds if the accounts cache is not populated // blocking the UI thread for several seconds if the accounts cache is not populated
// yet. // yet.
if (!isVisible()) return; if (!isVisible()) return;
SigninPromoUtil.setupSigninPromoViewFromCache(mSigninPromoController, mProfileDataCache, if (isUserSignedInButNotSyncing()) {
mCoordinator.getSigninPromoView(), null); SigninPromoUtil.setupSyncPromoViewFromCache(mSigninPromoController,
mProfileDataCache, mCoordinator.getSigninPromoView(), null);
} else {
SigninPromoUtil.setupSigninPromoViewFromCache(mSigninPromoController,
mProfileDataCache, mCoordinator.getSigninPromoView(), null);
}
} }
} }
......
...@@ -13,8 +13,11 @@ import androidx.annotation.VisibleForTesting; ...@@ -13,8 +13,11 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.chrome.R; 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.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager; 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.ProfileDataCache;
import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninManager.SignInAllowedObserver; import org.chromium.chrome.browser.signin.SigninManager.SignInAllowedObserver;
...@@ -24,6 +27,8 @@ import org.chromium.chrome.browser.signin.SigninPromoController; ...@@ -24,6 +27,8 @@ import org.chromium.chrome.browser.signin.SigninPromoController;
import org.chromium.components.signin.AccountManagerFacade; import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.components.signin.AccountManagerFacadeProvider; import org.chromium.components.signin.AccountManagerFacadeProvider;
import org.chromium.components.signin.AccountsChangeObserver; 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; import org.chromium.components.signin.metrics.SigninAccessPoint;
/** /**
...@@ -75,8 +80,8 @@ public abstract class SignInPromo extends OptionalLeaf { ...@@ -75,8 +80,8 @@ public abstract class SignInPromo extends OptionalLeaf {
mAccountsReady = AccountManagerFacadeProvider.getInstance().isCachePopulated(); mAccountsReady = AccountManagerFacadeProvider.getInstance().isCachePopulated();
updateVisibility(); updateVisibility();
int imageSize = context.getResources().getDimensionPixelSize(R.dimen.user_picture_size); mProfileDataCache = ProfileDataCache.createProfileDataCache(
mProfileDataCache = new ProfileDataCache(context, imageSize); context, isUserSignedInButNotSyncing() ? R.drawable.ic_sync_badge_off_20dp : 0);
mSigninPromoController = mSigninPromoController =
new SigninPromoController(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS); new SigninPromoController(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS);
...@@ -128,6 +133,16 @@ public abstract class SignInPromo extends OptionalLeaf { ...@@ -128,6 +133,16 @@ public abstract class SignInPromo extends OptionalLeaf {
return false; 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 @Override
@ItemViewType @ItemViewType
protected int getItemViewType() { protected int getItemViewType() {
...@@ -148,8 +163,11 @@ public abstract class SignInPromo extends OptionalLeaf { ...@@ -148,8 +163,11 @@ public abstract class SignInPromo extends OptionalLeaf {
protected abstract void notifyDataChanged(); protected abstract void notifyDataChanged();
private void updateVisibility() { private void updateVisibility() {
setVisibilityInternal( boolean canShowPersonalizedSigninPromo =
!mDismissed && mCanSignIn && mCanShowPersonalizedSuggestions && mAccountsReady); !mDismissed && mCanSignIn && mCanShowPersonalizedSuggestions && mAccountsReady;
boolean canShowPersonalizedSyncPromo = !mDismissed && isUserSignedInButNotSyncing()
&& mCanShowPersonalizedSuggestions && mAccountsReady;
setVisibilityInternal(canShowPersonalizedSigninPromo || canShowPersonalizedSyncPromo);
} }
@Override @Override
...@@ -229,12 +247,16 @@ public abstract class SignInPromo extends OptionalLeaf { ...@@ -229,12 +247,16 @@ public abstract class SignInPromo extends OptionalLeaf {
@Override @Override
public void onSignedIn() { public void onSignedIn() {
mCanSignIn = false; mCanSignIn = false;
if (isUserSignedInButNotSyncing()) {
mProfileDataCache.updateBadgeConfig(R.drawable.ic_sync_badge_off_20dp);
}
updateVisibility(); updateVisibility();
} }
@Override @Override
public void onSignedOut() { public void onSignedOut() {
mCanSignIn = mSigninManager.isSignInAllowed(); mCanSignIn = mSigninManager.isSignInAllowed();
mProfileDataCache.updateBadgeConfig(0);
updateVisibility(); 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