Merge "Revert "allow locking UI mode and block launching car dock for automotive""
diff --git a/api/current.txt b/api/current.txt
index 55f3b47..d54b7fd 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -5529,8 +5529,6 @@
method public void enableCarMode(int);
method public int getCurrentModeType();
method public int getNightMode();
- method public boolean isNightModeLocked();
- method public boolean isUiModeLocked();
method public void setNightMode(int);
field public static java.lang.String ACTION_ENTER_CAR_MODE;
field public static java.lang.String ACTION_ENTER_DESK_MODE;
diff --git a/api/system-current.txt b/api/system-current.txt
index c50fe01..2ea5ebb 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -133,7 +133,6 @@
field public static final java.lang.String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
field public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS";
field public static final java.lang.String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
- field public static final java.lang.String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
field public static final java.lang.String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
field public static final java.lang.String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS";
field public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";
@@ -5649,8 +5648,6 @@
method public void enableCarMode(int);
method public int getCurrentModeType();
method public int getNightMode();
- method public boolean isNightModeLocked();
- method public boolean isUiModeLocked();
method public void setNightMode(int);
field public static java.lang.String ACTION_ENTER_CAR_MODE;
field public static java.lang.String ACTION_ENTER_DESK_MODE;
diff --git a/core/java/android/app/IUiModeManager.aidl b/core/java/android/app/IUiModeManager.aidl
index cae54b6..7e9873e 100644
--- a/core/java/android/app/IUiModeManager.aidl
+++ b/core/java/android/app/IUiModeManager.aidl
@@ -51,14 +51,4 @@
* 2 for night, and 3 for automatic mode switching.
*/
int getNightMode();
-
- /**
- * Tells if UI mode is locked or not.
- */
- boolean isUiModeLocked();
-
- /**
- * Tells if Night mode is locked or not.
- */
- boolean isNightModeLocked();
}
diff --git a/core/java/android/app/UiModeManager.java b/core/java/android/app/UiModeManager.java
index 4416415..0f6ce12 100644
--- a/core/java/android/app/UiModeManager.java
+++ b/core/java/android/app/UiModeManager.java
@@ -233,35 +233,4 @@
}
return -1;
}
-
- /**
- * @return If UI mode is locked or not. When UI mode is locked, calls to change UI mode
- * like {@link #enableCarMode(int)} will silently fail.
- */
- public boolean isUiModeLocked() {
- if (mService != null) {
- try {
- return mService.isUiModeLocked();
- } catch (RemoteException e) {
- Log.e(TAG, "isUiModeLocked: RemoteException", e);
- }
- }
- return true;
- }
-
- /**
- * @return If Night mode is locked or not. When Night mode is locked, changing Night mode
- * is only allowed to privileged system components and normal application's call
- * to change Night mode using {@link #setNightMode(int)} will silently fail.
- */
- public boolean isNightModeLocked() {
- if (mService != null) {
- try {
- return mService.isNightModeLocked();
- } catch (RemoteException e) {
- Log.e(TAG, "isNightModeLocked: RemoteException", e);
- }
- }
- return true;
- }
}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 02d298e..2940f6c 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -2712,13 +2712,6 @@
<permission android:name="android.permission.DISPATCH_NFC_MESSAGE"
android:protectionLevel="signature|privileged" />
- <!-- @SystemApi Allows changing day / night mode when system is configured with
- config_lockDayNightMode set to true. If requesting app does not have permission,
- it will be ignored.
- @hide -->
- <permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE"
- android:protectionLevel="signature|privileged" />
-
<!-- The system process is explicitly the only one allowed to launch the
confirmation UI for full backup/restore -->
<uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index caa20dc..d9e0472 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -716,13 +716,6 @@
<bool name="config_carDockEnablesAccelerometer">true</bool>
- <!-- Control whether to launch Car dock home app when user presses home button or when
- car dock intent is fired.
- In mobile device, usually separate home app is expected in car mode, and this should be
- enabled. But in environments like real car, default home app may be enough, and in that
- case, this can be disabled (set to false). -->
- <bool name="config_enableCarDockHomeLaunch">true</bool>
-
<!-- HDMI behavior -->
<!-- The number of degrees to rotate the display when the device has HDMI connected
@@ -740,15 +733,6 @@
Any other values will have surprising consequences. -->
<integer name="config_defaultUiModeType">1</integer>
- <!-- Control whether to lock UI mode to what is selected from config_defaultUiModeType.
- Once UI mode is locked, applications cannot change it anymore. -->
- <bool name="config_lockUiMode">false</bool>
-
- <!-- Control whether to lock day/night mode change from normal application. When it is
- true, day / night mode change is only allowed to apps with MODIFY_DAY_NIGHT_MODE
- permission. -->
- <bool name="config_lockDayNightMode">false</bool>
-
<!-- Control the default night mode to use when there is no other mode override set.
One of the following values (see UiModeManager.java):
0 - MODE_NIGHT_AUTO
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 16c9db1..3860f68 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1476,14 +1476,11 @@
<java-symbol type="bool" name="config_carDockEnablesAccelerometer" />
<java-symbol type="bool" name="config_deskDockEnablesAccelerometer" />
<java-symbol type="bool" name="config_disableMenuKeyInLockScreen" />
- <java-symbol type="bool" name="config_enableCarDockHomeLaunch" />
<java-symbol type="bool" name="config_enableLockBeforeUnlockScreen" />
<java-symbol type="bool" name="config_enableLockScreenRotation" />
<java-symbol type="bool" name="config_enableLockScreenTranslucentDecor" />
<java-symbol type="bool" name="config_enableTranslucentDecor" />
<java-symbol type="bool" name="config_lidControlsSleep" />
- <java-symbol type="bool" name="config_lockDayNightMode" />
- <java-symbol type="bool" name="config_lockUiMode" />
<java-symbol type="bool" name="config_reverseDefaultRotation" />
<java-symbol type="bool" name="config_showNavigationBar" />
<java-symbol type="bool" name="config_supportAutoRotation" />
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index 6f713cd..0b67ad8 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -57,6 +57,7 @@
private static final boolean LOG = false;
// Enable launching of applications when entering the dock.
+ private static final boolean ENABLE_LAUNCH_CAR_DOCK_APP = true;
private static final boolean ENABLE_LAUNCH_DESK_DOCK_APP = true;
final Object mLock = new Object();
@@ -75,13 +76,6 @@
private boolean mComputedNightMode;
private int mCarModeEnableFlags;
- // flag set by resource, whether to enable Car dock launch when starting car mode.
- private boolean mEnableCarDockLaunch = true;
- // flag set by resource, whether to lock UI mode to the default one or not.
- private boolean mUiModeLocked = false;
- // flag set by resource, whether to night mode change for normal all or not.
- private boolean mNightModeLocked = false;
-
int mCurUiMode = 0;
private int mSetUiMode = 0;
private boolean mHoldingConfiguration = false;
@@ -182,10 +176,6 @@
com.android.internal.R.integer.config_carDockKeepsScreenOn) == 1);
mDeskModeKeepsScreenOn = (res.getInteger(
com.android.internal.R.integer.config_deskDockKeepsScreenOn) == 1);
- mEnableCarDockLaunch = res.getBoolean(
- com.android.internal.R.bool.config_enableCarDockHomeLaunch);
- mUiModeLocked = res.getBoolean(com.android.internal.R.bool.config_lockUiMode);
- mNightModeLocked = res.getBoolean(com.android.internal.R.bool.config_lockDayNightMode);
final PackageManager pm = context.getPackageManager();
mTelevision = pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)
@@ -209,10 +199,6 @@
private final IBinder mService = new IUiModeManager.Stub() {
@Override
public void enableCarMode(int flags) {
- if (isUiModeLocked()) {
- Slog.e(TAG, "enableCarMode while UI mode is locked");
- return;
- }
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -228,10 +214,6 @@
@Override
public void disableCarMode(int flags) {
- if (isUiModeLocked()) {
- Slog.e(TAG, "disableCarMode while UI mode is locked");
- return;
- }
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -259,13 +241,6 @@
@Override
public void setNightMode(int mode) {
- if (isNightModeLocked() && (getContext().checkCallingOrSelfPermission(
- android.Manifest.permission.MODIFY_DAY_NIGHT_MODE)
- != PackageManager.PERMISSION_GRANTED)) {
- Slog.e(TAG,
- "Night mode locked, requires MODIFY_DAY_NIGHT_MODE permission");
- return;
- }
switch (mode) {
case UiModeManager.MODE_NIGHT_NO:
case UiModeManager.MODE_NIGHT_YES:
@@ -298,20 +273,6 @@
}
@Override
- public boolean isUiModeLocked() {
- synchronized (mLock) {
- return mUiModeLocked;
- }
- }
-
- @Override
- public boolean isNightModeLocked() {
- synchronized (mLock) {
- return mNightModeLocked;
- }
- }
-
- @Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
!= PackageManager.PERMISSION_GRANTED) {
@@ -332,13 +293,10 @@
pw.print(" mDockState="); pw.print(mDockState);
pw.print(" mLastBroadcastState="); pw.println(mLastBroadcastState);
pw.print(" mNightMode="); pw.print(mNightMode);
- pw.print(" mNightModeLocked="); pw.print(mNightModeLocked);
pw.print(" mCarModeEnabled="); pw.print(mCarModeEnabled);
pw.print(" mComputedNightMode="); pw.print(mComputedNightMode);
- pw.print(" mCarModeEnableFlags="); pw.print(mCarModeEnableFlags);
- pw.print(" mEnableCarDockLaunch="); pw.println(mEnableCarDockLaunch);
+ pw.print(" mCarModeEnableFlags="); pw.println(mCarModeEnableFlags);
pw.print(" mCurUiMode=0x"); pw.print(Integer.toHexString(mCurUiMode));
- pw.print(" mUiModeLocked="); pw.print(mUiModeLocked);
pw.print(" mSetUiMode=0x"); pw.println(Integer.toHexString(mSetUiMode));
pw.print(" mHoldingConfiguration="); pw.print(mHoldingConfiguration);
pw.print(" mSystemReady="); pw.println(mSystemReady);
@@ -398,9 +356,7 @@
private void updateConfigurationLocked() {
int uiMode = mDefaultUiModeType;
- if (mUiModeLocked) {
- // no-op, keeps default one
- } else if (mTelevision) {
+ if (mTelevision) {
uiMode = Configuration.UI_MODE_TYPE_TELEVISION;
} else if (mWatch) {
uiMode = Configuration.UI_MODE_TYPE_WATCH;
@@ -504,7 +460,7 @@
} else {
String category = null;
if (mCarModeEnabled) {
- if (mEnableCarDockLaunch
+ if (ENABLE_LAUNCH_CAR_DOCK_APP
&& (enableFlags & UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) {
category = Intent.CATEGORY_CAR_DOCK;
}
@@ -547,7 +503,7 @@
if (UiModeManager.ACTION_ENTER_CAR_MODE.equals(action)) {
// Only launch car home when car mode is enabled and the caller
// has asked us to switch to it.
- if (mEnableCarDockLaunch
+ if (ENABLE_LAUNCH_CAR_DOCK_APP
&& (enableFlags & UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) {
category = Intent.CATEGORY_CAR_DOCK;
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index fbdb55a..639753a 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -159,7 +159,8 @@
static final boolean SHOW_PROCESSES_ON_ALT_MENU = false;
// Whether to allow dock apps with METADATA_DOCK_HOME to temporarily take over the Home key.
- // No longer recommended for desk docks;
+ // No longer recommended for desk docks; still useful in car docks.
+ static final boolean ENABLE_CAR_DOCK_HOME_CAPTURE = true;
static final boolean ENABLE_DESK_DOCK_HOME_CAPTURE = false;
static final int SHORT_PRESS_POWER_NOTHING = 0;
@@ -316,10 +317,6 @@
int[] mNavigationBarHeightForRotation = new int[4];
int[] mNavigationBarWidthForRotation = new int[4];
- // Whether to allow dock apps with METADATA_DOCK_HOME to temporarily take over the Home key.
- // This is for car dock and this is updated from resource.
- private boolean mEnableCarDockHomeCapture = true;
-
boolean mBootMessageNeedsHiding;
KeyguardServiceDelegate mKeyguardDelegate;
final Runnable mWindowManagerDrawCallback = new Runnable() {
@@ -1402,8 +1399,6 @@
mHomeIntent.addCategory(Intent.CATEGORY_HOME);
mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
- mEnableCarDockHomeCapture = context.getResources().getBoolean(
- com.android.internal.R.bool.config_enableCarDockHomeLaunch);
mCarDockIntent = new Intent(Intent.ACTION_MAIN, null);
mCarDockIntent.addCategory(Intent.CATEGORY_CAR_DOCK);
mCarDockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
@@ -6407,7 +6402,7 @@
* true:
* <ul>
* <li>The device is not in either car mode or desk mode
- * <li>The device is in car mode but mEnableCarDockHomeCapture is false
+ * <li>The device is in car mode but ENABLE_CAR_DOCK_HOME_CAPTURE is false
* <li>The device is in desk mode but ENABLE_DESK_DOCK_HOME_CAPTURE is false
* <li>The device is in car mode but there's no CAR_DOCK app with METADATA_DOCK_HOME
* <li>The device is in desk mode but there's no DESK_DOCK app with METADATA_DOCK_HOME
@@ -6421,7 +6416,7 @@
// is, when in car mode you should be taken to car home regardless
// of whether we are actually in a car dock.
if (mUiMode == Configuration.UI_MODE_TYPE_CAR) {
- if (mEnableCarDockHomeCapture) {
+ if (ENABLE_CAR_DOCK_HOME_CAPTURE) {
intent = mCarDockIntent;
}
} else if (mUiMode == Configuration.UI_MODE_TYPE_DESK) {
@@ -6941,7 +6936,6 @@
pw.print(prefix); pw.print("mSupportAutoRotation="); pw.println(mSupportAutoRotation);
pw.print(prefix); pw.print("mUiMode="); pw.print(mUiMode);
pw.print(" mDockMode="); pw.print(mDockMode);
- pw.print(" mEnableCarDockHomeCapture="); pw.print(mEnableCarDockHomeCapture);
pw.print(" mCarDockRotation="); pw.print(mCarDockRotation);
pw.print(" mDeskDockRotation="); pw.println(mDeskDockRotation);
pw.print(prefix); pw.print("mUserRotationMode="); pw.print(mUserRotationMode);