Merge "Do not force endDocument for domain verify settings" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
66c9982ca5
@@ -83,7 +83,7 @@ public class SettingsXml {
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
mWriteSection.closeCompletely();
|
||||
mXmlSerializer.endDocument();
|
||||
mXmlSerializer.flush();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user