Merge "[Panlingual] Can't set per-app languages for apps on work profile page" into tm-qpr-dev am: d06d826549

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22173333

Change-Id: I3d91cd2c803357778718e7d70350aa73c4cec675
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Josh Hou
2023-03-23 06:28:32 +00:00
committed by Automerger Merge Worker
4 changed files with 10 additions and 49 deletions

View File

@@ -28,7 +28,6 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.applications.AppLocaleUtil; import com.android.settings.applications.AppLocaleUtil;
import com.android.settings.localepicker.AppLocalePickerActivity; import com.android.settings.localepicker.AppLocalePickerActivity;
@@ -72,7 +71,6 @@ public class AppLocalePreferenceController extends AppInfoPreferenceControllerBa
if (mParent != null) { if (mParent != null) {
Intent intent = new Intent(mContext, AppLocalePickerActivity.class); Intent intent = new Intent(mContext, AppLocalePickerActivity.class);
intent.setData(Uri.parse("package:" + mParent.getAppEntry().info.packageName)); intent.setData(Uri.parse("package:" + mParent.getAppEntry().info.packageName));
intent.putExtra(AppInfoBase.ARG_PACKAGE_UID, mParent.getAppEntry().info.uid);
mContext.startActivity(intent); mContext.startActivity(intent);
return true; return true;
} else { } else {

View File

@@ -654,8 +654,8 @@ public class ManageApplications extends InstrumentedFragment
case LIST_TYPE_APPS_LOCALE: case LIST_TYPE_APPS_LOCALE:
Intent intent = new Intent(getContext(), AppLocalePickerActivity.class); Intent intent = new Intent(getContext(), AppLocalePickerActivity.class);
intent.setData(Uri.parse("package:" + mCurrentPkgName)); intent.setData(Uri.parse("package:" + mCurrentPkgName));
intent.putExtra(AppInfoBase.ARG_PACKAGE_UID, mCurrentUid); getContext().startActivityAsUser(intent,
startActivity(intent); UserHandle.getUserHandleForUid(mCurrentUid));
break; break;
case LIST_TYPE_BATTERY_OPTIMIZATION: case LIST_TYPE_BATTERY_OPTIMIZATION:
AdvancedPowerUsageDetail.startBatteryDetailPage( AdvancedPowerUsageDetail.startBatteryDetailPage(

View File

@@ -18,12 +18,10 @@ package com.android.settings.localepicker;
import android.app.FragmentTransaction; import android.app.FragmentTransaction;
import android.app.LocaleManager; import android.app.LocaleManager;
import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.LocaleList; import android.os.LocaleList;
import android.os.UserHandle;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.MenuItem; import android.view.MenuItem;
@@ -34,7 +32,6 @@ import android.widget.ListView;
import com.android.internal.app.LocalePickerWithRegion; import com.android.internal.app.LocalePickerWithRegion;
import com.android.internal.app.LocaleStore; import com.android.internal.app.LocaleStore;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.applications.AppLocaleUtil; import com.android.settings.applications.AppLocaleUtil;
import com.android.settings.applications.appinfo.AppLocaleDetails; import com.android.settings.applications.appinfo.AppLocaleDetails;
import com.android.settings.core.SettingsBaseActivity; import com.android.settings.core.SettingsBaseActivity;
@@ -46,7 +43,6 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
private String mPackageName; private String mPackageName;
private LocalePickerWithRegion mLocalePickerWithRegion; private LocalePickerWithRegion mLocalePickerWithRegion;
private AppLocaleDetails mAppLocaleDetails; private AppLocaleDetails mAppLocaleDetails;
private Context mContextAsUser;
private View mAppLocaleDetailContainer; private View mAppLocaleDetailContainer;
@Override @Override
@@ -64,15 +60,8 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
finish(); finish();
return; return;
} }
mContextAsUser = this;
if (getIntent().hasExtra(AppInfoBase.ARG_PACKAGE_UID)) { if (!canDisplayLocaleUi()) {
int uid = getIntent().getIntExtra(AppInfoBase.ARG_PACKAGE_UID, -1);
if (uid != -1) {
UserHandle userHandle = UserHandle.getUserHandleForUid(uid);
mContextAsUser = createContextAsUser(userHandle, 0);
}
}
if (!canDisplayLocaleUi() || mContextAsUser.getUserId() != UserHandle.myUserId()) {
Log.w(TAG, "Not allow to display Locale Settings UI."); Log.w(TAG, "Not allow to display Locale Settings UI.");
finish(); finish();
return; return;
@@ -82,12 +71,12 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true);
mLocalePickerWithRegion = LocalePickerWithRegion.createLanguagePicker( mLocalePickerWithRegion = LocalePickerWithRegion.createLanguagePicker(
mContextAsUser, this,
this, this,
false /* translate only */, false /* translate only */,
mPackageName, mPackageName,
this); this);
mAppLocaleDetails = AppLocaleDetails.newInstance(mPackageName, mContextAsUser.getUserId()); mAppLocaleDetails = AppLocaleDetails.newInstance(mPackageName, getUserId());
mAppLocaleDetailContainer = launchAppLocaleDetailsPage(); mAppLocaleDetailContainer = launchAppLocaleDetailsPage();
// Launch Locale picker part. // Launch Locale picker part.
launchLocalePickerPage(); launchLocalePickerPage();
@@ -127,7 +116,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
/** Sets the app's locale to the supplied language tag */ /** Sets the app's locale to the supplied language tag */
private void setAppDefaultLocale(String languageTag) { private void setAppDefaultLocale(String languageTag) {
Log.d(TAG, "setAppDefaultLocale: " + languageTag); Log.d(TAG, "setAppDefaultLocale: " + languageTag);
LocaleManager localeManager = mContextAsUser.getSystemService(LocaleManager.class); LocaleManager localeManager = getSystemService(LocaleManager.class);
if (localeManager == null) { if (localeManager == null) {
Log.w(TAG, "LocaleManager is null, cannot set default app locale"); Log.w(TAG, "LocaleManager is null, cannot set default app locale");
return; return;
@@ -169,8 +158,8 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
} }
private boolean canDisplayLocaleUi() { private boolean canDisplayLocaleUi() {
return AppLocaleUtil.canDisplayLocaleUi(mContextAsUser, mPackageName, return AppLocaleUtil.canDisplayLocaleUi(this, mPackageName,
mContextAsUser.getPackageManager().queryIntentActivities( getPackageManager().queryIntentActivities(AppLocaleUtil.LAUNCHER_ENTRY_INTENT,
AppLocaleUtil.LAUNCHER_ENTRY_INTENT, PackageManager.GET_META_DATA)); PackageManager.GET_META_DATA));
} }
} }

View File

@@ -73,7 +73,6 @@ import java.util.Locale;
shadows = { shadows = {
AppLocalePickerActivityTest.ShadowApplicationPackageManager.class, AppLocalePickerActivityTest.ShadowApplicationPackageManager.class,
AppLocalePickerActivityTest.ShadowResources.class, AppLocalePickerActivityTest.ShadowResources.class,
AppLocalePickerActivityTest.ShadowUserHandle.class,
AppLocalePickerActivityTest.ShadowLocaleConfig.class, AppLocalePickerActivityTest.ShadowLocaleConfig.class,
}) })
public class AppLocalePickerActivityTest { public class AppLocalePickerActivityTest {
@@ -100,7 +99,6 @@ public class AppLocalePickerActivityTest {
mPackageManager.removePackage(TEST_PACKAGE_NAME); mPackageManager.removePackage(TEST_PACKAGE_NAME);
ShadowResources.setDisAllowPackage(false); ShadowResources.setDisAllowPackage(false);
ShadowApplicationPackageManager.setNoLaunchEntry(false); ShadowApplicationPackageManager.setNoLaunchEntry(false);
ShadowUserHandle.setUserId(0);
ShadowLocaleConfig.setStatus(LocaleConfig.STATUS_SUCCESS); ShadowLocaleConfig.setStatus(LocaleConfig.STATUS_SUCCESS);
} }
@@ -164,17 +162,6 @@ public class AppLocalePickerActivityTest {
assertThat(controller.get().isFinishing()).isTrue(); assertThat(controller.get().isFinishing()).isTrue();
} }
@Test
public void launchAppLocalePickerActivity_modifyAppLocalesOfAnotherUser_failed() {
ShadowUserHandle.setUserId(10);
ActivityController<TestAppLocalePickerActivity> controller =
initActivityController(true);
controller.create();
assertThat(controller.get().isFinishing()).isTrue();
}
@Test @Test
public void launchAppLocalePickerActivity_intentWithoutPackageName_failed() { public void launchAppLocalePickerActivity_intentWithoutPackageName_failed() {
ActivityController<TestAppLocalePickerActivity> controller = ActivityController<TestAppLocalePickerActivity> controller =
@@ -286,19 +273,6 @@ public class AppLocalePickerActivityTest {
} }
} }
@Implements(UserHandle.class)
public static class ShadowUserHandle {
private static int sUserId = 0;
private static void setUserId(int userId) {
sUserId = userId;
}
@Implementation
public static int getUserId(int userId) {
return sUserId;
}
}
@Implements(LocaleConfig.class) @Implements(LocaleConfig.class)
public static class ShadowLocaleConfig { public static class ShadowLocaleConfig {
private static int sStatus = 0; private static int sStatus = 0;