gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash testsuite/libamf.all/test_amf.cpp ChangeL...


From: Rob Savoye
Subject: [Gnash-commit] gnash testsuite/libamf.all/test_amf.cpp ChangeL...
Date: Mon, 14 Apr 2008 21:35:18 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Rob Savoye <rsavoye>    08/04/14 21:35:18

Modified files:
        testsuite/libamf.all: test_amf.cpp 
        .              : ChangeLog 
        libamf         : amf.cpp amf.h buffer.cpp element.cpp element.h 

Log message:
                * libamf/amf.{h,cpp}: Use size_t instead of int.
                * libamf/buffer.cpp: Drop bogus size test when copying buffers.
                * testsuite/libamf.all/test_amf.cpp: Create test object that
                matches packet captured one.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/libamf.all/test_amf.cpp?cvsroot=gnash&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6270&r2=1.6271
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/amf.cpp?cvsroot=gnash&r1=1.71&r2=1.72
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/amf.h?cvsroot=gnash&r1=1.39&r2=1.40
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/buffer.cpp?cvsroot=gnash&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/element.cpp?cvsroot=gnash&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/element.h?cvsroot=gnash&r1=1.18&r2=1.19

Patches:
Index: testsuite/libamf.all/test_amf.cpp
===================================================================
RCS file: /sources/gnash/gnash/testsuite/libamf.all/test_amf.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- testsuite/libamf.all/test_amf.cpp   13 Apr 2008 23:46:33 -0000      1.1
+++ testsuite/libamf.all/test_amf.cpp   14 Apr 2008 21:35:16 -0000      1.2
@@ -35,9 +35,9 @@
 #include "dejagnu.h"
 #include "as_object.h"
 #include "arg_parser.h"
+#include "amf.h"
 #include "buffer.h"
 #include "network.h"
-#include "amf.h"
 #include "element.h"
 
 using namespace amf;
@@ -229,41 +229,42 @@
 test_object()
 {
     Element top;
-    top.makeObject("app");
+    top.makeObject();
 
     Element *child1 = new Element;
-    child1->makeString("child one");
+    child1->makeString("app", "oflaDemo");
     top.addChild(child1);
     
     Element *child2 = new Element;
-    child2->makeString("child two");
+    child2->makeString("flashVer", "LNX 9,0,31,0");
     top.addChild(child2);
 
-    if (top.childrenSize() == 2) {
+    Element *child3 = new Element;
+    child3->makeString("swfUrl", 
"http://www.red5.nl/tools/publisher/publisher.swf";);
+    top.addChild(child3);
+
+    if (top.childrenSize() == 3) {
         runtest.pass("Adding children");
     } else {
         runtest.fail("Adding children");
     }
 
     // Encode an object
-    string str = "application";
+//    string str = "appl";
     Buffer *encobj = top.encode();
     if (encobj == 0) {
         runtest.unresolved("Encoded Object");
         return;
     }
 
-    const char *x = "03 00 03 61 70 70 02 00 09 63 68 69 6c 64 20 6f 6e 65 02 
00 09 63 68 69 6c 64 20 74 77 6f 09";
+    const char *x = "03 00 03 61 70 70 02 00 08 6f 66 6c 61 44 65 6d 6f 00 08 
66 6c 61 73 68 56 65 72 02 00 0c 4c 4e 58 20 39 2c 30 2c 33 31 2c 30 00 06 73 
77 66 55 72 6c 02 00 30 68 74 74 70 3a 2f 2f 77 77 77 2e 72 65 64 35 2e 6e 6c 
2f 74 6f 6f 6c 73 2f 70 75 62 6c 69 73 68 65 72 2f 70 75 62 6c 69 73 68 65 72 
2e 73 77 66 09";
     Buffer *buf1 = hex2mem(x);
-
-#if 0
-    if ((*(reinterpret_cast<Element::amf_type_e *>(encobj->reference())) == 
Element::OBJECT) &&
-        (memcmp(buf1->reference(), encobj->reference(), 31) == 0)) {
+    if ((*encobj->reference() == Element::OBJECT) &&
+        (memcmp(buf1->reference(), encobj->reference(), 102) == 0)) {
         runtest.pass("Encoded Object");
     } else {
         runtest.fail("Encoded Object");
     }
-#endif
     delete buf1;
 }
 

Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6270
retrieving revision 1.6271
diff -u -b -r1.6270 -r1.6271
--- ChangeLog   14 Apr 2008 14:16:38 -0000      1.6270
+++ ChangeLog   14 Apr 2008 21:35:16 -0000      1.6271
@@ -1,5 +1,15 @@
+2008-04-14  Rob Savoye  <address@hidden>
+
+       * libamf/amf.{h,cpp}: Use size_t instead of int.
+       * libamf/buffer.cpp: Drop bogus size test when copying buffers.
+       * testsuite/libamf.all/test_amf.cpp: Create test object that
+       matches packet captured one.
+
 2008-04-14 Benjamin Wolsey <address@hidden>
 
+       * gui/gtk.cpp: gdk_screen_get_resolution only available from
+       version 2.10 onwards (thanks buildbot!).
+
        * testsuite/actionscript.all/System.as: test hasOwnProperty for
          SWF6+, be more selective about testing different versions.
        * server/asobj/System.cpp: exactSettings only available in SWF6
@@ -32,7 +42,7 @@
 
 2008-04-13  Rob Savoye  <address@hidden>
 
-       * libamf/amf.cpp: Boolsa re two bytes for AMF, so use a uint16-t,
+       * libamf/amf.cpp: Bools are two bytes for AMF, so use a uint16_t,
        not a bool when copying data. If the name is set, then it's a
        variable for encoding.
 `      * libamf/amf.h: Use Network::byte_t instead of char for constants.
@@ -40,7 +50,7 @@
        it for an AMF object to do it.
        * testsuite/libamf.all/test_el.cpp: Test the children too.
        * testsuite/libamf.all/test_amf.cpp: Test the AMF class.
-       * testsuite/libamf.all
+       * testsuite/libamf.all/Makefile.am: Add test_amf.
 
 2008-04-13 Benjamin Wolsey <address@hidden>
 

Index: libamf/amf.cpp
===================================================================
RCS file: /sources/gnash/gnash/libamf/amf.cpp,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -b -r1.71 -r1.72
--- libamf/amf.cpp      13 Apr 2008 23:46:32 -0000      1.71
+++ libamf/amf.cpp      14 Apr 2008 21:35:17 -0000      1.72
@@ -106,7 +106,7 @@
 ///
 /// Returns its first parameter, pointing to the (maybe-byte-swapped) data.
 void *
-swapBytes(void *word, int size)
+swapBytes(void *word, size_t size)
 {
     union {
        boost::uint16_t s;
@@ -432,7 +432,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeXMLObject(Network::byte_t * /*data */, int /* size */)
+AMF::encodeXMLObject(Network::byte_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("XML AMF objects not supported yet");
@@ -446,7 +446,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeTypedObject(Network::byte_t * /* data */, int /* size */)
+AMF::encodeTypedObject(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("Typed AMF objects not supported yet");
@@ -460,7 +460,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeReference(Network::byte_t * /* data */, int /* size */)
+AMF::encodeReference(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("Reference AMF objects not supported yet");
@@ -474,7 +474,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeMovieClip(Network::byte_t * /*data */, int /* size */)
+AMF::encodeMovieClip(Network::byte_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("Movie Clip AMF objects not supported yet");
@@ -488,7 +488,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeECMAArray(Network::byte_t * /*data */, int /* size */)
+AMF::encodeECMAArray(Network::byte_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("ECMA Array AMF objects not supported yet");
@@ -502,7 +502,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeLongString(Network::byte_t * /* data */, int /* size */)
+AMF::encodeLongString(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("Long String AMF objects not supported yet");
@@ -516,7 +516,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeRecordSet(Network::byte_t * /* data */, int /* size */)
+AMF::encodeRecordSet(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("Reecord Set AMF objects not supported yet");
@@ -530,7 +530,7 @@
 /// needs to be deleted[] after being used.
 ///
 Buffer *
-AMF::encodeStrictArray(Network::byte_t * /* data */, int /* size */)
+AMF::encodeStrictArray(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     log_unimpl("Strict Array AMF objects not supported yet");
@@ -546,20 +546,27 @@
 Buffer *
 AMF::encodeString(const string &str)
 {
-//    GNASH_REPORT_FUNCTION;
+    Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str.c_str()));
+    return encodeString(ptr, str.size());
+}
+
+Buffer *
+AMF::encodeString(Network::byte_t *data, size_t size)
+{
+    GNASH_REPORT_FUNCTION;
     boost::uint16_t length;
     
-    Buffer *buf = new Buffer(str.size() + AMF_HEADER_SIZE);
+    Buffer *buf = new Buffer(size + AMF_HEADER_SIZE);
     buf->append(Element::STRING);
     // when a string is stored in an element, we add a NULL terminator so
     // it can be printed by to_string() efficiently. The NULL terminator
     // doesn't get written when encoding a string as it has a byte count
     // instead.
-    length = str.size();
+    length = size;
 //    log_debug("Encoded data size is going to be %d", length);
     swapBytes(&length, 2);
     buf->append(length);
-    buf->append(str);
+    buf->append(data, size);
     
     return buf;
 }
@@ -613,14 +620,14 @@
     
     size_t outsize = el->getNameSize() + AMF_VAR_HEADER_SIZE;
     buf = new Buffer(outsize);
-    
+    buf->clear();              // FIXME: temporary, makes buffers cleaner in 
gdb.
     // If the name field is set, it's a "variable", followed by the data
     if (el->getName()) {
        // Add the length of the string for the name of the variable
        size_t length = el->getNameSize();
        boost::uint16_t enclength = length;
        swapBytes(&enclength, 2);
-       buf->copy(enclength);
+       buf->append(enclength);
        // Now the name itself
        string name = el->getName();
        if (name.size() > 0) {
@@ -640,7 +647,7 @@
          tmp = encodeBoolean(el->to_bool());
           break;
       case Element::STRING:
-         tmp = encodeString(el->to_string());
+         tmp = encodeString(el->getData(), el->getLength()-1);
          break;
       case Element::OBJECT:
          tmp = el->encode();

Index: libamf/amf.h
===================================================================
RCS file: /sources/gnash/gnash/libamf/amf.h,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- libamf/amf.h        13 Apr 2008 23:46:32 -0000      1.39
+++ libamf/amf.h        14 Apr 2008 21:35:17 -0000      1.40
@@ -107,7 +107,7 @@
        FILETYPE_OSCP
     } filetype_e;
     AMF();
-    AMF(int size);
+    AMF(size_t size);
     ~AMF();
 //    size_t size() { return _total_size; };
 
@@ -123,6 +123,7 @@
     /// @return a binary AMF packet in big endian format (header,data)
     ///
     static Buffer *encodeString(const std::string &str);
+    static Buffer *encodeString(gnash::Network::byte_t *data, size_t size);
 
     /// @return a binary AMF packet in big endian format (header,data)
     ///
@@ -156,43 +157,43 @@
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeXMLObject(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeXMLObject(gnash::Network::byte_t *data, size_t size);
 
     /// Encode a Typed Object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeTypedObject(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeTypedObject(gnash::Network::byte_t *data, size_t 
size);
 
     /// Encode a Reference to an object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeReference(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeReference(gnash::Network::byte_t *data, size_t size);
 
     /// Encode a Movie Clip
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeMovieClip(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeMovieClip(gnash::Network::byte_t *data, size_t size);
 
     /// Encode an ECMA Array
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeECMAArray(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeECMAArray(gnash::Network::byte_t *data, size_t size);
 
     /// Encode a long string
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeLongString(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeLongString(gnash::Network::byte_t *data, size_t size);
 
     /// Encode a Record Set
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeRecordSet(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeRecordSet(gnash::Network::byte_t *data, size_t size);
 
     /// Encode a Date
     ///
@@ -204,7 +205,7 @@
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeStrictArray(gnash::Network::byte_t *data, int size);
+    static Buffer *encodeStrictArray(gnash::Network::byte_t *data, size_t 
size);
     
     /// Encode an object
     ///
@@ -266,7 +267,7 @@
     size_t _totalsize;
 };
  
-DSOEXPORT void *swapBytes(void *word, int size);
+DSOEXPORT void *swapBytes(void *word, size_t size);
 
 
 } // end of amf namespace

Index: libamf/buffer.cpp
===================================================================
RCS file: /sources/gnash/gnash/libamf/buffer.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- libamf/buffer.cpp   13 Apr 2008 23:46:32 -0000      1.7
+++ libamf/buffer.cpp   14 Apr 2008 21:35:17 -0000      1.8
@@ -232,29 +232,22 @@
 Buffer::append(Buffer &buf)
 {
 //    GNASH_REPORT_FUNCTION;
-    if (buf.size() > _nbytes) {
-         resize(buf.size());
-    }
-    
-    if ((_seekptr + buf.size()) <= (_ptr + _nbytes)) {
-       std::copy(buf.begin(), buf.end(), _seekptr);
-       _seekptr += buf.size();
-    }
-    return _seekptr;
+    return append(&buf);
 }
 
 Network::byte_t *
 Buffer::append(Buffer *buf)
 {
 //    GNASH_REPORT_FUNCTION;
-    if (buf->size() >= _nbytes) {
-         resize(buf->size());
+    size_t diff = _seekptr - _ptr;
+    
+    if (buf->size() > (_nbytes - diff)) {
+         resize(buf->size() + diff);
     }
     
-    if ((_seekptr + buf->size()) <= (_ptr + _nbytes)) {
        std::copy(buf->begin(), buf->end(), _seekptr);
        _seekptr += buf->size();
-    }
+
     return _seekptr;
 }
 

Index: libamf/element.cpp
===================================================================
RCS file: /sources/gnash/gnash/libamf/element.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- libamf/element.cpp  13 Apr 2008 23:46:32 -0000      1.21
+++ libamf/element.cpp  14 Apr 2008 21:35:17 -0000      1.22
@@ -283,7 +283,7 @@
     return 0;
 };
 
-boost::uint16_t
+size_t
 Element::getLength()
 {
 //    GNASH_REPORT_FUNCTION;
@@ -402,17 +402,18 @@
     if (_type == Element::OBJECT) {
        // FIXME: we probably want a better size, to avoid the other
        // appends from having to resize and copy the data all the time.
-       buf = new Buffer(AMF_HEADER_SIZE);
-//     buf->clear();
+       buf = new Buffer(128);
+       buf->clear();           // FIXME: temporary, makes buffers cleaner in 
gdb.
        buf->append(Element::OBJECT);
+//     string name = _name;
+       if (_name > 0) {
+//         Buffer *top = AMF::encodeElement(this);
+//         buf->append(top);
+           buf->append(reinterpret_cast<Network::byte_t *>(_name), 
getNameSize());
        size_t length = getNameSize();
        boost::uint16_t enclength = length;
        swapBytes(&enclength, 2);
        buf->append(enclength);
-       
-       string name = _name;
-       if (name.size() > 0) {
-           buf->append(name);
        }
 
        for (size_t i=0; i<_children.size(); i++) {
@@ -631,6 +632,14 @@
 }
 
 Element &
+Element::makeObject()
+{
+//    GNASH_REPORT_FUNCTION;
+    _type = OBJECT;
+    return *this;
+}
+
+Element &
 Element::makeObject(const std::string &name)
 {
 //    GNASH_REPORT_FUNCTION;

Index: libamf/element.h
===================================================================
RCS file: /sources/gnash/gnash/libamf/element.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- libamf/element.h    13 Apr 2008 23:46:33 -0000      1.18
+++ libamf/element.h    14 Apr 2008 21:35:17 -0000      1.19
@@ -103,6 +103,7 @@
 
     Element &makeObjectEnd();
 
+    Element &makeObject();
     Element &makeObject(const std::string &name);
     Element &makeObject(gnash::Network::byte_t *data, size_t size);
     
@@ -149,7 +150,7 @@
     Element *operator[](int x);
 
     gnash::Network::byte_t *getData();
-    boost::uint16_t getLength();
+    size_t getLength();
     Buffer *getBuffer() { return _buffer; };
     
     // These are all accessors for the various output formats




reply via email to

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