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

Commit 7986672c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Introduce versions to XML for bubbles persistence" into rvc-dev am: 7cc17503

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11914600

Change-Id: I3f6ace34a26ad554161e746cdbf3a775a2287420
parents 94f60453 7cc17503
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -25,7 +25,11 @@ import java.io.InputStream
import java.io.OutputStream
import java.nio.charset.StandardCharsets

// TODO: handle version changes gracefully
private const val CURRENT_VERSION = 1

private const val TAG_BUBBLES = "bs"
private const val ATTR_VERSION = "v"
private const val TAG_BUBBLE = "bb"
private const val ATTR_USER_ID = "uid"
private const val ATTR_PACKAGE = "pkg"
@@ -44,6 +48,7 @@ fun writeXml(stream: OutputStream, bubbles: List<BubbleEntity>) {
    serializer.setOutput(stream, StandardCharsets.UTF_8.name())
    serializer.startDocument(null, true)
    serializer.startTag(null, TAG_BUBBLES)
    serializer.attribute(null, ATTR_VERSION, CURRENT_VERSION.toString())
    bubbles.forEach { b -> writeXmlEntry(serializer, b) }
    serializer.endTag(null, TAG_BUBBLES)
    serializer.endDocument()
@@ -79,10 +84,13 @@ fun readXml(stream: InputStream): List<BubbleEntity> {
    val parser: XmlPullParser = Xml.newPullParser()
    parser.setInput(stream, StandardCharsets.UTF_8.name())
    XmlUtils.beginDocument(parser, TAG_BUBBLES)
    val version = parser.getAttributeWithName(ATTR_VERSION)?.toInt()
    if (version != null && version == CURRENT_VERSION) {
        val outerDepth = parser.depth
        while (XmlUtils.nextElementWithin(parser, outerDepth)) {
            bubbles.add(readXmlEntry(parser) ?: continue)
        }
    }
    return bubbles
}

+16 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ class BubbleXmlHelperTest : SysuiTestCase() {
    fun testReadXml() {
        val src = """
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<bs>
<bs v="1">
<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" />
<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" />
<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" />
@@ -64,4 +64,19 @@ class BubbleXmlHelperTest : SysuiTestCase() {
        val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8)))
        assertEquals("failed parsing bubbles from xml\n$src", bubbles, actual)
    }

    // TODO: We should handle upgrades gracefully but this is v1
    @Test
    fun testUpgradeDropsPreviousData() {
        val src = """
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<bs>
<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" />
<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" />
<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" />
</bs>
        """.trimIndent()
        val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8)))
        assertEquals("failed parsing bubbles from xml\n$src", emptyList<BubbleEntity>(), actual)
    }
}
 No newline at end of file