OSDN Git Service

Add a config flag so OEMs can disable avatar mixin
authorFan Zhang <zhfan@google.com>
Thu, 8 Nov 2018 22:53:37 +0000 (14:53 -0800)
committerFan Zhang <zhfan@google.com>
Thu, 8 Nov 2018 22:57:24 +0000 (14:57 -0800)
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
src/com/android/settings/accounts/AvatarViewMixin.java
tests/robotests/res/values-mcc999/config.xml
tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java

index c357207..8fa91fe 100755 (executable)
     -->
     <bool name="config_use_legacy_suggestion">true</bool>
 
+    <!-- Whether or not homepage should display user's account avatar -->
+    <bool name="config_show_avatar_in_homepage">false</bool>
+
     <!-- Whether or not TopLevelSettings should force rounded icon for injected tiles -->
     <bool name="config_force_rounded_icon_TopLevelSettings">true</bool>
 
index d7f6f8a..6dcf312 100644 (file)
@@ -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 {
index 9a7bdc9..73d2264 100644 (file)
@@ -63,6 +63,7 @@
     <bool name="config_disable_uninstall_update">true</bool>
     <bool name="config_show_device_name">false</bool>
     <bool name="config_use_legacy_suggestion">false</bool>
+    <bool name="config_show_avatar_in_homepage">true</bool>
 
     <!-- Whether or not extra preview panels should be used for screen zoom setting. -->
     <bool name="config_enable_extra_screen_zoom_preview">false</bool>
index c72561e..b3d929c 100644 (file)
@@ -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)