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

Commit 190b560c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Search Icon persists through screen rotation" into oc-dev

parents 8d519f82 7d48ae80
Loading
Loading
Loading
Loading
+24 −4
Original line number Diff line number Diff line
@@ -83,7 +83,10 @@ public class SettingsActivity extends SettingsDrawerActivity

    // Constants for state save/restore
    private static final String SAVE_KEY_CATEGORIES = ":settings:categories";
    private static final String SAVE_KEY_SHOW_HOME_AS_UP = ":settings:show_home_as_up";
    @VisibleForTesting
    static final String SAVE_KEY_SHOW_HOME_AS_UP = ":settings:show_home_as_up";
    @VisibleForTesting
    static final String SAVE_KEY_SHOW_SEARCH = ":settings:show_search";

    /**
     * When starting this activity, the invoking Intent can contain this extra
@@ -192,8 +195,10 @@ public class SettingsActivity extends SettingsDrawerActivity

    private Button mNextButton;

    private boolean mDisplayHomeAsUpEnabled;
    private boolean mDisplaySearch;
    @VisibleForTesting
    boolean mDisplayHomeAsUpEnabled;
    @VisibleForTesting
    boolean mDisplaySearch;

    private boolean mIsShowingDashboard;
    private boolean mIsShortcut;
@@ -230,7 +235,6 @@ public class SettingsActivity extends SettingsDrawerActivity
        if (!mDisplaySearch) {
            return false;
        }

        mSearchFeatureProvider.setUpSearchMenu(menu, this);
        return true;
    }
@@ -513,12 +517,28 @@ public class SettingsActivity extends SettingsDrawerActivity
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        saveState(outState);
    }

    /**
     * For testing purposes to avoid crashes from final variables in Activity's onSaveInstantState.
     */
    @VisibleForTesting
    void saveState(Bundle outState) {
        if (mCategories.size() > 0) {
            outState.putParcelableArrayList(SAVE_KEY_CATEGORIES, mCategories);
        }

        outState.putBoolean(SAVE_KEY_SHOW_HOME_AS_UP, mDisplayHomeAsUpEnabled);
        outState.putBoolean(SAVE_KEY_SHOW_SEARCH, mDisplaySearch);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        mDisplayHomeAsUpEnabled = savedInstanceState.getBoolean(SAVE_KEY_SHOW_HOME_AS_UP);
        mDisplaySearch = savedInstanceState.getBoolean(SAVE_KEY_SHOW_SEARCH);
    }

    @Override
+63 −1
Original line number Diff line number Diff line
@@ -16,20 +16,28 @@

package com.android.settings;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;

import android.os.Bundle;
import android.view.Menu;
import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.doReturn;
@@ -42,6 +50,9 @@ import static org.mockito.Mockito.when;
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SettingsActivityTest {

    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
    private Context mContext;

    @Mock
    private FragmentManager mFragmentManager;
    @Mock
@@ -50,10 +61,15 @@ public class SettingsActivityTest {
    private Bitmap mBitmap;
    private SettingsActivity mActivity;

    private FakeFeatureFactory mFeatureFactory;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);

        FakeFeatureFactory.setupForTest(mContext);
        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);

        mActivity = spy(new SettingsActivity());
        doReturn(mBitmap).when(mActivity).getBitmapFromXmlResource(anyInt());
    }
@@ -61,7 +77,6 @@ public class SettingsActivityTest {
    @Test
    public void launchSettingFragment_nullExtraShowFragment_shouldNotCrash()
            throws ClassNotFoundException {
        mActivity = spy(new SettingsActivity());
        when(mActivity.getFragmentManager()).thenReturn(mFragmentManager);
        when(mFragmentManager.beginTransaction()).thenReturn(mock(FragmentTransaction.class));

@@ -76,4 +91,51 @@ public class SettingsActivityTest {

        verify(mTaskDescription).setIcon(any());
    }

    @Test
    public void testCreateOptionsMenu_setsUpSearch() {
        ReflectionHelpers.setField(mActivity, "mSearchFeatureProvider",
                mFeatureFactory.getSearchFeatureProvider());
        mActivity.mDisplaySearch = true;
        mActivity.onCreateOptionsMenu(null);

        verify(mFeatureFactory.getSearchFeatureProvider()).setUpSearchMenu(any(Menu.class),
                any(Activity.class));
    }

    @Test
    public void testSaveState_DisplaySearchSaved() {
        mActivity.mDisplaySearch = true;
        Bundle bundle = new Bundle();
        mActivity.saveState(bundle);

        assertThat((boolean) bundle.get(SettingsActivity.SAVE_KEY_SHOW_SEARCH)).isTrue();
    }

    @Test
    public void testSaveState_EnabledHomeSaved() {
        mActivity.mDisplayHomeAsUpEnabled = true;
        Bundle bundle = new Bundle();
        mActivity.saveState(bundle);

        assertThat((boolean) bundle.get(SettingsActivity.SAVE_KEY_SHOW_HOME_AS_UP)).isTrue();
    }

    @Test
    public void testRestoreState_DisplaySearchRestored() {
        Bundle bundle = new Bundle();
        bundle.putBoolean(SettingsActivity.SAVE_KEY_SHOW_SEARCH, true);
        mActivity.onRestoreInstanceState(bundle);

        assertThat(mActivity.mDisplaySearch).isTrue();
    }

    @Test
    public void testRestoreState_EnabledHomeRestored() {
        Bundle bundle = new Bundle();
        bundle.putBoolean(SettingsActivity.SAVE_KEY_SHOW_SEARCH, true);
        mActivity.onRestoreInstanceState(bundle);

        assertThat(mActivity.mDisplaySearch).isTrue();
    }
}