Commit edd18956 authored by Tanmoy Mollik's avatar Tanmoy Mollik Committed by Commit Bot

[Android] Update PersonalizedSyncPromoView

This cl updates the PersonalizedSyncPromoView. There are two changes
made to this view.

1. The status message "Sync is off" is removed
2. The sync off badge in the profile picture is removed. Since the badge
is no longer dynamically updated, all updateBadgeConfig() calls for
updating the promos have been removed.

Bug: 1124701
Change-Id: Ia3654ade8a0bccfc44a12bb8548cb4ad022fc442
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2391233
Commit-Queue: Tanmoy Mollik <triploblastic@chromium.org>
Reviewed-by: default avatarAlice Wang <aliceywang@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#805667}
parent 75ce6af8
...@@ -713,7 +713,6 @@ chrome_java_resources = [ ...@@ -713,7 +713,6 @@ chrome_java_resources = [
"java/res/drawable/ic_site_timer.xml", "java/res/drawable/ic_site_timer.xml",
"java/res/drawable/ic_swap_vert_round.xml", "java/res/drawable/ic_swap_vert_round.xml",
"java/res/drawable/ic_sync_badge_error_20dp.xml", "java/res/drawable/ic_sync_badge_error_20dp.xml",
"java/res/drawable/ic_sync_badge_off_20dp.xml",
"java/res/drawable/ic_sync_error_48dp.xml", "java/res/drawable/ic_sync_error_48dp.xml",
"java/res/drawable/ic_sync_error_legacy_40dp.xml", "java/res/drawable/ic_sync_error_legacy_40dp.xml",
"java/res/drawable/ic_sync_green_legacy_40dp.xml", "java/res/drawable/ic_sync_green_legacy_40dp.xml",
......
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="21"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:strokeWidth="1"
android:pathData="M10,20.5C15.799,20.5 20.5,15.799 20.5,10C20.5,4.201 15.799,-0.5 10,-0.5C4.201,-0.5 -0.5,4.201 -0.5,10C-0.5,15.799 4.201,20.5 10,20.5Z"
android:fillColor="@color/default_icon_color_secondary"
android:strokeColor="@color/default_bg_color"/>
<path
android:pathData="M8.75,6.4688V5.1625C8.25,5.2937 7.7812,5.5 7.3562,5.7625L8.2687,6.675C8.425,6.6 8.5812,6.525 8.75,6.4688ZM4.2875,5.8812L5.7625,7.3562C5.2812,8.1187 5,9.025 5,10C5,11.3813 5.5687,12.625 6.475,13.525L5,15H8.75V11.25L7.35,12.65C6.675,11.9687 6.25,11.0375 6.25,10C6.25,9.375 6.4062,8.7875 6.675,8.2688L11.725,13.3187C11.5687,13.4 11.4125,13.475 11.2437,13.5312V14.8375C11.7437,14.7062 12.2125,14.5 12.6375,14.2375L14.1125,15.7125L14.9062,14.9188L5.0875,5.0875L4.2875,5.8812ZM15,5H11.25V8.75L12.65,7.35C13.325,8.0313 13.75,8.9625 13.75,10C13.75,10.625 13.5937,11.2125 13.325,11.7313L14.2375,12.6437C14.7187,11.8812 15,10.975 15,10C15,8.6187 14.4312,7.375 13.525,6.475L15,5Z"
android:fillColor="@color/default_bg_color"/>
</vector>
...@@ -99,10 +99,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs ...@@ -99,10 +99,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
if (SigninPromoController.hasNotReachedImpressionLimit( if (SigninPromoController.hasNotReachedImpressionLimit(
SigninAccessPoint.BOOKMARK_MANAGER)) { SigninAccessPoint.BOOKMARK_MANAGER)) {
mProfileDataCache = ProfileDataCache.createProfileDataCache(mContext, mProfileDataCache = ProfileDataCache.createProfileDataCache(mContext);
mPromoState == PromoState.PROMO_SYNC_PERSONALIZED
? R.drawable.ic_sync_badge_off_20dp
: 0);
mProfileDataCache.addObserver(this); mProfileDataCache.addObserver(this);
mSigninPromoController = new SigninPromoController(SigninAccessPoint.BOOKMARK_MANAGER); mSigninPromoController = new SigninPromoController(SigninAccessPoint.BOOKMARK_MANAGER);
mAccountManagerFacade.addObserver(this); mAccountManagerFacade.addObserver(this);
...@@ -185,7 +182,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs ...@@ -185,7 +182,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
private void setPersonalizedSigninPromoDeclined() { private void setPersonalizedSigninPromoDeclined() {
SharedPreferencesManager.getInstance().writeBoolean( SharedPreferencesManager.getInstance().writeBoolean(
ChromePreferenceKeys.SIGNIN_PROMO_PERSONALIZED_DECLINED, true); ChromePreferenceKeys.SIGNIN_PROMO_PERSONALIZED_DECLINED, true);
updatePromoState(); mPromoState = calculatePromoState();
triggerPromoUpdate(); triggerPromoUpdate();
} }
...@@ -240,30 +237,12 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs ...@@ -240,30 +237,12 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
return PromoState.PROMO_NONE; return PromoState.PROMO_NONE;
} }
private void updatePromoState() {
@PromoState
int currentState = calculatePromoState();
if (currentState == mPromoState) {
return;
}
mPromoState = currentState;
if (mProfileDataCache != null) {
mProfileDataCache.removeObserver(this);
}
mProfileDataCache = ProfileDataCache.createProfileDataCache(mContext,
mPromoState == PromoState.PROMO_SYNC_PERSONALIZED
? R.drawable.ic_sync_badge_off_20dp
: 0);
mProfileDataCache.addObserver(this);
}
// AndroidSyncSettingsObserver implementation. // AndroidSyncSettingsObserver implementation.
@Override @Override
public void androidSyncSettingsChanged() { public void androidSyncSettingsChanged() {
// AndroidSyncSettings calls this method from non-UI threads. // AndroidSyncSettings calls this method from non-UI threads.
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
updatePromoState(); mPromoState = calculatePromoState();
triggerPromoUpdate(); triggerPromoUpdate();
}); });
} }
...@@ -271,13 +250,13 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs ...@@ -271,13 +250,13 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
// SignInStateObserver implementation. // SignInStateObserver implementation.
@Override @Override
public void onSignedIn() { public void onSignedIn() {
updatePromoState(); mPromoState = calculatePromoState();
triggerPromoUpdate(); triggerPromoUpdate();
} }
@Override @Override
public void onSignedOut() { public void onSignedOut() {
updatePromoState(); mPromoState = calculatePromoState();
triggerPromoUpdate(); triggerPromoUpdate();
} }
......
...@@ -12,7 +12,6 @@ import androidx.annotation.VisibleForTesting; ...@@ -12,7 +12,6 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.invalidation.SessionsInvalidationManager; import org.chromium.chrome.browser.invalidation.SessionsInvalidationManager;
import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSession; import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSession;
...@@ -109,7 +108,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta ...@@ -109,7 +108,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta
: new RecentlyClosedBridge(profile); : new RecentlyClosedBridge(profile);
mSignInManager = IdentityServicesProvider.get().getSigninManager(mProfile); mSignInManager = IdentityServicesProvider.get().getSigninManager(mProfile);
mProfileDataCache = ProfileDataCache.createProfileDataCache(context, 0); mProfileDataCache = ProfileDataCache.createProfileDataCache(context);
mSigninPromoController = new SigninPromoController(SigninAccessPoint.RECENT_TABS); mSigninPromoController = new SigninPromoController(SigninAccessPoint.RECENT_TABS);
mRecentlyClosedTabManager.setTabsUpdatedRunnable(() -> { mRecentlyClosedTabManager.setTabsUpdatedRunnable(() -> {
...@@ -392,13 +391,11 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta ...@@ -392,13 +391,11 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta
* @param view The view to be configured. * @param view The view to be configured.
*/ */
void setupPersonalizedSigninPromo(PersonalizedSigninPromoView view) { void setupPersonalizedSigninPromo(PersonalizedSigninPromoView view) {
mProfileDataCache.updateBadgeConfig(0);
SigninPromoUtil.setupSigninPromoViewFromCache( SigninPromoUtil.setupSigninPromoViewFromCache(
mSigninPromoController, mProfileDataCache, view, null); mSigninPromoController, mProfileDataCache, view, null);
} }
void setupPersonalizedSyncPromo(PersonalizedSigninPromoView view) { void setupPersonalizedSyncPromo(PersonalizedSigninPromoView view) {
mProfileDataCache.updateBadgeConfig(R.drawable.ic_sync_badge_off_20dp);
SigninPromoUtil.setupSyncPromoViewFromCache( SigninPromoUtil.setupSyncPromoViewFromCache(
mSigninPromoController, mProfileDataCache, view, null); mSigninPromoController, mProfileDataCache, view, null);
} }
......
...@@ -12,7 +12,6 @@ import androidx.annotation.VisibleForTesting; ...@@ -12,7 +12,6 @@ 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.browser.flags.ChromeFeatureList; 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;
...@@ -80,8 +79,7 @@ public abstract class SignInPromo extends OptionalLeaf { ...@@ -80,8 +79,7 @@ public abstract class SignInPromo extends OptionalLeaf {
mAccountsReady = AccountManagerFacadeProvider.getInstance().isCachePopulated(); mAccountsReady = AccountManagerFacadeProvider.getInstance().isCachePopulated();
updateVisibility(); updateVisibility();
mProfileDataCache = ProfileDataCache.createProfileDataCache( mProfileDataCache = ProfileDataCache.createProfileDataCache(context);
context, isUserSignedInButNotSyncing() ? R.drawable.ic_sync_badge_off_20dp : 0);
mSigninPromoController = mSigninPromoController =
new SigninPromoController(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS); new SigninPromoController(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS);
...@@ -247,16 +245,12 @@ public abstract class SignInPromo extends OptionalLeaf { ...@@ -247,16 +245,12 @@ 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();
} }
......
...@@ -293,6 +293,15 @@ public class ProfileDataCache implements ProfileDownloader.Observer, ProfileData ...@@ -293,6 +293,15 @@ public class ProfileDataCache implements ProfileDownloader.Observer, ProfileData
return new BitmapDrawable(resources, output); return new BitmapDrawable(resources, output);
} }
/**
* Returns a profile data cache object without a badge.The badge is put with respect to
* R.dimen.user_picture_size. So this method only works with the user avatar of this size.
* @param context Context of the application to extract resources from
*/
public static ProfileDataCache createProfileDataCache(Context context) {
return createProfileDataCache(context, 0);
}
/** /**
* Returns a profile data cache object with the badgeResId provided. The badge is put with * Returns a profile data cache object with the badgeResId provided. The badge is put with
* respect to R.dimen.user_picture_size. So this method only works with the user avatar of this * respect to R.dimen.user_picture_size. So this method only works with the user avatar of this
......
...@@ -131,7 +131,6 @@ public class SigninPromoUtil { ...@@ -131,7 +131,6 @@ public class SigninPromoUtil {
ProfileDataCache profileDataCache, PersonalizedSigninPromoView view, ProfileDataCache profileDataCache, PersonalizedSigninPromoView view,
SigninPromoController.OnDismissListener listener) { SigninPromoController.OnDismissListener listener) {
setupSigninPromoViewFromCache(signinPromoController, profileDataCache, view, listener); setupSigninPromoViewFromCache(signinPromoController, profileDataCache, view, listener);
view.getStatusMessage().setVisibility(View.VISIBLE);
view.getPrimaryButton().setText(R.string.sync_promo_turn_on_sync); view.getPrimaryButton().setText(R.string.sync_promo_turn_on_sync);
view.getSecondaryButton().setVisibility(View.GONE); view.getSecondaryButton().setVisibility(View.GONE);
} }
......
...@@ -61,8 +61,7 @@ public class SyncPromoPreference extends Preference ...@@ -61,8 +61,7 @@ public class SyncPromoPreference extends Preference
public SyncPromoPreference(Context context, AttributeSet attrs) { public SyncPromoPreference(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
mProfileDataCache = mProfileDataCache = ProfileDataCache.createProfileDataCache(context);
ProfileDataCache.createProfileDataCache(context, R.drawable.ic_sync_badge_off_20dp);
mAccountManagerFacade = AccountManagerFacadeProvider.getInstance(); mAccountManagerFacade = AccountManagerFacadeProvider.getInstance();
// State will be updated in registerForUpdates. // State will be updated in registerForUpdates.
......
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