From c7804c130becb7bd8f0dbd8789349b42bdba76cf Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Fri, 13 Jan 2017 14:57:01 -0800 Subject: [PATCH 1/2] Another attempt fix for account preference screen. Fix: 34219500 Test: RunSettingsRoboTests Change-Id: I316e36496fc9d7eca9c718275c0f113b181d7f1e --- .../settings/accounts/AccountPreferenceController.java | 4 ++-- .../settings/accounts/AccountPreferenceControllerTest.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java index 02610b752bf..38f6b1a660d 100644 --- a/src/com/android/settings/accounts/AccountPreferenceController.java +++ b/src/com/android/settings/accounts/AccountPreferenceController.java @@ -63,7 +63,6 @@ import java.util.List; import static android.content.Intent.EXTRA_USER; import static android.os.UserManager.DISALLOW_MODIFY_ACCOUNTS; import static android.os.UserManager.DISALLOW_REMOVE_MANAGED_PROFILE; -import static android.os.UserManager.DISALLOW_REMOVE_USER; import static android.provider.Settings.EXTRA_AUTHORITIES; public class AccountPreferenceController extends PreferenceController @@ -405,7 +404,8 @@ public class AccountPreferenceController extends PreferenceController } private void updateAccountTypes(ProfileData profileData) { - if (mParent.getPreferenceManager() == null) { + if (mParent.getPreferenceManager() == null + || profileData.preferenceGroup.getPreferenceManager() == null) { // This could happen if activity is finishing return; } diff --git a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java index 78d669888fa..87be7561e2e 100644 --- a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java @@ -25,6 +25,7 @@ import android.os.UserManager; import android.support.v14.preference.PreferenceFragment; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; +import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; import com.android.settings.AccessiblePreferenceCategory; @@ -324,6 +325,7 @@ public class AccountPreferenceControllerTest { when(mAccountManager.getAuthenticatorTypesAsUser(anyInt())).thenReturn(authDescs); AccessiblePreferenceCategory preferenceGroup = mock(AccessiblePreferenceCategory.class); + when(preferenceGroup.getPreferenceManager()).thenReturn(mock(PreferenceManager.class)); when(mAccountHelper.createAccessiblePreferenceCategory(any(Context.class))).thenReturn( preferenceGroup); From 64c83afa8b197738f80581e538456ed9e34a4081 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Fri, 13 Jan 2017 17:11:42 -0800 Subject: [PATCH 2/2] Move RadioButtonPreference to generic widget package Bug: 34280137 Test: no regression Change-Id: Ib59efe767af83d182fba1ea1651026ddbb9ce6d5 --- res/xml/location_mode.xml | 6 +++--- src/com/android/settings/location/LocationMode.java | 1 + .../{location => widget}/RadioButtonPreference.java | 13 ++++++++----- 3 files changed, 12 insertions(+), 8 deletions(-) rename src/com/android/settings/{location => widget}/RadioButtonPreference.java (83%) diff --git a/res/xml/location_mode.xml b/res/xml/location_mode.xml index b1b05bba8dd..e6dc067f472 100644 --- a/res/xml/location_mode.xml +++ b/res/xml/location_mode.xml @@ -17,15 +17,15 @@ - - - diff --git a/src/com/android/settings/location/LocationMode.java b/src/com/android/settings/location/LocationMode.java index e50a0d9cbab..4ca098de22f 100644 --- a/src/com/android/settings/location/LocationMode.java +++ b/src/com/android/settings/location/LocationMode.java @@ -21,6 +21,7 @@ import android.support.v7.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; +import com.android.settings.widget.RadioButtonPreference; /** * A page with 3 radio buttons to choose the location mode. diff --git a/src/com/android/settings/location/RadioButtonPreference.java b/src/com/android/settings/widget/RadioButtonPreference.java similarity index 83% rename from src/com/android/settings/location/RadioButtonPreference.java rename to src/com/android/settings/widget/RadioButtonPreference.java index 91352666f66..cf5921eca8f 100644 --- a/src/com/android/settings/location/RadioButtonPreference.java +++ b/src/com/android/settings/widget/RadioButtonPreference.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 The Android Open Source Project + * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,9 +14,10 @@ * limitations under the License. */ -package com.android.settings.location; +package com.android.settings.widget; import android.content.Context; +import android.support.v4.content.res.TypedArrayUtils; import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; @@ -36,7 +37,7 @@ import com.android.settings.R; */ public class RadioButtonPreference extends CheckBoxPreference { public interface OnClickListener { - public abstract void onRadioButtonClicked(RadioButtonPreference emiter); + void onRadioButtonClicked(RadioButtonPreference emiter); } private OnClickListener mListener = null; @@ -47,14 +48,16 @@ public class RadioButtonPreference extends CheckBoxPreference { } public RadioButtonPreference(Context context, AttributeSet attrs) { - this(context, attrs, com.android.internal.R.attr.checkBoxPreferenceStyle); + this(context, attrs, TypedArrayUtils.getAttr(context, + android.support.v7.preference.R.attr.preferenceStyle, + android.R.attr.preferenceStyle)); } public RadioButtonPreference(Context context) { this(context, null); } - void setOnClickListener(OnClickListener listener) { + public void setOnClickListener(OnClickListener listener) { mListener = listener; }