From db7c6dec007a6ede205494168f2ff7a03f3e494c Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sat, 12 Aug 2023 13:05:56 +0200 Subject: [PATCH] core: Implement XML.toString for comments and processing instructions --- core/src/avm2/e4x.rs | 4 +++- tests/tests/swfs/avm2/xml_tostring/Test.as | 10 +++++++++- tests/tests/swfs/avm2/xml_tostring/output.txt | 2 ++ tests/tests/swfs/avm2/xml_tostring/test.swf | Bin 969 -> 879 bytes 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/src/avm2/e4x.rs b/core/src/avm2/e4x.rs index fcd6cf805..d02879ccc 100644 --- a/core/src/avm2/e4x.rs +++ b/core/src/avm2/e4x.rs @@ -649,7 +649,9 @@ impl<'gc> E4XNode<'gc> { return Ok(to_xml_string(E4XOrXml::E4X(*self), activation)); } - other => Err(format!("XML.toString(): Not yet implemented for {other:?}").into()), + E4XNodeKind::Comment(_) | E4XNodeKind::ProcessingInstruction(_) => { + return Ok(to_xml_string(E4XOrXml::E4X(*self), activation)); + } } } diff --git a/tests/tests/swfs/avm2/xml_tostring/Test.as b/tests/tests/swfs/avm2/xml_tostring/Test.as index 540ab27c6..34c51cd43 100644 --- a/tests/tests/swfs/avm2/xml_tostring/Test.as +++ b/tests/tests/swfs/avm2/xml_tostring/Test.as @@ -1,10 +1,12 @@ -package { +package { import flash.display.Sprite; public class Test extends Sprite { } } // FIXME: Implement indentation. XML.prettyPrinting = false; +XML.ignoreComments = false; +XML.ignoreProcessingInstructions = false; var xml = Cow trace("xml.toString(): " + xml.toString()); @@ -20,3 +22,9 @@ trace("xml.toString(): " + xml.toString()); xml = >&<; trace("xml.toString(): " + xml.toString()); + +xml = ; +trace("xml.toString(): " + xml.toString()); + +xml = ; +trace("xml.toString(): " + xml.toString()); diff --git a/tests/tests/swfs/avm2/xml_tostring/output.txt b/tests/tests/swfs/avm2/xml_tostring/output.txt index 72dc939c0..b81f80206 100644 --- a/tests/tests/swfs/avm2/xml_tostring/output.txt +++ b/tests/tests/swfs/avm2/xml_tostring/output.txt @@ -2,3 +2,5 @@ xml.toString(): Cow xml.toString(): CowPig xml.toString(): xml.toString(): >&< +xml.toString(): +xml.toString(): diff --git a/tests/tests/swfs/avm2/xml_tostring/test.swf b/tests/tests/swfs/avm2/xml_tostring/test.swf index ff83d136d56c2800be3dce5cc1fbc9263639d035..1e5c22767b618fcb2bf1831dcd302613be33e28a 100644 GIT binary patch literal 879 zcmV-#1CabfS5qdP1poke+J#e3Z{tK1pRtoT$u`-PT|$?CntG)ML>)V+gw)jWQW^@C zSZ%cdX@!Ky#GW{2ZI2m`o0JO@H@*cYz61wOd*D_Md;u=NrzkUa+ANF8TFGSQ_vg*? zdoN2+`U8OGPXKH|FxtEa0Qm0CpAZ0>d9%Ue(J@*^VVn-cY1o-_o(xQLu~>8$dtJ(W zv$wy$Z(4n`-#3K9NY7)Amqwi4?>KpY5lLMZBs`!ol4m@n86S2!tEirP9W=>Un1}RS zlY}H9F;C52w#0Bn(_E!!2k0M&5_67o{#5{=oX5hz^ks})AQ}kwWJZ01+ zX)5@WIOQyJWhv4(Y#av>4pHC@^`7n=(S>amkW=O&0n!rrcR3w%5#4|1-2tjz9ky4K zf;~DVU6)4Y;dsyNTh{yLGz&tJ%6Jt$bsBYq{^zO}>Avoq2L5yO)i!nR+cQcXdx{yt zLw%{E=}{pyax6C|Fl+8$EEeHf*a~N*T1Z>Rm;JrOIs$Dwek) zoB(lBR0UR_!3&FkNy(a&tx3h2Xx5}^O%(BY0^Z7>Ih@owxGtAla@m;Fc3U4p@4ZO* zva$P$7b?e1@Z+O~knO&D1Kz#?f9(c*>jwPZfAHf5{QmdfJ^?_KL%ezZ7yCeL{sFTk FnYrO8u37*9 literal 969 zcmV;)12+6aS5qe51poke0fkdfZyQAvpWU^+wwpgr(>e*I(y~Pf6|raS&`SQdYKR-C zL`hVGsE{mcygO?zUGFTrM@895Z;WPq{#tRn%Q~p z_xru~X6DTlrT#={~{89q)HKUmU$?quDC7z_qVkc&#NM zaMYNCI9bfe#7i(a8C5YfUyrkd$9_0yG(?OtNpj+k#k4FhzU=x*6p+(QCyISeGe><9 zdG+ZD^iUfh!l47=r8$=hZ?Y`>AemFwo`syo#Nqx4oqLMc@B;>I?T0khUOxY1C5kEM zr^iqdhpO&1N$8JAVEAs!teExzn>6viMBBUTSYhgGh^5qCR@8!C7dP4{F)8QdEoSO{JJiuV?S5nwrs zI;(4WUAv`gOS%gF6W7N^{zyH`ck{bzZlE6CLO&knm4|1m627~D r3pe505-u*_^_%cr32!Xm;&u4DKYsr>3y&?ge)-~_z|s5*$sDo3hgjVw