diff options
17 files changed, 122 insertions, 137 deletions
diff --git a/core/java/android/util/Xml.java b/core/java/android/util/Xml.java index c119f24cc0eb..c8193b3b0dbb 100644 --- a/core/java/android/util/Xml.java +++ b/core/java/android/util/Xml.java @@ -128,6 +128,7 @@ public class Xml { * * @hide */ + @SuppressWarnings("AndroidFrameworkEfficientXml") public static @NonNull TypedXmlPullParser newFastPullParser() { return XmlUtils.makeTyped(newPullParser()); } @@ -206,6 +207,7 @@ public class Xml { * * @hide */ + @SuppressWarnings("AndroidFrameworkEfficientXml") public static @NonNull TypedXmlSerializer newFastSerializer() { return XmlUtils.makeTyped(new FastXmlSerializer()); } diff --git a/core/java/com/android/internal/util/XmlUtils.java b/core/java/com/android/internal/util/XmlUtils.java index 8eb0e280350f..244efc596926 100644 --- a/core/java/com/android/internal/util/XmlUtils.java +++ b/core/java/com/android/internal/util/XmlUtils.java @@ -53,6 +53,7 @@ import java.util.Set; public class XmlUtils { private static final String STRING_ARRAY_SEPARATOR = ":"; + @SuppressWarnings("AndroidFrameworkEfficientXml") private static class ForcedTypedXmlSerializer extends XmlSerializerWrapper implements TypedXmlSerializer { public ForcedTypedXmlSerializer(XmlSerializer wrapped) { @@ -133,6 +134,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") private static class ForcedTypedXmlPullParser extends XmlPullParserWrapper implements TypedXmlPullParser { public ForcedTypedXmlPullParser(XmlPullParser wrapped) { @@ -1715,6 +1717,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static int readIntAttribute(XmlPullParser in, String name, int defaultValue) { if (in instanceof TypedXmlPullParser) { return ((TypedXmlPullParser) in).getAttributeInt(null, name, defaultValue); @@ -1730,6 +1733,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static int readIntAttribute(XmlPullParser in, String name) throws IOException { if (in instanceof TypedXmlPullParser) { try { @@ -1746,6 +1750,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static void writeIntAttribute(XmlSerializer out, String name, int value) throws IOException { if (out instanceof TypedXmlSerializer) { @@ -1755,6 +1760,7 @@ public class XmlUtils { out.attribute(null, name, Integer.toString(value)); } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static long readLongAttribute(XmlPullParser in, String name, long defaultValue) { if (in instanceof TypedXmlPullParser) { return ((TypedXmlPullParser) in).getAttributeLong(null, name, defaultValue); @@ -1770,6 +1776,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static long readLongAttribute(XmlPullParser in, String name) throws IOException { if (in instanceof TypedXmlPullParser) { try { @@ -1786,6 +1793,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static void writeLongAttribute(XmlSerializer out, String name, long value) throws IOException { if (out instanceof TypedXmlSerializer) { @@ -1795,6 +1803,7 @@ public class XmlUtils { out.attribute(null, name, Long.toString(value)); } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static float readFloatAttribute(XmlPullParser in, String name) throws IOException { if (in instanceof TypedXmlPullParser) { try { @@ -1811,6 +1820,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static void writeFloatAttribute(XmlSerializer out, String name, float value) throws IOException { if (out instanceof TypedXmlSerializer) { @@ -1820,10 +1830,12 @@ public class XmlUtils { out.attribute(null, name, Float.toString(value)); } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static boolean readBooleanAttribute(XmlPullParser in, String name) { return readBooleanAttribute(in, name, false); } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static boolean readBooleanAttribute(XmlPullParser in, String name, boolean defaultValue) { if (in instanceof TypedXmlPullParser) { @@ -1837,6 +1849,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static void writeBooleanAttribute(XmlSerializer out, String name, boolean value) throws IOException { if (out instanceof TypedXmlSerializer) { @@ -1869,6 +1882,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static byte[] readByteArrayAttribute(XmlPullParser in, String name) { if (in instanceof TypedXmlPullParser) { try { @@ -1885,6 +1899,7 @@ public class XmlUtils { } } + @SuppressWarnings("AndroidFrameworkEfficientXml") public static void writeByteArrayAttribute(XmlSerializer out, String name, byte[] value) throws IOException { if (value != null) { diff --git a/errorprone/refaster/EfficientXml.java b/errorprone/refaster/EfficientXml.java index bd1ddfc92e91..ae797c46b77e 100644 --- a/errorprone/refaster/EfficientXml.java +++ b/errorprone/refaster/EfficientXml.java @@ -292,6 +292,30 @@ public class EfficientXml { } } + class BooleanToStringTrue { + @BeforeTemplate + void before(TypedXmlSerializer out, String n) throws Exception { + out.attribute(null, n, "true"); + } + + @AfterTemplate + void after(TypedXmlSerializer out, String n) throws Exception { + out.attributeBoolean(null, n, true); + } + } + + class BooleanToStringFalse { + @BeforeTemplate + void before(TypedXmlSerializer out, String n) throws Exception { + out.attribute(null, n, "false"); + } + + @AfterTemplate + void after(TypedXmlSerializer out, String n) throws Exception { + out.attributeBoolean(null, n, false); + } + } + class BooleanFromString { @BeforeTemplate boolean beforeParse(TypedXmlPullParser in, String n) throws Exception { diff --git a/errorprone/refaster/EfficientXml.java.refaster b/errorprone/refaster/EfficientXml.java.refaster Binary files differindex f2974fffb83b..750c2dbe98c0 100644 --- a/errorprone/refaster/EfficientXml.java.refaster +++ b/errorprone/refaster/EfficientXml.java.refaster diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java index d30e9fb002e0..51e2b12bcee4 100644 --- a/services/core/java/com/android/server/SensorPrivacyService.java +++ b/services/core/java/com/android/server/SensorPrivacyService.java @@ -158,7 +158,7 @@ public final class SensorPrivacyService extends SystemService { XmlUtils.beginDocument(parser, XML_TAG_SENSOR_PRIVACY); parser.next(); String tagName = parser.getName(); - enabled = Boolean.valueOf(parser.getAttributeValue(null, XML_ATTRIBUTE_ENABLED)); + enabled = parser.getAttributeBoolean(null, XML_ATTRIBUTE_ENABLED, false); } catch (IOException | XmlPullParserException e) { Log.e(TAG, "Caught an exception reading the state from storage: ", e); // Delete the file to prevent the same error on subsequent calls and assume sensor diff --git a/services/core/java/com/android/server/adb/AdbDebuggingManager.java b/services/core/java/com/android/server/adb/AdbDebuggingManager.java index d99b195351f1..10b4def17ef5 100644 --- a/services/core/java/com/android/server/adb/AdbDebuggingManager.java +++ b/services/core/java/com/android/server/adb/AdbDebuggingManager.java @@ -71,7 +71,6 @@ import android.util.Xml; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; -import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.XmlUtils; import com.android.internal.util.dump.DualDumpOutputStream; @@ -79,7 +78,6 @@ import com.android.server.FgThread; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlSerializer; import java.io.BufferedReader; import java.io.File; @@ -89,7 +87,6 @@ import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.SecureRandom; import java.util.AbstractMap; @@ -1966,9 +1963,9 @@ public class AdbDebuggingManager { String key = parser.getAttributeValue(null, XML_ATTRIBUTE_KEY); long connectionTime; try { - connectionTime = Long.valueOf( - parser.getAttributeValue(null, XML_ATTRIBUTE_LAST_CONNECTION)); - } catch (NumberFormatException e) { + connectionTime = parser.getAttributeLong(null, + XML_ATTRIBUTE_LAST_CONNECTION); + } catch (XmlPullParserException e) { Slog.e(TAG, "Caught a NumberFormatException parsing the last connection time: " + e); @@ -2020,9 +2017,9 @@ public class AdbDebuggingManager { String key = parser.getAttributeValue(null, XML_ATTRIBUTE_KEY); long connectionTime; try { - connectionTime = Long.valueOf( - parser.getAttributeValue(null, XML_ATTRIBUTE_LAST_CONNECTION)); - } catch (NumberFormatException e) { + connectionTime = parser.getAttributeLong(null, + XML_ATTRIBUTE_LAST_CONNECTION); + } catch (XmlPullParserException e) { Slog.e(TAG, "Caught a NumberFormatException parsing the last connection time: " + e); @@ -2150,8 +2147,8 @@ public class AdbDebuggingManager { for (Map.Entry<String, Long> keyEntry : mKeyMap.entrySet()) { serializer.startTag(null, XML_TAG_ADB_KEY); serializer.attribute(null, XML_ATTRIBUTE_KEY, keyEntry.getKey()); - serializer.attribute(null, XML_ATTRIBUTE_LAST_CONNECTION, - String.valueOf(keyEntry.getValue())); + serializer.attributeLong(null, XML_ATTRIBUTE_LAST_CONNECTION, + keyEntry.getValue()); serializer.endTag(null, XML_TAG_ADB_KEY); } for (String bssid : mTrustedNetworks) { diff --git a/services/core/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java index b0820e81ec09..a62642b1f842 100644 --- a/services/core/java/com/android/server/display/PersistentDataStore.java +++ b/services/core/java/com/android/server/display/PersistentDataStore.java @@ -31,17 +31,12 @@ import android.util.Xml; import android.view.Display; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.XmlUtils; import libcore.io.IoUtils; -import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlSerializer; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -49,7 +44,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -628,15 +622,7 @@ final class PersistentDataStore { } String packageName = parser.getAttributeValue(null, ATTR_PACKAGE_NAME); - String timeStampString = parser.getAttributeValue(null, ATTR_TIME_STAMP); - long timeStamp = -1; - if (timeStampString != null) { - try { - timeStamp = Long.parseLong(timeStampString); - } catch (NumberFormatException nfe) { - // Ignore we will just not restore the timestamp. - } - } + long timeStamp = parser.getAttributeLong(null, ATTR_TIME_STAMP, -1); try { BrightnessConfiguration config = diff --git a/services/core/java/com/android/server/input/PersistentDataStore.java b/services/core/java/com/android/server/input/PersistentDataStore.java index a735a8f9d305..6cec2723b141 100644 --- a/services/core/java/com/android/server/input/PersistentDataStore.java +++ b/services/core/java/com/android/server/input/PersistentDataStore.java @@ -510,7 +510,7 @@ final class PersistentDataStore { serializer.startTag(null, "keyboard-layout"); serializer.attribute(null, "descriptor", layout); if (layout.equals(mCurrentKeyboardLayout)) { - serializer.attribute(null, "current", "true"); + serializer.attributeBoolean(null, "current", true); } serializer.endTag(null, "keyboard-layout"); } diff --git a/services/core/java/com/android/server/notification/SnoozeHelper.java b/services/core/java/com/android/server/notification/SnoozeHelper.java index b5ca2abf8afe..2122b9c19805 100644 --- a/services/core/java/com/android/server/notification/SnoozeHelper.java +++ b/services/core/java/com/android/server/notification/SnoozeHelper.java @@ -558,8 +558,8 @@ public class SnoozeHelper { if (value < currentTime) { return; } - out.attribute(null, XML_SNOOZED_NOTIFICATION_TIME, - value.toString()); + out.attributeLong(null, XML_SNOOZED_NOTIFICATION_TIME, + value); }); writeXml(out, mPersistedSnoozedNotificationsWithContext, XML_SNOOZED_NOTIFICATION_CONTEXT, diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 966090cb96a7..0b080a8a1518 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -1970,28 +1970,28 @@ public final class Settings { serializer.attributeLong(null, ATTR_CE_DATA_INODE, ustate.ceDataInode); } if (!ustate.installed) { - serializer.attribute(null, ATTR_INSTALLED, "false"); + serializer.attributeBoolean(null, ATTR_INSTALLED, false); } if (ustate.stopped) { - serializer.attribute(null, ATTR_STOPPED, "true"); + serializer.attributeBoolean(null, ATTR_STOPPED, true); } if (ustate.notLaunched) { - serializer.attribute(null, ATTR_NOT_LAUNCHED, "true"); + serializer.attributeBoolean(null, ATTR_NOT_LAUNCHED, true); } if (ustate.hidden) { - serializer.attribute(null, ATTR_HIDDEN, "true"); + serializer.attributeBoolean(null, ATTR_HIDDEN, true); } if (ustate.distractionFlags != 0) { serializer.attributeInt(null, ATTR_DISTRACTION_FLAGS, ustate.distractionFlags); } if (ustate.suspended) { - serializer.attribute(null, ATTR_SUSPENDED, "true"); + serializer.attributeBoolean(null, ATTR_SUSPENDED, true); } if (ustate.instantApp) { - serializer.attribute(null, ATTR_INSTANT_APP, "true"); + serializer.attributeBoolean(null, ATTR_INSTANT_APP, true); } if (ustate.virtualPreload) { - serializer.attribute(null, ATTR_VIRTUAL_PRELOAD, "true"); + serializer.attributeBoolean(null, ATTR_VIRTUAL_PRELOAD, true); } if (ustate.enabled != COMPONENT_ENABLED_STATE_DEFAULT) { serializer.attributeInt(null, ATTR_ENABLED, ustate.enabled); @@ -2732,7 +2732,7 @@ public final class Settings { serializer.attributeInt(null, "sharedUserId", pkg.appId); } if (pkg.uidError) { - serializer.attribute(null, "uidError", "true"); + serializer.attributeBoolean(null, "uidError", true); } InstallSource installSource = pkg.installSource; if (installSource.installerPackageName != null) { @@ -2743,13 +2743,13 @@ public final class Settings { installSource.installerAttributionTag); } if (installSource.isOrphaned) { - serializer.attribute(null, "isOrphaned", "true"); + serializer.attributeBoolean(null, "isOrphaned", true); } if (installSource.initiatingPackageName != null) { serializer.attribute(null, "installInitiator", installSource.initiatingPackageName); } if (installSource.isInitiatingPackageUninstalled) { - serializer.attribute(null, "installInitiatorUninstalled", "true"); + serializer.attributeBoolean(null, "installInitiatorUninstalled", true); } if (installSource.originatingPackageName != null) { serializer.attribute(null, "installOriginator", installSource.originatingPackageName); @@ -2761,16 +2761,16 @@ public final class Settings { serializer.attributeInt(null, "categoryHint", pkg.categoryHint); } if (pkg.updateAvailable) { - serializer.attribute(null, "updateAvailable", "true"); + serializer.attributeBoolean(null, "updateAvailable", true); } if (pkg.forceQueryableOverride) { - serializer.attribute(null, "forceQueryable", "true"); + serializer.attributeBoolean(null, "forceQueryable", true); } if (pkg.isPackageStartable()) { - serializer.attribute(null, "isStartable", "true"); + serializer.attributeBoolean(null, "isStartable", true); } if (pkg.isPackageLoading()) { - serializer.attribute(null, "isLoading", "true"); + serializer.attributeBoolean(null, "isLoading", true); } writeUsesStaticLibLPw(serializer, pkg.usesStaticLibraries, pkg.usesStaticLibrariesVersions); @@ -3501,14 +3501,14 @@ public final class Settings { String systemStr = null; String installerPackageName = null; String installerAttributionTag = null; - String isOrphaned = null; + boolean isOrphaned = false; String installOriginatingPackageName = null; String installInitiatingPackageName = null; - String installInitiatorUninstalled = null; + boolean installInitiatorUninstalled = false; String volumeUuid = null; - String updateAvailable = null; + boolean updateAvailable = false; int categoryHint = ApplicationInfo.CATEGORY_UNDEFINED; - String uidError = null; + boolean uidError = false; int pkgFlags = 0; int pkgPrivateFlags = 0; long timeStamp = 0; @@ -3516,14 +3516,14 @@ public final class Settings { long lastUpdateTime = 0; PackageSetting packageSetting = null; long versionCode = 0; - String installedForceQueryable = null; - String isStartable = null; - String isLoading = null; + boolean installedForceQueryable = false; + boolean isStartable = false; + boolean isLoading = false; try { name = parser.getAttributeValue(null, ATTR_NAME); realName = parser.getAttributeValue(null, "realName"); userId = parser.getAttributeInt(null, "userId", 0); - uidError = parser.getAttributeValue(null, "uidError"); + uidError = parser.getAttributeBoolean(null, "uidError", false); sharedUserId = parser.getAttributeInt(null, "sharedUserId", 0); codePathStr = parser.getAttributeValue(null, "codePath"); @@ -3533,10 +3533,10 @@ public final class Settings { primaryCpuAbiString = parser.getAttributeValue(null, "primaryCpuAbi"); secondaryCpuAbiString = parser.getAttributeValue(null, "secondaryCpuAbi"); cpuAbiOverrideString = parser.getAttributeValue(null, "cpuAbiOverride"); - updateAvailable = parser.getAttributeValue(null, "updateAvailable"); - installedForceQueryable = parser.getAttributeValue(null, "forceQueryable"); - isStartable = parser.getAttributeValue(null, "isStartable"); - isLoading = parser.getAttributeValue(null, "isLoading"); + updateAvailable = parser.getAttributeBoolean(null, "updateAvailable", false); + installedForceQueryable = parser.getAttributeBoolean(null, "forceQueryable", false); + isStartable = parser.getAttributeBoolean(null, "isStartable", false); + isLoading = parser.getAttributeBoolean(null, "isLoading", false); if (primaryCpuAbiString == null && legacyCpuAbiString != null) { primaryCpuAbiString = legacyCpuAbiString; @@ -3545,11 +3545,11 @@ public final class Settings { versionCode = parser.getAttributeLong(null, "version", 0); installerPackageName = parser.getAttributeValue(null, "installer"); installerAttributionTag = parser.getAttributeValue(null, "installerAttributionTag"); - isOrphaned = parser.getAttributeValue(null, "isOrphaned"); + isOrphaned = parser.getAttributeBoolean(null, "isOrphaned", false); installInitiatingPackageName = parser.getAttributeValue(null, "installInitiator"); installOriginatingPackageName = parser.getAttributeValue(null, "installOriginator"); - installInitiatorUninstalled = parser.getAttributeValue(null, - "installInitiatorUninstalled"); + installInitiatorUninstalled = parser.getAttributeBoolean(null, + "installInitiatorUninstalled", false); volumeUuid = parser.getAttributeValue(null, "volumeUuid"); categoryHint = parser.getAttributeInt(null, "categoryHint", ApplicationInfo.CATEGORY_UNDEFINED); @@ -3671,21 +3671,20 @@ public final class Settings { + userId + " at " + parser.getPositionDescription()); } if (packageSetting != null) { - packageSetting.uidError = "true".equals(uidError); + packageSetting.uidError = uidError; InstallSource installSource = InstallSource.create( installInitiatingPackageName, installOriginatingPackageName, - installerPackageName, installerAttributionTag, "true".equals(isOrphaned), - "true".equals(installInitiatorUninstalled)); + installerPackageName, installerAttributionTag, isOrphaned, + installInitiatorUninstalled); packageSetting.installSource = installSource; packageSetting.volumeUuid = volumeUuid; packageSetting.categoryHint = categoryHint; packageSetting.legacyNativeLibraryPathString = legacyNativeLibraryPathStr; packageSetting.primaryCpuAbiString = primaryCpuAbiString; packageSetting.secondaryCpuAbiString = secondaryCpuAbiString; - packageSetting.updateAvailable = "true".equals(updateAvailable); - packageSetting.forceQueryableOverride = "true".equals(installedForceQueryable); - packageSetting.incrementalStates = new IncrementalStates("true".equals(isStartable), - "true".equals(isLoading)); + packageSetting.updateAvailable = updateAvailable; + packageSetting.forceQueryableOverride = installedForceQueryable; + packageSetting.incrementalStates = new IncrementalStates(isStartable, isLoading); // Handle legacy string here for single-user mode final String enabledStr = parser.getAttributeValue(null, ATTR_ENABLED); if (enabledStr != null) { @@ -3915,7 +3914,7 @@ public final class Settings { { name = parser.getAttributeValue(null, ATTR_NAME); int userId = parser.getAttributeInt(null, "userId", 0); - if ("true".equals(parser.getAttributeValue(null, "system"))) { + if (parser.getAttributeBoolean(null, "system", false)) { pkgFlags |= ApplicationInfo.FLAG_SYSTEM; } if (name == null) { diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index cc814bcc7760..a8b83fb3e3ee 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -2918,16 +2918,16 @@ public class UserManagerService extends IUserManager.Stub { serializer.attribute(null, ATTR_ICON_PATH, userInfo.iconPath); } if (userInfo.partial) { - serializer.attribute(null, ATTR_PARTIAL, "true"); + serializer.attributeBoolean(null, ATTR_PARTIAL, true); } if (userInfo.preCreated) { - serializer.attribute(null, ATTR_PRE_CREATED, "true"); + serializer.attributeBoolean(null, ATTR_PRE_CREATED, true); } if (userInfo.convertedFromPreCreated) { - serializer.attribute(null, ATTR_CONVERTED_FROM_PRE_CREATED, "true"); + serializer.attributeBoolean(null, ATTR_CONVERTED_FROM_PRE_CREATED, true); } if (userInfo.guestToRemove) { - serializer.attribute(null, ATTR_GUEST_TO_REMOVE, "true"); + serializer.attributeBoolean(null, ATTR_GUEST_TO_REMOVE, true); } if (userInfo.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID) { serializer.attributeInt(null, ATTR_PROFILE_GROUP_ID, userInfo.profileGroupId); @@ -3121,22 +3121,10 @@ public class UserManagerService extends IUserManager.Stub { profileBadge = parser.getAttributeInt(null, ATTR_PROFILE_BADGE, 0); restrictedProfileParentId = parser.getAttributeInt(null, ATTR_RESTRICTED_PROFILE_PARENT_ID, UserInfo.NO_PROFILE_GROUP_ID); - String valueString = parser.getAttributeValue(null, ATTR_PARTIAL); - if ("true".equals(valueString)) { - partial = true; - } - valueString = parser.getAttributeValue(null, ATTR_PRE_CREATED); - if ("true".equals(valueString)) { - preCreated = true; - } - valueString = parser.getAttributeValue(null, ATTR_CONVERTED_FROM_PRE_CREATED); - if ("true".equals(valueString)) { - converted = true; - } - valueString = parser.getAttributeValue(null, ATTR_GUEST_TO_REMOVE); - if ("true".equals(valueString)) { - guestToRemove = true; - } + partial = parser.getAttributeBoolean(null, ATTR_PARTIAL, false); + preCreated = parser.getAttributeBoolean(null, ATTR_PRE_CREATED, false); + converted = parser.getAttributeBoolean(null, ATTR_CONVERTED_FROM_PRE_CREATED, false); + guestToRemove = parser.getAttributeBoolean(null, ATTR_GUEST_TO_REMOVE, false); seedAccountName = parser.getAttributeValue(null, ATTR_SEED_ACCOUNT_NAME); seedAccountType = parser.getAttributeValue(null, ATTR_SEED_ACCOUNT_TYPE); diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermission.java b/services/core/java/com/android/server/pm/permission/LegacyPermission.java index 6a4eb63c8d7e..ca3a2e2e2da7 100644 --- a/services/core/java/com/android/server/pm/permission/LegacyPermission.java +++ b/services/core/java/com/android/server/pm/permission/LegacyPermission.java @@ -167,16 +167,12 @@ public final class LegacyPermission { private static int readInt(@NonNull TypedXmlPullParser parser, @Nullable String namespace, @NonNull String name, int defaultValue) { - final String value = parser.getAttributeValue(namespace, name); - if (value == null) { - return defaultValue; - } try { - return Integer.parseInt(value); - } catch (NumberFormatException e) { + return parser.getAttributeInt(namespace, name); + } catch (Exception ignored) { PackageManagerService.reportSettingsProblem(Log.WARN, "Error in package manager settings: attribute " + name - + " has bad integer value " + value + " at " + + " has bad integer value at " + parser.getPositionDescription()); return defaultValue; } diff --git a/services/core/java/com/android/server/tv/PersistentDataStore.java b/services/core/java/com/android/server/tv/PersistentDataStore.java index d3c9b3bbe7f5..72556a75a4b5 100644 --- a/services/core/java/com/android/server/tv/PersistentDataStore.java +++ b/services/core/java/com/android/server/tv/PersistentDataStore.java @@ -30,23 +30,17 @@ import android.util.TypedXmlPullParser; import android.util.TypedXmlSerializer; import android.util.Xml; -import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.XmlUtils; import libcore.io.IoUtils; -import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlSerializer; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -246,12 +240,7 @@ final class PersistentDataStore { if (parser.getName().equals(TAG_BLOCKED_RATINGS)) { loadBlockedRatingsFromXml(parser); } else if (parser.getName().equals(TAG_PARENTAL_CONTROLS)) { - String enabled = parser.getAttributeValue(null, ATTR_ENABLED); - if (TextUtils.isEmpty(enabled)) { - throw new XmlPullParserException( - "Missing " + ATTR_ENABLED + " attribute on " + TAG_PARENTAL_CONTROLS); - } - mParentalControlsEnabled = Boolean.parseBoolean(enabled); + mParentalControlsEnabled = parser.getAttributeBoolean(null, ATTR_ENABLED); } } } diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/UseCasePriorityHints.java b/services/core/java/com/android/server/tv/tunerresourcemanager/UseCasePriorityHints.java index beb11ed4ea0c..7f49eead19fa 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/UseCasePriorityHints.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/UseCasePriorityHints.java @@ -192,8 +192,9 @@ public class UseCasePriorityHints { } } - private int readAttributeToInt(String attributeName, TypedXmlPullParser parser) { - return Integer.valueOf(parser.getAttributeValue(null, attributeName)); + private int readAttributeToInt(String attributeName, TypedXmlPullParser parser) + throws XmlPullParserException { + return parser.getAttributeInt(null, attributeName); } private void addNewUseCasePriority(int useCase, int fgPriority, int bgPriority) { diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index bbe86beceb82..c0df26a4ea63 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -2985,7 +2985,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } if (wallpaper.allowBackup) { - out.attribute(null, "backup", "true"); + out.attributeBoolean(null, "backup", true); } out.endTag(null, tag); @@ -3250,7 +3250,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub wallpaper.primaryColors = new WallpaperColors(primary, secondary, tertiary, colorHints); } wallpaper.name = parser.getAttributeValue(null, "name"); - wallpaper.allowBackup = "true".equals(parser.getAttributeValue(null, "backup")); + wallpaper.allowBackup = parser.getAttributeBoolean(null, "backup", false); } // Called by SystemBackupAgent after files are restored to disk. diff --git a/services/core/java/com/android/server/wm/AppWarnings.java b/services/core/java/com/android/server/wm/AppWarnings.java index 55200b566979..994f07959f3b 100644 --- a/services/core/java/com/android/server/wm/AppWarnings.java +++ b/services/core/java/com/android/server/wm/AppWarnings.java @@ -31,16 +31,12 @@ import android.util.TypedXmlPullParser; import android.util.TypedXmlSerializer; import android.util.Xml; -import com.android.internal.util.FastXmlSerializer; - import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlSerializer; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; -import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -541,15 +537,7 @@ class AppWarnings { if ("package".equals(tagName)) { final String name = parser.getAttributeValue(null, "name"); if (name != null) { - final String flags = parser.getAttributeValue( - null, "flags"); - int flagsInt = 0; - if (flags != null) { - try { - flagsInt = Integer.parseInt(flags); - } catch (NumberFormatException e) { - } - } + int flagsInt = parser.getAttributeInt(null, "flags", 0); mPackageFlags.put(name, flagsInt); } } diff --git a/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java b/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java index aa603aba0f78..a099fd993c85 100644 --- a/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java +++ b/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java @@ -444,12 +444,12 @@ class DisplayWindowSettingsProvider implements SettingsProvider { out.attributeInt(null, "windowingMode", settingsEntry.mWindowingMode); } if (settingsEntry.mUserRotationMode != null) { - out.attribute(null, "userRotationMode", - settingsEntry.mUserRotationMode.toString()); + out.attributeInt(null, "userRotationMode", + settingsEntry.mUserRotationMode); } if (settingsEntry.mUserRotation != null) { - out.attribute(null, "userRotation", - settingsEntry.mUserRotation.toString()); + out.attributeInt(null, "userRotation", + settingsEntry.mUserRotation); } if (settingsEntry.mForcedWidth != 0 && settingsEntry.mForcedHeight != 0) { out.attributeInt(null, "forcedWidth", settingsEntry.mForcedWidth); @@ -459,30 +459,30 @@ class DisplayWindowSettingsProvider implements SettingsProvider { out.attributeInt(null, "forcedDensity", settingsEntry.mForcedDensity); } if (settingsEntry.mForcedScalingMode != null) { - out.attribute(null, "forcedScalingMode", - settingsEntry.mForcedScalingMode.toString()); + out.attributeInt(null, "forcedScalingMode", + settingsEntry.mForcedScalingMode); } if (settingsEntry.mRemoveContentMode != REMOVE_CONTENT_MODE_UNDEFINED) { out.attributeInt(null, "removeContentMode", settingsEntry.mRemoveContentMode); } if (settingsEntry.mShouldShowWithInsecureKeyguard != null) { - out.attribute(null, "shouldShowWithInsecureKeyguard", - settingsEntry.mShouldShowWithInsecureKeyguard.toString()); + out.attributeBoolean(null, "shouldShowWithInsecureKeyguard", + settingsEntry.mShouldShowWithInsecureKeyguard); } if (settingsEntry.mShouldShowSystemDecors != null) { - out.attribute(null, "shouldShowSystemDecors", - settingsEntry.mShouldShowSystemDecors.toString()); + out.attributeBoolean(null, "shouldShowSystemDecors", + settingsEntry.mShouldShowSystemDecors); } if (settingsEntry.mImePolicy != null) { out.attributeInt(null, "imePolicy", settingsEntry.mImePolicy); } if (settingsEntry.mFixedToUserRotation != null) { - out.attribute(null, "fixedToUserRotation", - settingsEntry.mFixedToUserRotation.toString()); + out.attributeInt(null, "fixedToUserRotation", + settingsEntry.mFixedToUserRotation); } if (settingsEntry.mIgnoreOrientationRequest != null) { - out.attribute(null, "ignoreOrientationRequest", - settingsEntry.mIgnoreOrientationRequest.toString()); + out.attributeBoolean(null, "ignoreOrientationRequest", + settingsEntry.mIgnoreOrientationRequest); } out.endTag(null, "display"); } |