Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9ba5590 authored by Romain Guy's avatar Romain Guy
Browse files

Add wide color gamut and HDR resource qualifiers

Bug: 32984164
Test: Config_test, AaptConfig_test and aapt2_tests
Change-Id: Ie9c82bfe2d36b1d6180ee223250ab5bb2ce90dd4
parent a2b1774d
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -9543,6 +9543,7 @@ package android.content.pm {
    method public int describeContents();
    method public void dump(android.util.Printer, java.lang.String);
    method public final int getThemeResource();
    field public static final int CONFIG_COLORIMETRY = 16384; // 0x4000
    field public static final int CONFIG_DENSITY = 4096; // 0x1000
    field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000
    field public static final int CONFIG_KEYBOARD = 16; // 0x10
@@ -10537,7 +10538,9 @@ package android.content.res {
    method public int getLayoutDirection();
    method public android.os.LocaleList getLocales();
    method public boolean isLayoutSizeAtLeast(int);
    method public boolean isScreenHdr();
    method public boolean isScreenRound();
    method public boolean isScreenWideColorGamut();
    method public static boolean needNewResources(int, int);
    method public void readFromParcel(android.os.Parcel);
    method public void setLayoutDirection(java.util.Locale);
@@ -10547,6 +10550,16 @@ package android.content.res {
    method public void setToDefaults();
    method public int updateFrom(android.content.res.Configuration);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int COLORIMETRY_HDR_MASK = 12; // 0xc
    field public static final int COLORIMETRY_HDR_NO = 4; // 0x4
    field public static final int COLORIMETRY_HDR_SHIFT = 2; // 0x2
    field public static final int COLORIMETRY_HDR_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_HDR_YES = 8; // 0x8
    field public static final int COLORIMETRY_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 3; // 0x3
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 1; // 0x1
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 2; // 0x2
    field public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR;
    field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0
    field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1
@@ -10612,6 +10625,7 @@ package android.content.res {
    field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0
    field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7
    field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6
    field public int colorimetry;
    field public int densityDpi;
    field public float fontScale;
    field public int hardKeyboardHidden;
+14 −0
Original line number Diff line number Diff line
@@ -9940,6 +9940,7 @@ package android.content.pm {
    method public int describeContents();
    method public void dump(android.util.Printer, java.lang.String);
    method public final int getThemeResource();
    field public static final int CONFIG_COLORIMETRY = 16384; // 0x4000
    field public static final int CONFIG_DENSITY = 4096; // 0x1000
    field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000
    field public static final int CONFIG_KEYBOARD = 16; // 0x10
@@ -11055,7 +11056,9 @@ package android.content.res {
    method public int getLayoutDirection();
    method public android.os.LocaleList getLocales();
    method public boolean isLayoutSizeAtLeast(int);
    method public boolean isScreenHdr();
    method public boolean isScreenRound();
    method public boolean isScreenWideColorGamut();
    method public static boolean needNewResources(int, int);
    method public void readFromParcel(android.os.Parcel);
    method public void setLayoutDirection(java.util.Locale);
@@ -11065,6 +11068,16 @@ package android.content.res {
    method public void setToDefaults();
    method public int updateFrom(android.content.res.Configuration);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int COLORIMETRY_HDR_MASK = 12; // 0xc
    field public static final int COLORIMETRY_HDR_NO = 4; // 0x4
    field public static final int COLORIMETRY_HDR_SHIFT = 2; // 0x2
    field public static final int COLORIMETRY_HDR_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_HDR_YES = 8; // 0x8
    field public static final int COLORIMETRY_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 3; // 0x3
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 1; // 0x1
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 2; // 0x2
    field public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR;
    field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0
    field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1
@@ -11130,6 +11143,7 @@ package android.content.res {
    field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0
    field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7
    field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6
    field public int colorimetry;
    field public int densityDpi;
    field public float fontScale;
    field public int hardKeyboardHidden;
+14 −0
Original line number Diff line number Diff line
@@ -9568,6 +9568,7 @@ package android.content.pm {
    method public int describeContents();
    method public void dump(android.util.Printer, java.lang.String);
    method public final int getThemeResource();
    field public static final int CONFIG_COLORIMETRY = 16384; // 0x4000
    field public static final int CONFIG_DENSITY = 4096; // 0x1000
    field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000
    field public static final int CONFIG_KEYBOARD = 16; // 0x10
@@ -10569,7 +10570,9 @@ package android.content.res {
    method public int getLayoutDirection();
    method public android.os.LocaleList getLocales();
    method public boolean isLayoutSizeAtLeast(int);
    method public boolean isScreenHdr();
    method public boolean isScreenRound();
    method public boolean isScreenWideColorGamut();
    method public static boolean needNewResources(int, int);
    method public void readFromParcel(android.os.Parcel);
    method public void setLayoutDirection(java.util.Locale);
@@ -10579,6 +10582,16 @@ package android.content.res {
    method public void setToDefaults();
    method public int updateFrom(android.content.res.Configuration);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int COLORIMETRY_HDR_MASK = 12; // 0xc
    field public static final int COLORIMETRY_HDR_NO = 4; // 0x4
    field public static final int COLORIMETRY_HDR_SHIFT = 2; // 0x2
    field public static final int COLORIMETRY_HDR_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_HDR_YES = 8; // 0x8
    field public static final int COLORIMETRY_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 3; // 0x3
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 1; // 0x1
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0
    field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 2; // 0x2
    field public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR;
    field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0
    field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1
@@ -10644,6 +10657,7 @@ package android.content.res {
    field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0
    field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7
    field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6
    field public int colorimetry;
    field public int densityDpi;
    field public float fontScale;
    field public int hardKeyboardHidden;
+10 −1
Original line number Diff line number Diff line
@@ -566,6 +566,7 @@ public class ActivityInfo extends ComponentInfo
                    CONFIG_SMALLEST_SCREEN_SIZE,
                    CONFIG_DENSITY,
                    CONFIG_LAYOUT_DIRECTION,
                    CONFIG_COLORIMETRY,
                    CONFIG_FONT_SCALE,
            })
    @Retention(RetentionPolicy.SOURCE)
@@ -669,6 +670,12 @@ public class ActivityInfo extends ComponentInfo
     * {@link android.R.attr#configChanges} attribute.
     */
    public static final int CONFIG_LAYOUT_DIRECTION = 0x2000;
    /**
     * Bit in {@link #configChanges} that indicates that the activity
     * can itself handle the change to the display color gamut or dynamic
     * range. Set from the {@link android.R.attr#configChanges} attribute.
     */
    public static final int CONFIG_COLORIMETRY = 0x4000;
    /**
     * Bit in {@link #configChanges} that indicates that the activity
     * can itself handle asset path changes.  Set from the {@link android.R.attr#configChanges}
@@ -706,6 +713,7 @@ public class ActivityInfo extends ComponentInfo
        Configuration.NATIVE_CONFIG_SMALLEST_SCREEN_SIZE,   // SMALLEST SCREEN SIZE
        Configuration.NATIVE_CONFIG_DENSITY,                // DENSITY
        Configuration.NATIVE_CONFIG_LAYOUTDIR,              // LAYOUT DIRECTION
        Configuration.NATIVE_CONFIG_COLORIMETRY,            // COLORIMETRY
    };

    /**
@@ -761,7 +769,8 @@ public class ActivityInfo extends ComponentInfo
     * {@link #CONFIG_LOCALE}, {@link #CONFIG_TOUCHSCREEN},
     * {@link #CONFIG_KEYBOARD}, {@link #CONFIG_NAVIGATION},
     * {@link #CONFIG_ORIENTATION}, {@link #CONFIG_SCREEN_LAYOUT},
     * {@link #CONFIG_DENSITY}, and {@link #CONFIG_LAYOUT_DIRECTION}.
     * {@link #CONFIG_DENSITY}, {@link #CONFIG_LAYOUT_DIRECTION} and
     * {@link #CONFIG_COLORIMETRY}.
     * Set from the {@link android.R.attr#configChanges} attribute.
     */
    public int configChanges;
+175 −0
Original line number Diff line number Diff line
@@ -101,6 +101,68 @@ public final class Configuration implements Parcelable, Comparable<Configuration
     */
    public boolean userSetLocale;


    /** Constant for {@link #colorimetry}: bits that encode whether the screen is wide gamut. */
    public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 0x3;
    /**
     * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} value
     * indicating that it is unknown whether or not the screen is wide gamut.
     */
    public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0x0;
    /**
     * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} value
     * indicating that the screen is not wide gamut.
     * <p>Corresponds to the <code>-nowidecg</code> resource qualifier.</p>
     */
    public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 0x1;
    /**
     * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} value
     * indicating that the screen is wide gamut.
     * <p>Corresponds to the <code>-widecg</code> resource qualifier.</p>
     */
    public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 0x2;

    /** Constant for {@link #colorimetry}: bits that encode whether the dynamic range of the screen. */
    public static final int COLORIMETRY_HDR_MASK = 0xc;
    /** Constant for {@link #colorimetry}: bits shift to get the screen dynamic range. */
    public static final int COLORIMETRY_HDR_SHIFT = 2;
    /**
     * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_HDR_MASK} value
     * indicating that it is unknown whether or not the screen is HDR.
     */
    public static final int COLORIMETRY_HDR_UNDEFINED = 0x0;
    /**
     * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_HDR_MASK} value
     * indicating that the screen is not HDR (low/standard dynamic range).
     * <p>Corresponds to the <code>-lowdr</code> resource qualifier.</p>
     */
    public static final int COLORIMETRY_HDR_NO = 0x1 << COLORIMETRY_HDR_SHIFT;
    /**
     * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_HDR_MASK} value
     * indicating that the screen is HDR (dynamic range).
     * <p>Corresponds to the <code>-highdr</code> resource qualifier.</p>
     */
    public static final int COLORIMETRY_HDR_YES = 0x2 << COLORIMETRY_HDR_SHIFT;

    /** Constant for {@link #colorimetry}: a value indicating that colorimetry is undefined */
    @SuppressWarnings("PointlessBitwiseExpression")
    public static final int COLORIMETRY_UNDEFINED = COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED |
            COLORIMETRY_HDR_UNDEFINED;

    /**
     * Bit mask of for color capabilities of the screen. Currently there are two fields:
     * <p>The {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} bits define the color gamut of
     * the screen. They may be one of
     * {@link #COLORIMETRY_WIDE_COLOR_GAMUT_NO} or {@link #COLORIMETRY_WIDE_COLOR_GAMUT_YES}.</p>
     *
     * <p>The {@link #COLORIMETRY_HDR_MASK} defines the dynamic range of the screen. They may be
     * one of {@link #COLORIMETRY_HDR_NO} or {@link #COLORIMETRY_HDR_YES}.</p>
     *
     * <p>See <a href="{@docRoot}guide/practices/screens_support.html">Supporting
     * Multiple Screens</a> for more information.</p>
     */
    public int colorimetry;

    /** Constant for {@link #screenLayout}: bits that encode the size. */
    public static final int SCREENLAYOUT_SIZE_MASK = 0x0f;
    /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_SIZE_MASK}
@@ -331,6 +393,9 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        if ((diff & ActivityInfo.CONFIG_SCREEN_LAYOUT) != 0) {
            list.add("CONFIG_SCREEN_LAYOUT");
        }
        if ((diff & ActivityInfo.CONFIG_COLORIMETRY) != 0) {
            list.add("CONFIG_COLORIMETRY");
        }
        if ((diff & ActivityInfo.CONFIG_UI_MODE) != 0) {
            list.add("CONFIG_UI_MODE");
        }
@@ -711,6 +776,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
                    NATIVE_CONFIG_UI_MODE,
                    NATIVE_CONFIG_SMALLEST_SCREEN_SIZE,
                    NATIVE_CONFIG_LAYOUTDIR,
                    NATIVE_CONFIG_COLORIMETRY,
            })
    @Retention(RetentionPolicy.SOURCE)
    public @interface NativeConfig {}
@@ -747,6 +813,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration
    public static final int NATIVE_CONFIG_SMALLEST_SCREEN_SIZE = 0x2000;
    /** @hide Native-specific bit mask for LAYOUTDIR config ; DO NOT USE UNLESS YOU ARE SURE.*/
    public static final int NATIVE_CONFIG_LAYOUTDIR = 0x4000;
    /** @hide Native-specific bit mask for COLORIMETRY config ; DO NOT USE UNLESS YOU ARE SURE.*/
    public static final int NATIVE_CONFIG_COLORIMETRY = 0x10000;

    /**
     * <p>Construct an invalid Configuration. This state is only suitable for constructing a
@@ -805,6 +873,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        navigationHidden = o.navigationHidden;
        orientation = o.orientation;
        screenLayout = o.screenLayout;
        colorimetry = o.colorimetry;
        uiMode = o.uiMode;
        screenWidthDp = o.screenWidthDp;
        screenHeightDp = o.screenHeightDp;
@@ -885,6 +954,20 @@ public final class Configuration implements Parcelable, Comparable<Configuration
            default: sb.append(" layoutLong=");
                    sb.append(screenLayout&SCREENLAYOUT_LONG_MASK); break;
        }
        switch ((colorimetry&COLORIMETRY_HDR_MASK)) {
            case COLORIMETRY_HDR_UNDEFINED: sb.append(" ?ldr"); break; // most likely not HDR
            case COLORIMETRY_HDR_NO: /* ldr is not interesting to print */ break;
            case COLORIMETRY_HDR_YES: sb.append(" hdr"); break;
            default: sb.append(" dynamicRange=");
                sb.append(colorimetry&COLORIMETRY_HDR_MASK); break;
        }
        switch ((colorimetry&COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) {
            case COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED: sb.append(" ?wideColorGamut"); break;
            case COLORIMETRY_WIDE_COLOR_GAMUT_NO: /* not wide is not interesting to print */ break;
            case COLORIMETRY_WIDE_COLOR_GAMUT_YES: sb.append(" widecg"); break;
            default: sb.append(" wideColorGamut=");
                sb.append(colorimetry&COLORIMETRY_WIDE_COLOR_GAMUT_MASK); break;
        }
        switch (orientation) {
            case ORIENTATION_UNDEFINED: sb.append(" ?orien"); break;
            case ORIENTATION_LANDSCAPE: sb.append(" land"); break;
@@ -976,6 +1059,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        navigationHidden = NAVIGATIONHIDDEN_UNDEFINED;
        orientation = ORIENTATION_UNDEFINED;
        screenLayout = SCREENLAYOUT_UNDEFINED;
        colorimetry = COLORIMETRY_UNDEFINED;
        uiMode = UI_MODE_TYPE_UNDEFINED;
        screenWidthDp = compatScreenWidthDp = SCREEN_WIDTH_DP_UNDEFINED;
        screenHeightDp = compatScreenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED;
@@ -1111,6 +1195,23 @@ public final class Configuration implements Parcelable, Comparable<Configuration
                | (delta.screenLayout & SCREENLAYOUT_COMPAT_NEEDED);
        }

        if (((delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) !=
                     COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED)
                && (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK)
                != (colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) {
            changed |= ActivityInfo.CONFIG_COLORIMETRY;
            colorimetry = (colorimetry & ~COLORIMETRY_WIDE_COLOR_GAMUT_MASK)
                    | (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK);
        }

        if (((delta.colorimetry & COLORIMETRY_HDR_MASK) != COLORIMETRY_HDR_UNDEFINED)
                && (delta.colorimetry & COLORIMETRY_HDR_MASK)
                != (colorimetry & COLORIMETRY_HDR_MASK)) {
            changed |= ActivityInfo.CONFIG_COLORIMETRY;
            colorimetry = (colorimetry & ~COLORIMETRY_HDR_MASK)
                    | (delta.colorimetry & COLORIMETRY_HDR_MASK);
        }

        if (delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED)
                && uiMode != delta.uiMode) {
            changed |= ActivityInfo.CONFIG_UI_MODE;
@@ -1260,6 +1361,19 @@ public final class Configuration implements Parcelable, Comparable<Configuration
                getScreenLayoutNoDirection(delta.screenLayout)) {
            changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT;
        }
        if ((compareUndefined ||
                     (delta.colorimetry & COLORIMETRY_HDR_MASK) != COLORIMETRY_HDR_UNDEFINED)
                && (colorimetry & COLORIMETRY_HDR_MASK) !=
                        (delta.colorimetry & COLORIMETRY_HDR_MASK)) {
            changed |= ActivityInfo.CONFIG_COLORIMETRY;
        }
        if ((compareUndefined ||
                     (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) !=
                             COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED)
                && (colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) !=
                        (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) {
            changed |= ActivityInfo.CONFIG_COLORIMETRY;
        }
        if ((compareUndefined || delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED))
                && uiMode != delta.uiMode) {
            changed |= ActivityInfo.CONFIG_UI_MODE;
@@ -1371,6 +1485,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        dest.writeInt(navigationHidden);
        dest.writeInt(orientation);
        dest.writeInt(screenLayout);
        dest.writeInt(colorimetry);
        dest.writeInt(uiMode);
        dest.writeInt(screenWidthDp);
        dest.writeInt(screenHeightDp);
@@ -1405,6 +1520,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        navigationHidden = source.readInt();
        orientation = source.readInt();
        screenLayout = source.readInt();
        colorimetry = source.readInt();
        uiMode = source.readInt();
        screenWidthDp = source.readInt();
        screenHeightDp = source.readInt();
@@ -1486,6 +1602,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        if (n != 0) return n;
        n = this.orientation - that.orientation;
        if (n != 0) return n;
        n = this.colorimetry - that.colorimetry;
        if (n != 0) return n;
        n = this.screenLayout - that.screenLayout;
        if (n != 0) return n;
        n = this.uiMode - that.uiMode;
@@ -1531,6 +1649,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        result = 31 * result + navigationHidden;
        result = 31 * result + orientation;
        result = 31 * result + screenLayout;
        result = 31 * result + colorimetry;
        result = 31 * result + uiMode;
        result = 31 * result + screenWidthDp;
        result = 31 * result + screenHeightDp;
@@ -1638,6 +1757,24 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        return (screenLayout & SCREENLAYOUT_ROUND_MASK) == SCREENLAYOUT_ROUND_YES;
    }

    /**
     * Return whether the screen has a wide color gamut.
     *
     * @return true if the screen has a wide color gamut, false otherwise
     */
    public boolean isScreenWideColorGamut() {
        return (colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) == COLORIMETRY_WIDE_COLOR_GAMUT_YES;
    }

    /**
     * Return whether the screen has a high dynamic range.
     *
     * @return true if the screen has a high dynamic range, false otherwise
     */
    public boolean isScreenHdr() {
        return (colorimetry & COLORIMETRY_HDR_MASK) == COLORIMETRY_HDR_YES;
    }

    /**
     *
     * @hide
@@ -1770,6 +1907,28 @@ public final class Configuration implements Parcelable, Comparable<Configuration
                break;
        }

        switch (config.colorimetry & Configuration.COLORIMETRY_HDR_MASK) {
            case Configuration.COLORIMETRY_HDR_YES:
                parts.add("highdr");
                break;
            case Configuration.COLORIMETRY_HDR_NO:
                parts.add("lowdr");
                break;
            default:
                break;
        }

        switch (config.colorimetry & Configuration.COLORIMETRY_WIDE_COLOR_GAMUT_MASK) {
            case Configuration.COLORIMETRY_WIDE_COLOR_GAMUT_YES:
                parts.add("widecg");
                break;
            case Configuration.COLORIMETRY_WIDE_COLOR_GAMUT_NO:
                parts.add("nowidecg");
                break;
            default:
                break;
        }

        switch (config.orientation) {
            case Configuration.ORIENTATION_LANDSCAPE:
                parts.add("land");
@@ -1995,6 +2154,16 @@ public final class Configuration implements Parcelable, Comparable<Configuration
            delta.screenLayout |= change.screenLayout & SCREENLAYOUT_ROUND_MASK;
        }

        if ((base.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) !=
                (change.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) {
            delta.colorimetry |= change.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK;
        }

        if ((base.colorimetry & COLORIMETRY_HDR_MASK) !=
                (change.colorimetry & COLORIMETRY_HDR_MASK)) {
            delta.colorimetry |= change.colorimetry & COLORIMETRY_HDR_MASK;
        }

        if ((base.uiMode & UI_MODE_TYPE_MASK) != (change.uiMode & UI_MODE_TYPE_MASK)) {
            delta.uiMode |= change.uiMode & UI_MODE_TYPE_MASK;
        }
@@ -2037,6 +2206,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
    private static final String XML_ATTR_NAVIGATION_HIDDEN = "navHid";
    private static final String XML_ATTR_ORIENTATION = "ori";
    private static final String XML_ATTR_SCREEN_LAYOUT = "scrLay";
    private static final String XML_ATTR_COLORIMETRY = "clrMtry";
    private static final String XML_ATTR_UI_MODE = "ui";
    private static final String XML_ATTR_SCREEN_WIDTH = "width";
    private static final String XML_ATTR_SCREEN_HEIGHT = "height";
@@ -2079,6 +2249,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration
                ORIENTATION_UNDEFINED);
        configOut.screenLayout = XmlUtils.readIntAttribute(parser, XML_ATTR_SCREEN_LAYOUT,
                SCREENLAYOUT_UNDEFINED);
        configOut.colorimetry = XmlUtils.readIntAttribute(parser, XML_ATTR_COLORIMETRY,
                COLORIMETRY_UNDEFINED);
        configOut.uiMode = XmlUtils.readIntAttribute(parser, XML_ATTR_UI_MODE, 0);
        configOut.screenWidthDp = XmlUtils.readIntAttribute(parser, XML_ATTR_SCREEN_WIDTH,
                SCREEN_WIDTH_DP_UNDEFINED);
@@ -2141,6 +2313,9 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        if (config.screenLayout != SCREENLAYOUT_UNDEFINED) {
            XmlUtils.writeIntAttribute(xml, XML_ATTR_SCREEN_LAYOUT, config.screenLayout);
        }
        if (config.colorimetry != COLORIMETRY_UNDEFINED) {
            XmlUtils.writeIntAttribute(xml, XML_ATTR_COLORIMETRY, config.colorimetry);
        }
        if (config.uiMode != 0) {
            XmlUtils.writeIntAttribute(xml, XML_ATTR_UI_MODE, config.uiMode);
        }
Loading