Make sure theme attributes don't get lost
When an app calls setTaskDescription it overrides the hidden attributes derived from the theme. Make sure to not override these if they aren't set in the new task description. Test: Open Maps, go home, rotate, open maps again, make sure navigation bar is black Bug: 36703868 Change-Id: If3f8948fe81af324411c2e828834f5d81e3eeddd
This commit is contained in:
@@ -5866,7 +5866,7 @@ public class Activity extends ContextThemeWrapper
|
||||
*/
|
||||
public void setTaskDescription(ActivityManager.TaskDescription taskDescription) {
|
||||
if (mTaskDescription != taskDescription) {
|
||||
mTaskDescription.copyFrom(taskDescription);
|
||||
mTaskDescription.copyFromPreserveHiddenFields(taskDescription);
|
||||
// Scale the icon down to something reasonable if it is provided
|
||||
if (taskDescription.getIconFilename() == null && taskDescription.getIcon() != null) {
|
||||
final int size = ActivityManager.getLauncherLargeIconSizeInner(this);
|
||||
|
||||
@@ -1222,6 +1222,27 @@ public class ActivityManager {
|
||||
mNavigationBarColor = other.mNavigationBarColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies this the values from another TaskDescription, but preserves the hidden fields
|
||||
* if they weren't set on {@code other}
|
||||
* @hide
|
||||
*/
|
||||
public void copyFromPreserveHiddenFields(TaskDescription other) {
|
||||
mLabel = other.mLabel;
|
||||
mIcon = other.mIcon;
|
||||
mIconFilename = other.mIconFilename;
|
||||
mColorPrimary = other.mColorPrimary;
|
||||
if (other.mColorBackground != 0) {
|
||||
mColorBackground = other.mColorBackground;
|
||||
}
|
||||
if (other.mStatusBarColor != 0) {
|
||||
mStatusBarColor = other.mStatusBarColor;
|
||||
}
|
||||
if (other.mNavigationBarColor != 0) {
|
||||
mNavigationBarColor = other.mNavigationBarColor;
|
||||
}
|
||||
}
|
||||
|
||||
private TaskDescription(Parcel source) {
|
||||
readFromParcel(source);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user