From f237aa1da23237e401d0320f0392e47c73cda5b5 Mon Sep 17 00:00:00 2001 From: Tom Schuster Date: Sun, 30 Jul 2023 00:02:14 +0200 Subject: [PATCH] avm2: Implement XMLNode.nodeValue --- core/src/avm2/globals/flash/xml/XMLNode.as | 8 ++++++++ tests/tests/swfs/avm2/flash_xml/Test.as | 4 ++++ tests/tests/swfs/avm2/flash_xml/output.txt | 4 ++++ tests/tests/swfs/avm2/flash_xml/test.swf | Bin 1248 -> 1344 bytes 4 files changed, 16 insertions(+) diff --git a/core/src/avm2/globals/flash/xml/XMLNode.as b/core/src/avm2/globals/flash/xml/XMLNode.as index 5f7cdf496..f47f48b4e 100644 --- a/core/src/avm2/globals/flash/xml/XMLNode.as +++ b/core/src/avm2/globals/flash/xml/XMLNode.as @@ -87,6 +87,14 @@ package flash.xml } } + public function get nodeValue(): String { + if (_xml.nodeKind() == "text") { + return _xml.toString(); + } + + return null; + } + public function appendChild(node: XMLNode): void { stub_method("flash.xml.XMLNode", "appendChild"); } diff --git a/tests/tests/swfs/avm2/flash_xml/Test.as b/tests/tests/swfs/avm2/flash_xml/Test.as index eb9586c6c..e96f06f47 100644 --- a/tests/tests/swfs/avm2/flash_xml/Test.as +++ b/tests/tests/swfs/avm2/flash_xml/Test.as @@ -8,16 +8,20 @@ import flash.xml.XMLDocument; var doc = new XMLDocument('bary'); trace("doc.nodeType: " + doc.nodeType); trace("doc.nodeName: " + doc.nodeName); +trace("doc.nodeValue: " + doc.nodeValue); trace("doc.childNodes: " + doc.childNodes); trace("doc.toString(): " + doc.toString()); trace("doc.firstChild.nodeType: " + doc.firstChild.nodeType); trace("doc.firstChild.nodeName: " + doc.firstChild.nodeName); +trace("doc.firstChild.nodeValue: " + doc.firstChild.nodeValue); trace("doc.firstChild.toString(): " + doc.firstChild.toString()); trace("doc.firstChild.firstChild.nodeType: " + doc.firstChild.firstChild.nodeType); trace("doc.firstChild.firstChild.nodeName: " + doc.firstChild.firstChild.nodeName); +trace("doc.firstChild.firstChild.nodeValue: " + doc.firstChild.firstChild.nodeValue); trace("doc.firstChild.firstChild.toString(): " + doc.firstChild.firstChild.toString()); trace("doc.firstChild.nextSibling: " + doc.firstChild.nextSibling); trace("doc.firstChild.nextSibling.nodeName: " + doc.firstChild.nextSibling.nodeName); +trace("doc.firstChild.nextSibling.nodeValue: " + doc.firstChild.nextSibling.nodeValue); trace("///") diff --git a/tests/tests/swfs/avm2/flash_xml/output.txt b/tests/tests/swfs/avm2/flash_xml/output.txt index 147ca51e7..7eed9cc79 100644 --- a/tests/tests/swfs/avm2/flash_xml/output.txt +++ b/tests/tests/swfs/avm2/flash_xml/output.txt @@ -1,15 +1,19 @@ doc.nodeType: 1 doc.nodeName: null +doc.nodeValue: null doc.childNodes: bar,y doc.toString(): bary doc.firstChild.nodeType: 1 doc.firstChild.nodeName: foo +doc.firstChild.nodeValue: null doc.firstChild.toString(): bar doc.firstChild.firstChild.nodeType: 3 doc.firstChild.firstChild.nodeName: null +doc.firstChild.firstChild.nodeValue: bar doc.firstChild.firstChild.toString(): bar doc.firstChild.nextSibling: y doc.firstChild.nextSibling.nodeName: x +doc.firstChild.nextSibling.nodeValue: null /// doc2.nodeType: 1 doc2.nodeName: null diff --git a/tests/tests/swfs/avm2/flash_xml/test.swf b/tests/tests/swfs/avm2/flash_xml/test.swf index 6befc43e8a77b3ffbabb72c4ad68f7770046c478..fa31a2dc3c49b01cbe74a76b95d1bd80d6a76148 100644 GIT binary patch literal 1344 zcmV-G1;6@3S5qeY2><|i0fkk|Zrer_<&csn$}jm5+0K)3oH%JLQIZ=sR%F&rRJSo& zyNJ>@C?E(Ua%i!kNP-+$(yBmrUGyIc6zvD}2fFH_J7>`!=qgJW=svx}ha?MWV}SIW zbI(0<=gyVX=MsN$-0UwLw}QCZ{3^$B-!8sJ99Q*pqw=hFAon|#?NFYZb%sI+&{1buClF%uea&{kEgM?BP?AH!SS8tI9~o za;QlyqVBs`YZLjvB7J#(lpcsf1=H%II@Rcu24oa)kR8+&WQ^-rp4)9%rr#!ByieUR zXb*d^q0_bXpwb|5BxGrtM=*8XnH0-diiPcyEr=z%@ z^9|A9j=in{tyU-``_bF)8NPx~J7p!f*d~nNqesl3fPIPmSJ-PN2o`kHcP%_f)m_h| zBz4?kwsRky!T{AEgehFVHyvsTWBnP%LrN%}e`-_WVU3!nBxG_I;!hlyY11a&)QitP ztvOnkjiwa(L1DS7;W%mwdsT%ks(p1(Rr+d@f+d;N9j#zHI(a^DNkvY_%b-z;eNFB6`&9+2)yL{!0K@fIO}p6h35+8ff$~_NMmXGdK8TMlzaods z_(|Ell_&2#OlM8F5E{?BHW?f{Q$^l9tREj0{9wvVV{ms;j46a#UHH_)3?!I1Goqwn z9_!nM3dS}WYwvQidEzvw)6|J!+9vybXhIKN!F7E8!L|S{LaFpH!Q2w1^47MLL^(c} zTtPW0H=A5cFYy8|rk6z?i9$-`MKPHcg^VaniNds)ni2V|w1A`>l2(v(8A(@>bR9_> zNZLdq|3KP?_Xna_6-5=kA9?t`OTfc(!VaoDf@c?=4-w*}MDWFkcmdTAEHCYW7NOi8 zWC01wv?QDrKV~G7GMTgD*;DRs;d}!aKEb2(uZgoFV1aNA!4Qg#gpnvVl18%FNExYO zLo~!lSZhems!Sz4HvtlL!$+t)4Ly%)6SY9oD^ z=Ad)JIUG{hyniqcO}h^9Jiz$GHvktHj!KjPD-1_Xy9u}mcv#vR5G5vnQ@L+c!@Gz2wj^F+H>XS755=)E2pW{84%YOmkrTdI# Cf0mH| literal 1248 zcmV<61RwiDS5qeT2mkR&;~{VoVANN6mq3WD&%(i zQh%r9hbMYvZ*Na8SM_SO2#jJh^e7$_z3BRu!3`QDGD9bzj_+yA5V!pveXzAPa<$Bf zY0wK@ZfTi1aY>hWG}0@j3K&^t&Gy4CrUniI*D*1((+9<<QI*$`vEpPL_2WFK--_nIXPx9t~Kq`7)@z|qJ+7c_r(=S9@7QAw(CS45{~OMeVg`i z2nGF~XYo$Ca7tt{GbEV$9~F&hOyXkiq=!$4LA>K{n%r{&@d+>`#xoph)ylS3EmwEq zei>TV*`rTv#R!4jHH2Kgw|aO~{CdCH{PyU1LpYs>BkRYX^>rApH8%dgf=HFZt9k%w~0OeROiL<+n-6^t<|gb4Rb1%Xjs5&vB{aO-v4PcWlCzd1h{Q z9M?L83Q)5D2GKNFg+DC>G;4mU^80NvXniy>w$9@YuKi!m?79+_KE^*GeCl$-tbk*cm zC3S1(lZk0-+V<1t(P1g#yYJY;Tj$A`LaN=PB!X>AF>-basS_RBhW9#16iGa{i^s<& z{xS8BEn+*K!(Oz<@C*Yf@FQ{et^_VprE)LD+@!tTT{VpgVj;bP3Th#jUQ(7tNtBg> zEFxLT$f7K#6_hp$3BG@Lwt_OyKZ zM0hKmT?a%=iAZ?^S%@Vfv?N<9w^DYh+)CT&aw}tJ$}QQJ%Pr9s`R%2!#y=ed3Z1 z7CAuHVq|1856D%HOk{b0uEnH@Z~-uFjE$s=fUS?PiFgUXjToGdyI2NfbA*grF93Ff z54F-#o+<*&E1f~_()P`RJdAn?^0$~~H2P(TZ?kw*`U=FK0DV0A8pL-Xp0sflfNe&| zjV0FrDRN{&(f}&Oq*1Tyfat9S8y-88E*>nQc!&*1?2M?f