From 8d9662602617e2919c4d04ec87576520084e085b Mon Sep 17 00:00:00 2001 From: friedkeenan Date: Wed, 3 May 2023 20:22:12 -0500 Subject: [PATCH] avm2: Add test for ApplicationDomain::getQualifiedDefinitionNames --- .../output.txt | 8 ++++ .../src/Test.as | 36 ++++++++++++++++++ .../src/VisibleFunction.as | 3 ++ .../src/VisibleNamespace.as | 3 ++ .../src/foo/bar/Baz.as | 6 +++ .../src/foo/bar/Internal.as | 5 +++ .../test.swf | Bin 0 -> 1145 bytes .../test.toml | 1 + 8 files changed, 62 insertions(+) create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/output.txt create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/Test.as create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleFunction.as create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleNamespace.as create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Baz.as create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Internal.as create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/test.swf create mode 100644 tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/test.toml diff --git a/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/output.txt b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/output.txt new file mode 100644 index 000000000..d6a1cec3d --- /dev/null +++ b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/output.txt @@ -0,0 +1,8 @@ +getQualifiedDefinitionNames() is Vector.: true +getQualifiedDefinitionNames().fixed: false +getQualifiedDefinitionNames().length: 5 +getQualifiedDefinitionNames() contains Test: true +getQualifiedDefinitionNames() contains VisibleFunction: true +getQualifiedDefinitionNames() contains VisibleNamespace: true +getQualifiedDefinitionNames() contains foo.bar::Baz: true +getQualifiedDefinitionNames() contains foo.bar::Internal: true diff --git a/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/Test.as b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/Test.as new file mode 100644 index 000000000..a130d1480 --- /dev/null +++ b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/Test.as @@ -0,0 +1,36 @@ +package { + public class Test {} +} + +import flash.system.ApplicationDomain; +import foo.bar.Baz; + +/* This should not show up in the output. */ +class NonVisible { } + +function check_contains(def_names: Vector., name: String) : void { + trace("getQualifiedDefinitionNames() contains " + name + ":", def_names.indexOf(name) != -1); +} + +/* Use these to make sure they're included in the SWF. */ +Baz; +VisibleFunction; +VisibleNamespace; + +var def_names: * = ApplicationDomain.currentDomain.getQualifiedDefinitionNames(); + +trace("getQualifiedDefinitionNames() is Vector.:", def_names is Vector.); +trace("getQualifiedDefinitionNames().fixed:", def_names.fixed); +trace("getQualifiedDefinitionNames().length:", def_names.length); + +/* NOTE: The order of the names should not matter, so we don't test it. */ +check_contains(def_names, "Test"); +check_contains(def_names, "VisibleFunction"); +check_contains(def_names, "VisibleNamespace"); +check_contains(def_names, "foo.bar::Baz"); +check_contains(def_names, "foo.bar::Internal"); + +/* + NOTE: 'getQualifiedDefinitionNames' is able to raise a 'SecurityError', + however we do not currently test that functionality. +*/ diff --git a/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleFunction.as b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleFunction.as new file mode 100644 index 000000000..8e370832f --- /dev/null +++ b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleFunction.as @@ -0,0 +1,3 @@ +package { + public function VisibleFunction() : void {} +} diff --git a/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleNamespace.as b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleNamespace.as new file mode 100644 index 000000000..db53438d2 --- /dev/null +++ b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/VisibleNamespace.as @@ -0,0 +1,3 @@ +package { + public namespace VisibleNamespace; +} diff --git a/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Baz.as b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Baz.as new file mode 100644 index 000000000..dfda8644a --- /dev/null +++ b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Baz.as @@ -0,0 +1,6 @@ +package foo.bar { + public class Baz { + /* Dummy variable to make sure 'foo.bar::Internal' is included in the SWF. */ + private static var dummy: Internal; + } +} diff --git a/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Internal.as b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Internal.as new file mode 100644 index 000000000..08b738e54 --- /dev/null +++ b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/src/foo/bar/Internal.as @@ -0,0 +1,5 @@ +package foo.bar { + /* NOTE: This will be included in 'getQualifiedDefinitionNames()'. despite not being public. */ + internal class Internal { + } +} diff --git a/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/test.swf b/tests/tests/swfs/avm2/applicationdomain_getqualifieddefinitionnames/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..4fbab41254bb0231f3cf25f144476fadf3d48959 GIT binary patch literal 1145 zcmV-<1cv)VS5ql96M~_SFr8|HY}N8%U=ln39Q)FtXYI3`PF2R9cboWopaCYJCA!O z!2Jmj{~2JLKr^`m0N-!?Ljd-lO$J8xl-iDNnFqPDSjuIe)x-O?s?}aMTUnHvP7S$( zT;FwvHAxze$KtpuT6Rw=@9phLrHWLk6j7t-oSCjXDVomRTs@q{&-c=#j$-RW7yZw@ zsmjvXaAX_4D^-!GK?l@y9jPpqb8}VMS?QXND67^n6%}hBp+KsX%9VK}Kbor4G|L{y zZe1P@4PBAFn9`)^^eyFNET7V%X2?!|Us@^pFc-#-HL?|2m-^O#N+*<>vMDt!Wi&%& zk2KAol1m+gINP1E=1B7Cpdx(`P_+iKZgzUq{dOc9x~5ZArJ8Q)9vV{~(3!P}#y*mH z)D;p;t%fNMb%WYj&)^`}P(0(dU&ri=xh%J8TScsTjXNIchI)`I<)nH2C9jPiGyogx zA7N+f@PfIxxQHhJ4v&hj8twL%N3WaEO#H>}!|$8F@c=j;Frapis*nH?87OjJVEPa^ zI{t<#ZurnL-{_8hY|!-0WS{=VS=6_#*$5x&`^)QOE!+Ak@*OnFf0DJcNqG!!z&kntwJN9i@CFNI*^y2MC7q6VN|iv{wRN+{om#reeky+_ zXqF`&%l6v5maUQLw>vTC{rE$~mu#%Yy6I0@)E{WkIdfb(h$$o6#tSqP-MA*1@-;F{ zRCls7)Z+dOYQ465t%a!R6ROsD|99_tRfC#6w_gj){?U2vwHg*8xny3NF11bBV5+6F z|7jeq6dxypsg`+lG#H#k7Pt^&a0TsSwp@J@PBAGV$O2A@x-8I~bzN+3ia ztiW&r6B3xPKw<)$$b?8(;MN7QDUdCJN2P5+_(&i(1(FG6NhpUlJ3{cG5PG!c-M6bB z6A6YxKZK+Hd1U*l_!7?th!Dhe57z@+k8u?^!Vq8p5dsHM+#|4sdmQgN3t_Seumv&T zfg?@t{<9nq&hv_|0YHGn8i08P$wmvgAYnoz+62rtO17H75^jxnj|TY+@DRzsdFlKm zAjd9_xl6}9kAnN>rN1NZNtD2Q5(el7)M>O3fA_Yq_V$l=ErIM_{PJUiK_?g=n4idb zi9(loRQd`seKIFWrq8O+d70}*r-^(wHcjTI>*YYc8=r1!Ypn!)%|DiT&vmMBtIKyo z-Ef=y+F+N)Hq+li<