From 21f5291c1a2bcdb681dc6368d38c15d3ea0db08d Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 8 Nov 2018 14:53:37 -0800 Subject: [PATCH] Add a config flag so OEMs can disable avatar mixin Not all devices have account, OEMs should be able to disable this feature if they want. Bug: 117509285 Test: robotests Change-Id: I3b03a04cff6ff0ec6c31763ac1829b119531e489 --- res/values/config.xml | 3 +++ src/com/android/settings/accounts/AvatarViewMixin.java | 11 +++++++++-- tests/robotests/res/values-mcc999/config.xml | 1 + .../com/android/settings/accounts/AvatarViewMixinTest.java | 13 +++++++++++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index c357207d80..8fa91fe75a 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -140,6 +140,9 @@ --> true + + false + true diff --git a/src/com/android/settings/accounts/AvatarViewMixin.java b/src/com/android/settings/accounts/AvatarViewMixin.java index d7f6f8aa83..6dcf312a16 100644 --- a/src/com/android/settings/accounts/AvatarViewMixin.java +++ b/src/com/android/settings/accounts/AvatarViewMixin.java @@ -18,6 +18,7 @@ package com.android.settings.accounts; import android.accounts.Account; import android.content.Context; +import android.util.Log; import android.widget.ImageView; import androidx.annotation.VisibleForTesting; @@ -34,8 +35,10 @@ import com.android.settings.overlay.FeatureFactory; * in {@link SettingsHomepageActivity}. */ public class AvatarViewMixin implements LifecycleObserver { - private Context mContext; - private ImageView mAvatarView; + private static final String TAG = "AvatarViewMixin"; + + private final Context mContext; + private final ImageView mAvatarView; public AvatarViewMixin(Context context, ImageView avatarView) { mContext = context.getApplicationContext(); @@ -44,6 +47,10 @@ public class AvatarViewMixin implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_START) public void onStart() { + if (!mContext.getResources().getBoolean(R.bool.config_show_avatar_in_homepage)) { + Log.d(TAG, "Feature disabled. Skipping"); + return; + } if (hasAccount()) { //TODO(b/117509285): To migrate account icon on search bar } else { diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml index 9a7bdc902a..73d2264709 100644 --- a/tests/robotests/res/values-mcc999/config.xml +++ b/tests/robotests/res/values-mcc999/config.xml @@ -63,6 +63,7 @@ true false false + true false diff --git a/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java b/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java index c72561ed59..b3d929c8b3 100644 --- a/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java @@ -18,6 +18,7 @@ package com.android.settings.accounts; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -29,7 +30,6 @@ import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; @@ -69,6 +69,15 @@ public class AvatarViewMixinTest { } @Test + public void onStart_configDisabled_doNothing() { + final AvatarViewMixin mixin = spy(new AvatarViewMixin(mContext, mImageView)); + mixin.onStart(); + + verify(mixin, never()).hasAccount(); + } + + @Test + @Config(qualifiers = "mcc999") public void onStart_useMockAvatarViewMixin_shouldBeExecuted() { final AvatarViewMixin mockAvatar = spy(new AvatarViewMixin(mContext, mImageView)); @@ -79,7 +88,7 @@ public class AvatarViewMixinTest { settingsHomepageActivity.getLifecycle().addObserver(mockAvatar); controller.start(); - verify(mockAvatar).onStart(); + verify(mockAvatar).hasAccount(); } @Implements(AccountFeatureProviderImpl.class) -- 2.11.0