[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash testsuite/libamf.all/test_amf.cpp ChangeL...,
Rob Savoye <=