diff --git a/res/values/strings.xml b/res/values/strings.xml
index f2661bda11b..56dbc6b8e97 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8920,6 +8920,10 @@
Sleep after %1$s of inactivity
Wallpaper, sleep, font size
+
+
+ Sleep, font size
+
Sleep after 10 minutes of inactivity
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index db4e7d87838..b0e362c41a6 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -52,7 +52,7 @@
android:title="@string/wallpaper_settings_title"
settings:keywords="@string/keywords_display_wallpaper"
settings:useAdminDisabledSummary="true"
- settings:searchable="false">
+ settings:controller="com.android.settings.display.WallpaperPreferenceController">
diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml
index dbb106ec03d..889761bb134 100644
--- a/res/xml/top_level_settings.xml
+++ b/res/xml/top_level_settings.xml
@@ -59,10 +59,11 @@
+ android:fragment="com.android.settings.DisplaySettings"
+ settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>
1) {
mAppList = (PreferenceCategory) findPreference(KEY_APP_LIST);
- getLoaderManager().initLoader(LOADER_APP_PREF, Bundle.EMPTY, mAppPrefCallbacks);
+ LoaderManager.getInstance(this).restartLoader(LOADER_APP_PREF, Bundle.EMPTY,
+ mAppPrefCallbacks);
} else {
removePreference(KEY_APP_LIST);
}
@@ -221,7 +222,7 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
mDataSaverBackend.addListener(this);
}
mPolicy = services.mPolicyEditor.getPolicy(mTemplate);
- getLoaderManager().restartLoader(LOADER_CHART_DATA,
+ LoaderManager.getInstance(this).restartLoader(LOADER_CHART_DATA,
ChartDataLoaderCompat.buildArgs(mTemplate, mAppItem), mChartDataCallbacks);
updatePrefs();
}
diff --git a/src/com/android/settings/datausage/AppDataUsageV2.java b/src/com/android/settings/datausage/AppDataUsageV2.java
index 7515c51d5c5..6a31726ea06 100644
--- a/src/com/android/settings/datausage/AppDataUsageV2.java
+++ b/src/com/android/settings/datausage/AppDataUsageV2.java
@@ -177,7 +177,8 @@ public class AppDataUsageV2 extends DataUsageBaseFragment implements OnPreferenc
if (mPackages.size() > 1) {
mAppList = (PreferenceCategory) findPreference(KEY_APP_LIST);
- getLoaderManager().initLoader(LOADER_APP_PREF, Bundle.EMPTY, mAppPrefCallbacks);
+ LoaderManager.getInstance(this).restartLoader(LOADER_APP_PREF, Bundle.EMPTY,
+ mAppPrefCallbacks);
} else {
removePreference(KEY_APP_LIST);
}
@@ -201,7 +202,8 @@ public class AppDataUsageV2 extends DataUsageBaseFragment implements OnPreferenc
if (mDataSaverBackend != null) {
mDataSaverBackend.addListener(this);
}
- getLoaderManager().restartLoader(LOADER_APP_USAGE_DATA, null /* args */, mUidDataCallbacks);
+ LoaderManager.getInstance(this).restartLoader(LOADER_APP_USAGE_DATA, null /* args */,
+ mUidDataCallbacks);
updatePrefs();
}
diff --git a/src/com/android/settings/display/TopLevelDisplayPreferenceController.java b/src/com/android/settings/display/TopLevelDisplayPreferenceController.java
new file mode 100644
index 00000000000..88b87e0ba0b
--- /dev/null
+++ b/src/com/android/settings/display/TopLevelDisplayPreferenceController.java
@@ -0,0 +1,44 @@
+/*
+ * 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.display;
+
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+public class TopLevelDisplayPreferenceController extends BasePreferenceController {
+
+ public TopLevelDisplayPreferenceController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public CharSequence getSummary() {
+ if (new WallpaperPreferenceController(mContext, "dummy_key").isAvailable()) {
+ return mContext.getText(R.string.display_dashboard_summary);
+ } else {
+ return mContext.getText(R.string.display_dashboard_nowallpaper_summary);
+ }
+ }
+
+}
diff --git a/src/com/android/settings/display/WallpaperPreferenceController.java b/src/com/android/settings/display/WallpaperPreferenceController.java
index ff3be128ba5..0b091241aec 100644
--- a/src/com/android/settings/display/WallpaperPreferenceController.java
+++ b/src/com/android/settings/display/WallpaperPreferenceController.java
@@ -27,34 +27,30 @@ import android.util.Log;
import androidx.preference.Preference;
import com.android.settings.R;
-import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;
-import com.android.settingslib.core.AbstractPreferenceController;
import java.util.List;
-public class WallpaperPreferenceController extends AbstractPreferenceController implements
- PreferenceControllerMixin {
+public class WallpaperPreferenceController extends BasePreferenceController {
private static final String TAG = "WallpaperPrefController";
- public static final String KEY_WALLPAPER = "wallpaper";
-
private final String mWallpaperPackage;
private final String mWallpaperClass;
- public WallpaperPreferenceController(Context context) {
- super(context);
+ public WallpaperPreferenceController(Context context, String key) {
+ super(context, key);
mWallpaperPackage = mContext.getString(R.string.config_wallpaper_picker_package);
mWallpaperClass = mContext.getString(R.string.config_wallpaper_picker_class);
}
@Override
- public boolean isAvailable() {
+ public int getAvailabilityStatus() {
if (TextUtils.isEmpty(mWallpaperPackage) || TextUtils.isEmpty(mWallpaperClass)) {
Log.e(TAG, "No Wallpaper picker specified!");
- return false;
+ return UNSUPPORTED_ON_DEVICE;
}
final ComponentName componentName =
new ComponentName(mWallpaperPackage, mWallpaperClass);
@@ -63,12 +59,8 @@ public class WallpaperPreferenceController extends AbstractPreferenceController
intent.setComponent(componentName);
final List resolveInfos =
pm.queryIntentActivities(intent, 0 /* flags */);
- return resolveInfos != null && resolveInfos.size() != 0;
- }
-
- @Override
- public String getPreferenceKey() {
- return KEY_WALLPAPER;
+ return resolveInfos != null && !resolveInfos.isEmpty()
+ ? AVAILABLE_UNSEARCHABLE : CONDITIONALLY_UNAVAILABLE;
}
@Override
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
index bc1d0fa2fd4..f3fbf06310d 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
@@ -33,8 +33,6 @@ import androidx.annotation.VisibleForTesting;
import androidx.slice.Slice;
import com.android.settings.homepage.contextualcards.deviceinfo.BatterySlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DataUsageSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DeviceInfoSlice;
import com.android.settingslib.utils.AsyncLoaderCompat;
import java.util.ArrayList;
@@ -93,15 +91,6 @@ public class ContextualCardLoader extends AsyncLoaderCompat
final String packageName = mContext.getPackageName();
final double rankingScore = 0.0;
final List result = new ArrayList();
- result.add(new ContextualCard.Builder()
- .setSliceUri(DataUsageSlice.DATA_USAGE_CARD_URI)
- .setName(DataUsageSlice.PATH_DATA_USAGE)
- .setPackageName(packageName)
- .setRankingScore(rankingScore)
- .setAppVersion(appVersionCode)
- .setCardType(ContextualCard.CardType.SLICE)
- .setIsHalfWidth(false)
- .build());
result.add(new ContextualCard.Builder()
.setSliceUri(BatterySlice.BATTERY_CARD_URI)
.setName(BatterySlice.PATH_BATTERY_INFO)
@@ -111,15 +100,6 @@ public class ContextualCardLoader extends AsyncLoaderCompat
.setCardType(ContextualCard.CardType.SLICE)
.setIsHalfWidth(false)
.build());
- result.add(new ContextualCard.Builder()
- .setSliceUri(DeviceInfoSlice.DEVICE_INFO_CARD_URI)
- .setName(DeviceInfoSlice.PATH_DEVICE_INFO)
- .setPackageName(packageName)
- .setRankingScore(rankingScore)
- .setAppVersion(appVersionCode)
- .setCardType(ContextualCard.CardType.SLICE)
- .setIsHalfWidth(false)
- .build());
return result;
}
diff --git a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java
index 36c0a118023..e394c03a03b 100644
--- a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java
+++ b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java
@@ -21,10 +21,6 @@ import static android.provider.SettingsSlicesContract.KEY_WIFI;
import android.annotation.Nullable;
import com.android.settings.homepage.contextualcards.deviceinfo.BatterySlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DataUsageSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DeviceInfoSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.EmergencyInfoSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.StorageSlice;
import com.android.settings.homepage.contextualcards.slices.ConnectedDeviceSlice;
import com.android.settings.intelligence.ContextualCardProto.ContextualCard;
import com.android.settings.intelligence.ContextualCardProto.ContextualCardList;
@@ -45,26 +41,6 @@ public class SettingsContextualCardProvider extends ContextualCardProvider {
.setSliceUri(WifiSlice.WIFI_URI.toString())
.setCardName(KEY_WIFI)
.build();
- final ContextualCard dataUsageCard =
- ContextualCard.newBuilder()
- .setSliceUri(DataUsageSlice.DATA_USAGE_CARD_URI.toString())
- .setCardName(DataUsageSlice.PATH_DATA_USAGE)
- .build();
- final ContextualCard deviceInfoCard =
- ContextualCard.newBuilder()
- .setSliceUri(DeviceInfoSlice.DEVICE_INFO_CARD_URI.toString())
- .setCardName(DeviceInfoSlice.PATH_DEVICE_INFO)
- .build();
- final ContextualCard storageInfoCard =
- ContextualCard.newBuilder()
- .setSliceUri(StorageSlice.STORAGE_CARD_URI.toString())
- .setCardName(StorageSlice.PATH_STORAGE_INFO)
- .build();
- final ContextualCard emergencyInfoCard =
- ContextualCard.newBuilder()
- .setSliceUri(EmergencyInfoSlice.EMERGENCY_INFO_CARD_URI.toString())
- .setCardName(EmergencyInfoSlice.PATH_EMERGENCY_INFO_CARD)
- .build();
final ContextualCard batteryInfoCard =
ContextualCard.newBuilder()
.setSliceUri(BatterySlice.BATTERY_CARD_URI.toSafeString())
@@ -77,10 +53,6 @@ public class SettingsContextualCardProvider extends ContextualCardProvider {
.build();
final ContextualCardList cards = ContextualCardList.newBuilder()
.addCard(wifiCard)
- .addCard(dataUsageCard)
- .addCard(deviceInfoCard)
- .addCard(storageInfoCard)
- .addCard(emergencyInfoCard)
.addCard(batteryInfoCard)
.addCard(connectedDeviceCard)
.build();
diff --git a/src/com/android/settings/network/telephony/MobileNetworkFragment.java b/src/com/android/settings/network/telephony/MobileNetworkFragment.java
index df6c7ab24af..e6db51cc5a1 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkFragment.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkFragment.java
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
+import android.provider.Settings;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
@@ -106,7 +107,7 @@ public class MobileNetworkFragment extends RestrictedDashboardFragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
- mSubId = getArguments().getInt(MobileSettingsActivity.KEY_SUBSCRIPTION_ID,
+ mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
use(MobileDataPreferenceController.class).init(getFragmentManager(), mSubId);
diff --git a/src/com/android/settings/network/telephony/MobileSettingsActivity.java b/src/com/android/settings/network/telephony/MobileSettingsActivity.java
index d712515d688..b2bceb9a69b 100644
--- a/src/com/android/settings/network/telephony/MobileSettingsActivity.java
+++ b/src/com/android/settings/network/telephony/MobileSettingsActivity.java
@@ -17,10 +17,15 @@
package com.android.settings.network.telephony;
import android.app.ActionBar;
+import android.content.BroadcastReceiver;
+import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.os.Bundle;
+import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
+import android.util.Log;
import android.view.Menu;
import android.view.View;
@@ -30,68 +35,83 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.util.CollectionUtils;
import com.android.settings.R;
import com.android.settings.core.SettingsBaseActivity;
import com.google.android.material.bottomnavigation.BottomNavigationView;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
+import java.util.Objects;
public class MobileSettingsActivity extends SettingsBaseActivity {
+ private static final String TAG = "MobileSettingsActivity";
@VisibleForTesting
static final String MOBILE_SETTINGS_TAG = "mobile_settings:";
- public static final String KEY_SUBSCRIPTION_ID = "key_subscription_id";
- public static final String KEY_CUR_SUBSCRIPTION_ID = "key_cur_subscription_id";
+ @VisibleForTesting
+ static final int SUB_ID_NULL = Integer.MIN_VALUE;
- private SubscriptionManager mSubscriptionManager;
@VisibleForTesting
- Integer mCurSubscriptionId;
+ SubscriptionManager mSubscriptionManager;
@VisibleForTesting
- List mSubscriptionInfos;
+ int mCurSubscriptionId;
+ @VisibleForTesting
+ List mSubscriptionInfos = new ArrayList<>();
+ private PhoneChangeReceiver mPhoneChangeReceiver;
private final SubscriptionManager.OnSubscriptionsChangedListener
mOnSubscriptionsChangeListener
= new SubscriptionManager.OnSubscriptionsChangedListener() {
@Override
public void onSubscriptionsChanged() {
- updateSubscriptions(null);
+ if (!Objects.equals(mSubscriptionInfos,
+ mSubscriptionManager.getActiveSubscriptionInfoList())) {
+ updateSubscriptions(null);
+ }
}
};
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- //TODO(b/114749736): update fragment by new intent, or at least make sure this page shows
- // current tab for sim card
- }
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //TODO(b/114749736): add phone change receiver here: ACTION_RADIO_TECHNOLOGY_CHANGED
-
setContentView(R.layout.mobile_settings_container);
setActionBar(findViewById(R.id.mobile_action_bar));
+ mPhoneChangeReceiver = new PhoneChangeReceiver();
mSubscriptionManager = getSystemService(SubscriptionManager.class);
mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
mCurSubscriptionId = savedInstanceState != null
- ? savedInstanceState.getInt(KEY_CUR_SUBSCRIPTION_ID)
- : null;
-
- mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+ ? savedInstanceState.getInt(Settings.EXTRA_SUB_ID, SUB_ID_NULL)
+ : SUB_ID_NULL;
final ActionBar actionBar = getActionBar();
if (actionBar != null) {
- // android.R.id.home will be triggered in onOptionsItemSelected()
actionBar.setDisplayHomeAsUpEnabled(true);
}
updateSubscriptions(savedInstanceState);
}
+ @Override
+ protected void onStart() {
+ super.onStart();
+ final IntentFilter intentFilter = new IntentFilter(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+ registerReceiver(mPhoneChangeReceiver, intentFilter);
+ mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ unregisterReceiver(mPhoneChangeReceiver);
+ mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+ }
+
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
@@ -100,24 +120,42 @@ public class MobileSettingsActivity extends SettingsBaseActivity {
@VisibleForTesting
void saveInstanceState(@NonNull Bundle outState) {
- outState.putInt(KEY_CUR_SUBSCRIPTION_ID, mCurSubscriptionId);
+ outState.putInt(Settings.EXTRA_SUB_ID, mCurSubscriptionId);
}
@VisibleForTesting
void updateSubscriptions(Bundle savedInstanceState) {
- //TODO(b/114749736): Sort it by phoneId
mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
- final int subId = CollectionUtils.isEmpty(mSubscriptionInfos)
- ? SubscriptionManager.INVALID_SUBSCRIPTION_ID
- : mSubscriptionInfos.get(0).getSubscriptionId();
updateBottomNavigationView();
if (savedInstanceState == null) {
- switchFragment(new MobileNetworkFragment(), subId);
+ switchFragment(new MobileNetworkFragment(), getSubscriptionId());
}
}
+ /**
+ * Get the current subId to display. First check whether intent has {@link
+ * Settings#EXTRA_SUB_ID}. If not, just display first one in list
+ * since it is already sorted by sim slot.
+ */
+ @VisibleForTesting
+ int getSubscriptionId() {
+ final Intent intent = getIntent();
+ if (intent != null) {
+ final int subId = intent.getIntExtra(Settings.EXTRA_SUB_ID, SUB_ID_NULL);
+ if (subId != SUB_ID_NULL && mSubscriptionManager.isActiveSubscriptionId(subId)) {
+ return subId;
+ }
+ }
+
+ if (CollectionUtils.isEmpty(mSubscriptionInfos)) {
+ return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+ }
+
+ return mSubscriptionInfos.get(0).getSubscriptionId();
+ }
+
@VisibleForTesting
void updateBottomNavigationView() {
final BottomNavigationView navigation = findViewById(R.id.bottom_nav);
@@ -130,7 +168,8 @@ public class MobileSettingsActivity extends SettingsBaseActivity {
for (int i = 0, size = mSubscriptionInfos.size(); i < size; i++) {
final SubscriptionInfo subscriptionInfo = mSubscriptionInfos.get(i);
menu.add(0, subscriptionInfo.getSubscriptionId(), i,
- subscriptionInfo.getDisplayName());
+ subscriptionInfo.getDisplayName())
+ .setIcon(R.drawable.ic_settings_sim);
}
navigation.setOnNavigationItemSelectedListener(item -> {
switchFragment(new MobileNetworkFragment(), item.getItemId());
@@ -141,30 +180,23 @@ public class MobileSettingsActivity extends SettingsBaseActivity {
@VisibleForTesting
void switchFragment(Fragment fragment, int subscriptionId) {
- if (mCurSubscriptionId != null && subscriptionId == mCurSubscriptionId) {
+ switchFragment(fragment, subscriptionId, false /* forceUpdate */);
+ }
+
+ @VisibleForTesting
+ void switchFragment(Fragment fragment, int subscriptionId, boolean forceUpdate) {
+ if (mCurSubscriptionId != SUB_ID_NULL && subscriptionId == mCurSubscriptionId
+ && !forceUpdate) {
return;
}
final FragmentManager fragmentManager = getSupportFragmentManager();
final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
final Bundle bundle = new Bundle();
- bundle.putInt(KEY_SUBSCRIPTION_ID, subscriptionId);
+ bundle.putInt(Settings.EXTRA_SUB_ID, subscriptionId);
- if (mCurSubscriptionId != null) {
- final Fragment hideFragment = fragmentManager.findFragmentByTag(
- buildFragmentTag(mCurSubscriptionId));
- if (hideFragment != null) {
- fragmentTransaction.hide(hideFragment);
- }
- }
-
- Fragment showFragment = fragmentManager.findFragmentByTag(buildFragmentTag(subscriptionId));
- if (showFragment == null) {
- fragment.setArguments(bundle);
- fragmentTransaction.add(R.id.main_content, fragment, buildFragmentTag(subscriptionId));
- } else {
- showFragment.setArguments(bundle);
- fragmentTransaction.show(showFragment);
- }
+ fragment.setArguments(bundle);
+ fragmentTransaction.replace(R.id.main_content, fragment,
+ buildFragmentTag(subscriptionId));
fragmentTransaction.commit();
mCurSubscriptionId = subscriptionId;
}
@@ -172,4 +204,16 @@ public class MobileSettingsActivity extends SettingsBaseActivity {
private String buildFragmentTag(int subscriptionId) {
return MOBILE_SETTINGS_TAG + subscriptionId;
}
+
+ private class PhoneChangeReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // When the radio changes (ex: CDMA->GSM), refresh the fragment.
+ // This is very rare to happen.
+ if (mCurSubscriptionId != SUB_ID_NULL) {
+ switchFragment(new MobileNetworkFragment(), mCurSubscriptionId,
+ true /* forceUpdate */);
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
index 3e42c70198c..dbab674f855 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java
+++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
@@ -23,6 +23,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.PersistableBundle;
+import android.provider.Settings;
import android.telephony.AccessNetworkConstants;
import android.telephony.CarrierConfigManager;
import android.telephony.CellIdentity;
@@ -93,7 +94,7 @@ public class NetworkSelectSettings extends DashboardFragment {
mUseNewApi = getContext().getResources().getBoolean(
com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI);
- mSubId = getArguments().getInt(MobileSettingsActivity.KEY_SUBSCRIPTION_ID);
+ mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID);
mConnectedPreferenceCategory =
(PreferenceCategory) findPreference(PREF_KEY_CONNECTED_NETWORK_OPERATOR);
diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
index 72f69cd7310..d5c704ac02e 100644
--- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony.gsm;
import android.content.Context;
import android.os.Bundle;
import android.os.PersistableBundle;
+import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -96,7 +97,7 @@ public class AutoSelectPreferenceController extends TogglePreferenceController {
== TelephonyManager.NETWORK_SELECTION_MODE_AUTO;
} else {
final Bundle bundle = new Bundle();
- bundle.putInt(MobileSettingsActivity.KEY_SUBSCRIPTION_ID, mSubId);
+ bundle.putInt(Settings.EXTRA_SUB_ID, mSubId);
new SubSettingLauncher(mContext)
.setDestination(NetworkSelectSettings.class.getName())
.setSourceMetricsCategory(MetricsProto.MetricsEvent.MOBILE_NETWORK_SELECT)
diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java
index 9ea977ca36b..df5e151c5da 100644
--- a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java
@@ -18,6 +18,7 @@ package com.android.settings.network.telephony.gsm;
import android.content.Context;
import android.os.Bundle;
+import android.provider.Settings;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -84,7 +85,7 @@ public class OpenNetworkSelectPagePreferenceController extends BasePreferenceCon
public boolean handlePreferenceTreeClick(Preference preference) {
if (TextUtils.equals(preference.getKey(), getPreferenceKey())) {
final Bundle bundle = new Bundle();
- bundle.putInt(MobileSettingsActivity.KEY_SUBSCRIPTION_ID, mSubId);
+ bundle.putInt(Settings.EXTRA_SUB_ID, mSubId);
new SubSettingLauncher(mContext)
.setDestination(NetworkSelectSettings.class.getName())
.setSourceMetricsCategory(MetricsProto.MetricsEvent.MOBILE_NETWORK_SELECT)
diff --git a/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
new file mode 100644
index 00000000000..fe4fcc8e225
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
@@ -0,0 +1,92 @@
+/*
+ * 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.display;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import com.android.settings.R;
+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 java.util.ArrayList;
+import java.util.List;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+public class TopLevelDisplayPreferenceControllerTest {
+ @Mock
+ private Context mContext;
+ @Mock
+ private PackageManager mPackageManager;
+
+ private TopLevelDisplayPreferenceController mController;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mContext.getString(R.string.config_wallpaper_picker_package))
+ .thenReturn("pkg");
+ when(mContext.getString(R.string.config_wallpaper_picker_class))
+ .thenReturn("cls");
+
+ mController = new TopLevelDisplayPreferenceController(mContext, "test_key");
+ }
+
+ @Test
+ public void getAvailability_alwaysAvailable() {
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+ }
+
+ @Test
+ public void getSummary_hasWallpaper_shouldReturnWallpaperSummary() {
+ final List resolveInfos = new ArrayList<>();
+ resolveInfos.add(mock(ResolveInfo.class));
+ when(mPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
+ .thenReturn(resolveInfos);
+
+ assertThat(mController.getSummary())
+ .isEqualTo(mContext.getText(R.string.display_dashboard_summary));
+ }
+
+ @Test
+ public void getSummary_hasWallpaper_shouldReturnNoWallpaperSummary() {
+ final List resolveInfos = new ArrayList<>();
+ when(mPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
+ .thenReturn(resolveInfos);
+
+ assertThat(mController.getSummary())
+ .isEqualTo(mContext.getText(R.string.display_dashboard_nowallpaper_summary));
+ }
+
+}
diff --git a/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java
index 8a24241d4f4..b4305b6e9d6 100644
--- a/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java
@@ -45,6 +45,7 @@ public class WallpaperPreferenceControllerTest {
private static final String WALLPAPER_PACKAGE = "TestPkg";
private static final String WALLPAPER_CLASS = "TestCls";
+ private static final String TEST_KEY = "test_key";
@Mock
private Context mContext;
@@ -54,7 +55,7 @@ public class WallpaperPreferenceControllerTest {
private WallpaperPreferenceController mController;
@Before
- public void setUp() throws PackageManager.NameNotFoundException {
+ public void setUp() {
MockitoAnnotations.initMocks(this);
when(mContext.getString(R.string.config_wallpaper_picker_package))
.thenReturn(WALLPAPER_PACKAGE);
@@ -62,11 +63,11 @@ public class WallpaperPreferenceControllerTest {
.thenReturn(WALLPAPER_CLASS);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
- mController = new WallpaperPreferenceController(mContext);
+ mController = new WallpaperPreferenceController(mContext, TEST_KEY);
}
@Test
- public void isAvailable_wallpaerPickerEnabled_shouldReturnTrue() {
+ public void isAvailable_wallpaperPickerEnabled_shouldReturnTrue() {
final List resolveInfos = new ArrayList<>();
resolveInfos.add(mock(ResolveInfo.class));
when(mPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
@@ -76,7 +77,7 @@ public class WallpaperPreferenceControllerTest {
}
@Test
- public void isAvailable_wallpaerPickerDisbled_shouldReturnFalseAndNoCrash() {
+ public void isAvailable_wallpaperPickerDisabled_shouldReturnFalse() {
when(mPackageManager.queryIntentActivities(any(Intent.class), anyInt())).thenReturn(null);
assertThat(mController.isAvailable()).isFalse();
@@ -86,6 +87,5 @@ public class WallpaperPreferenceControllerTest {
.thenReturn(resolveInfos);
assertThat(mController.isAvailable()).isFalse();
- // should not crash
}
}
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
index 6aeb5c00f86..e98e36f56f4 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
@@ -22,8 +22,6 @@ import android.content.Context;
import android.net.Uri;
import com.android.settings.homepage.contextualcards.deviceinfo.BatterySlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DataUsageSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DeviceInfoSlice;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -53,19 +51,10 @@ public class ContextualCardLoaderTest {
mProvider);
}
- @Test
- public void createStaticCards_shouldReturnFourCards() {
- final List defaultData = mContextualCardLoader.createStaticCards();
-
- assertThat(defaultData).hasSize(3);
- }
-
@Test
public void createStaticCards_shouldContainCorrectCards() {
- final Uri dataUsage = DataUsageSlice.DATA_USAGE_CARD_URI;
- final Uri deviceInfo = DeviceInfoSlice.DEVICE_INFO_CARD_URI;
final Uri batteryInfo = BatterySlice.BATTERY_CARD_URI;
- final List expectedUris = Arrays.asList(dataUsage, deviceInfo, batteryInfo);
+ final List expectedUris = Arrays.asList(batteryInfo);
final List actualCardUris = mContextualCardLoader.createStaticCards().stream().map(
ContextualCard::getSliceUri).collect(Collectors.toList());
@@ -90,7 +79,8 @@ public class ContextualCardLoaderTest {
final String sliceUri = "contet://com.android.settings.slices/action/flashlight";
assertThat(
- mContextualCardLoader.isCardEligibleToDisplay(getContextualCard(sliceUri))).isFalse();
+ mContextualCardLoader.isCardEligibleToDisplay(
+ getContextualCard(sliceUri))).isFalse();
}
@Test
@@ -98,7 +88,8 @@ public class ContextualCardLoaderTest {
final String sliceUri = "content://com.android.settings.test.slices/action/flashlight";
assertThat(
- mContextualCardLoader.isCardEligibleToDisplay(getContextualCard(sliceUri))).isFalse();
+ mContextualCardLoader.isCardEligibleToDisplay(
+ getContextualCard(sliceUri))).isFalse();
}
private ContextualCard getContextualCard(String sliceUri) {
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java
index 2c42379f86e..1932ab95e08 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java
@@ -20,7 +20,6 @@ package com.android.settings.homepage.contextualcards;
import static com.google.common.truth.Truth.assertThat;
import android.content.ContentResolver;
-import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
@@ -38,15 +37,13 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
public class SettingsContextualCardProviderTest {
- private Context mContext;
private ContentResolver mResolver;
private Uri mUri;
private SettingsContextualCardProvider mProvider;
@Before
public void setUp() {
- mContext = RuntimeEnvironment.application;
- mResolver = mContext.getContentResolver();
+ mResolver = RuntimeEnvironment.application.getContentResolver();
mUri = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsContextualCardProvider.CARD_AUTHORITY)
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileSettingsActivityTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileSettingsActivityTest.java
index c5ca4276f0f..ea184fde789 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileSettingsActivityTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileSettingsActivityTest.java
@@ -23,9 +23,12 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
+import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.view.Menu;
@@ -69,6 +72,8 @@ public class MobileSettingsActivityTest {
@Mock
private SubscriptionInfo mSubscriptionInfo;
@Mock
+ private SubscriptionInfo mSubscriptionInfo2;
+ @Mock
private FragmentManager mFragmentManager;
@Mock
private FragmentTransaction mFragmentTransaction;
@@ -85,6 +90,9 @@ public class MobileSettingsActivityTest {
mShowFragment = new Fragment();
mHideFragment = new Fragment();
mMobileSettingsActivity.mSubscriptionInfos = mSubscriptionInfos;
+ mMobileSettingsActivity.mSubscriptionManager = mSubscriptionManager;
+ when(mSubscriptionInfo.getSubscriptionId()).thenReturn(PREV_SUB_ID);
+ when(mSubscriptionInfo2.getSubscriptionId()).thenReturn(CURRENT_SUB_ID);
doReturn(mSubscriptionManager).when(mMobileSettingsActivity).getSystemService(
SubscriptionManager.class);
@@ -121,23 +129,32 @@ public class MobileSettingsActivityTest {
}
@Test
- public void switchFragment_hidePreviousFragment() {
+ public void switchFragment_newFragment_replaceIt() {
mMobileSettingsActivity.mCurSubscriptionId = PREV_SUB_ID;
mMobileSettingsActivity.switchFragment(mShowFragment, CURRENT_SUB_ID);
- verify(mFragmentTransaction).hide(mHideFragment);
+ verify(mFragmentTransaction).replace(R.id.main_content, mShowFragment,
+ MOBILE_SETTINGS_TAG + CURRENT_SUB_ID);
}
@Test
- public void switchFragment_fragmentExist_showItWithArguments() {
- mMobileSettingsActivity.mCurSubscriptionId = PREV_SUB_ID;
+ public void getSubscriptionId_hasIntent_getIdFromIntent() {
+ final Intent intent = new Intent();
+ intent.putExtra(Settings.EXTRA_SUB_ID, CURRENT_SUB_ID);
+ doReturn(intent).when(mMobileSettingsActivity).getIntent();
+ doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(CURRENT_SUB_ID);
- mMobileSettingsActivity.switchFragment(mShowFragment, CURRENT_SUB_ID);
+ assertThat(mMobileSettingsActivity.getSubscriptionId()).isEqualTo(CURRENT_SUB_ID);
+ }
- assertThat(mShowFragment.getArguments().getInt(
- MobileSettingsActivity.KEY_SUBSCRIPTION_ID)).isEqualTo(CURRENT_SUB_ID);
- verify(mFragmentTransaction).show(mShowFragment);
+ @Test
+ public void getSubscriptionId_noIntent_firstIdInList() {
+ doReturn(null).when(mMobileSettingsActivity).getIntent();
+ mSubscriptionInfos.add(mSubscriptionInfo);
+ mSubscriptionInfos.add(mSubscriptionInfo2);
+
+ assertThat(mMobileSettingsActivity.getSubscriptionId()).isEqualTo(PREV_SUB_ID);
}
@Test
@@ -149,7 +166,7 @@ public class MobileSettingsActivityTest {
mMobileSettingsActivity.saveInstanceState(bundle);
- assertThat(bundle.getInt(MobileSettingsActivity.KEY_CUR_SUBSCRIPTION_ID)).isEqualTo(
+ assertThat(bundle.getInt(Settings.EXTRA_SUB_ID)).isEqualTo(
PREV_SUB_ID);
}
}