Snap for 5101359 from 76da1123e4 to qt-release

Change-Id: Ic7caae7d6a1cc5ccc4cadbcb5e3c86b412389118
This commit is contained in:
android-build-team Robot
2018-10-31 03:10:57 +00:00
20 changed files with 294 additions and 154 deletions

View File

@@ -8920,6 +8920,10 @@
<string name="display_summary">Sleep after <xliff:g id="timeout_description" example="10 minutes">%1$s</xliff:g> of inactivity</string>
<!-- Summary for Display settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
<string name="display_dashboard_summary">Wallpaper, sleep, font size</string>
<!-- Summary for Display settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
<string name="display_dashboard_nowallpaper_summary">Sleep, font size</string>
<!-- Example summary of display used in Setup Wizard preview screen [CHAR LIMIT=NONE] -->
<string name="display_summary_example">Sleep after 10 minutes of inactivity</string>

View File

@@ -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">
<intent
android:targetPackage="@string/config_wallpaper_picker_package"
android:targetClass="@string/config_wallpaper_picker_class" />

View File

@@ -59,10 +59,11 @@
<Preference
android:key="top_level_display"
android:title="@string/display_settings"
android:summary="@string/display_dashboard_summary"
android:summary="@string/summary_placeholder"
android:icon="@drawable/ic_homepage_display"
android:order="-70"
android:fragment="com.android.settings.DisplaySettings"/>
android:fragment="com.android.settings.DisplaySettings"
settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>
<Preference
android:key="top_level_sound"

View File

@@ -85,7 +85,6 @@ public class DisplaySettings extends DashboardFragment {
controllers.add(new TimeoutPreferenceController(context, KEY_SCREEN_TIMEOUT));
controllers.add(new VrDisplayPreferenceController(context));
controllers.add(new ShowOperatorNamePreferenceController(context));
controllers.add(new WallpaperPreferenceController(context));
controllers.add(new ThemePreferenceController(context));
controllers.add(new BrightnessLevelPreferenceController(context, lifecycle));
return controllers;

View File

@@ -190,7 +190,8 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
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);
}
@@ -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();
}

View File

@@ -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();
}

View File

@@ -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);
}
}
}

View File

@@ -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<ResolveInfo> 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

View File

@@ -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<List<ContextualCard>
final String packageName = mContext.getPackageName();
final double rankingScore = 0.0;
final List<ContextualCard> 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<List<ContextualCard>
.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;
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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<SubscriptionInfo> mSubscriptionInfos;
int mCurSubscriptionId;
@VisibleForTesting
List<SubscriptionInfo> 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 */);
}
}
}
}

View File

@@ -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);

View File

@@ -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)

View File

@@ -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)

View File

@@ -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<ResolveInfo> 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<ResolveInfo> resolveInfos = new ArrayList<>();
when(mPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
.thenReturn(resolveInfos);
assertThat(mController.getSummary())
.isEqualTo(mContext.getText(R.string.display_dashboard_nowallpaper_summary));
}
}

View File

@@ -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<ResolveInfo> 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
}
}

View File

@@ -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<ContextualCard> 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<Uri> expectedUris = Arrays.asList(dataUsage, deviceInfo, batteryInfo);
final List<Uri> expectedUris = Arrays.asList(batteryInfo);
final List<Uri> 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) {

View File

@@ -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)

View File

@@ -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);
}
}