diff options
3 files changed, 25 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/SettingsXml.java b/services/core/java/com/android/server/pm/SettingsXml.java index ec643f598041..c53fef72db9c 100644 --- a/services/core/java/com/android/server/pm/SettingsXml.java +++ b/services/core/java/com/android/server/pm/SettingsXml.java @@ -83,7 +83,7 @@ public class SettingsXml { @Override public void close() throws IOException { mWriteSection.closeCompletely(); - mXmlSerializer.endDocument(); + mXmlSerializer.flush(); } } diff --git a/services/core/java/com/android/server/pm/verify/domain/DomainVerificationLegacySettings.java b/services/core/java/com/android/server/pm/verify/domain/DomainVerificationLegacySettings.java index c787356f342c..4bad1020e945 100644 --- a/services/core/java/com/android/server/pm/verify/domain/DomainVerificationLegacySettings.java +++ b/services/core/java/com/android/server/pm/verify/domain/DomainVerificationLegacySettings.java @@ -32,7 +32,6 @@ import com.android.server.pm.SettingsXml; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; -import java.util.Map; /** * Reads and writes the old {@link android.content.pm.IntentFilterVerificationInfo} so that it can diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPersistenceTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPersistenceTest.kt index ad9aa7b6e3ae..6597577cf14f 100644 --- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPersistenceTest.kt +++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPersistenceTest.kt @@ -30,6 +30,7 @@ import com.google.common.truth.Truth.assertWithMessage import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder +import org.xmlpull.v1.XmlPullParser import java.io.File import java.nio.charset.StandardCharsets import java.util.UUID @@ -41,21 +42,41 @@ class DomainVerificationPersistenceTest { internal fun File.writeXml(block: (serializer: TypedXmlSerializer) -> Unit) = apply { outputStream().use { - // Explicitly use string based XML so it can printed in the test failure output - Xml.newFastSerializer() + // This must use the binary serializer the mirror the production behavior, as + // there are slight differences with the string based one. + Xml.newBinarySerializer() .apply { setOutput(it, StandardCharsets.UTF_8.name()) startDocument(null, true) setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true) + // Write a wrapping tag to ensure the domain verification settings didn't + // close out the document, allowing other settings to be written + startTag(null, "wrapper-tag") } .apply(block) + .apply { + startTag(null, "trailing-tag") + endTag(null, "trailing-tag") + endTag(null, "wrapper-tag") + } .endDocument() } } internal fun <T> File.readXml(block: (parser: TypedXmlPullParser) -> T) = inputStream().use { - block(Xml.resolvePullParser(it)) + val parser = Xml.resolvePullParser(it) + assertThat(parser.nextTag()).isEqualTo(XmlPullParser.START_TAG) + assertThat(parser.name).isEqualTo("wrapper-tag") + assertThat(parser.nextTag()).isEqualTo(XmlPullParser.START_TAG) + block(parser).also { + assertThat(parser.nextTag()).isEqualTo(XmlPullParser.START_TAG) + assertThat(parser.name).isEqualTo("trailing-tag") + assertThat(parser.nextTag()).isEqualTo(XmlPullParser.END_TAG) + assertThat(parser.name).isEqualTo("trailing-tag") + assertThat(parser.nextTag()).isEqualTo(XmlPullParser.END_TAG) + assertThat(parser.name).isEqualTo("wrapper-tag") + } } } |