gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-


From: Sandro Santilli
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-2304-gbed373f
Date: Tue, 7 Mar 2017 08:32:02 -0500 (EST)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, master has been updated
       via  bed373ff164acbe8ac56ee340714ed00ce1c3aca (commit)
       via  2807c76a97eeb1059a4ace49caa42ac604405795 (commit)
       via  694de7113c1561a7616511f711de2ffbcdd153e9 (commit)
       via  5dcfebdbda43c7ff73984dd384a25eceedf18944 (commit)
       via  836df7f932f192d536fb56df77978f80c6c37530 (commit)
       via  76ac22da4dd7c167b6b68083d87b4f5e79220dad (commit)
      from  144e0827072b746b2bedebe39ca8a7e0fb43a455 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/gnash.git/commit/?id=bed373ff164acbe8ac56ee340714ed00ce1c3aca


commit bed373ff164acbe8ac56ee340714ed00ce1c3aca
Author: Nutchanon Wetchasit <address@hidden>
Date:   Tue Mar 7 12:14:29 2017 +0100

    Add automated tests on unconventional target values in getURL().
    
    See bug #50393 <https://savannah.gnu.org/bugs/?50393>

diff --git a/.gitignore b/.gitignore
index 5ebc15b..ea49f31 100644
--- a/.gitignore
+++ b/.gitignore
@@ -138,6 +138,7 @@ testsuite/misc-ming.all/*.swf
 testsuite/misc-ming.all/extgetvariable_testrunner_v*
 testsuite/misc-ming.all/hostcmd_testrunner_v*
 testsuite/misc-ming.all/hostcmd_htmltest_v*.html
+testsuite/misc-ming.all/hostcmd-geturl_testrunner_v*
 testsuite/misc-ming.all/XMLSocketTester
 testsuite/misc-ming.all/sound/*.swf
 testsuite/misc-mtasc.all/pp_*.as
diff --git a/testsuite/misc-ming.all/Makefile.am 
b/testsuite/misc-ming.all/Makefile.am
index 5ef927b..bea287b 100644
--- a/testsuite/misc-ming.all/Makefile.am
+++ b/testsuite/misc-ming.all/Makefile.am
@@ -35,7 +35,9 @@ DISTCLEANFILES = XMLSocketTester extgetvariable_testrunner_v5 
\
                  hostcmd_testrunner_v6 hostcmd_testrunner_v7 \
                  hostcmd_testrunner_v8 hostcmd_htmltest_v5.html \
                  hostcmd_htmltest_v6.html hostcmd_htmltest_v7.html \
-                 hostcmd_htmltest_v8.html
+                 hostcmd_htmltest_v8.html hostcmd-geturl_testrunner_v4 \
+                 hostcmd-geturl_testrunner_v5 \ hostcmd-geturl_testrunner_v6 \
+                 hostcmd-geturl_testrunner_v7 \ hostcmd-geturl_testrunner_v8
 
 SUBDIRS = . loop loading displaylist_depths action_order register_class \
           init_action
@@ -80,7 +82,8 @@ EXTRA_DIST = \
        XMLSocketTester.sh \
        extgetvariable_testrunner.sh \
        hostcmd_testrunner.sh \
-       hostcmd_htmltest.sh
+       hostcmd_htmltest.sh \
+       hostcmd-geturl_testrunner.sh
 
 AM_CPPFLAGS = \
        -I$(top_srcdir)/libbase \
@@ -246,6 +249,11 @@ check_SCRIPTS = \
        hostcmd_htmltest_v6.html \
        hostcmd_htmltest_v7.html \
        hostcmd_htmltest_v8.html \
+       hostcmd-geturl_testrunner_v4 \
+       hostcmd-geturl_testrunner_v5 \
+       hostcmd-geturl_testrunner_v6 \
+       hostcmd-geturl_testrunner_v7 \
+       hostcmd-geturl_testrunner_v8 \
        timeline_var_test-Runner \
        place_object_testrunner \
        place_object_test2runner \
@@ -1391,6 +1399,51 @@ hostcmd_htmltest_v7.html: hostcmd_htmltest.sh 
hostcmd_v7.swf
 hostcmd_htmltest_v8.html: hostcmd_htmltest.sh hostcmd_v8.swf
        sh $(srcdir)/hostcmd_htmltest.sh 8 hostcmd_v8.swf > $@
 
+hostcmd-geturl_v4.swf: hostcmd-geturl.as
+       $(MAKESWF) $(MAKESWF_FLAGS) -c -1 -r 1 -v 4 -DOUTPUT_VERSION=4 -o $@ \
+               $(srcdir)/hostcmd-geturl.as
+
+hostcmd-geturl_v5.swf: hostcmd-geturl.as
+       $(MAKESWF) $(MAKESWF_FLAGS) -c -1 -r 1 -v 5 -DOUTPUT_VERSION=5 -o $@ \
+               $(srcdir)/hostcmd-geturl.as
+
+hostcmd-geturl_v6.swf: hostcmd-geturl.as
+       $(MAKESWF) $(MAKESWF_FLAGS) -r 1 -v 6 -DOUTPUT_VERSION=6 -o $@ \
+               $(srcdir)/hostcmd-geturl.as
+
+hostcmd-geturl_v7.swf: hostcmd-geturl.as
+       $(MAKESWF) $(MAKESWF_FLAGS) -r 1 -v 7 -DOUTPUT_VERSION=7 -o $@ \
+               $(srcdir)/hostcmd-geturl.as
+
+hostcmd-geturl_v8.swf: hostcmd-geturl.as
+       $(MAKESWF) $(MAKESWF_FLAGS) -r 1 -v 8 -DOUTPUT_VERSION=8 -o $@ \
+               $(srcdir)/hostcmd-geturl.as
+
+hostcmd-geturl_testrunner_v4: hostcmd-geturl_testrunner.sh 
hostcmd-geturl_v4.swf
+       sh $(srcdir)/hostcmd-geturl_testrunner.sh $(top_builddir) \
+               $(top_srcdir) 4 hostcmd-geturl_v4.swf > $@
+       chmod 755 $@
+
+hostcmd-geturl_testrunner_v5: hostcmd-geturl_testrunner.sh 
hostcmd-geturl_v5.swf
+       sh $(srcdir)/hostcmd-geturl_testrunner.sh $(top_builddir) \
+               $(top_srcdir) 5 hostcmd-geturl_v5.swf > $@
+       chmod 755 $@
+
+hostcmd-geturl_testrunner_v6: hostcmd-geturl_testrunner.sh 
hostcmd-geturl_v6.swf
+       sh $(srcdir)/hostcmd-geturl_testrunner.sh $(top_builddir) \
+               $(top_srcdir) 6 hostcmd-geturl_v6.swf > $@
+       chmod 755 $@
+
+hostcmd-geturl_testrunner_v7: hostcmd-geturl_testrunner.sh 
hostcmd-geturl_v7.swf
+       sh $(srcdir)/hostcmd-geturl_testrunner.sh $(top_builddir) \
+               $(top_srcdir) 7 hostcmd-geturl_v7.swf > $@
+       chmod 755 $@
+
+hostcmd-geturl_testrunner_v8: hostcmd-geturl_testrunner.sh 
hostcmd-geturl_v8.swf
+       sh $(srcdir)/hostcmd-geturl_testrunner.sh $(top_builddir) \
+               $(top_srcdir) 8 hostcmd-geturl_v8.swf > $@
+       chmod 755 $@
+
 GradientFillTest.swf: GradientFillTest.as 
        $(MAKESWF) $(MAKESWF_FLAGS) -v 8 -r 1 -o $@  $(srcdir)/empty.as 
$(srcdir)/GradientFillTest.as
 
@@ -1662,6 +1715,11 @@ TEST_CASES = \
        hostcmd_testrunner_v6 \
        hostcmd_testrunner_v7 \
        hostcmd_testrunner_v8 \
+       hostcmd-geturl_testrunner_v4 \
+       hostcmd-geturl_testrunner_v5 \
+       hostcmd-geturl_testrunner_v6 \
+       hostcmd-geturl_testrunner_v7 \
+       hostcmd-geturl_testrunner_v8 \
        DrawingApiTestRunner \
        TextSnapshotTest-Runner \
        reverse_execute_PlaceObject2_test1runner \
diff --git a/testsuite/misc-ming.all/hostcmd-geturl.as 
b/testsuite/misc-ming.all/hostcmd-geturl.as
new file mode 100644
index 0000000..f8e1f54
--- /dev/null
+++ b/testsuite/misc-ming.all/hostcmd-geturl.as
@@ -0,0 +1,51 @@
+// hostcmd-geturl.as - getURL()/MovieClip.getURL() target tests
+//
+//   Copyright (C) 2017 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+//
+// Note:
+//     This SWF file does not run any test by itself as this is a test on
+//     plugin's host interface.
+//
+// Original author: Nutchanon Wetchasit <address@hidden>
+//
+
+// Once this Flash movie is run, it will issue `getURL()` call to host
+// container via a built-in `getURL(url,target)` function and
+// via `MovieClip.getURL(url,target)` with unconventional `target` values;
+// each issued call will be checked for correctness by the emulated
+// host container.
+//
+// In real browser environment, this test will not run in a useful manner
+// as the early `getURL()` call will redirect test page to other file
+// before the later tests could run.
+
+trace("STARTOFTEST");
+
+getURL("geturl-emptytarget.html", "");
+
+#if OUTPUT_VERSION >= 5
+getURL("geturl-notarget.html");
+getURL("geturl-undeftarget.html", undefined);
+getURL("geturl-nulltarget.html", null);
+
+this.getURL("mcgeturl-emptytarget.html", "");
+this.getURL("mcgeturl-notarget.html");
+this.getURL("mcgeturl-undeftarget.html", undefined);
+this.getURL("mcgeturl-nulltarget.html", null);
+#endif
+
+trace("ENDOFTEST");
diff --git a/testsuite/misc-ming.all/hostcmd-geturl_testrunner.sh 
b/testsuite/misc-ming.all/hostcmd-geturl_testrunner.sh
new file mode 100644
index 0000000..1b268a5
--- /dev/null
+++ b/testsuite/misc-ming.all/hostcmd-geturl_testrunner.sh
@@ -0,0 +1,262 @@
+#!/bin/sh
+
+#
+# hostcmd-geturl_testrunner.sh - container-emulated getURL()/MovieClip.getURL()
+#                                target test runner generator
+#
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+#
+# Original author: Nutchanon Wetchasit <address@hidden>
+#
+# The generated test runner checks Gnash for:
+#  * Undefined and null target passing via getURL() and MovieClip.getURL()
+#    (bug #50393)
+#        <https://savannah.gnu.org/bugs/?50393>
+#
+# Usage:
+#     ./hostcmd-geturl_testrunner.sh <builddir> <srcdir> <swfversion> <swf>
+#
+# Generated test runner's exit codes:
+#     0         if tester ran completely
+#     non-zero  if tester encountered an error
+#
+# Note:
+#     The generated test file requires a filesystem that supports named pipes.
+#
+
+# Check for generation parameters
+while getopts "" name
+do
+       case $name in
+               ?)
+                       echo "Usage: $0 <builddir> <srcdir> <swfversion> <swf>" 
>&2
+                       exit 1;;
+       esac
+done
+shift $(($OPTIND - 1))
+if [ "$#" -ne 4 ]
+then
+       echo "Usage: $0 <builddir> <srcdir> <swfversion> <swf>" >&2
+       exit 1
+fi
+
+# Load generation parameters
+top_builddir=$1
+shift
+top_srcdir=$1
+shift
+swfversion=$1
+shift
+swf=$1
+
+# Generate the test runner
+echo "#!/bin/sh"
+echo
+
+echo "# Environment variables"
+env | grep '^GNASH' | while read reply
+do
+       echo "export \"${reply}\""
+done
+
+cat << EOF
+
+# Filenames and constants
+LOGFILE=${top_builddir}/testoutlog.\$\$
+PIPE2CONTAINER=${top_builddir}/tocontainer.\$\$
+PIPE2PLAYER=${top_builddir}/toplayer.\$\$
+STARTTIMEOUT=10
+READTIMEOUT=5
+
+# Test counts
+TESTED=0
+FAILED=0
+PASSED=0
+
+# check_equals(\$op1, \$op2, \$msg)
+# Equality checker and counter
+check_equals() {
+       if [ "\$1" = "\$2" ]
+       then
+               echo "PASSED: \$3"
+               PASSED=\`expr "\$PASSED" + 1\`
+       else
+               echo "FAILED: \$3 (\"\$1\" != \"\$2\")"
+               FAILED=\`expr "\$FAILED" + 1\`
+       fi
+       TESTED=\`expr "\$TESTED" + 1\`
+}
+
+# xcheck_equals(\$op1, \$op2, \$msg)
+# Equality checker and counter (for expected failure)
+xcheck_equals() {
+       if [ "\$1" = "\$2" ]
+       then
+               echo "XPASSED: \$3"
+               PASSED=\`expr "\$PASSED" + 1\`
+       else
+               echo "XFAILED: \$3 (\"\$1\" != \"\$2\")"
+               FAILED=\`expr "\$FAILED" + 1\`
+       fi
+       TESTED=\`expr "\$TESTED" + 1\`
+}
+
+# check_totals(\$op, \$msg)
+# Test count checker
+check_totals() {
+       check_equals "\$TESTED" "\$1" "\$2"
+}
+
+# check_error(\$bool, \$msg)
+# Assert \$bool is 0; if not, flag error in the test, and exit
+check_error() {
+       if [ "\$1" -ne 0 ]
+       then
+               echo "ERROR: \$2" >&2
+               exit 1
+       fi
+}
+
+# read_timeout(\$varname, \$timeout)
+# Read one line from standard input, with a specified timeout (in seconds)
+read_timeout() {
+       trap 'trap - USR1; return 142' USR1
+       (sleep "\$2" && kill -USR1 "\$\$" > /dev/null 2>&1) &
+       TIMEOUTPID=\$!
+       read "\$1"
+       READERROR=\$?
+       kill "\$TIMEOUTPID" > /dev/null 2>&1
+       trap - USR1
+       return \$READERROR
+}
+
+# Create required named pipes
+if [ \! -p "\$PIPE2CONTAINER" ]
+then
+       mkfifo "\$PIPE2CONTAINER"
+       check_error "\$?" "Failed to create a named pipe: \$PIPE2CONTAINER"
+fi
+if [ \! -p "\$PIPE2PLAYER" ]
+then
+       mkfifo "\$PIPE2PLAYER"
+       check_error "\$?" "Failed to create a named pipe: \$PIPE2PLAYER"
+fi
+
+# Open player-to-host pipe
+exec 3<> "\$PIPE2CONTAINER"
+check_error \$? "Failed to open a named pipe: \$PIPE2CONTAINER"
+
+# Open host-to-player pipe
+exec 4<> "\$PIPE2PLAYER"
+check_error \$? "Failed to open a named pipe: \$PIPE2PLAYER"
+
+# Start player
+"${top_builddir}/gui/gnash" -r 0 -vv -F 3:4 "${swf}" > "\$LOGFILE" 2>&1 &
+GNASHPID=\$!
+
+# Wait until the SWF code start running, by loop-checking logfile
+STARTCOUNTDOWN=\$STARTTIMEOUT
+while [ \$STARTCOUNTDOWN -gt 0 ]
+do
+       if grep "TRACE: STARTOFTEST" "\$LOGFILE" 2>&1 > /dev/null
+       then
+               break
+       fi
+       sleep 1
+       STARTCOUNTDOWN=\`expr \$STARTCOUNTDOWN - 1\`
+done
+
+[ \$STARTCOUNTDOWN -ne 0 ]
+check_equals \$? 0 "Gnash-side ActionScript code should be successfully 
started"
+
+#
+# Built-in getURL target tests
+#
+
+# Read for empty-target getURL statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="getURL" 
returntype="xml"><arguments><string>geturl-emptytarget.html</string><string>GET</string></arguments></invoke>'
 "Gnash should correctly pass built-in getURL call with empty target"
+
+if [ $swfversion -ge 5 ]
+then
+       # Read for no-target getURL statement
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" '<invoke name="getURL" 
returntype="xml"><arguments><string>geturl-notarget.html</string><string>GET</string></arguments></invoke>'
 "Gnash should correctly pass built-in getURL call with no target"
+
+       if [ $swfversion -ge 7 ]
+       then
+               # Read for undefined-target getURL statement (SWF7-above form)
+               read_timeout LINE \$READTIMEOUT <&3
+               check_equals "\$LINE" '<invoke name="getURL" 
returntype="xml"><arguments><string>geturl-undeftarget.html</string><string>GET</string><string>undefined</string></arguments></invoke>'
 "Gnash should correctly pass built-in getURL call with undefined target"
+       else
+               # Read for undefined-target getURL statement (SWF6-below form)
+               read_timeout LINE \$READTIMEOUT <&3
+               check_equals "\$LINE" '<invoke name="getURL" 
returntype="xml"><arguments><string>geturl-undeftarget.html</string><string>GET</string></arguments></invoke>'
 "Gnash should correctly pass built-in getURL call with undefined target"
+       fi
+
+       # Read for null-target getURL statement
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" '<invoke name="getURL" 
returntype="xml"><arguments><string>geturl-nulltarget.html</string><string>GET</string><string>null</string></arguments></invoke>'
 "Gnash should correctly pass built-in getURL call with null target"
+
+       #
+       # MovieClip-based getURL() target tests
+       #
+
+       # Read for empty-target MovieClip-based getURL statement
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" "<invoke name=\"getURL\" 
returntype=\"xml\"><arguments><string>mcgeturl-emptytarget.html</string><string>GET</string></arguments></invoke>"
 "Gnash should correctly pass MovieClip-based getURL call with empty target"
+
+       # Read for no-target MovieClip-based getURL statement
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" '<invoke name="getURL" 
returntype="xml"><arguments><string>mcgeturl-notarget.html</string><string>GET</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based getURL call with no target"
+
+       # Read for undefined-target MovieClip-based getURL statement
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" '<invoke name="getURL" 
returntype="xml"><arguments><string>mcgeturl-undeftarget.html</string><string>GET</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based getURL call with undefined target"
+
+       # Read for null-target MovieClip-based getURL statement
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" "<invoke name=\"getURL\" 
returntype=\"xml\"><arguments><string>mcgeturl-nulltarget.html</string><string>GET</string><string>null</string></arguments></invoke>"
 "Gnash should correctly pass MovieClip-based getURL call with null target"
+fi
+
+# Close pipes
+exec 3<&-
+exec 4<&-
+
+# Force Gnash to exit
+kill \$GNASHPID
+wait \$GNASHPID
+
+# Show player-side output
+exec 5< "\$LOGFILE"
+cat <&5
+exec 5<&-
+
+# Check for total number of test run
+if [ $swfversion -ge 5 ]
+then
+       check_totals "9" "There should be 9 tests run"
+else
+       check_totals "2" "There should be 2 tests run"
+fi
+
+# Remove temporary files
+rm "\$LOGFILE"
+rm "\$PIPE2CONTAINER"
+rm "\$PIPE2PLAYER"
+EOF

http://git.savannah.gnu.org/cgit/gnash.git/commit/?id=2807c76a97eeb1059a4ace49caa42ac604405795


commit 2807c76a97eeb1059a4ace49caa42ac604405795
Author: Nutchanon Wetchasit <address@hidden>
Date:   Tue Mar 7 12:14:22 2017 +0100

    Make automated FSCommand invocation tests show player-side output.

diff --git a/testsuite/misc-ming.all/hostcmd_testrunner.sh 
b/testsuite/misc-ming.all/hostcmd_testrunner.sh
index 01bc0c7..070a54f 100644
--- a/testsuite/misc-ming.all/hostcmd_testrunner.sh
+++ b/testsuite/misc-ming.all/hostcmd_testrunner.sh
@@ -344,6 +344,11 @@ exec 4<&-
 kill \$GNASHPID
 wait \$GNASHPID
 
+# Show player-side output
+exec 5< "\$LOGFILE"
+cat <&5
+exec 5<&-
+
 # Check for total number of test run
 check_totals "35" "There should be 35 tests run"
 

http://git.savannah.gnu.org/cgit/gnash.git/commit/?id=694de7113c1561a7616511f711de2ffbcdd153e9


commit 694de7113c1561a7616511f711de2ffbcdd153e9
Author: Nutchanon Wetchasit <address@hidden>
Date:   Tue Mar 7 12:13:50 2017 +0100

    Add automated tests on function-type FSCommand parameter passing.
    
    See bug #50393 <https://savannah.gnu.org/bugs/?50393>

diff --git a/testsuite/misc-ming.all/hostcmd.as 
b/testsuite/misc-ming.all/hostcmd.as
index 0786790..748124c 100644
--- a/testsuite/misc-ming.all/hostcmd.as
+++ b/testsuite/misc-ming.all/hostcmd.as
@@ -36,6 +36,7 @@
 var arrayarg;
 var objectarg;
 var object_customstringarg;
+var functionarg;
 
 trace("STARTOFTEST");
 getURL("FSCommand:");
@@ -60,6 +61,10 @@ object_customstringarg.toString = function():String {
        return "This is a custom Object.toString()";
 };
 getURL("FSCommand:object_customstringarg", object_customstringarg);
+functionarg = function() {
+       trace("This code should not run!");
+};
+getURL("FSCommand:functionarg", functionarg);
 
 this.getURL("FSCommand:");
 this.getURL("FSCommand:", "This is a string for empty call");
@@ -77,4 +82,5 @@ this.getURL("FSCommand:m_undefinedarg", undefined);
 this.getURL("FSCommand:m_arrayarg", arrayarg);
 this.getURL("FSCommand:m_objectarg", objectarg);
 this.getURL("FSCommand:m_object_customstringarg", object_customstringarg);
+this.getURL("FSCommand:m_functionarg", functionarg);
 trace("ENDOFTEST");
diff --git a/testsuite/misc-ming.all/hostcmd_htmltest.sh 
b/testsuite/misc-ming.all/hostcmd_htmltest.sh
index cdc5216..354b243 100644
--- a/testsuite/misc-ming.all/hostcmd_htmltest.sh
+++ b/testsuite/misc-ming.all/hostcmd_htmltest.sh
@@ -187,6 +187,7 @@ cat << EOF
        var arrayarg_call = 0;
        var objectarg_call = 0;
        var object_customstringarg_call = 0;
+       var functionarg_call = 0;
        var m_noarg_call = 0;
        var m_stringarg_call = 0;
        var m_weirdstringarg_call = 0;
@@ -201,6 +202,7 @@ cat << EOF
        var m_arrayarg_call = 0;
        var m_objectarg_call = 0;
        var m_object_customstringarg_call = 0;
+       var m_functionarg_call = 0;
 
        function player_DoFSCommand(cmd, arg) {
                if("" == cmd) {
@@ -283,6 +285,10 @@ cat << EOF
                        object_customstringarg_call++;
                        check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with object parameter bearing custom toString() should pass 
string-type parameter");
                        check_equals(arg, "This is a custom Object.toString()", 
"Custom string representation of object parameter of getURL-based FSCommand 
call should be correctly passed");
+               } else if("functionarg" == cmd) {
+                       functionarg_call++;
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with function parameter should pass string-type parameter");
+                       check_equals(arg, "[type Function]", "String 
representation of function parameter of getURL-based FSCommand call should be 
correctly passed");
                } else if("m_noarg" == cmd) {
                        m_noarg_call++;
                        check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with no parameter should pass string-type parameter");
@@ -342,6 +348,10 @@ cat << EOF
                        m_object_customstringarg_call++;
                        check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with object parameter bearing custom toString() should pass 
string-type parameter");
                        check_equals(arg, "This is a custom Object.toString()", 
"Custom string representation of object parameter of MovieClip-based FSCommand 
call should be correctly passed");
+               } else if("m_functionarg" == cmd) {
+                       m_functionarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with function parameter should pass string-type parameter");
+                       check_equals(arg, "[type Function]", "String 
representation of function parameter of MovieClip-based FSCommand call should 
be correctly passed");
                } else {
                        check_error("Unknown FSCommand issued: \"" + cmd + "\" 
parameter \"" + arg + "\"");
                }
@@ -364,6 +374,7 @@ cat << EOF
                check_equals(arrayarg_call, 1, "\"arrayarg\" FSCommand should 
be called for 1 time");
                check_equals(objectarg_call, 1, "\"objectarg\" FSCommand should 
be called for 1 time");
                check_equals(object_customstringarg_call, 1, 
"\"object_customstringarg\" FSCommand should be called for 1 time");
+               check_equals(m_functionarg_call, 1, "\"functionarg\" FSCommand 
should be called for 1 time");
 
                check_equals(m_noarg_call, 1, "\"m_noarg\" FSCommand should be 
called for 1 time");
                check_equals(m_stringarg_call, 1, "\"m_stringarg\" FSCommand 
should be called for 1 time");
@@ -379,8 +390,9 @@ cat << EOF
                check_equals(m_arrayarg_call, 1, "\"m_arrayarg\" FSCommand 
should be called for 1 time");
                check_equals(m_objectarg_call, 1, "\"m_objectarg\" FSCommand 
should be called for 1 time");
                check_equals(m_object_customstringarg_call, 1, 
"\"m_object_customstringarg\" FSCommand should be called for 1 time");
+               check_equals(m_functionarg_call, 1, "\"m_functionarg\" 
FSCommand should be called for 1 time");
 
-               xcheck_totals(93);
+               xcheck_totals(99);
        }
 
        setTimeout("verify_flash()",3000);
diff --git a/testsuite/misc-ming.all/hostcmd_testrunner.sh 
b/testsuite/misc-ming.all/hostcmd_testrunner.sh
index 1946203..01bc0c7 100644
--- a/testsuite/misc-ming.all/hostcmd_testrunner.sh
+++ b/testsuite/misc-ming.all/hostcmd_testrunner.sh
@@ -260,6 +260,10 @@ check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><str
 read_timeout LINE \$READTIMEOUT <&3
 check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>object_customstringarg</string><string>This 
is a custom Object.toString()</string></arguments></invoke>' "Gnash should 
correctly pass getURL-based FSCommand call with object parameter bearing custom 
toString()"
 
+# Read for function-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>functionarg</string><string>[type 
Function]</string></arguments></invoke>' "Gnash should correctly pass 
getURL-based FSCommand call with function parameter"
+
 #
 # MovieClip-based FSCommand tests
 #
@@ -328,6 +332,10 @@ check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><str
 read_timeout LINE \$READTIMEOUT <&3
 check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_object_customstringarg</string><string>This
 is a custom Object.toString()</string></arguments></invoke>' "Gnash should 
correctly pass MovieClip-based FSCommand call with object parameter bearing 
custom toString()"
 
+# Read for function-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_functionarg</string><string>[type 
Function]</string></arguments></invoke>' "Gnash should correctly pass 
MovieClip-based FSCommand call with function parameter"
+
 # Close pipes
 exec 3<&-
 exec 4<&-
@@ -337,7 +345,7 @@ kill \$GNASHPID
 wait \$GNASHPID
 
 # Check for total number of test run
-check_totals "33" "There should be 33 tests run"
+check_totals "35" "There should be 35 tests run"
 
 # Remove temporary files
 rm "\$LOGFILE"

http://git.savannah.gnu.org/cgit/gnash.git/commit/?id=5dcfebdbda43c7ff73984dd384a25eceedf18944


commit 5dcfebdbda43c7ff73984dd384a25eceedf18944
Author: Nutchanon Wetchasit <address@hidden>
Date:   Tue Mar 7 12:13:44 2017 +0100

    Do not treat getURL()'s undefined and null target parameter as empty string.
    
    See bug #50393 <https://savannah.gnu.org/bugs/?50393>

diff --git a/libcore/vm/ASHandlers.cpp b/libcore/vm/ASHandlers.cpp
index 073bca5..396c97e 100644
--- a/libcore/vm/ASHandlers.cpp
+++ b/libcore/vm/ASHandlers.cpp
@@ -1,7 +1,7 @@
 // ASHandlers.cpp:  ActionScript handlers, for Gnash.
 //
-//   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-//   Free Software Foundation, Inc
+//   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
+//   2015, 2017 Free Software Foundation, Inc
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -3520,14 +3520,10 @@ commonGetURL(as_environment& env, as_value target,
         sendVarsMethod = static_cast<MovieClip::VariablesMethod>(method & 3);
     }
 
-    std::string target_string;
-    if (!target.is_undefined() && !target.is_null()) {
-        target_string = target.to_string();
-    }
-
     VM& vm = getVM(env);
     movie_root& m = vm.getRoot();
- 
+    std::string target_string = target.to_string(vm.getSWFVersion());
+
     // If the url starts with "FSCommand:", then this is
     // a message for the host app.
     StringNoCaseEqual noCaseCompare;
diff --git a/testsuite/misc-ming.all/hostcmd_htmltest.sh 
b/testsuite/misc-ming.all/hostcmd_htmltest.sh
index 0fffffd..cdc5216 100644
--- a/testsuite/misc-ming.all/hostcmd_htmltest.sh
+++ b/testsuite/misc-ming.all/hostcmd_htmltest.sh
@@ -262,11 +262,15 @@ cat << EOF
                } else if("nullarg" == cmd) {
                        nullarg_call++;
                        check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with null parameter should pass string-type parameter");
-                       xcheck_equals(arg, "null", "getURL-based FSCommand call 
should pass a correct string representation of null parameter");
+                       check_equals(arg, "null", "getURL-based FSCommand call 
should pass a correct string representation of null parameter");
                } else if("undefinedarg" == cmd) {
                        undefinedarg_call++;
                        check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with undefined parameter should pass string-type parameter");
-                       xcheck_equals(arg, "undefined", "getURL-based FSCommand 
call should pass a correct string representation of undefined parameter");
+                       if($swfversion >= 7) {
+                               check_equals(arg, "undefined", "getURL-based 
FSCommand call should pass a correct string representation of undefined 
parameter");
+                       } else {
+                               check_equals(arg, "", "getURL-based FSCommand 
call should pass a correct string representation of undefined parameter");
+                       }
                } else if("arrayarg" == cmd) {
                        arrayarg_call++;
                        check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with array parameter should pass string-type parameter");
diff --git a/testsuite/misc-ming.all/hostcmd_testrunner.sh 
b/testsuite/misc-ming.all/hostcmd_testrunner.sh
index 6317e04..1946203 100644
--- a/testsuite/misc-ming.all/hostcmd_testrunner.sh
+++ b/testsuite/misc-ming.all/hostcmd_testrunner.sh
@@ -235,11 +235,18 @@ check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><str
 
 # Read for null-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-xcheck_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>nullarg</string><string>null</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with null parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>nullarg</string><string>null</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with null parameter"
 
-# Read for undefined-parameter FSCommand statement
-read_timeout LINE \$READTIMEOUT <&3
-xcheck_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>undefinedarg</string><string>undefined</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with undefined 
parameter"
+if [ $swfversion -ge 7 ]
+then
+       # Read for undefined-parameter FSCommand statement (SWF7-above form)
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>undefinedarg</string><string>undefined</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with undefined 
parameter"
+else
+       # Read for undefined-parameter FSCommand statement (SWF6-below form)
+       read_timeout LINE \$READTIMEOUT <&3
+       check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>undefinedarg</string><string></string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with undefined 
parameter"
+fi
 
 # Read for array-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3

http://git.savannah.gnu.org/cgit/gnash.git/commit/?id=836df7f932f192d536fb56df77978f80c6c37530


commit 836df7f932f192d536fb56df77978f80c6c37530
Author: Nutchanon Wetchasit <address@hidden>
Date:   Tue Mar 7 12:13:37 2017 +0100

    Treat undefined target parameter of MovieClip.getURL() like empty string.
    
    See bug #50393 <https://savannah.gnu.org/bugs/?50393>

diff --git a/libcore/asobj/MovieClip_as.cpp b/libcore/asobj/MovieClip_as.cpp
index 8973066..ab7fc05 100644
--- a/libcore/asobj/MovieClip_as.cpp
+++ b/libcore/asobj/MovieClip_as.cpp
@@ -1092,7 +1092,7 @@ movieclip_getURL(const fn_call& fn)
     as_object* movieclip = ensure<ValidThis>(fn);
 
     std::string urlstr;
-    std::string target;
+    as_value target;
 
     as_value val;
     if (fn.nargs > 2)
@@ -1123,19 +1123,23 @@ movieclip_getURL(const fn_call& fn)
         case 3:
             // This argument has already been handled.
         case 2:
-             target = fn.arg(1).to_string();
+             target = fn.arg(1);
         case 1:
              urlstr = fn.arg(0).to_string();
              break;
     }
 
     movie_root& m = getRoot(fn);
+    std::string targetstr;
+    if (!target.is_undefined()) {
+        targetstr = target.to_string();
+    }
 
     // If the URL uses "FSCommand:" scheme, it is a message for the player
     // or host container.
     StringNoCaseEqual noCaseCompare;
     if (noCaseCompare(urlstr.substr(0, 10), "FSCommand:")) {
-        m.handleFsCommand(urlstr.substr(10), target);
+        m.handleFsCommand(urlstr.substr(10), targetstr);
         return as_value();
     }
 
@@ -1149,7 +1153,7 @@ movieclip_getURL(const fn_call& fn)
         vars = getURLEncodedVars(*movieclip);
     }
     
-    m.getURL(urlstr, target, vars, method);
+    m.getURL(urlstr, targetstr, vars, method);
 
     return as_value();
 }
diff --git a/testsuite/misc-ming.all/hostcmd_htmltest.sh 
b/testsuite/misc-ming.all/hostcmd_htmltest.sh
index 774e5b6..0fffffd 100644
--- a/testsuite/misc-ming.all/hostcmd_htmltest.sh
+++ b/testsuite/misc-ming.all/hostcmd_htmltest.sh
@@ -325,7 +325,7 @@ cat << EOF
                } else if("m_undefinedarg" == cmd) {
                        m_undefinedarg_call++;
                        check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with undefined parameter should pass string-type parameter");
-                       xcheck_equals(arg, "", "MovieClip-based FSCommand call 
should pass an empty string as a representation of undefined parameter");
+                       check_equals(arg, "", "MovieClip-based FSCommand call 
should pass an empty string as a representation of undefined parameter");
                } else if("m_arrayarg" == cmd) {
                        m_arrayarg_call++;
                        check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with array parameter should pass string-type parameter");
diff --git a/testsuite/misc-ming.all/hostcmd_testrunner.sh 
b/testsuite/misc-ming.all/hostcmd_testrunner.sh
index 509d5a6..6317e04 100644
--- a/testsuite/misc-ming.all/hostcmd_testrunner.sh
+++ b/testsuite/misc-ming.all/hostcmd_testrunner.sh
@@ -307,7 +307,7 @@ check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><str
 
 # Read for undefined-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-xcheck_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_undefinedarg</string><string></string></arguments></invoke>'
 "Gnash should pass undefined parameter of MovieClip-based FSCommand call as 
empty string"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_undefinedarg</string><string></string></arguments></invoke>'
 "Gnash should pass undefined parameter of MovieClip-based FSCommand call as 
empty string"
 
 # Read for array-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3

http://git.savannah.gnu.org/cgit/gnash.git/commit/?id=76ac22da4dd7c167b6b68083d87b4f5e79220dad


commit 76ac22da4dd7c167b6b68083d87b4f5e79220dad
Author: Nutchanon Wetchasit <address@hidden>
Date:   Tue Mar 7 12:13:29 2017 +0100

    Add parameter type tests on getURL()-based FSCommand.
    
    See bug #50393 <https://savannah.gnu.org/bugs/?50393>

diff --git a/testsuite/misc-ming.all/hostcmd.as 
b/testsuite/misc-ming.all/hostcmd.as
index 1e4689b..0786790 100644
--- a/testsuite/misc-ming.all/hostcmd.as
+++ b/testsuite/misc-ming.all/hostcmd.as
@@ -33,27 +33,48 @@
 // in JavaScript (where "*" is the value of `name` attribute on `<object>`
 // or `<embed>` tag which the SWF is playing).
 
+var arrayarg;
+var objectarg;
 var object_customstringarg;
 
 trace("STARTOFTEST");
-this.getURL("FSCommand:");
-this.getURL("FSCommand:", "This is a string for empty call");
-this.getURL("FSCommand:noarg");
-this.getURL("FSCommand:stringarg", "This is a string");
-this.getURL("FSCommand:weirdstringarg", 
"address@hidden&*()_+-={}|[]\\:\";\'<>?,./~`");
-this.getURL("FSCommand:integerarg", 9876);
-this.getURL("FSCommand:floatarg", 9876.5432);
-this.getURL("FSCommand:infinitearg", Infinity);
-this.getURL("FSCommand:neginfinitearg", -Infinity);
-this.getURL("FSCommand:nanarg", NaN);
-this.getURL("FSCommand:booleanarg", true);
-this.getURL("FSCommand:nullarg", null);
-this.getURL("FSCommand:undefinedarg", undefined);
-this.getURL("FSCommand:arrayarg", new Array("The", "quick", "brown", "fox", 
"jumps", "over", "the", "lazy", "dog"));
-this.getURL("FSCommand:objectarg", new Object());
+getURL("FSCommand:");
+getURL("FSCommand:", "This is a string for empty call");
+getURL("FSCommand:noarg");
+getURL("FSCommand:stringarg", "This is a string");
+getURL("FSCommand:weirdstringarg", 
"address@hidden&*()_+-={}|[]\\:\";\'<>?,./~`");
+getURL("FSCommand:integerarg", 9876);
+getURL("FSCommand:floatarg", 9876.5432);
+getURL("FSCommand:infinitearg", Infinity);
+getURL("FSCommand:neginfinitearg", -Infinity);
+getURL("FSCommand:nanarg", NaN);
+getURL("FSCommand:booleanarg", true);
+getURL("FSCommand:nullarg", null);
+getURL("FSCommand:undefinedarg",undefined);
+arrayarg = new Array("The", "quick", "brown", "fox", "jumps", "over", "the", 
"lazy", "dog");
+getURL("FSCommand:arrayarg", arrayarg);
+objectarg = new Object();
+getURL("FSCommand:objectarg", objectarg);
 object_customstringarg = new Object();
 object_customstringarg.toString = function():String {
        return "This is a custom Object.toString()";
 };
-this.getURL("FSCommand:object_customstringarg", object_customstringarg);
+getURL("FSCommand:object_customstringarg", object_customstringarg);
+
+this.getURL("FSCommand:");
+this.getURL("FSCommand:", "This is a string for empty call");
+this.getURL("FSCommand:m_noarg");
+this.getURL("FSCommand:m_stringarg", "This is a string");
+this.getURL("FSCommand:m_weirdstringarg", 
"address@hidden&*()_+-={}|[]\\:\";\'<>?,./~`");
+this.getURL("FSCommand:m_integerarg", 9876);
+this.getURL("FSCommand:m_floatarg", 9876.5432);
+this.getURL("FSCommand:m_infinitearg", Infinity);
+this.getURL("FSCommand:m_neginfinitearg", -Infinity);
+this.getURL("FSCommand:m_nanarg", NaN);
+this.getURL("FSCommand:m_booleanarg", true);
+this.getURL("FSCommand:m_nullarg", null);
+this.getURL("FSCommand:m_undefinedarg", undefined);
+this.getURL("FSCommand:m_arrayarg", arrayarg);
+this.getURL("FSCommand:m_objectarg", objectarg);
+this.getURL("FSCommand:m_object_customstringarg", object_customstringarg);
 trace("ENDOFTEST");
diff --git a/testsuite/misc-ming.all/hostcmd_htmltest.sh 
b/testsuite/misc-ming.all/hostcmd_htmltest.sh
index 2e455a2..774e5b6 100644
--- a/testsuite/misc-ming.all/hostcmd_htmltest.sh
+++ b/testsuite/misc-ming.all/hostcmd_htmltest.sh
@@ -26,6 +26,8 @@
 # The generated test runner checks Gnash (or proprietary player) for:
 #  * Support of FSCommand call via MovieClip.getURL() (bug #46944)
 #        <https://savannah.gnu.org/bugs/?46944>
+#  * Undefined FSCommand parameter passing via MovieClip.getURL() (bug #50393)
+#        <https://savannah.gnu.org/bugs/?50393>
 #
 # Usage:
 #     ./hostcmd_htmltest.sh <swfversion> <swf>
@@ -185,14 +187,34 @@ cat << EOF
        var arrayarg_call = 0;
        var objectarg_call = 0;
        var object_customstringarg_call = 0;
+       var m_noarg_call = 0;
+       var m_stringarg_call = 0;
+       var m_weirdstringarg_call = 0;
+       var m_integerarg_call = 0;
+       var m_floatarg_call = 0;
+       var m_infinitearg_call = 0;
+       var m_neginfinitearg_call = 0;
+       var m_nanarg_call = 0;
+       var m_booleanarg_call = 0;
+       var m_nullarg_call = 0;
+       var m_undefinedarg_call = 0;
+       var m_arrayarg_call = 0;
+       var m_objectarg_call = 0;
+       var m_object_customstringarg_call = 0;
 
        function player_DoFSCommand(cmd, arg) {
                if("" == cmd) {
                        noname_call++;
                        if (noname_call == 1) {
+                               check_equals(typeof(arg), "string", 
"getURL-based no-name FSCommand call with no parameter should pass string-type 
parameter");
+                               check_equals(arg, "", "getURL-based no-name 
FSCommand call with no-parameter should pass an empty string parameter");
+                       } else if(noname_call == 2) {
+                               check_equals(typeof(arg), "string", 
"getURL-based no-name FSCommand call with string parameter should pass 
string-type parameter");
+                               check_equals(arg, "This is a string for empty 
call", "getURL-based no-name FSCommand call with string parameter should pass a 
correct string parameter value");
+                       } else if(noname_call == 3) {
                                check_equals(typeof(arg), "string", 
"MovieClip-based no-name FSCommand call with no parameter should pass 
string-type parameter");
                                check_equals(arg, "", "MovieClip-based no-name 
FSCommand call with no-parameter should pass an empty string parameter");
-                       } else if(noname_call == 2) {
+                       } else if(noname_call == 4) {
                                check_equals(typeof(arg), "string", 
"MovieClip-based no-name FSCommand call with string parameter should pass 
string-type parameter");
                                check_equals(arg, "This is a string for empty 
call", "MovieClip-based no-name FSCommand call with string parameter should 
pass a correct string parameter value");
                        } else {
@@ -200,61 +222,120 @@ cat << EOF
                        }
                } else if("noarg" == cmd) {
                        noarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with no parameter should pass string-type parameter");
-                       check_equals(arg, "", "MovieClip-based FSCommand call 
with no parameter should pass an empty string parameter value");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with no parameter should pass string-type parameter");
+                       check_equals(arg, "", "getURL-based FSCommand call with 
no parameter should pass an empty string parameter value");
                } else if("stringarg" == cmd) {
                        stringarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with string parameter should pass string-type parameter");
-                       check_equals(arg, "This is a string", "MovieClip-based 
FSCommand call with string parameter should pass a correct string parameter 
value");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with string parameter should pass string-type parameter");
+                       check_equals(arg, "This is a string", "getURL-based 
FSCommand call with string parameter should pass a correct string parameter 
value");
                } else if("weirdstringarg" == cmd) {
                        // Currently, this FSCommand won't run under 
libgnashplugin,
                        // due to its internal parameter parsing issue.
 
                        weirdstringarg_call++;
-                       xcheck_equals(typeof(arg),"string", "MovieClip-based 
FSCommand call with string parameter full of symbols should pass string-type 
parameter");
-                       
xcheck_equals(arg,"address@hidden&*()_+-={}|[]\\\\:\";\'<>?,./~\`", 
"Full-of-symbols string parameter value of MovieClip-based FSCommand call 
should be passed correctly");
+                       xcheck_equals(typeof(arg),"string", "getURL-based 
FSCommand call with string parameter full of symbols should pass string-type 
parameter");
+                       
xcheck_equals(arg,"address@hidden&*()_+-={}|[]\\\\:\";\'<>?,./~\`", 
"Full-of-symbols string parameter value of getURL-based FSCommand call should 
be passed correctly");
                } else if("integerarg" == cmd) {
                        integerarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with integer parameter should pass string-type parameter");
-                       check_equals(arg, "9876", "MovieClip-based FSCommand 
call should pass a correct string representation of integer parameter value");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with integer parameter should pass string-type parameter");
+                       check_equals(arg, "9876", "getURL-based FSCommand call 
should pass a correct string representation of integer parameter value");
                } else if("floatarg" == cmd) {
                        floatarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with floating point parameter should pass string-type 
parameter");
-                       check_equals(arg, "9876.5432", "MovieClip-based 
FSCommand call should pass a correct string representation of floating point 
parameter value");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with floating point parameter should pass string-type 
parameter");
+                       check_equals(arg, "9876.5432", "getURL-based FSCommand 
call should pass a correct string representation of floating point parameter 
value");
                } else if("infinitearg" == cmd) {
                        infinitearg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with infinity parameter should pass string-type parameter");
-                       check_equals(arg, "Infinity", "MovieClip-based 
FSCommand call should pass a correct string representation of infinity 
parameter");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with infinity parameter should pass string-type parameter");
+                       check_equals(arg, "Infinity", "getURL-based FSCommand 
call should pass a correct string representation of infinity parameter");
                } else if("neginfinitearg" == cmd) {
                        neginfinitearg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with negative infinity parameter should pass string-type 
parameter");
-                       check_equals(arg, "-Infinity", "MovieClip-based 
FSCommand call should pass a correct string representation of negative infinity 
parameter value");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with negative infinity parameter should pass string-type 
parameter");
+                       check_equals(arg, "-Infinity", "getURL-based FSCommand 
call should pass a correct string representation of negative infinity parameter 
value");
                } else if("nanarg" == cmd) {
                        nanarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with not-a-number parameter should pass string-type parameter");
-                       check_equals(arg, "NaN", "MovieClip-based FSCommand 
call should pass a correct string representation of not-a-number parameter 
value");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with not-a-number parameter should pass string-type parameter");
+                       check_equals(arg, "NaN", "getURL-based FSCommand call 
should pass a correct string representation of not-a-number parameter value");
                } else if("booleanarg" == cmd) {
                        booleanarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with boolean parameter should pass string-type parameter");
-                       check_equals(arg, "true", "MovieClip-based FSCommand 
call should pass a correct string representation of boolean parameter value");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with boolean parameter should pass string-type parameter");
+                       check_equals(arg, "true", "getURL-based FSCommand call 
should pass a correct string representation of boolean parameter value");
                } else if("nullarg" == cmd) {
                        nullarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with null parameter should pass string-type parameter");
-                       check_equals(arg, "null", "MovieClip-based FSCommand 
call should pass a correct string representation of null parameter");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with null parameter should pass string-type parameter");
+                       xcheck_equals(arg, "null", "getURL-based FSCommand call 
should pass a correct string representation of null parameter");
                } else if("undefinedarg" == cmd) {
                        undefinedarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with undefined parameter should pass string-type parameter");
-                       xcheck_equals(arg, "", "MovieClip-based FSCommand call 
should pass an empty string as a representation of undefined parameter");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with undefined parameter should pass string-type parameter");
+                       xcheck_equals(arg, "undefined", "getURL-based FSCommand 
call should pass a correct string representation of undefined parameter");
                } else if("arrayarg" == cmd) {
                        arrayarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with array parameter should pass string-type parameter");
-                       check_equals(arg, 
"The,quick,brown,fox,jumps,over,the,lazy,dog", "Array parameter value of 
MovieClip-based FSCommand call should be passed correctly as CSV string");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with array parameter should pass string-type parameter");
+                       check_equals(arg, 
"The,quick,brown,fox,jumps,over,the,lazy,dog", "Array parameter value of 
getURL-based FSCommand call should be passed correctly as CSV string");
                } else if("objectarg" == cmd) {
                        objectarg_call++;
-                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with object parameter should pass string-type parameter");
-                       check_equals(arg, "[object Object]", "String 
representation of Object parameter of MovieClip-based FSCommand call should be 
correctly passed");
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with object parameter should pass string-type parameter");
+                       check_equals(arg, "[object Object]", "String 
representation of object parameter of getURL-based FSCommand call should be 
correctly passed");
                } else if("object_customstringarg" == cmd) {
                        object_customstringarg_call++;
+                       check_equals(typeof(arg), "string", "getURL-based 
FSCommand call with object parameter bearing custom toString() should pass 
string-type parameter");
+                       check_equals(arg, "This is a custom Object.toString()", 
"Custom string representation of object parameter of getURL-based FSCommand 
call should be correctly passed");
+               } else if("m_noarg" == cmd) {
+                       m_noarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with no parameter should pass string-type parameter");
+                       check_equals(arg, "", "MovieClip-based FSCommand call 
with no parameter should pass an empty string parameter value");
+               } else if("m_stringarg" == cmd) {
+                       m_stringarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with string parameter should pass string-type parameter");
+                       check_equals(arg, "This is a string", "MovieClip-based 
FSCommand call with string parameter should pass a correct string parameter 
value");
+               } else if("m_weirdstringarg" == cmd) {
+                       // Currently, this FSCommand won't run under 
libgnashplugin,
+                       // due to its internal parameter parsing issue.
+
+                       m_weirdstringarg_call++;
+                       xcheck_equals(typeof(arg),"string", "MovieClip-based 
FSCommand call with string parameter full of symbols should pass string-type 
parameter");
+                       
xcheck_equals(arg,"address@hidden&*()_+-={}|[]\\\\:\";\'<>?,./~\`", 
"Full-of-symbols string parameter value of MovieClip-based FSCommand call 
should be passed correctly");
+               } else if("m_integerarg" == cmd) {
+                       m_integerarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with integer parameter should pass string-type parameter");
+                       check_equals(arg, "9876", "MovieClip-based FSCommand 
call should pass a correct string representation of integer parameter value");
+               } else if("m_floatarg" == cmd) {
+                       m_floatarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with floating point parameter should pass string-type 
parameter");
+                       check_equals(arg, "9876.5432", "MovieClip-based 
FSCommand call should pass a correct string representation of floating point 
parameter value");
+               } else if("m_infinitearg" == cmd) {
+                       m_infinitearg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with infinity parameter should pass string-type parameter");
+                       check_equals(arg, "Infinity", "MovieClip-based 
FSCommand call should pass a correct string representation of infinity 
parameter");
+               } else if("m_neginfinitearg" == cmd) {
+                       m_neginfinitearg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with negative infinity parameter should pass string-type 
parameter");
+                       check_equals(arg, "-Infinity", "MovieClip-based 
FSCommand call should pass a correct string representation of negative infinity 
parameter value");
+               } else if("m_nanarg" == cmd) {
+                       m_nanarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with not-a-number parameter should pass string-type parameter");
+                       check_equals(arg, "NaN", "MovieClip-based FSCommand 
call should pass a correct string representation of not-a-number parameter 
value");
+               } else if("m_booleanarg" == cmd) {
+                       m_booleanarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with boolean parameter should pass string-type parameter");
+                       check_equals(arg, "true", "MovieClip-based FSCommand 
call should pass a correct string representation of boolean parameter value");
+               } else if("m_nullarg" == cmd) {
+                       m_nullarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with null parameter should pass string-type parameter");
+                       check_equals(arg, "null", "MovieClip-based FSCommand 
call should pass a correct string representation of null parameter");
+               } else if("m_undefinedarg" == cmd) {
+                       m_undefinedarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with undefined parameter should pass string-type parameter");
+                       xcheck_equals(arg, "", "MovieClip-based FSCommand call 
should pass an empty string as a representation of undefined parameter");
+               } else if("m_arrayarg" == cmd) {
+                       m_arrayarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with array parameter should pass string-type parameter");
+                       check_equals(arg, 
"The,quick,brown,fox,jumps,over,the,lazy,dog", "Array parameter value of 
MovieClip-based FSCommand call should be passed correctly as CSV string");
+               } else if("m_objectarg" == cmd) {
+                       m_objectarg_call++;
+                       check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with object parameter should pass string-type parameter");
+                       check_equals(arg, "[object Object]", "String 
representation of object parameter of MovieClip-based FSCommand call should be 
correctly passed");
+               } else if("m_object_customstringarg" == cmd) {
+                       m_object_customstringarg_call++;
                        check_equals(typeof(arg), "string", "MovieClip-based 
FSCommand call with object parameter bearing custom toString() should pass 
string-type parameter");
                        check_equals(arg, "This is a custom Object.toString()", 
"Custom string representation of object parameter of MovieClip-based FSCommand 
call should be correctly passed");
                } else {
@@ -263,7 +344,8 @@ cat << EOF
        }
 
        function verify_flash() {
-               check_equals(noname_call, 2, "No-name FSCommand should be 
called for 2 times");
+               check_equals(noname_call, 4, "No-name FSCommand should be 
called for 4 times");
+
                check_equals(noarg_call, 1, "\"noarg\" FSCommand should be 
called for 1 time");
                check_equals(stringarg_call, 1, "\"stringarg\" FSCommand should 
be called for 1 time");
                xcheck_equals(weirdstringarg_call, 1, "\"weirdstringarg\" 
FSCommand should be called for 1 time");
@@ -279,7 +361,22 @@ cat << EOF
                check_equals(objectarg_call, 1, "\"objectarg\" FSCommand should 
be called for 1 time");
                check_equals(object_customstringarg_call, 1, 
"\"object_customstringarg\" FSCommand should be called for 1 time");
 
-               xcheck_totals(47);
+               check_equals(m_noarg_call, 1, "\"m_noarg\" FSCommand should be 
called for 1 time");
+               check_equals(m_stringarg_call, 1, "\"m_stringarg\" FSCommand 
should be called for 1 time");
+               xcheck_equals(m_weirdstringarg_call, 1, "\"m_weirdstringarg\" 
FSCommand should be called for 1 time");
+               check_equals(m_integerarg_call, 1, "\"m_integerarg\" FSCommand 
should be called for 1 time");
+               check_equals(m_floatarg_call, 1, "\"m_floatarg\" FSCommand 
should be called for 1 time");
+               check_equals(m_infinitearg_call, 1, "\"m_infinitearg\" 
FSCommand should be called for 1 time");
+               check_equals(m_neginfinitearg_call, 1, "\"m_neginfinitearg\" 
FSCommand should be called for 1 time");
+               check_equals(m_nanarg_call, 1, "\"m_nanarg\" FSCommand should 
be called for 1 time");
+               check_equals(m_booleanarg_call, 1, "\"m_booleanarg\" FSCommand 
should be called for 1 time");
+               check_equals(m_nullarg_call, 1, "\"m_nullarg\" FSCommand should 
be called for 1 time");
+               check_equals(m_undefinedarg_call, 1, "\"m_undefinedarg\" 
FSCommand should be called for 1 time");
+               check_equals(m_arrayarg_call, 1, "\"m_arrayarg\" FSCommand 
should be called for 1 time");
+               check_equals(m_objectarg_call, 1, "\"m_objectarg\" FSCommand 
should be called for 1 time");
+               check_equals(m_object_customstringarg_call, 1, 
"\"m_object_customstringarg\" FSCommand should be called for 1 time");
+
+               xcheck_totals(93);
        }
 
        setTimeout("verify_flash()",3000);
diff --git a/testsuite/misc-ming.all/hostcmd_testrunner.sh 
b/testsuite/misc-ming.all/hostcmd_testrunner.sh
index 3b36f2d..509d5a6 100644
--- a/testsuite/misc-ming.all/hostcmd_testrunner.sh
+++ b/testsuite/misc-ming.all/hostcmd_testrunner.sh
@@ -26,6 +26,8 @@
 # The generated test runner checks Gnash for:
 #  * Support of FSCommand call via MovieClip.getURL() (bug #46944)
 #        <https://savannah.gnu.org/bugs/?46944>
+#  * Undefined FSCommand parameter passing via MovieClip.getURL() (bug #50393)
+#        <https://savannah.gnu.org/bugs/?50393>
 #
 # Usage:
 #     ./hostcmd_testrunner.sh <builddir> <srcdir> <swfversion> <swf>
@@ -79,6 +81,7 @@ cat << EOF
 LOGFILE=${top_builddir}/testoutlog.\$\$
 PIPE2CONTAINER=${top_builddir}/tocontainer.\$\$
 PIPE2PLAYER=${top_builddir}/toplayer.\$\$
+STARTTIMEOUT=10
 READTIMEOUT=5
 
 # Test counts
@@ -168,7 +171,7 @@ check_error \$? "Failed to open a named pipe: \$PIPE2PLAYER"
 GNASHPID=\$!
 
 # Wait until the SWF code start running, by loop-checking logfile
-STARTCOUNTDOWN=\$READTIMEOUT
+STARTCOUNTDOWN=\$STARTTIMEOUT
 while [ \$STARTCOUNTDOWN -gt 0 ]
 do
        if grep "TRACE: STARTOFTEST" "\$LOGFILE" 2>&1 > /dev/null
@@ -182,6 +185,78 @@ done
 [ \$STARTCOUNTDOWN -ne 0 ]
 check_equals \$? 0 "Gnash-side ActionScript code should be successfully 
started"
 
+#
+# getURL-based FSCommand tests
+#
+
+# Read for no-name no-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string></string><string></string></arguments></invoke>'
 "Gnash should correctly pass getURL-based no-name FSCommand call with no 
parameter"
+
+# Read for no-name string-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string></string><string>This is a string for empty 
call</string></arguments></invoke>' "Gnash should correctly pass getURL-based 
no-name FSCommand call with string parameter"
+
+# Read for no-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>noarg</string><string></string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with no parameter"
+
+# Read for string-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>stringarg</string><string>This is a 
string</string></arguments></invoke>' "Gnash should correctly pass getURL-based 
FSCommand call with string parameter"
+
+# Read for full-of-symbols-string-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+xcheck_equals "\$LINE" "<invoke name=\"fsCommand\" 
returntype=\"xml\"><arguments><string>weirdstringarg</string><string>address@hidden&amp;*()_+-={}|[]:\";'&lt;&gt;?,./~\\\`</string></arguments></invoke>"
 "Gnash should correctly pass getURL-based FSCommand call with full-of-symbols 
string parameter"
+
+# Read for integer-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>integerarg</string><string>9876</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with integer 
parameter"
+
+# Read for floating-point-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>floatarg</string><string>9876.5432</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with floating point 
parameter"
+
+# Read for infinity-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>infinitearg</string><string>Infinity</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with infinity 
parameter"
+
+# Read for negative-infinity-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>neginfinitearg</string><string>-Infinity</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with negative 
infinity parameter"
+
+# Read for not-a-number-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>nanarg</string><string>NaN</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with not-a-number 
parameter"
+
+# Read for boolean-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>booleanarg</string><string>true</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with boolean 
parameter"
+
+# Read for null-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+xcheck_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>nullarg</string><string>null</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with null parameter"
+
+# Read for undefined-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+xcheck_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>undefinedarg</string><string>undefined</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with undefined 
parameter"
+
+# Read for array-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>arrayarg</string><string>The,quick,brown,fox,jumps,over,the,lazy,dog</string></arguments></invoke>'
 "Gnash should correctly pass getURL-based FSCommand call with array parameter"
+
+# Read for object-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>objectarg</string><string>[object 
Object]</string></arguments></invoke>' "Gnash should correctly pass 
getURL-based FSCommand call with object parameter"
+
+# Read for object-with-custom-string-parameter FSCommand statement
+read_timeout LINE \$READTIMEOUT <&3
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>object_customstringarg</string><string>This 
is a custom Object.toString()</string></arguments></invoke>' "Gnash should 
correctly pass getURL-based FSCommand call with object parameter bearing custom 
toString()"
+
+#
+# MovieClip-based FSCommand tests
+#
+
 # Read for no-name no-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
 check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string></string><string></string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based no-name FSCommand call with no 
parameter"
@@ -192,59 +267,59 @@ check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><str
 
 # Read for no-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>noarg</string><string></string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with no parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_noarg</string><string></string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with no parameter"
 
 # Read for string-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>stringarg</string><string>This is a 
string</string></arguments></invoke>' "Gnash should correctly pass 
MovieClip-based FSCommand call with string parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_stringarg</string><string>This is a 
string</string></arguments></invoke>' "Gnash should correctly pass 
MovieClip-based FSCommand call with string parameter"
 
 # Read for full-of-symbols-string-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-xcheck_equals "\$LINE" "<invoke name=\"fsCommand\" 
returntype=\"xml\"><arguments><string>weirdstringarg</string><string>address@hidden&amp;*()_+-={}|[]:\";'&lt;&gt;?,./~\\\`</string></arguments></invoke>"
 "Gnash should correctly pass MovieClip-based FSCommand call with 
full-of-symbols string parameter"
+xcheck_equals "\$LINE" "<invoke name=\"fsCommand\" 
returntype=\"xml\"><arguments><string>m_weirdstringarg</string><string>address@hidden&amp;*()_+-={}|[]:\";'&lt;&gt;?,./~\\\`</string></arguments></invoke>"
 "Gnash should correctly pass MovieClip-based FSCommand call with 
full-of-symbols string parameter"
 
 # Read for integer-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>integerarg</string><string>9876</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with integer 
parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_integerarg</string><string>9876</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with integer 
parameter"
 
 # Read for floating-point-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>floatarg</string><string>9876.5432</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with floating 
point parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_floatarg</string><string>9876.5432</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with floating 
point parameter"
 
 # Read for infinity-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>infinitearg</string><string>Infinity</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with infinity 
parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_infinitearg</string><string>Infinity</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with infinity 
parameter"
 
 # Read for negative-infinity-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>neginfinitearg</string><string>-Infinity</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with negative 
infinity parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_neginfinitearg</string><string>-Infinity</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with negative 
infinity parameter"
 
 # Read for not-a-number-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>nanarg</string><string>NaN</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with not-a-number 
parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_nanarg</string><string>NaN</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with not-a-number 
parameter"
 
 # Read for boolean-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>booleanarg</string><string>true</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with boolean 
parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_booleanarg</string><string>true</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with boolean 
parameter"
 
 # Read for null-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>nullarg</string><string>null</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with null 
parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_nullarg</string><string>null</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with null 
parameter"
 
 # Read for undefined-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-xcheck_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>undefinedarg</string><string></string></arguments></invoke>'
 "Gnash should pass undefined parameter of MovieClip-based FSCommand call as 
empty string"
+xcheck_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_undefinedarg</string><string></string></arguments></invoke>'
 "Gnash should pass undefined parameter of MovieClip-based FSCommand call as 
empty string"
 
 # Read for array-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>arrayarg</string><string>The,quick,brown,fox,jumps,over,the,lazy,dog</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with array 
parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_arrayarg</string><string>The,quick,brown,fox,jumps,over,the,lazy,dog</string></arguments></invoke>'
 "Gnash should correctly pass MovieClip-based FSCommand call with array 
parameter"
 
 # Read for object-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>objectarg</string><string>[object 
Object]</string></arguments></invoke>' "Gnash should correctly pass 
MovieClip-based FSCommand call with object parameter"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_objectarg</string><string>[object 
Object]</string></arguments></invoke>' "Gnash should correctly pass 
MovieClip-based FSCommand call with object parameter"
 
 # Read for object-with-custom-string-parameter FSCommand statement
 read_timeout LINE \$READTIMEOUT <&3
-check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>object_customstringarg</string><string>This 
is a custom Object.toString()</string></arguments></invoke>' "Gnash should 
correctly pass MovieClip-based FSCommand call with object parameter bearing 
custom toString()"
+check_equals "\$LINE" '<invoke name="fsCommand" 
returntype="xml"><arguments><string>m_object_customstringarg</string><string>This
 is a custom Object.toString()</string></arguments></invoke>' "Gnash should 
correctly pass MovieClip-based FSCommand call with object parameter bearing 
custom toString()"
 
 # Close pipes
 exec 3<&-
@@ -255,7 +330,7 @@ kill \$GNASHPID
 wait \$GNASHPID
 
 # Check for total number of test run
-check_totals "17" "There should be 17 tests run"
+check_totals "33" "There should be 33 tests run"
 
 # Remove temporary files
 rm "\$LOGFILE"

-----------------------------------------------------------------------

Summary of changes:
 .gitignore                                         |   1 +
 libcore/asobj/MovieClip_as.cpp                     |  12 +-
 libcore/vm/ASHandlers.cpp                          |  12 +-
 testsuite/misc-ming.all/Makefile.am                |  62 ++++-
 testsuite/misc-ming.all/hostcmd-geturl.as          |  51 ++++
 .../misc-ming.all/hostcmd-geturl_testrunner.sh     | 262 +++++++++++++++++++++
 testsuite/misc-ming.all/hostcmd.as                 |  59 +++--
 testsuite/misc-ming.all/hostcmd_htmltest.sh        | 171 +++++++++++---
 testsuite/misc-ming.all/hostcmd_testrunner.sh      | 127 ++++++++--
 9 files changed, 682 insertions(+), 75 deletions(-)
 create mode 100644 testsuite/misc-ming.all/hostcmd-geturl.as
 create mode 100644 testsuite/misc-ming.all/hostcmd-geturl_testrunner.sh


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]