Commit c777e7ce authored by Becky Zhou's avatar Becky Zhou Committed by Commit Bot

Fix crash on inflating ic_add_circle_40dp

+ Fix a crash on inflating vector drawable ic_add_circle_40dp in
  settings
+ Fix a bug on managed preference delegate that sets the icon to null
  on bind when the preference is not managed

Bug: 948267, 947905
Change-Id: Icd32fb599612ed980b6aa1bd8b2747de12bc8cff
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1548394
Commit-Queue: Becky Zhou <huayinz@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#646596}
parent 14620d2b
...@@ -6,9 +6,8 @@ ...@@ -6,9 +6,8 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_add_circle_40dp"
android:drawablePadding="16dp" android:drawablePadding="16dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:padding="8dp" android:padding="8dp"
android:text="@string/signin_add_account" android:text="@string/signin_add_account"
android:textAppearance="@style/TextAppearance.BlackBodyDefault"/> android:textAppearance="@style/TextAppearance.BlackBodyDefault" />
...@@ -82,7 +82,7 @@ public class ManagedPreferencesUtils { ...@@ -82,7 +82,7 @@ public class ManagedPreferencesUtils {
*/ */
public static Drawable getManagedIconDrawable( public static Drawable getManagedIconDrawable(
@Nullable ManagedPreferenceDelegate delegate, Preference preference) { @Nullable ManagedPreferenceDelegate delegate, Preference preference) {
if (delegate == null) return null; if (delegate == null) return preference.getIcon();
if (delegate.isPreferenceControlledByPolicy(preference)) { if (delegate.isPreferenceControlledByPolicy(preference)) {
return PreferenceUtils.getTintedIcon( return PreferenceUtils.getTintedIcon(
...@@ -92,7 +92,7 @@ public class ManagedPreferencesUtils { ...@@ -92,7 +92,7 @@ public class ManagedPreferencesUtils {
preference.getContext(), getManagedByCustodianIconId()); preference.getContext(), getManagedByCustodianIconId());
} }
return null; return preference.getIcon();
} }
/** /**
......
...@@ -26,6 +26,7 @@ import android.preference.PreferenceFragment; ...@@ -26,6 +26,7 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.support.v7.content.res.AppCompatResources;
import android.widget.ListView; import android.widget.ListView;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
...@@ -377,7 +378,8 @@ public class AccountManagementFragment extends PreferenceFragment ...@@ -377,7 +378,8 @@ public class AccountManagementFragment extends PreferenceFragment
private ChromeBasePreference createAddAccountPreference() { private ChromeBasePreference createAddAccountPreference() {
ChromeBasePreference addAccountPreference = new ChromeBasePreference(getActivity()); ChromeBasePreference addAccountPreference = new ChromeBasePreference(getActivity());
addAccountPreference.setLayoutResource(R.layout.account_management_account_row); addAccountPreference.setLayoutResource(R.layout.account_management_account_row);
addAccountPreference.setIcon(R.drawable.ic_add_circle_40dp); addAccountPreference.setIcon(
AppCompatResources.getDrawable(getActivity(), R.drawable.ic_add_circle_40dp));
addAccountPreference.setTitle(R.string.account_management_add_account_title); addAccountPreference.setTitle(R.string.account_management_add_account_title);
addAccountPreference.setOnPreferenceClickListener(preference -> { addAccountPreference.setOnPreferenceClickListener(preference -> {
if (!isVisible() || !isResumed()) return false; if (!isVisible() || !isResumed()) return false;
......
...@@ -12,6 +12,7 @@ import android.support.v4.app.DialogFragment; ...@@ -12,6 +12,7 @@ import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.util.ObjectsCompat; import android.support.v4.util.ObjectsCompat;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.support.v7.content.res.AppCompatResources;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -112,8 +113,15 @@ public class AccountPickerDialogFragment extends DialogFragment { ...@@ -112,8 +113,15 @@ public class AccountPickerDialogFragment extends DialogFragment {
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @ViewType int viewType) { public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @ViewType int viewType) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
if (viewType == ViewType.NEW_ACCOUNT) { if (viewType == ViewType.NEW_ACCOUNT) {
View view = TextView view = (TextView) inflater.inflate(
inflater.inflate(R.layout.account_picker_new_account_row, viewGroup, false); R.layout.account_picker_new_account_row, viewGroup, false);
// Set the vector drawable programmatically because app:drawableStartCompat is only
// available after AndroidX appcompat library.
// TODO(https://crbug.com/948367): Use app:drawableStartCompat.
view.setCompoundDrawablesRelativeWithIntrinsicBounds(
AppCompatResources.getDrawable(
viewGroup.getContext(), R.drawable.ic_add_circle_40dp),
null, null, null);
return new ViewHolder(view); return new ViewHolder(view);
} }
View view = inflater.inflate(R.layout.account_picker_row, viewGroup, false); View view = inflater.inflate(R.layout.account_picker_row, viewGroup, false);
......
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