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

Commit 857ef08a 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:...

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

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

Change-Id: Id9a4bed0547beb08fcc239d6a3f876440b5d929f
parents c2d85b82 7986672c
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