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 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_add_circle_40dp"
android:drawablePadding="16dp"
android:gravity="center_vertical"
android:padding="8dp"
android:text="@string/signin_add_account"
android:textAppearance="@style/TextAppearance.BlackBodyDefault"/>
android:textAppearance="@style/TextAppearance.BlackBodyDefault" />
......@@ -82,7 +82,7 @@ public class ManagedPreferencesUtils {
*/
public static Drawable getManagedIconDrawable(
@Nullable ManagedPreferenceDelegate delegate, Preference preference) {
if (delegate == null) return null;
if (delegate == null) return preference.getIcon();
if (delegate.isPreferenceControlledByPolicy(preference)) {
return PreferenceUtils.getTintedIcon(
......@@ -92,7 +92,7 @@ public class ManagedPreferencesUtils {
preference.getContext(), getManagedByCustodianIconId());
}
return null;
return preference.getIcon();
}
/**
......
......@@ -26,6 +26,7 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.support.v7.content.res.AppCompatResources;
import android.widget.ListView;
import org.chromium.base.ApiCompatibilityUtils;
......@@ -377,7 +378,8 @@ public class AccountManagementFragment extends PreferenceFragment
private ChromeBasePreference createAddAccountPreference() {
ChromeBasePreference addAccountPreference = new ChromeBasePreference(getActivity());
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.setOnPreferenceClickListener(preference -> {
if (!isVisible() || !isResumed()) return false;
......
......@@ -12,6 +12,7 @@ import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.util.ObjectsCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.content.res.AppCompatResources;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
......@@ -112,8 +113,15 @@ public class AccountPickerDialogFragment extends DialogFragment {
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @ViewType int viewType) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
if (viewType == ViewType.NEW_ACCOUNT) {
View view =
inflater.inflate(R.layout.account_picker_new_account_row, viewGroup, false);
TextView view = (TextView) inflater.inflate(
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);
}
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