diff --git a/res/layout/condition_header.xml b/res/layout/condition_header.xml index f2143193ace..e33157e717e 100644 --- a/res/layout/condition_header.xml +++ b/res/layout/condition_header.xml @@ -26,7 +26,7 @@ diff --git a/res/layout/settings_homepage.xml b/res/layout/settings_homepage.xml index 83c771c3302..0ba36096672 100644 --- a/res/layout/settings_homepage.xml +++ b/res/layout/settings_homepage.xml @@ -15,8 +15,43 @@ limitations under the License. --> - + android:layout_height="wrap_content" + android:orientation="vertical"> + + + + + + + + + + + + diff --git a/res/layout/settings_homepage_container.xml b/res/layout/settings_homepage_container.xml index ba8b48adb03..78ec39f8416 100644 --- a/res/layout/settings_homepage_container.xml +++ b/res/layout/settings_homepage_container.xml @@ -15,44 +15,28 @@ limitations under the License. --> - + android:layout_height="match_parent"> - - - - - - - - - - - - + android:orientation="vertical" + android:descendantFocusability="blocksDescendants"> - + + + + + + + + diff --git a/res/values/dimens.xml b/res/values/dimens.xml index edece3cb930..dc39475d66e 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -311,6 +311,7 @@ 10dp 5dp + 36dp 24dp @@ -357,4 +358,6 @@ 24dp + + diff --git a/res/values/strings.xml b/res/values/strings.xml index c81920e08de..a842d36d1dd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10271,4 +10271,9 @@ Medical info, emergency contacts + + + See more + + See less diff --git a/res/xml/network_setting_fragment.xml b/res/xml/network_setting_fragment.xml index 43cadab7671..f6b8bed0a89 100644 --- a/res/xml/network_setting_fragment.xml +++ b/res/xml/network_setting_fragment.xml @@ -99,7 +99,7 @@ - - { - switch (item.getItemId()) { - case R.id.homepage_personal_settings: - switchFragment(new PersonalSettingsFragment(), PERSONAL_SETTINGS_TAG, - ALL_SETTINGS_TAG); - return true; - - case R.id.homepage_all_settings: - switchFragment(new TopLevelSettings(), ALL_SETTINGS_TAG, - PERSONAL_SETTINGS_TAG); - return true; - } - return false; - }); - - if (savedInstanceState == null) { - // savedInstanceState is null, this is first load. - // Default to open contextual cards. - switchFragment(new PersonalSettingsFragment(), PERSONAL_SETTINGS_TAG, - ALL_SETTINGS_TAG); - } + showFragment(new PersonalSettingsFragment(), R.id.suggestion_content, SUGGESTION_TAG); + showFragment(new TopLevelSettings(), R.id.main_content, MAIN_TAG); } public static boolean isDynamicHomepageEnabled(Context context) { return FeatureFlagUtils.isEnabled(context, FeatureFlags.DYNAMIC_HOMEPAGE); } - private void switchFragment(Fragment fragment, String showFragmentTag, String hideFragmentTag) { + private void showFragment(Fragment fragment, int id, String tag) { final FragmentManager fragmentManager = getSupportFragmentManager(); final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - - final Fragment hideFragment = fragmentManager.findFragmentByTag(hideFragmentTag); - if (hideFragment != null) { - fragmentTransaction.hide(hideFragment); - } - - Fragment showFragment = fragmentManager.findFragmentByTag(showFragmentTag); - if (showFragment == null) { - fragmentTransaction.add(R.id.main_content, fragment, showFragmentTag); - } else { - fragmentTransaction.show(showFragment); - } + fragmentTransaction.add(id, fragment, tag); fragmentTransaction.commit(); } } \ No newline at end of file diff --git a/src/com/android/settings/network/telephony/MobileNetworkFragment.java b/src/com/android/settings/network/telephony/MobileNetworkFragment.java index b31c1a10991..4b1e27a9014 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkFragment.java +++ b/src/com/android/settings/network/telephony/MobileNetworkFragment.java @@ -19,6 +19,7 @@ package com.android.settings.network.telephony; import static android.provider.Telephony.Carriers.ENFORCE_MANAGED_URI; import android.app.ActionBar; +import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -41,6 +42,7 @@ import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; +import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; @@ -73,6 +75,8 @@ public class MobileNetworkFragment extends DashboardFragment implements private static final String LOG_TAG = "NetworkSettings"; private static final boolean DBG = true; public static final int REQUEST_CODE_EXIT_ECM = 17; + @VisibleForTesting + static final String KEY_CLICKED_PREF = "key_clicked_pref"; //String keys for preference lookup private static final String BUTTON_PREFERED_NETWORK_MODE = "preferred_network_mode_key"; @@ -123,9 +127,8 @@ public class MobileNetworkFragment extends DashboardFragment implements //GsmUmts options and Cdma options GsmUmtsOptions mGsmUmtsOptions; - CdmaOptions mCdmaOptions; - private Preference mClickedPreference; + private String mClickedPrefKey; private boolean mShow4GForLTE; private boolean mIsGlobalCdma; private boolean mOnlyAutoSelectInHomeNW; @@ -148,6 +151,7 @@ public class MobileNetworkFragment extends DashboardFragment implements return true; } sendMetricsEventPreferenceClicked(getPreferenceScreen(), preference); + final String key = preference.getKey(); /** TODO: Refactor and get rid of the if's using subclasses */ if (preference.getKey().equals(BUTTON_4G_LTE_KEY)) { @@ -155,16 +159,13 @@ public class MobileNetworkFragment extends DashboardFragment implements } else if (mGsmUmtsOptions != null && mGsmUmtsOptions.preferenceTreeClick(preference) == true) { return true; - } else if (mCdmaOptions != null && - mCdmaOptions.preferenceTreeClick(preference) == true) { + } else if (TextUtils.equals(key, BUTTON_CDMA_SYSTEM_SELECT_KEY) + || TextUtils.equals(key, BUTTON_CDMA_SUBSCRIPTION_KEY)) { if (mTelephonyManager.getEmergencyCallbackMode()) { - - mClickedPreference = preference; - - // In ECM mode launch ECM app dialog startActivityForResult( new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null), REQUEST_CODE_EXIT_ECM); + mClickedPrefKey = key; } return true; } @@ -262,6 +263,15 @@ public class MobileNetworkFragment extends DashboardFragment implements updatePhone(); Log.i(LOG_TAG, "onCreate:-"); + + onRestoreInstance(icicle); + } + + @VisibleForTesting + void onRestoreInstance(Bundle icicle) { + if (icicle != null) { + mClickedPrefKey = icicle.getString(KEY_CLICKED_PREF); + } } @Override @@ -342,6 +352,12 @@ public class MobileNetworkFragment extends DashboardFragment implements return null; } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putString(KEY_CLICKED_PREF, mClickedPrefKey); + } + private boolean hasActiveSubscriptions() { return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID; } @@ -405,9 +421,7 @@ public class MobileNetworkFragment extends DashboardFragment implements == ServiceState.STATE_IN_SERVICE) { final int phoneType = mTelephonyManager.getPhoneType(); - if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) { - updateCdmaOptions(this, prefSet, mSubId); - } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) { + if (phoneType == PhoneConstants.PHONE_TYPE_GSM) { updateGsmUmtsOptions(this, prefSet, phoneSubId); } else { throw new IllegalStateException("Unexpected phone type: " + phoneType); @@ -420,7 +434,6 @@ public class MobileNetworkFragment extends DashboardFragment implements // set the listener for the mButtonPreferredNetworkMode list preference so we can issue // change Preferred Network Mode. - updateCdmaOptions(this, prefSet, mSubId); updateGsmUmtsOptions(this, prefSet, phoneSubId); } @@ -513,33 +526,17 @@ public class MobileNetworkFragment extends DashboardFragment implements return true; } - private boolean is4gLtePrefEnabled(PersistableBundle carrierConfig) { - return (mTelephonyManager.getCallState(mSubId) - == TelephonyManager.CALL_STATE_IDLE) - && mImsMgr != null - && mImsMgr.isNonTtyOrTtyOnVolteEnabled() - && carrierConfig.getBoolean( - CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL); - } - @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_CODE_EXIT_ECM: - Boolean isChoiceYes = data.getBooleanExtra( - EXTRA_EXIT_ECM_RESULT, false); - if (isChoiceYes) { - // If the phone exits from ECM mode, show the CDMA Options - final String key = mClickedPreference.getKey(); - if (TextUtils.equals(key, - mCdmaSystemSelectPreferenceController.getPreferenceKey())) { - mCdmaSystemSelectPreferenceController.showDialog(); - } else if (TextUtils.equals(key, - mCdmaSubscriptionPreferenceController.getPreferenceKey())) { - mCdmaSubscriptionPreferenceController.showDialog(); + if (resultCode != Activity.RESULT_CANCELED) { + // If the phone exits from ECM mode, show the CDMA + final Preference preference = getPreferenceScreen() + .findPreference(mClickedPrefKey); + if (preference != null) { + preference.performClick(); } - } else { - // do nothing } break; @@ -624,14 +621,6 @@ public class MobileNetworkFragment extends DashboardFragment implements } } - private void controlCdmaOptions(boolean enable) { - PreferenceScreen prefSet = getPreferenceScreen(); - if (prefSet == null) { - return; - } - updateCdmaOptions(this, prefSet, mSubId); - } - private boolean isSupportTdscdma() { if (getResources().getBoolean(R.bool.config_support_tdscdma)) { return true; @@ -733,16 +722,6 @@ public class MobileNetworkFragment extends DashboardFragment implements } } - private void updateCdmaOptions(PreferenceFragmentCompat prefFragment, PreferenceScreen prefScreen, - int subId) { - // We don't want to re-create CdmaOptions if already exists. Otherwise, the preferences - // inside it will also be re-created which causes unexpected behavior. For example, - // the open dialog gets dismissed or detached after pause / resume. - if (mCdmaOptions == null) { - mCdmaOptions = new CdmaOptions(prefFragment, prefScreen, subId); - } - } - private static Intent buildPhoneAccountConfigureIntent( Context context, PhoneAccountHandle accountHandle) { Intent intent = buildConfigureIntent( diff --git a/src/com/android/settings/network/telephony/cdma/CdmaBasePreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaBasePreferenceController.java index 3e9ebc66fc8..6258f9df014 100644 --- a/src/com/android/settings/network/telephony/cdma/CdmaBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/cdma/CdmaBasePreferenceController.java @@ -82,6 +82,9 @@ public abstract class CdmaBasePreferenceController extends BasePreferenceControl public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); + if (mPreference instanceof CdmaListPreference) { + ((CdmaListPreference) mPreference).setSubId(mSubId); + } } /** diff --git a/src/com/android/settings/network/telephony/cdma/CdmaListPreference.java b/src/com/android/settings/network/telephony/cdma/CdmaListPreference.java new file mode 100644 index 00000000000..14c71692946 --- /dev/null +++ b/src/com/android/settings/network/telephony/cdma/CdmaListPreference.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.network.telephony.cdma; + +import android.content.Context; +import android.telephony.TelephonyManager; +import android.util.AttributeSet; + +import androidx.preference.ListPreference; + +/** + * {@link ListPreference} that will launch ECM dialog when in ECM mode + */ +public class CdmaListPreference extends ListPreference { + private TelephonyManager mTelephonyManager; + + public CdmaListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onClick() { + // Only show dialog when it is not in ECM + if (mTelephonyManager == null || !mTelephonyManager.getEmergencyCallbackMode()) { + super.onClick(); + } + } + + public void setSubId(int subId) { + mTelephonyManager = TelephonyManager.from(getContext()).createForSubscriptionId(subId); + } +} diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java index eb14664f030..41bf3efc78c 100644 --- a/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java +++ b/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceController.java @@ -77,14 +77,6 @@ public class CdmaSubscriptionPreferenceController extends CdmaBasePreferenceCont return false; } - public void showDialog() { - final int mode = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.CDMA_SUBSCRIPTION_MODE, Phone.PREFERRED_CDMA_SUBSCRIPTION); - - mPreference.setValue(Integer.toString(mode)); - mPreferenceManager.showDialog(mPreference); - } - @VisibleForTesting boolean deviceSupportsNvAndRuim() { // retrieve the list of subscription types supported by device. diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java index 95e5dae4278..4119c64e59c 100644 --- a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java +++ b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java @@ -62,12 +62,6 @@ public class CdmaSystemSelectPreferenceController extends CdmaBasePreferenceCont return false; } - public void showDialog() { - if (!mTelephonyManager.getEmergencyCallbackMode()) { - mPreferenceManager.showDialog(mPreference); - } - } - private void resetCdmaRoamingModeToDefault() { final ListPreference listPreference = (ListPreference) mPreference; //set the mButtonCdmaRoam diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index d6c1931c511..4b93fc1796d 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -41,6 +41,7 @@ import android.text.Editable; import android.text.InputType; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.FeatureFlagUtils; import android.util.Log; import android.view.KeyEvent; import android.view.View; @@ -155,6 +156,7 @@ public class WifiConfigController implements TextWatcher, private Spinner mProxySettingsSpinner; private Spinner mMeteredSettingsSpinner; private Spinner mHiddenSettingsSpinner; + private Spinner mPrivacySettingsSpinner; private TextView mHiddenWarningView; private TextView mProxyHostView; private TextView mProxyPortView; @@ -220,6 +222,12 @@ public class WifiConfigController implements TextWatcher, mSharedCheckBox = (CheckBox) mView.findViewById(R.id.shared); mMeteredSettingsSpinner = mView.findViewById(R.id.metered_settings); mHiddenSettingsSpinner = mView.findViewById(R.id.hidden_settings); + mPrivacySettingsSpinner = mView.findViewById(R.id.privacy_settings); + if (FeatureFlagUtils.isEnabled(mContext, + com.android.settings.core.FeatureFlags.WIFI_MAC_RANDOMIZATION)) { + View privacySettingsLayout = mView.findViewById(R.id.privacy_settings_fields); + privacySettingsLayout.setVisibility(View.VISIBLE); + } mHiddenSettingsSpinner.setOnItemSelectedListener(this); mHiddenWarningView = mView.findViewById(R.id.hidden_settings_warning); mHiddenWarningView.setVisibility( @@ -261,6 +269,7 @@ public class WifiConfigController implements TextWatcher, mHiddenSettingsSpinner.setSelection(config.hiddenSSID ? HIDDEN_NETWORK : NOT_HIDDEN_NETWORK); + //TODO(b/117957974): set MAC randomization value to mPrivacySettingsSpinner if (config.getIpAssignment() == IpAssignment.STATIC) { mIpSettingsSpinner.setSelection(STATIC_IP); showAdvancedFields = true; @@ -702,6 +711,10 @@ public class WifiConfigController implements TextWatcher, config.meteredOverride = mMeteredSettingsSpinner.getSelectedItemPosition(); } + if (mPrivacySettingsSpinner != null) { + //TODO(b/117957974): set MAC randomization value to WifiConfiguration + } + return config; } diff --git a/src/com/android/settings/wifi/WifiDialog.java b/src/com/android/settings/wifi/WifiDialog.java index b5bd32068de..2b8fb2d3236 100644 --- a/src/com/android/settings/wifi/WifiDialog.java +++ b/src/com/android/settings/wifi/WifiDialog.java @@ -19,7 +19,6 @@ package com.android.settings.wifi; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import android.util.FeatureFlagUtils; import android.view.View; import android.widget.Button; @@ -94,14 +93,6 @@ public class WifiDialog extends AlertDialog implements WifiConfigUiBase, if (mAccessPoint == null) { mController.hideForgetButton(); } - - if (FeatureFlagUtils.isEnabled(getContext(), - com.android.settings.core.FeatureFlags.WIFI_MAC_RANDOMIZATION)) { - View view = mView.findViewById(R.id.privacy_settings_fields); - if (view != null) { - view.setVisibility(View.VISIBLE); - } - } } public void onRestoreInstanceState(Bundle savedInstanceState) { diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 12ca26a7e6d..4837a88d8e9 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -1095,7 +1095,7 @@ public class WifiSettings extends RestrictedSettingsFragment protected void connect(final WifiConfiguration config, boolean isSavedNetwork) { // Log subtype if configuration is a saved network. - mMetricsFeatureProvider.action(getVisibilityLogger(), MetricsEvent.ACTION_WIFI_CONNECT, + mMetricsFeatureProvider.action(getContext(), MetricsEvent.ACTION_WIFI_CONNECT, isSavedNetwork); mWifiManager.connect(config, mConnectListener); mClickedConnect = true; @@ -1110,7 +1110,7 @@ public class WifiSettings extends RestrictedSettingsFragment @VisibleForTesting void handleAddNetworkRequest(int result, Intent data) { - if(result == Activity.RESULT_OK) { + if (result == Activity.RESULT_OK) { handleAddNetworkSubmitEvent(data); } mWifiTracker.resumeScanning(); diff --git a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java new file mode 100644 index 00000000000..894564987ca --- /dev/null +++ b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.network.telephony.cdma; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +import android.content.Context; +import android.telephony.TelephonyManager; + +import androidx.preference.PreferenceManager; + +import com.android.settings.testutils.SettingsRobolectricTestRunner; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; + +@RunWith(SettingsRobolectricTestRunner.class) +public class CdmaListPreferenceTest { + private static final int SUB_ID = 2; + + @Mock + private TelephonyManager mTelephonyManager; + @Mock + private PreferenceManager mPreferenceManager; + + private CdmaListPreference mPreference; + private Context mContext; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + mContext = spy(RuntimeEnvironment.application); + doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE); + doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class); + doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID); + + mPreference = spy(new CdmaListPreference(mContext, null)); + mPreference.setSubId(SUB_ID); + } + + @Test + public void onClick_inEcm_doNothing() { + doReturn(true).when(mTelephonyManager).getEmergencyCallbackMode(); + + mPreference.onClick(); + + verify(mPreferenceManager, never()).showDialog(mPreference); + } +} diff --git a/tests/unit/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/unit/src/com/android/settings/homepage/SettingsHomepageActivityTest.java deleted file mode 100644 index 89ec476ed4c..00000000000 --- a/tests/unit/src/com/android/settings/homepage/SettingsHomepageActivityTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.homepage; - -import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; - -import static com.android.settings.homepage.SettingsHomepageActivity.PERSONAL_SETTINGS_TAG; - -import static com.google.common.truth.Truth.assertThat; - -import android.content.Context; -import android.content.Intent; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; -import android.util.FeatureFlagUtils; - -import androidx.fragment.app.Fragment; - -import com.android.settings.core.FeatureFlags; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -@RunWith(AndroidJUnit4.class) -public class SettingsHomepageActivityTest { - - private Context mContext; - private SettingsHomepageActivity mActivity; - - @Before - public void setUp() { - mContext = InstrumentationRegistry.getTargetContext(); - FeatureFlagUtils.setEnabled(mContext, FeatureFlags.DYNAMIC_HOMEPAGE, true); - } - - @After - public void tearDown() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlags.DYNAMIC_HOMEPAGE, false); - } - - @Test - public void launchHomepage_shouldOpenPersonalSettings() { - final Intent intent = new Intent().setClass(mContext, SettingsHomepageActivity.class) - .addFlags(FLAG_ACTIVITY_NEW_TASK); - - mActivity = (SettingsHomepageActivity) InstrumentationRegistry.getInstrumentation() - .startActivitySync(intent); - - final Fragment fragment = mActivity.getSupportFragmentManager() - .findFragmentByTag(PERSONAL_SETTINGS_TAG); - - assertThat(fragment).isInstanceOf(PersonalSettingsFragment.class); - } - -}