Commit 107683fa authored by Tanmoy Mollik's avatar Tanmoy Mollik Committed by Commit Bot

[Android] Add "Manage your Google account" to AccountManagementFragment

This cl reorders the account list shown in AccountManagementFragment and
shows the signed-in account on top with "Manage your Google account" row.

Screenshot: https://crbug.com/1131008#c5

Bug: 1131008
Change-Id: Ib9cbd8052da08dc37c2e85aaaa46060509e155d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2435093Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Commit-Queue: Tanmoy Mollik <triploblastic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#812743}
parent 79db916e
......@@ -776,6 +776,7 @@ chrome_java_resources = [
"java/res/layout/accessibility_tab_switcher_list_item.xml",
"java/res/layout/account_chooser_dialog_item.xml",
"java/res/layout/account_chooser_dialog_title.xml",
"java/res/layout/account_divider_preference.xml",
"java/res/layout/account_management_account_row.xml",
"java/res/layout/account_picker_bottom_sheet_view.xml",
"java/res/layout/account_picker_dialog_body.xml",
......
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2020 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<!-- Creates a partial divider that is used to attach Manage Google Account row to the signed in
account in AccountManagementFragment. -->
<View
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/HorizontalDivider"
android:layout_marginStart="72dp" />
......@@ -12,6 +12,7 @@ import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserManager;
import androidx.annotation.LayoutRes;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.preference.Preference;
......@@ -290,18 +291,20 @@ public class AccountManagementFragment extends PreferenceFragmentCompat
accountsCategory.removeAll();
List<Account> accounts = AccountManagerFacadeProvider.getInstance().tryGetGoogleAccounts();
for (int i = 0; i < accounts.size(); i++) {
Account account = accounts.get(i);
Preference pref = new Preference(getStyledContext());
pref.setLayoutResource(R.layout.account_management_account_row);
pref.setTitle(account.name);
pref.setIcon(mProfileDataCache.getProfileDataOrDefault(account.name).getImage());
pref.setOnPreferenceClickListener(
preference -> SigninUtils.openSettingsForAccount(getActivity(), account));
accountsCategory.addPreference(
createAccountPreference(AccountUtils.createAccountFromName(mSignedInAccountName)));
if (ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)) {
accountsCategory.addPreference(
createDividerPreference(R.layout.account_divider_preference));
accountsCategory.addPreference(createManageYourGoogleAccountPreference());
accountsCategory.addPreference(createDividerPreference(R.layout.divider_preference));
}
accountsCategory.addPreference(pref);
List<Account> accounts = AccountManagerFacadeProvider.getInstance().tryGetGoogleAccounts();
for (Account account : accounts) {
if (!mSignedInAccountName.equals(account.name)) {
accountsCategory.addPreference(createAccountPreference(account));
}
}
if (!mProfile.isChild()) {
......@@ -309,6 +312,39 @@ public class AccountManagementFragment extends PreferenceFragmentCompat
}
}
private Preference createAccountPreference(Account account) {
Preference accountPreference = new Preference(getStyledContext());
accountPreference.setLayoutResource(R.layout.account_management_account_row);
accountPreference.setTitle(account.name);
accountPreference.setIcon(
mProfileDataCache.getProfileDataOrDefault(account.name).getImage());
accountPreference.setOnPreferenceClickListener(SyncSettingsUtils.toOnClickListener(
this, () -> SigninUtils.openSettingsForAccount(getActivity(), account)));
return accountPreference;
}
private Preference createManageYourGoogleAccountPreference() {
Preference manageYourGoogleAccountPreference = new Preference(getStyledContext());
manageYourGoogleAccountPreference.setLayoutResource(
R.layout.account_management_account_row);
manageYourGoogleAccountPreference.setTitle(R.string.manage_your_google_account);
manageYourGoogleAccountPreference.setIcon(R.drawable.ic_google_services_48dp);
manageYourGoogleAccountPreference.setOnPreferenceClickListener(
SyncSettingsUtils.toOnClickListener(
this, () -> SyncSettingsUtils.openGoogleMyAccount(getActivity())));
return manageYourGoogleAccountPreference;
}
private Preference createDividerPreference(@LayoutRes int layoutResId) {
Preference dividerPreference = new Preference(getStyledContext());
dividerPreference.setLayoutResource(layoutResId);
return dividerPreference;
}
private ChromeBasePreference createAddAccountPreference() {
ChromeBasePreference addAccountPreference = new ChromeBasePreference(getStyledContext());
addAccountPreference.setLayoutResource(R.layout.account_management_account_row);
......
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