diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 22afa53218b..3949f365707 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -197,7 +197,6 @@ + @@ -370,6 +374,16 @@ android:value="true"/> + + + + + Tap the switch button to move between both options - Switch to accessibility button? + This may slow down your keyboard - Using triple-tap to magnify part of your screen causes typing and other delays.\n\nThe accessibility button floats on your screen over other apps. Tap it to magnify. - - Switch to accessibility button - - Use triple-tap + When using triple-tap to magnify part of your screen, you may notice issues over the keyboard.\n\nTo avoid this, you can change your magnification shortcut from triple-tap to another option.\nChange setting + + Continue anyway + + Cancel Magnification settings diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml index 7d1ff09ae6d..673994a9a9a 100644 --- a/res/xml/mobile_network_settings.xml +++ b/res/xml/mobile_network_settings.xml @@ -223,7 +223,6 @@ diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index ebfff6b2751..7154081841e 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -90,6 +90,7 @@ public class Settings extends SettingsActivity { public static class PublicVolumeSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiSettingsActivity extends SettingsActivity { /* empty */ } public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ } + public static class NetworkSelectActivity extends SettingsActivity { /* empty */ } /** Activity for the Wi-Fi network details settings. */ public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 2b5f695ecbd..d3d3604a2cc 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -377,8 +377,9 @@ public class SettingsActivity extends SettingsBaseActivity public static Intent getTrampolineIntent(Intent intent, String highlightMenuKey) { final Intent detailIntent = new Intent(intent); // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it. - final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY); - trampolineIntent.replaceExtras(detailIntent); + final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY) + .setPackage(Utils.SETTINGS_PACKAGE_NAME) + .replaceExtras(detailIntent); // Relay detail intent data to prevent failure of Intent#ParseUri. // If Intent#getData() is not null, Intent#toUri will return an Uri which has the scheme of diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java index 3a6bea9caaa..7a28e3917e0 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java +++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java @@ -38,7 +38,6 @@ import com.android.settings.search.actionbar.SearchMenuController; import com.android.settings.support.actionbar.HelpResourceProvider; import com.android.settingslib.core.instrumentation.Instrumentable; import com.android.settingslib.transition.SettingsTransitionHelper; -import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType; import com.google.android.setupcompat.util.WizardManagerHelper; import com.google.android.setupdesign.util.ThemeHelper; @@ -130,7 +129,6 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit final Intent intent = new Intent(this, AccessibilityScreenSizeForSetupWizardActivity.class); intent.putExtra(VISION_FRAGMENT_NO, FragmentType.FONT_SIZE); - intent.putExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_FADE); startActivity(intent); Log.d(LOG_TAG, "Launch font size settings"); finish(); diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java index 037f5846a88..2ce22061907 100644 --- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java +++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java @@ -53,6 +53,7 @@ import java.io.IOException; public class RemoveAccountPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, OnClickListener { + private static final String TAG = "RemoveAccountPrefController"; private static final String KEY_REMOVE_ACCOUNT = "remove_account"; private final MetricsFeatureProvider mMetricsFeatureProvider; @@ -175,10 +176,11 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl | IOException | AuthenticatorException e) { // handled below - } - if (failed) { + Log.w(TAG, "Remove account error: " + e); RemoveAccountFailureDialog.show(getTargetFragment()); - } else { + } + Log.i(TAG, "failed: " + failed); + if (!failed) { targetActivity.finish(); } }, null, mUserHandle); @@ -210,7 +212,7 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl final Context context = getActivity(); return new AlertDialog.Builder(context) - .setTitle(R.string.really_remove_account_title) + .setTitle(R.string.remove_account_label) .setMessage(R.string.remove_account_failed) .setPositiveButton(android.R.string.ok, null) .create(); diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 9f819a6d6eb..804f856a139 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -120,6 +120,7 @@ import com.android.settings.network.NetworkDashboardFragment; import com.android.settings.network.NetworkProviderSettings; import com.android.settings.network.apn.ApnEditor; import com.android.settings.network.apn.ApnSettings; +import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.nfc.AndroidBeam; import com.android.settings.nfc.PaymentSettings; import com.android.settings.notification.ConfigureNotificationSettings; @@ -320,6 +321,7 @@ public class SettingsGateway { InteractAcrossProfilesDetails.class.getName(), MediaControlsSettings.class.getName(), NetworkProviderSettings.class.getName(), + NetworkSelectSettings.class.getName(), AlarmsAndRemindersDetails.class.getName(), MediaManagementAppsDetails.class.getName() }; @@ -343,6 +345,7 @@ public class SettingsGateway { Settings.WifiSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.NetworkProviderSettingsActivity.class.getName(), + Settings.NetworkSelectActivity.class.getName(), // Home page > Connected devices Settings.BluetoothSettingsActivity.class.getName(), Settings.WifiDisplaySettingsActivity.class.getName(), diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java index 094793884f3..cbfbd34ced5 100644 --- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java +++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java @@ -18,7 +18,6 @@ package com.android.settings.fuelgauge; import android.content.ComponentName; import android.content.Context; -import android.content.Intent; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; @@ -32,8 +31,6 @@ import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.utils.ThreadUtils; -import java.util.HashMap; - public class TopLevelBatteryPreferenceController extends BasePreferenceController implements LifecycleObserver, OnStart, OnStop, BatteryPreferenceController { @@ -43,13 +40,9 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle Preference mPreference; private final BatteryBroadcastReceiver mBatteryBroadcastReceiver; private BatteryInfo mBatteryInfo; - private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider; private String mBatteryStatusLabel; - @VisibleForTesting - protected static HashMap sReplacingActivityMap = new HashMap<>(); - public TopLevelBatteryPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext); @@ -63,8 +56,6 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle }, true /* shortString */); }); - mBatterySettingsFeatureProvider = FeatureFactory.getFactory(context) - .getBatterySettingsFeatureProvider(context); mBatteryStatusFeatureProvider = FeatureFactory.getFactory(context) .getBatteryStatusFeatureProvider(context); } @@ -81,37 +72,6 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mPreference = screen.findPreference(getPreferenceKey()); } - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - String prefFrag = preference.getFragment(); - if (prefFrag == null || prefFrag.isEmpty()) { - // Not a redirect, so use the default. - return super.handlePreferenceTreeClick(preference); - } - - ComponentName currentFragmentName = convertClassPathToComponentName(prefFrag); - if (currentFragmentName == null) { - return super.handlePreferenceTreeClick(preference); - } - - ComponentName replacingActivity; - if (sReplacingActivityMap.containsKey(prefFrag)) { - replacingActivity = sReplacingActivityMap.get(prefFrag); - } else { - replacingActivity = mBatterySettingsFeatureProvider.getReplacingActivity( - currentFragmentName); - sReplacingActivityMap.put(prefFrag, replacingActivity); - } - - if (replacingActivity == null || currentFragmentName.compareTo(replacingActivity) == 0) { - return super.handlePreferenceTreeClick(preference); - } - Intent intent = new Intent(); - intent.setComponent(currentFragmentName); - mContext.startActivity(intent); - return true; - } - @Override public void onStart() { mBatteryBroadcastReceiver.register(); diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index d5e82353bd3..9076053ff65 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -125,11 +125,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements } Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion); final View homepageView = mHomepageView; - if (!mIsTwoPaneLastTime) { - mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); - } else { - mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); - } + mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); mHomepageView = null; mLoadedListeners.forEach(listener -> listener.onHomepageLoaded()); diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java index 2bb8e34b408..f2e5a3528f7 100644 --- a/src/com/android/settings/homepage/TopLevelSettings.java +++ b/src/com/android/settings/homepage/TopLevelSettings.java @@ -54,6 +54,7 @@ public class TopLevelSettings extends DashboardFragment implements private static final String PREF_KEY_SUPPORT = "top_level_support"; private TopLevelHighlightMixin mHighlightMixin; + private boolean mFirstStarted = true; public TopLevelSettings() { final Bundle args = new Bundle(); @@ -135,9 +136,11 @@ public class TopLevelSettings extends DashboardFragment implements @Override public void onStart() { - // Set default highlight menu key for 1-pane homepage since it will show the placeholder - // page once changing back to 2-pane. - if (!ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) { + if (mFirstStarted) { + mFirstStarted = false; + } else if (!ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) { + // Set default highlight menu key for 1-pane homepage since it will show the placeholder + // page once changing back to 2-pane. setHighlightMenuKey(getString(SettingsHomepageActivity.DEFAULT_HIGHLIGHT_MENU_KEY), /* scrollNeeded= */ false); } diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java index 9e1b6da24e9..554188872ff 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -316,7 +316,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl : (serviceState.getState() == ServiceState.STATE_IN_SERVICE); if (isDataInService || isVoiceInService || isCarrierNetworkActive) { icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, - !mTelephonyManager.isDataEnabled()); + !tmForSubId.isDataEnabled()); } final boolean isActiveCellularNetwork = diff --git a/src/com/android/settings/network/telephony/NetworkScanHelper.java b/src/com/android/settings/network/telephony/NetworkScanHelper.java index e0a9c5e94ae..740b6bba2bc 100644 --- a/src/com/android/settings/network/telephony/NetworkScanHelper.java +++ b/src/com/android/settings/network/telephony/NetworkScanHelper.java @@ -227,6 +227,7 @@ public class NetworkScanHelper { mExecutor, mInternalNetworkScanCallback); if (mNetworkScanRequester == null) { + Log.d(TAG, "mNetworkScanRequester == null"); onError(NetworkScan.ERROR_RADIO_INTERFACE_ERROR); } } diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java index c1c0f8f0dbd..9faecbb1805 100644 --- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java +++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java @@ -19,6 +19,7 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -98,7 +99,11 @@ public class NetworkSelectSettings extends DashboardFragment { mUseNewApi = getContext().getResources().getBoolean( com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI); - mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID); + Intent intent = getActivity().getIntent(); + if (intent != null) { + mSubId = intent.getIntExtra(Settings.EXTRA_SUB_ID, + SubscriptionManager.INVALID_SUBSCRIPTION_ID); + } mPreferenceCategory = findPreference(PREF_KEY_NETWORK_OPERATORS); mStatusMessagePreference = new Preference(getContext()); @@ -121,13 +126,12 @@ public class NetworkSelectSettings extends DashboardFragment { mIsAggregationEnabled = getContext().getResources().getBoolean( R.bool.config_network_selection_list_aggregation_enabled); Log.d(TAG, "init: mUseNewApi:" + mUseNewApi - + " ,mIsAggregationEnabled:" + mIsAggregationEnabled); + + " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - final Activity activity = getActivity(); if (activity != null) { mProgressHeader = setPinnedHeaderView(R.layout.progress_header) diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java index 997235c8a0c..028c4e77a78 100644 --- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java @@ -20,9 +20,8 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.app.ProgressDialog; -import android.app.settings.SettingsEnums; import android.content.Context; -import android.os.Bundle; +import android.content.Intent; import android.os.Handler; import android.os.HandlerExecutor; import android.os.Looper; @@ -43,10 +42,8 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.R; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; -import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyTogglePreferenceController; import com.android.settingslib.utils.ThreadUtils; @@ -151,25 +148,26 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon public boolean setChecked(boolean isChecked) { if (isChecked) { setAutomaticSelectionMode(); - return false; } else { - final Bundle bundle = new Bundle(); - bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); - new SubSettingLauncher(mContext) - .setDestination(NetworkSelectSettings.class.getName()) - .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) - .setTitleRes(R.string.choose_network_title) - .setArguments(bundle) - .launch(); - return false; + if (mSwitchPreference != null) { + Intent intent = new Intent(); + intent.setClassName("com.android.settings", + "com.android.settings.Settings$NetworkSelectActivity"); + intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); + mSwitchPreference.setIntent(intent); + } } + return false; } @VisibleForTesting Future setAutomaticSelectionMode() { final long startMillis = SystemClock.elapsedRealtime(); showAutoSelectProgressBar(); - mSwitchPreference.setEnabled(false); + if (mSwitchPreference != null) { + mSwitchPreference.setIntent(null); + mSwitchPreference.setEnabled(false); + } return ThreadUtils.postOnBackgroundThread(() -> { // set network selection mode in background mTelephonyManager.setNetworkSelectionModeAutomatic(); diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java index 4047009b325..54f5ce15d72 100644 --- a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java @@ -19,14 +19,12 @@ package com.android.settings.network.telephony.gsm; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; -import android.app.settings.SettingsEnums; import android.content.Context; -import android.os.Bundle; +import android.content.Intent; import android.provider.Settings; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import android.text.TextUtils; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; @@ -35,10 +33,8 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; -import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyBasePreferenceController; /** @@ -102,6 +98,12 @@ public class OpenNetworkSelectPagePreferenceController extends super.updateState(preference); preference.setEnabled(mTelephonyManager.getNetworkSelectionMode() != TelephonyManager.NETWORK_SELECTION_MODE_AUTO); + + Intent intent = new Intent(); + intent.setClassName("com.android.settings", + "com.android.settings.Settings$NetworkSelectActivity"); + intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); + preference.setIntent(intent); } @Override @@ -114,23 +116,6 @@ public class OpenNetworkSelectPagePreferenceController extends } } - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - if (TextUtils.equals(preference.getKey(), getPreferenceKey())) { - final Bundle bundle = new Bundle(); - bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); - new SubSettingLauncher(mContext) - .setDestination(NetworkSelectSettings.class.getName()) - .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) - .setTitleRes(R.string.choose_network_title) - .setArguments(bundle) - .launch(); - return true; - } - - return false; - } - public OpenNetworkSelectPagePreferenceController init(Lifecycle lifecycle, int subId) { mSubId = subId; mTelephonyManager = mContext.getSystemService(TelephonyManager.class) diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java index eef69884432..9e563f28ab1 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java @@ -21,11 +21,7 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_ import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -36,9 +32,7 @@ import android.content.Context; import androidx.preference.Preference; import com.android.settings.R; -import com.android.settings.testutils.FakeFeatureFactory; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -50,23 +44,13 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) public class TopLevelBatteryPreferenceControllerTest { private Context mContext; - private FakeFeatureFactory mFeatureFactory; private TopLevelBatteryPreferenceController mController; - private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mFeatureFactory = FakeFeatureFactory.setupForTest(); mContext = spy(Robolectric.setupActivity(Activity.class)); mController = new TopLevelBatteryPreferenceController(mContext, "test_key"); - mBatterySettingsFeatureProvider = - mFeatureFactory.batterySettingsFeatureProvider; - } - - @After - public void cleanUp() { - TopLevelBatteryPreferenceController.sReplacingActivityMap.clear(); } @Test @@ -80,54 +64,6 @@ public class TopLevelBatteryPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); } - @Test - public void handlePreferenceTreeClick_noFragment_noCustomActivityCalled() { - Preference preference = new Preference(mContext); - - assertThat(mController.handlePreferenceTreeClick(preference)).isFalse(); - } - - @Test - public void handlePreferenceTreeClick_sameActivityReturned_noCustomActivityCalled() { - String fragmentPath = "my.fragment.ClassName"; - Preference preference = mock(Preference.class); - when(preference.getFragment()).thenReturn(fragmentPath); - ComponentName pathName = mController.convertClassPathToComponentName(fragmentPath); - when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(pathName); - - assertThat(mController.handlePreferenceTreeClick(preference)).isFalse(); - } - - @Test - public void handlePreferenceTreeClick_newActivityReturned_newActivityRedirected() { - String fragmentPath = "my.fragment.ClassName"; - Preference preference = mock(Preference.class); - when(preference.getFragment()).thenReturn(fragmentPath); - String newFragmentPath = "my.fragment.NewClassName"; - ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath); - when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn( - newPathName); - doNothing().when(mContext).startActivity(any()); - - assertThat(mController.handlePreferenceTreeClick(preference)).isTrue(); - } - - @Test - public void handlePreferenceTreeClick_calledMultipleTimes_fetchedFromCache() { - String fragmentPath = "my.fragment.ClassName"; - Preference preference = mock(Preference.class); - when(preference.getFragment()).thenReturn(fragmentPath); - String newFragmentPath = "my.fragment.NewClassName"; - ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath); - when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn( - newPathName); - doNothing().when(mContext).startActivity(any()); - - assertThat(mController.handlePreferenceTreeClick(preference)).isTrue(); - assertThat(mController.handlePreferenceTreeClick(preference)).isTrue(); - verify(mBatterySettingsFeatureProvider, times(1)).getReplacingActivity(any()); - } - @Test public void convertClassPathToComponentName_nullInput_returnsNull() { assertThat(mController.convertClassPathToComponentName(null)).isNull();