Merge "Import translations. DO NOT MERGE ANYWHERE" into tm-d1-dev
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
index 7dbf333..fa76a94 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
@@ -313,21 +313,7 @@
// otherwise, only the defined default supervision profile owner or holder of
// supersvision role can be set after user setup.
- final String supervisor = getString(
- com.android.internal.R.string.config_defaultSupervisionProfileOwnerComponent);
- final String supervisionRolePackage = getString(
- com.android.internal.R.string.config_systemSupervision);
- if (TextUtils.isEmpty(supervisor) && TextUtils.isEmpty(supervisionRolePackage)) {
- Log.w(TAG, "Unable to set profile owner post-setup, no default supervisor"
- + "profile owner defined");
- finish();
- return;
- }
-
- final ComponentName supervisorComponent = ComponentName.unflattenFromString(
- supervisor);
- if (!who.equals(supervisorComponent)
- && !who.getPackageName().equals(supervisionRolePackage)) {
+ if (!mDPM.isSupervisionComponent(who)) {
Log.w(TAG, "Unable to set non-default profile owner post-setup " + who);
finish();
return;
diff --git a/src/com/android/settings/display/ScreenResolutionFragment.java b/src/com/android/settings/display/ScreenResolutionFragment.java
index 3b08ae7..a827e92 100644
--- a/src/com/android/settings/display/ScreenResolutionFragment.java
+++ b/src/com/android/settings/display/ScreenResolutionFragment.java
@@ -19,6 +19,7 @@
import static com.android.settings.display.ScreenResolutionController.FHD_WIDTH;
import static com.android.settings.display.ScreenResolutionController.QHD_WIDTH;
+import android.annotation.Nullable;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.res.Resources;
@@ -34,6 +35,7 @@
import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.RadioButtonPickerFragment;
+import com.android.settingslib.display.DisplayDensityUtils;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.CandidateInfo;
import com.android.settingslib.widget.FooterPreference;
@@ -48,7 +50,6 @@
/** Preference fragment used for switch screen resolution */
@SearchIndexable
public class ScreenResolutionFragment extends RadioButtonPickerFragment {
-
private static final String TAG = "ScreenResolution";
private Resources mResources;
@@ -60,6 +61,7 @@
private String[] mScreenResolutionSummaries;
private IllustrationPreference mImagePreference;
+ private DensityRestorer mDensityRestorer;
@Override
public void onAttach(Context context) {
@@ -74,6 +76,7 @@
mResources.getStringArray(R.array.config_screen_resolution_summaries_strings);
mResolutions = getAllSupportedResolution();
mImagePreference = new IllustrationPreference(context);
+ mDensityRestorer = new DensityRestorer(context);
}
@Override
@@ -151,16 +154,21 @@
/** Using display manager to set the display mode. */
@VisibleForTesting
- public void setDisplayMode(int width) {
+ public void setDisplayMode(final int width) {
+ if (width == getDisplayMode().getPhysicalWidth()) {
+ return;
+ }
+
+ mDensityRestorer.startObserve();
mDefaultDisplay.setUserPreferredDisplayMode(getPreferMode(width));
}
/** Get the key corresponding to the resolution. */
@VisibleForTesting
String getKeyForResolution(int width) {
- return width == FHD_WIDTH ? mScreenResolutionOptions[FHD_INDEX]
- : width == QHD_WIDTH ? mScreenResolutionOptions[QHD_INDEX]
- : null;
+ return width == FHD_WIDTH
+ ? mScreenResolutionOptions[FHD_INDEX]
+ : width == QHD_WIDTH ? mScreenResolutionOptions[QHD_INDEX] : null;
}
@Override
@@ -171,7 +179,7 @@
}
@Override
- protected boolean setDefaultKey(String key) {
+ protected boolean setDefaultKey(final String key) {
if (mScreenResolutionOptions[FHD_INDEX].equals(key)) {
setDisplayMode(FHD_WIDTH);
@@ -236,10 +244,6 @@
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.screen_resolution_settings) {
-
- boolean mIsFHDSupport = false;
- boolean mIsQHDSupport = false;
-
@Override
protected boolean isPageSearchEnabled(Context context) {
ScreenResolutionController mController =
@@ -247,4 +251,76 @@
return mController.checkSupportedResolutions();
}
};
+
+ private static final class DensityRestorer implements DisplayManager.DisplayListener {
+ private final @Nullable Context mContext;
+ private int mDefaultDensity;
+ private int mCurrentIndex;
+
+ DensityRestorer(Context context) {
+ mContext = context;
+ }
+
+ public void startObserve() {
+ if (mContext == null) {
+ return;
+ }
+
+ final DisplayDensityUtils density = new DisplayDensityUtils(mContext);
+ final int currentIndex = density.getCurrentIndex();
+ final int defaultDensity = density.getDefaultDensity();
+
+ if (density.getValues()[mCurrentIndex] == density.getDefaultDensity()) {
+ return;
+ }
+
+ mDefaultDensity = defaultDensity;
+ mCurrentIndex = currentIndex;
+ final DisplayManager dm = mContext.getSystemService(DisplayManager.class);
+ dm.registerDisplayListener(this, null);
+ }
+
+ public void stopObserve() {
+ if (mContext == null) {
+ return;
+ }
+
+ final DisplayManager dm = mContext.getSystemService(DisplayManager.class);
+ dm.unregisterDisplayListener(this);
+ }
+
+ @Override
+ public void onDisplayAdded(int displayId) {}
+
+ @Override
+ public void onDisplayRemoved(int displayId) {}
+
+ @Override
+ public void onDisplayChanged(int displayId) {
+ if (displayId != Display.DEFAULT_DISPLAY) {
+ return;
+ }
+
+ restoreDensity();
+ }
+
+ private void restoreDensity() {
+ if (mContext == null) {
+ return;
+ }
+
+ final DisplayDensityUtils density = new DisplayDensityUtils(mContext);
+ if (density.getDefaultDensity() == mDefaultDensity) {
+ return;
+ }
+
+ if (density.getValues()[mCurrentIndex] != density.getDefaultDensity()) {
+ DisplayDensityUtils.setForcedDisplayDensity(
+ Display.DEFAULT_DISPLAY, density.getValues()[mCurrentIndex]);
+ }
+
+ mDefaultDensity = density.getDefaultDensity();
+ stopObserve();
+ }
+ }
}