Snap for 8160141 from e7788a7148 to tm-release

Change-Id: Ib91be605aab464b72e42effb13a638c0a4c055b3
This commit is contained in:
Android Build Coastguard Worker
2022-02-09 02:09:14 +00:00
10 changed files with 129 additions and 68 deletions

View File

@@ -42,7 +42,7 @@ import java.util.Objects;
public class FallbackHome extends Activity { public class FallbackHome extends Activity {
private static final String TAG = "FallbackHome"; private static final String TAG = "FallbackHome";
private static final int PROGRESS_TIMEOUT = 2000; private int mProgressTimeout;
private boolean mProvisioned; private boolean mProvisioned;
private WallpaperManager mWallManager; private WallpaperManager mWallManager;
@@ -76,6 +76,12 @@ public class FallbackHome extends Activity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mProgressTimeout = getResources().getInteger(
com.android.internal.R.integer.config_progressTimeoutFallbackHome);
if (mProgressTimeout <= 0) {
mProgressTimeout = 0;
}
// Set ourselves totally black before the device is provisioned so that // Set ourselves totally black before the device is provisioned so that
// we don't flash the wallpaper before SUW // we don't flash the wallpaper before SUW
@@ -107,7 +113,7 @@ public class FallbackHome extends Activity {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
if (mProvisioned) { if (mProvisioned) {
mHandler.postDelayed(mProgressTimeoutRunnable, PROGRESS_TIMEOUT); mHandler.postDelayed(mProgressTimeoutRunnable, mProgressTimeout);
} }
} }

View File

@@ -18,6 +18,7 @@ package com.android.settings.applications.appinfo;
import static com.android.settings.widget.EntityHeaderController.ActionType; import static com.android.settings.widget.EntityHeaderController.ActionType;
import android.app.Activity; import android.app.Activity;
import android.app.LocaleConfig;
import android.app.LocaleManager; import android.app.LocaleManager;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
@@ -289,12 +290,18 @@ public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreferen
@VisibleForTesting @VisibleForTesting
void handleSupportedLocales() { void handleSupportedLocales() {
//TODO Waiting for PackageManager api LocaleList localeList = getPackageLocales();
String[] languages = getAssetSystemLocales(); if (localeList == null) {
String[] languages = getAssetSystemLocales();
for (String language : languages) { for (String language : languages) {
mSupportedLocales.add(Locale.forLanguageTag(language)); mSupportedLocales.add(Locale.forLanguageTag(language));
}
} else {
for (int i = 0; i < localeList.size(); i++) {
mSupportedLocales.add(localeList.get(i));
}
} }
if (mSuggestedLocales != null || !mSuggestedLocales.isEmpty()) { if (mSuggestedLocales != null || !mSuggestedLocales.isEmpty()) {
mSupportedLocales.removeAll(mSuggestedLocales); mSupportedLocales.removeAll(mSuggestedLocales);
} }
@@ -349,9 +356,23 @@ public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreferen
packageManager.getPackageInfo(mPackageName, PackageManager.MATCH_ALL) packageManager.getPackageInfo(mPackageName, PackageManager.MATCH_ALL)
.applicationInfo).getAssets().getNonSystemLocales(); .applicationInfo).getAssets().getNonSystemLocales();
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Can not found the package name : " + e); Log.w(TAG, "Can not found the package name : " + mPackageName + " / " + e);
} }
return new String[0]; return new String[0];
} }
@VisibleForTesting
LocaleList getPackageLocales() {
try {
LocaleConfig localeConfig =
new LocaleConfig(mContext.createPackageContext(mPackageName, 0));
if (localeConfig.getStatus() == LocaleConfig.STATUS_SUCCESS) {
return localeConfig.getSupportedLocales();
}
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Can not found the package name : " + mPackageName + " / " + e);
}
return null;
}
} }
} }

View File

@@ -63,6 +63,7 @@ public class LocationSettings extends DashboardFragment implements
private LocationSwitchBarController mSwitchBarController; private LocationSwitchBarController mSwitchBarController;
private LocationEnabler mLocationEnabler; private LocationEnabler mLocationEnabler;
private RecentLocationAccessPreferenceController mController;
@Override @Override
public int getMetricsCategory() { public int getMetricsCategory() {
@@ -86,12 +87,21 @@ public class LocationSettings extends DashboardFragment implements
super.onAttach(context); super.onAttach(context);
use(AppLocationPermissionPreferenceController.class).init(this); use(AppLocationPermissionPreferenceController.class).init(this);
use(RecentLocationAccessPreferenceController.class).init(this); mController = use(RecentLocationAccessPreferenceController.class);
mController.init(this);
use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this); use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this);
use(LocationForWorkPreferenceController.class).init(this); use(LocationForWorkPreferenceController.class).init(this);
use(LocationSettingsFooterPreferenceController.class).init(this); use(LocationSettingsFooterPreferenceController.class).init(this);
} }
@Override
public void onPause() {
super.onPause();
if (mController != null) {
mController.clearPreferenceList();
}
}
@Override @Override
protected int getPreferenceScreenResId() { protected int getPreferenceScreenResId() {
return R.xml.location_settings; return R.xml.location_settings;

View File

@@ -126,6 +126,15 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer
mCategoryRecentLocationRequests.setVisible(enabled); mCategoryRecentLocationRequests.setVisible(enabled);
} }
/**
* Clears the list of apps which recently accessed location from the screen.
*/
public void clearPreferenceList() {
if (mCategoryRecentLocationRequests != null) {
mCategoryRecentLocationRequests.removeAll();
}
}
/** /**
* Initialize {@link ProfileSelectFragment.ProfileType} of the controller * Initialize {@link ProfileSelectFragment.ProfileType} of the controller
* *

View File

@@ -69,20 +69,15 @@ public class SwitchToEuiccSubscriptionSidecar extends EuiccOperationSidecar {
} }
} }
/** Starts calling EuiccManager#switchToSubscription to enable/disable the eSIM profile. */
// ToDo: delete this api and refactor the related code.
public void run(int subscriptionId) {
setState(State.RUNNING, Substate.UNUSED);
mCallbackIntent = createCallbackIntent();
mEuiccManager.switchToSubscription(subscriptionId, mCallbackIntent);
}
/** /**
* Starts calling EuiccManager#switchToSubscription to enable/disable the eSIM profile. * Starts calling EuiccManager#switchToSubscription to enable/disable the eSIM profile.
* *
* @param subscriptionId the esim's subscriptionId. * @param subscriptionId the esim's subscriptionId.
* @param port the esim's portId. If user wants to inactivate esim, then user must to assign the * @param port the esim's portId. If user wants to inactivate esim, then user must to assign
* the port. If user wants to activate esim, then the port can be -1. * the corresponding port. If user wants to activate esim, then the port can be
* {@link UiccSlotUtil#INVALID_PORT_ID}. When it is
* {@link UiccSlotUtil#INVALID_PORT_ID}, the system will reassign a corresponding
* port id.
* @param removedSubInfo if the all of slots have sims, it should remove the one of active sim. * @param removedSubInfo if the all of slots have sims, it should remove the one of active sim.
* If the removedSubInfo is null, then use the default value. * If the removedSubInfo is null, then use the default value.
* The default value is the esim slot and portId 0. * The default value is the esim slot and portId 0.

View File

@@ -80,29 +80,6 @@ public class SwitchToRemovableSlotSidecar extends EuiccOperationSidecar
} }
} }
/**
* Starts switching to the removable slot. It disables the active eSIM profile before switching
* if there is one.
*
* @param physicalSlotId removable physical SIM slot ID.
*/
// ToDo: delete this api and refactor the related code.
public void run(int physicalSlotId) {
mPhysicalSlotId = physicalSlotId;
SubscriptionManager subscriptionManager =
getContext().getSystemService(SubscriptionManager.class);
if (SubscriptionUtil.getActiveSubscriptions(subscriptionManager).stream()
.anyMatch(SubscriptionInfo::isEmbedded)) {
// In SS mode, the esim is active, then inactivate the esim.
Log.i(TAG, "There is an active eSIM profile. Disable the profile first.");
// Use INVALID_SUBSCRIPTION_ID to disable the only active profile.
mSwitchToSubscriptionSidecar.run(SubscriptionManager.INVALID_SUBSCRIPTION_ID, 0, null);
} else {
Log.i(TAG, "There is no active eSIM profiles. Start to switch to removable slot.");
mSwitchSlotSidecar.runSwitchToRemovableSlot(mPhysicalSlotId, null);
}
}
/** /**
* Starts switching to the removable slot. * Starts switching to the removable slot.
* *

View File

@@ -159,11 +159,12 @@ public class ChooseSimActivity extends Activity
mSelectedItemIndex = subItem.getId(); mSelectedItemIndex = subItem.getId();
if (mSelectedItemIndex == INDEX_PSIM) { if (mSelectedItemIndex == INDEX_PSIM) {
Log.i(TAG, "Ready to switch to pSIM slot."); Log.i(TAG, "Ready to switch to pSIM slot.");
mSwitchToRemovableSlotSidecar.run(UiccSlotUtil.INVALID_PHYSICAL_SLOT_ID); mSwitchToRemovableSlotSidecar.run(UiccSlotUtil.INVALID_PHYSICAL_SLOT_ID, null);
} else { } else {
Log.i(TAG, "Ready to switch to eSIM subscription with index: " + mSelectedItemIndex); Log.i(TAG, "Ready to switch to eSIM subscription with index: " + mSelectedItemIndex);
mSwitchToEuiccSubscriptionSidecar.run( mSwitchToEuiccSubscriptionSidecar.run(
mEmbeddedSubscriptions.get(mSelectedItemIndex).getSubscriptionId()); mEmbeddedSubscriptions.get(mSelectedItemIndex).getSubscriptionId(),
UiccSlotUtil.INVALID_PORT_ID, null);
} }
} }

View File

@@ -23,6 +23,7 @@ import android.util.Log;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SidecarFragment; import com.android.settings.SidecarFragment;
import com.android.settings.network.SwitchToEuiccSubscriptionSidecar; import com.android.settings.network.SwitchToEuiccSubscriptionSidecar;
import com.android.settings.network.UiccSlotUtil;
import com.android.settings.network.telephony.AlertDialogFragment; import com.android.settings.network.telephony.AlertDialogFragment;
import com.android.settings.network.telephony.ConfirmDialogFragment; import com.android.settings.network.telephony.ConfirmDialogFragment;
import com.android.settings.network.telephony.SubscriptionActionDialogActivity; import com.android.settings.network.telephony.SubscriptionActionDialogActivity;
@@ -110,7 +111,8 @@ public class SwitchToEsimConfirmDialogActivity extends SubscriptionActionDialogA
return; return;
} }
Log.i(TAG, "User confirmed to switch to embedded slot."); Log.i(TAG, "User confirmed to switch to embedded slot.");
mSwitchToEuiccSubscriptionSidecar.run(mSubToEnabled.getSubscriptionId()); mSwitchToEuiccSubscriptionSidecar.run(mSubToEnabled.getSubscriptionId(),
UiccSlotUtil.INVALID_PORT_ID, null);
showProgressDialog( showProgressDialog(
getString( getString(
R.string.sim_action_switch_sub_dialog_progress, R.string.sim_action_switch_sub_dialog_progress,

View File

@@ -210,10 +210,11 @@ public class SimSlotChangeHandler {
} }
List<SubscriptionInfo> groupedEmbeddedSubscriptions = getGroupedEmbeddedSubscriptions(); List<SubscriptionInfo> groupedEmbeddedSubscriptions = getGroupedEmbeddedSubscriptions();
if (groupedEmbeddedSubscriptions.size() == 0 || !removableSlotInfo.getPorts().stream() if (groupedEmbeddedSubscriptions.size() == 0 || !removableSlotInfo.getPorts().stream()
.findFirst().get().isActive()) { .findFirst().get().isActive()) {
Log.i(TAG, "eSIM slot is active or no subscriptions exist. Do nothing."); Log.i(TAG, "eSIM slot is active or no subscriptions exist. Do nothing."
+ " The removableSlotInfo: " + removableSlotInfo
+ ", groupedEmbeddedSubscriptions: " + groupedEmbeddedSubscriptions);
return; return;
} }

View File

@@ -55,6 +55,7 @@ public class AppLocaleDetailsTest {
private LocaleList mSystemLocales; private LocaleList mSystemLocales;
private LocaleList mAppLocale; private LocaleList mAppLocale;
private String[] mAssetLocales; private String[] mAssetLocales;
private LocaleList mPackageLocales;
@Before @Before
@UiThreadTest @UiThreadTest
@@ -67,11 +68,13 @@ public class AppLocaleDetailsTest {
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
when(mContext.getSystemService(LocaleManager.class)).thenReturn(mLocaleManager); when(mContext.getSystemService(LocaleManager.class)).thenReturn(mLocaleManager);
setupInitialLocales("en", setupInitialLocales(
"tw", /* appLocale= */ "en",
"jp", /* simCountry= */ "tw",
"en, uk, jp, ne", /* networkCountry= */ "jp",
new String[]{"en", "ne", "ms", "pa"}); /* systemLocales= */ "en, uk, jp, ne",
/* packageLocales= */ "pa, cn, tw, en",
/* assetLocales= */ new String[]{"en", "ne", "ms", "pa"});
} }
@Test @Test
@@ -105,11 +108,13 @@ public class AppLocaleDetailsTest {
@UiThreadTest @UiThreadTest
public void handleAllLocalesData_withoutAppLocale_1stSuggestedLocaleIsSimCountryLocale() { public void handleAllLocalesData_withoutAppLocale_1stSuggestedLocaleIsSimCountryLocale() {
Locale simCountryLocale = new Locale("zh", "TW"); Locale simCountryLocale = new Locale("zh", "TW");
setupInitialLocales("", setupInitialLocales(
"tw", /* appLocale= */ "",
"", /* simCountry= */ "tw",
"en, uk, jp, ne", /* networkCountry= */ "",
new String[]{"en", "ne", "ms", "pa"}); /* systemLocales= */ "en, uk, jp, ne",
/* packageLocales= */ "",
/* assetLocales= */ new String[]{});
DummyAppLocaleDetailsHelper helper = DummyAppLocaleDetailsHelper helper =
new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME); new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
@@ -124,11 +129,13 @@ public class AppLocaleDetailsTest {
@UiThreadTest @UiThreadTest
public void handleAllLocalesData_withoutAppLocale_1stSuggestedLocaleIsNetworkCountryLocale() { public void handleAllLocalesData_withoutAppLocale_1stSuggestedLocaleIsNetworkCountryLocale() {
Locale networkCountryLocale = new Locale("en", "GB"); Locale networkCountryLocale = new Locale("en", "GB");
setupInitialLocales("", setupInitialLocales(
"", /* appLocale= */ "",
"gb", /* simCountry= */ "",
"en, uk, jp, ne", /* networkCountry= */ "gb",
new String[]{"en", "ne", "ms", "pa"}); /* systemLocales= */ "en, uk, jp, ne",
/* packageLocales= */ "",
/* assetLocales= */ new String[]{});
DummyAppLocaleDetailsHelper helper = DummyAppLocaleDetailsHelper helper =
new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME); new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
@@ -142,11 +149,32 @@ public class AppLocaleDetailsTest {
@Test @Test
@UiThreadTest @UiThreadTest
public void handleAllLocalesData_noAppAndSimNetworkLocale_1stLocaleIsFirstOneInSystemLocales() { public void handleAllLocalesData_noAppAndSimNetworkLocale_1stLocaleIsFirstOneInSystemLocales() {
setupInitialLocales("", setupInitialLocales(
"", /* appLocale= */ "",
"", /* simCountry= */ "",
"en, uk, jp, ne", /* networkCountry= */ "",
new String[]{"en", "ne", "ms", "pa"}); /* systemLocales= */ "en, uk, jp, ne",
/* packageLocales= */ "",
/* assetLocales= */ new String[]{});
DummyAppLocaleDetailsHelper helper =
new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
helper.handleAllLocalesData();
Locale locale = Iterables.get(helper.getSuggestedLocales(), 0);
assertTrue(locale.equals(mSystemLocales.get(0)));
}
@Test
@UiThreadTest
public void handleAllLocalesData_hasPackageAndSystemLocales_1stLocaleIs1stOneInSystemLocales() {
setupInitialLocales(
/* appLocale= */ "",
/* simCountry= */ "",
/* networkCountry= */ "",
/* systemLocales= */ "en, uk, jp, ne",
/* packageLocales= */ "pa, cn, tw, en",
/* assetLocales= */ new String[]{});
DummyAppLocaleDetailsHelper helper = DummyAppLocaleDetailsHelper helper =
new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME); new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
@@ -204,6 +232,11 @@ public class AppLocaleDetailsTest {
* *
* @param systemLocales System locales, a locale list by a multiple language tags with comma. * @param systemLocales System locales, a locale list by a multiple language tags with comma.
* example: "en, uk, jp" * example: "en, uk, jp"
*
* @param packageLocales PackageManager locales, a locale list by a multiple language tags with
* comma.
* example: "en, uk, jp"
*
* @param assetLocales Asset locales, a locale list by a multiple language tags with String * @param assetLocales Asset locales, a locale list by a multiple language tags with String
* array. * array.
* example: new String[] {"en", "ne", "ms", "pa"} * example: new String[] {"en", "ne", "ms", "pa"}
@@ -212,10 +245,12 @@ public class AppLocaleDetailsTest {
String simCountry, String simCountry,
String networkCountry, String networkCountry,
String systemLocales, String systemLocales,
String packageLocales,
String[] assetLocales) { String[] assetLocales) {
mAppLocale = LocaleList.forLanguageTags(appLocale); mAppLocale = LocaleList.forLanguageTags(appLocale);
mSystemLocales = LocaleList.forLanguageTags(systemLocales); mSystemLocales = LocaleList.forLanguageTags(systemLocales);
mAssetLocales = assetLocales; mAssetLocales = assetLocales;
mPackageLocales = LocaleList.forLanguageTags(packageLocales);
when(mTelephonyManager.getSimCountryIso()).thenReturn(simCountry); when(mTelephonyManager.getSimCountryIso()).thenReturn(simCountry);
when(mTelephonyManager.getNetworkCountryIso()).thenReturn(networkCountry); when(mTelephonyManager.getNetworkCountryIso()).thenReturn(networkCountry);
when(mLocaleManager.getApplicationLocales(anyString())).thenReturn(mAppLocale); when(mLocaleManager.getApplicationLocales(anyString())).thenReturn(mAppLocale);
@@ -237,6 +272,10 @@ public class AppLocaleDetailsTest {
LocaleList getCurrentSystemLocales() { LocaleList getCurrentSystemLocales() {
return mSystemLocales; return mSystemLocales;
} }
}
@Override
LocaleList getPackageLocales() {
return mPackageLocales;
}
}
} }