avm2: Add test for ApplicationDomain::getQualifiedDefinitionNames

This commit is contained in:
friedkeenan 2023-05-03 20:22:12 -05:00 committed by Aaron Hill
parent f6c0685992
commit 8d96626026
8 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,8 @@
getQualifiedDefinitionNames() is Vector.<String>: 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

View File

@ -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.<String>, 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.<String>:", def_names is Vector.<String>);
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.
*/

View File

@ -0,0 +1,3 @@
package {
public function VisibleFunction() : void {}
}

View File

@ -0,0 +1,3 @@
package {
public namespace VisibleNamespace;
}

View File

@ -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;
}
}

View File

@ -0,0 +1,5 @@
package foo.bar {
/* NOTE: This will be included in 'getQualifiedDefinitionNames()'. despite not being public. */
internal class Internal {
}
}

View File

@ -0,0 +1 @@
num_frames = 1