Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 50eb81f1 authored by Fan Zhang's avatar Fan Zhang
Browse files

Style action bar during onResume instead of onCreate

Change-Id: Ib57bf128b644737b5a34238ec85ca6d740543c5f
Fix: 64284689
Bug: 64297479
Test: robotests
parent 446c5b08
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
        mRemoveAccountController = new RemoveAccountPreferenceController(context, this);
        controllers.add(mRemoveAccountController);
        controllers.add(new AccountHeaderPreferenceController(
                context, getLifecycle(), getActivity(), this, getArguments()));
                context, getLifecycle(), getActivity(), this /* host */, getArguments()));
        return controllers;
    }

+16 −10
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.settings.accounts;

import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_ACCOUNT;
import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_USER_HANDLE;

import android.accounts.Account;
import android.app.Activity;
import android.content.Context;
@@ -31,12 +34,11 @@ import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.accounts.AuthenticatorHelper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;

import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_ACCOUNT;
import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_USER_HANDLE;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnResume;

public class AccountHeaderPreferenceController extends AbstractPreferenceController
        implements PreferenceControllerMixin {
        implements PreferenceControllerMixin, LifecycleObserver, OnResume {

    private static final String KEY_ACCOUNT_HEADER = "account_header";

@@ -44,14 +46,14 @@ public class AccountHeaderPreferenceController extends AbstractPreferenceControl
    private final PreferenceFragment mHost;
    private final Account mAccount;
    private final UserHandle mUserHandle;
    private final Lifecycle mLifecycle;

    private LayoutPreference mHeaderPreference;

    public AccountHeaderPreferenceController(Context context, Lifecycle lifecycle,
            Activity activity, PreferenceFragment host, Bundle args) {
        super(context);
        mActivity = activity;
        mHost = host;
        mLifecycle = lifecycle;
        if (args != null && args.containsKey(KEY_ACCOUNT)) {
            mAccount = args.getParcelable(KEY_ACCOUNT);
        } else {
@@ -63,6 +65,9 @@ public class AccountHeaderPreferenceController extends AbstractPreferenceControl
        } else {
            mUserHandle = null;
        }
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
    }

    @Override
@@ -78,14 +83,15 @@ public class AccountHeaderPreferenceController extends AbstractPreferenceControl
    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        final LayoutPreference headerPreference =
                (LayoutPreference) screen.findPreference(KEY_ACCOUNT_HEADER);
        mHeaderPreference = (LayoutPreference) screen.findPreference(KEY_ACCOUNT_HEADER);
    }

    @Override
    public void onResume() {
        final AuthenticatorHelper helper = new AuthenticatorHelper(mContext, mUserHandle, null);

        EntityHeaderController
                .newInstance(mActivity, mHost, headerPreference.findViewById(R.id.entity_header))
                .setRecyclerView(mHost.getListView(), mLifecycle)
                .newInstance(mActivity, mHost, mHeaderPreference.findViewById(R.id.entity_header))
                .setLabel(mAccount.name)
                .setIcon(helper.getDrawableForType(mContext, mAccount.type))
                .done(mActivity, true /* rebindButtons */);
+9 −7
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@

package com.android.settings.accounts;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;

import android.accounts.Account;
import android.app.Activity;
import android.content.Context;
@@ -26,10 +30,10 @@ import android.support.v7.preference.PreferenceScreen;
import android.widget.TextView;

import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.accounts.AuthenticatorHelper;
import com.android.settingslib.core.lifecycle.Lifecycle;

@@ -44,10 +48,6 @@ import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;


@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -84,19 +84,21 @@ public class AccountHeaderPreferenceControllerTest {

    @Test
    @Config(shadows = ShadowAuthenticatorHelper.class)
    public void displayPreference_shouldDisplayAccountInEntityHeader() {
    public void onResume_shouldDisplayAccountInEntityHeader() {
        final Lifecycle lifecycle = new Lifecycle();
        final Account account = new Account("name1@abc.com", "com.abc");
        Bundle args = new Bundle();
        args.putParcelable(AccountDetailDashboardFragment.KEY_ACCOUNT, account);
        args.putParcelable(AccountDetailDashboardFragment.KEY_USER_HANDLE, UserHandle.CURRENT);
        mController = new AccountHeaderPreferenceController(RuntimeEnvironment.application,
                new Lifecycle(), mActivity, mFragment, args);
                lifecycle, mActivity, mFragment, args);

        assertThat(mController.isAvailable()).isTrue();

        when(mScreen.findPreference(anyString())).thenReturn(mHeaderPreference);

        mController.displayPreference(mScreen);
        lifecycle.onResume();

        final CharSequence label =
                ((TextView) mHeaderPreference.findViewById(R.id.entity_header_title)).getText();