Loading src/com/android/settings/SettingsActivity.java +24 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -230,7 +235,6 @@ public class SettingsActivity extends SettingsDrawerActivity if (!mDisplaySearch) { return false; } mSearchFeatureProvider.setUpSearchMenu(menu, this); return true; } Loading Loading @@ -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 Loading tests/robotests/src/com/android/settings/SettingsActivityTest.java +63 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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()); } Loading @@ -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)); Loading @@ -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(); } } Loading
src/com/android/settings/SettingsActivity.java +24 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -230,7 +235,6 @@ public class SettingsActivity extends SettingsDrawerActivity if (!mDisplaySearch) { return false; } mSearchFeatureProvider.setUpSearchMenu(menu, this); return true; } Loading Loading @@ -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 Loading
tests/robotests/src/com/android/settings/SettingsActivityTest.java +63 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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()); } Loading @@ -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)); Loading @@ -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(); } }