gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/array.cpp server/array.h...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/array.cpp server/array.h...
Date: Tue, 18 Sep 2007 07:35:02 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/09/18 07:35:02

Modified files:
        .              : ChangeLog 
        server         : array.cpp array.h 
        testsuite/actionscript.all: array.as 

Log message:
                * server/array.{cpp,h}: Implement enumerateNonProperties().
                  Still not 100% correct but fixes youtube controls positioning
                  (bug #20469).
                * testsuite/actionscript.all/array.as: tests for enumeration
                  of array properties.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4338&r2=1.4339
http://cvs.savannah.gnu.org/viewcvs/gnash/server/array.cpp?cvsroot=gnash&r1=1.78&r2=1.79
http://cvs.savannah.gnu.org/viewcvs/gnash/server/array.h?cvsroot=gnash&r1=1.35&r2=1.36
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/array.as?cvsroot=gnash&r1=1.33&r2=1.34

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4338
retrieving revision 1.4339
diff -u -b -r1.4338 -r1.4339
--- ChangeLog   18 Sep 2007 06:27:34 -0000      1.4338
+++ ChangeLog   18 Sep 2007 07:35:01 -0000      1.4339
@@ -1,5 +1,13 @@
 2007-09-18 Sandro Santilli <address@hidden>
 
+       * server/array.{cpp,h}: Implement enumerateNonProperties().
+         Still not 100% correct but fixes youtube controls positioning
+         (bug #20469).
+       * testsuite/actionscript.all/array.as: tests for enumeration
+         of array properties.
+
+2007-09-18 Sandro Santilli <address@hidden>
+
        * testsuite/misc-swfc.all/movieclip_destruction_test1.sc:
          Add visual traces of actions while being executed; add
          comment about other finding.

Index: server/array.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/array.cpp,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -b -r1.78 -r1.79
--- server/array.cpp    16 Sep 2007 16:48:13 -0000      1.78
+++ server/array.cpp    18 Sep 2007 07:35:02 -0000      1.79
@@ -1473,6 +1473,19 @@
        glob.init_member("Array", ar.get());
 }
 
+void
+as_array_object::enumerateNonProperties(as_environment& env) const
+{
+       // TODO: only actually defined elements should be pushed on the env
+       //       but we currently have no way to distinguish between defined
+       //       and non-defined elements
+       for (unsigned int i=0; i<size(); ++i)
+       {
+               // here should be something like, if ( isDefined(i) ) ...
+               env.push(as_value(i));
+       }
+}
+
 #ifdef GNASH_USE_GC
 void
 as_array_object::markReachableResources() const

Index: server/array.h
===================================================================
RCS file: /sources/gnash/gnash/server/array.h,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- server/array.h      16 Sep 2007 16:48:13 -0000      1.35
+++ server/array.h      18 Sep 2007 07:35:02 -0000      1.36
@@ -296,6 +296,12 @@
        virtual void set_member(string_table::key name,
                const as_value& val );
 
+       /// Enumerate elements
+       //
+       /// See as_object::enumerateNonProperties(as_environment&) for more 
info.
+       ///
+       virtual void enumerateNonProperties(as_environment&) const;
+
 protected:
 
 #ifdef GNASH_USE_GC

Index: testsuite/actionscript.all/array.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/array.as,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- testsuite/actionscript.all/array.as 1 Sep 2007 01:59:33 -0000       1.33
+++ testsuite/actionscript.all/array.as 18 Sep 2007 07:35:02 -0000      1.34
@@ -18,7 +18,7 @@
 
 // Initial test written by Mike Carlson
 
-rcsid="$Id: array.as,v 1.33 2007/09/01 01:59:33 strk Exp $";
+rcsid="$Id: array.as,v 1.34 2007/09/18 07:35:02 strk Exp $";
 
 #include "check.as"
 
@@ -922,3 +922,33 @@
 #endif // OUTPUT_VERSION > 6
 
 
+//-------------------------------------------------------
+// Test array enumeration
+//------------------------------------------------------
+
+b = ["a","b","c"];
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+check_equals(out['len'], 3);
+check_equals(out[0], 1);
+check_equals(out[1], 1);
+check_equals(out[2], 1);
+
+b = [];
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+check_equals(out['len'], 0);
+
+// Changing length doesn't trigger enumeration of undefined values
+b.length = 100;
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+xcheck_equals(out['len'], 0);
+
+b[1] = undefined;
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+xcheck_equals(out['len'], 1);
+check_equals(out[1], 1);
+
+b[0] = undefined;
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+xcheck_equals(out['len'], 2);
+check_equals(out[1], 1);
+check_equals(out[0], 1);




reply via email to

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