Loading core/java/android/app/AlertDialog.java +4 −3 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.annotation.StringRes; import android.annotation.StyleRes; import android.content.Context; import android.content.DialogInterface; import android.content.res.ResourceId; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.os.Bundle; Loading Loading @@ -204,7 +205,7 @@ public class AlertDialog extends Dialog implements DialogInterface { mAlert = AlertController.create(getContext(), this, getWindow()); } static int resolveDialogTheme(Context context, int themeResId) { static @StyleRes int resolveDialogTheme(Context context, @StyleRes int themeResId) { if (themeResId == THEME_TRADITIONAL) { return R.style.Theme_Dialog_Alert; } else if (themeResId == THEME_HOLO_DARK) { Loading @@ -215,7 +216,7 @@ public class AlertDialog extends Dialog implements DialogInterface { return R.style.Theme_DeviceDefault_Dialog_Alert; } else if (themeResId == THEME_DEVICE_DEFAULT_LIGHT) { return R.style.Theme_DeviceDefault_Light_Dialog_Alert; } else if (Integer.compareUnsigned(themeResId, 0x01000000) >= 0) { } else if (ResourceId.isValid(themeResId)) { // start of real resource IDs. return themeResId; } else { Loading Loading @@ -450,7 +451,7 @@ public class AlertDialog extends Dialog implements DialogInterface { * @param context the parent context */ public Builder(Context context) { this(context, resolveDialogTheme(context, 0)); this(context, resolveDialogTheme(context, ResourceId.ID_NULL)); } /** Loading core/java/android/app/Dialog.java +2 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.ContextWrapper; import android.content.DialogInterface; import android.content.res.Configuration; import android.content.pm.ApplicationInfo; import android.content.res.ResourceId; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; Loading Loading @@ -169,7 +170,7 @@ public class Dialog implements DialogInterface, Window.Callback, Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { if (createContextThemeWrapper) { if (themeResId == 0) { if (themeResId == ResourceId.ID_NULL) { final TypedValue outValue = new TypedValue(); context.getTheme().resolveAttribute(R.attr.dialogTheme, outValue, true); themeResId = outValue.resourceId; Loading core/java/android/appwidget/AppWidgetProviderInfo.java +2 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.ResourceId; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Parcel; Loading Loading @@ -368,7 +369,7 @@ public class AppWidgetProviderInfo implements Parcelable { try { Resources resources = context.getPackageManager().getResourcesForApplication( providerInfo.applicationInfo); if (resourceId != 0) { if (ResourceId.isValid(resourceId)) { if (density < 0) { density = 0; } Loading core/java/android/content/res/ResourceId.java 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package android.content.res; import android.annotation.AnyRes; /** * Provides a set of utility methods for dealing with Resource IDs. * @hide */ public final class ResourceId { /** * The {@code null} resource ID. */ public static final @AnyRes int ID_NULL = 0; /** * Checks whether the integer {@code id} is a valid resource ID, as generated by AAPT. * <p>Note that a negative integer is not necessarily an invalid resource ID, and custom * validations that compare the {@code id} against {@code 0} are incorrect.</p> * @param id The integer to validate. * @return {@code true} if the integer is a valid resource ID. */ public static boolean isValid(@AnyRes int id) { // With the introduction of packages with IDs > 0x7f, resource IDs can be negative when // represented as a signed Java int. Some legacy code assumes -1 is an invalid resource ID, // despite the existing documentation. return id != -1 && (id & 0xff000000) != 0 && (id & 0x00ff0000) != 0; } } core/java/android/content/res/Resources.java +1 −1 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public class Resources { /** @hide */ public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo, int dark, int deviceDefault) { if (curTheme != 0) { if (curTheme != ResourceId.ID_NULL) { return curTheme; } if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) { Loading Loading
core/java/android/app/AlertDialog.java +4 −3 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.annotation.StringRes; import android.annotation.StyleRes; import android.content.Context; import android.content.DialogInterface; import android.content.res.ResourceId; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.os.Bundle; Loading Loading @@ -204,7 +205,7 @@ public class AlertDialog extends Dialog implements DialogInterface { mAlert = AlertController.create(getContext(), this, getWindow()); } static int resolveDialogTheme(Context context, int themeResId) { static @StyleRes int resolveDialogTheme(Context context, @StyleRes int themeResId) { if (themeResId == THEME_TRADITIONAL) { return R.style.Theme_Dialog_Alert; } else if (themeResId == THEME_HOLO_DARK) { Loading @@ -215,7 +216,7 @@ public class AlertDialog extends Dialog implements DialogInterface { return R.style.Theme_DeviceDefault_Dialog_Alert; } else if (themeResId == THEME_DEVICE_DEFAULT_LIGHT) { return R.style.Theme_DeviceDefault_Light_Dialog_Alert; } else if (Integer.compareUnsigned(themeResId, 0x01000000) >= 0) { } else if (ResourceId.isValid(themeResId)) { // start of real resource IDs. return themeResId; } else { Loading Loading @@ -450,7 +451,7 @@ public class AlertDialog extends Dialog implements DialogInterface { * @param context the parent context */ public Builder(Context context) { this(context, resolveDialogTheme(context, 0)); this(context, resolveDialogTheme(context, ResourceId.ID_NULL)); } /** Loading
core/java/android/app/Dialog.java +2 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.ContextWrapper; import android.content.DialogInterface; import android.content.res.Configuration; import android.content.pm.ApplicationInfo; import android.content.res.ResourceId; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; Loading Loading @@ -169,7 +170,7 @@ public class Dialog implements DialogInterface, Window.Callback, Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { if (createContextThemeWrapper) { if (themeResId == 0) { if (themeResId == ResourceId.ID_NULL) { final TypedValue outValue = new TypedValue(); context.getTheme().resolveAttribute(R.attr.dialogTheme, outValue, true); themeResId = outValue.resourceId; Loading
core/java/android/appwidget/AppWidgetProviderInfo.java +2 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.ResourceId; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Parcel; Loading Loading @@ -368,7 +369,7 @@ public class AppWidgetProviderInfo implements Parcelable { try { Resources resources = context.getPackageManager().getResourcesForApplication( providerInfo.applicationInfo); if (resourceId != 0) { if (ResourceId.isValid(resourceId)) { if (density < 0) { density = 0; } Loading
core/java/android/content/res/ResourceId.java 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package android.content.res; import android.annotation.AnyRes; /** * Provides a set of utility methods for dealing with Resource IDs. * @hide */ public final class ResourceId { /** * The {@code null} resource ID. */ public static final @AnyRes int ID_NULL = 0; /** * Checks whether the integer {@code id} is a valid resource ID, as generated by AAPT. * <p>Note that a negative integer is not necessarily an invalid resource ID, and custom * validations that compare the {@code id} against {@code 0} are incorrect.</p> * @param id The integer to validate. * @return {@code true} if the integer is a valid resource ID. */ public static boolean isValid(@AnyRes int id) { // With the introduction of packages with IDs > 0x7f, resource IDs can be negative when // represented as a signed Java int. Some legacy code assumes -1 is an invalid resource ID, // despite the existing documentation. return id != -1 && (id & 0xff000000) != 0 && (id & 0x00ff0000) != 0; } }
core/java/android/content/res/Resources.java +1 −1 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public class Resources { /** @hide */ public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo, int dark, int deviceDefault) { if (curTheme != 0) { if (curTheme != ResourceId.ID_NULL) { return curTheme; } if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) { Loading