[Swfdec-commits] 2 commits - test/Makefile.am test/swfdec_test_initialize.as test/swfdec_test_initialize.h test/swfdec_test_plugin.c test/swfdec_test_plugin.h test/swfdec_test_socket.c test/swfdec_test_socket.h test/swfdec_test_swfdec_socket.c test/swfdec_test_swfdec_socket.h test/swfdec_test_test.c test/swfdec_test_test.h
Benjamin Otte
company at kemper.freedesktop.org
Wed Feb 6 01:37:12 PST 2008
test/Makefile.am | 2
test/swfdec_test_initialize.as | 4
test/swfdec_test_initialize.h | 184 ++++++++++++++--------------
test/swfdec_test_plugin.c | 7 -
test/swfdec_test_plugin.h | 27 ++++
test/swfdec_test_socket.c | 249 ++++++++++++++++-----------------------
test/swfdec_test_socket.h | 17 +-
test/swfdec_test_swfdec_socket.c | 106 ++++++++++++++++
test/swfdec_test_swfdec_socket.h | 54 ++++++++
test/swfdec_test_test.c | 41 ++++++
test/swfdec_test_test.h | 3
11 files changed, 451 insertions(+), 243 deletions(-)
New commits:
commit 8d10d3d72b49c07dd3217bd90b5781a90ae66054
Author: Benjamin Otte <otte at gnome.org>
Date: Wed Feb 6 10:01:42 2008 +0100
implement the socket object for the SwfdecPlayer and make sockets work
diff --git a/test/Makefile.am b/test/Makefile.am
index bdc0196..5621eca 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -12,6 +12,7 @@ swfdec_test_sources = \
swfdec_test_image.c \
swfdec_test_plugin.c \
swfdec_test_socket.c \
+ swfdec_test_swfdec_socket.c \
swfdec_test_test.c \
swfdec_test_utils.c
@@ -38,6 +39,7 @@ noinst_HEADERS = \
swfdec_test_initialize.h \
swfdec_test_plugin.h \
swfdec_test_socket.h \
+ swfdec_test_swfdec_socket.h \
swfdec_test_test.h \
swfdec_test_utils.h
diff --git a/test/swfdec_test_initialize.as b/test/swfdec_test_initialize.as
index 1737e6c..ef4e9a8 100644
--- a/test/swfdec_test_initialize.as
+++ b/test/swfdec_test_initialize.as
@@ -44,16 +44,18 @@ HTTPRequest.prototype.toString = Native.HTTPRequest_toString;
HTTPRequest.prototype.send = Native.HTTPRequest_send;
HTTPRequest.prototype.close = Native.HTTPRequest_close;
-Socket = Native.Socket;
+Socket = function () {};
Socket.prototype = {};
Socket.prototype.getConnection = Native.Socket_getConnection;
Socket.prototype.receive = Native.Socket_receive;
Socket.prototype.send = Native.Socket_send;
Socket.prototype.close = Native.Socket_close;
+Socket.prototype.error = Native.Socket_error;
Test = Native.Test;
Test.prototype = {};
Test.prototype.advance = Native.Test_advance;
+Test.prototype.getSocket = Native.Test_getSocket;
Test.prototype.mouse_move = Native.Test_mouse_move;
Test.prototype.mouse_press = Native.Test_mouse_press;
Test.prototype.mouse_release = Native.Test_mouse_release;
diff --git a/test/swfdec_test_initialize.h b/test/swfdec_test_initialize.h
index 713a7c7..7ee0716 100644
--- a/test/swfdec_test_initialize.h
+++ b/test/swfdec_test_initialize.h
@@ -2,7 +2,7 @@
/* compiled from swfdec_test_initialize.as */
static const unsigned char swfdec_test_initialize[] = {
- 0x88, 0x43, 0x03, 0x45, 0x00, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x4E, 0x61, 0x74, 0x69,
+ 0x88, 0x69, 0x03, 0x48, 0x00, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x4E, 0x61, 0x74, 0x69,
0x76, 0x65, 0x00, 0x6C, 0x6F, 0x61, 0x64, 0x00, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, 0x6C,
0x6F, 0x61, 0x64, 0x00, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x00, 0x64, 0x69,
0x66, 0x66, 0x00, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, 0x64, 0x69, 0x66, 0x66, 0x00, 0x49,
@@ -40,93 +40,99 @@ static const unsigned char swfdec_test_initialize[] = {
0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76,
0x65, 0x00, 0x53, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x5F, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x00, 0x53, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x5F, 0x73, 0x65, 0x6E, 0x64, 0x00, 0x53, 0x6F, 0x63,
- 0x6B, 0x65, 0x74, 0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x00, 0x61,
- 0x64, 0x76, 0x61, 0x6E, 0x63, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x61, 0x64, 0x76, 0x61,
- 0x6E, 0x63, 0x65, 0x00, 0x6D, 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x6D, 0x6F, 0x76, 0x65, 0x00, 0x54,
- 0x65, 0x73, 0x74, 0x5F, 0x6D, 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x6D, 0x6F, 0x76, 0x65, 0x00, 0x6D,
- 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x70, 0x72, 0x65, 0x73, 0x73, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F,
- 0x6D, 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x70, 0x72, 0x65, 0x73, 0x73, 0x00, 0x6D, 0x6F, 0x75, 0x73,
- 0x65, 0x5F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x6D,
- 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x00, 0x72, 0x65, 0x6E,
- 0x64, 0x65, 0x72, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x6E, 0x64, 0x65, 0x72, 0x00,
- 0x72, 0x65, 0x73, 0x65, 0x74, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x73, 0x65, 0x74,
- 0x00, 0x72, 0x61, 0x74, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x67, 0x65, 0x74, 0x5F, 0x72,
- 0x61, 0x74, 0x65, 0x00, 0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x67,
- 0x65, 0x74, 0x5F, 0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x00, 0x73,
- 0x00, 0x49, 0x4E, 0x46, 0x4F, 0x3A, 0x20, 0x00, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x45, 0x52,
- 0x52, 0x4F, 0x52, 0x3A, 0x20, 0x00, 0x96, 0x04, 0x00, 0x08, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x00, 0x4E, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x02,
- 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x03, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C,
- 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x00, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x05, 0x08, 0x01, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x06, 0x4E, 0x4F, 0x96, 0x04, 0x00, 0x08, 0x07, 0x08, 0x01, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x07, 0x4E, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x07, 0x1C, 0x96, 0x07, 0x00, 0x08,
- 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x07, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x08, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x09, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x07, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96,
- 0x04, 0x00, 0x08, 0x0A, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x4F, 0x96, 0x04,
- 0x00, 0x08, 0x0C, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x4E, 0x1D, 0x96, 0x02, 0x00,
- 0x08, 0x0C, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96,
- 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x0D,
- 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x4E, 0x4F, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x10, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x0F, 0x07, 0x03, 0x00, 0x00,
- 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52,
- 0x17, 0x96, 0x09, 0x00, 0x08, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x13, 0x40, 0x1D, 0x96,
- 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43,
- 0x4F, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x15, 0x4E, 0x96, 0x09,
- 0x00, 0x08, 0x14, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04,
- 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x17, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x16, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08,
- 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96,
- 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x19, 0x4E, 0x96, 0x09, 0x00, 0x08,
- 0x18, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96,
- 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x1B, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x1A, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x02, 0x00,
- 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x1E, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x01, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x1D, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x1C, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08,
- 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96,
- 0x02, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x21, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x01,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x20, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x1F, 0x07, 0x03, 0x00, 0x00,
- 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52,
- 0x17, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00,
- 0x08, 0x22, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x23, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x24, 0x08, 0x01, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x25, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x26, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x27,
- 0x4E, 0x4F, 0x96, 0x04, 0x00, 0x08, 0x28, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x28, 0x4E,
- 0x1D, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00,
- 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96,
- 0x04, 0x00, 0x08, 0x29, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x2A, 0x4E, 0x4F, 0x96, 0x02,
- 0x00, 0x08, 0x28, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x2B, 0x08,
- 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x2C, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x24, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x2D, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E,
- 0x96, 0x04, 0x00, 0x08, 0x26, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x2E, 0x4E, 0x4F, 0x96,
- 0x04, 0x00, 0x08, 0x2F, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x4E, 0x1D, 0x96, 0x02,
- 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08,
- 0x30, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x31, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x32, 0x08, 0x01, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x33, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x34, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x4E,
- 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00,
- 0x08, 0x36, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x37, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x38, 0x08, 0x01, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x39, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x3A, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3B,
- 0x4E, 0x4F, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3D, 0x4E, 0x96,
- 0x09, 0x00, 0x08, 0x3C, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x3F, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x3E, 0x07, 0x03, 0x00, 0x00, 0x00,
- 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17,
- 0x96, 0x02, 0x00, 0x08, 0x40, 0x8E, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73,
- 0x00, 0x27, 0x00, 0x96, 0x02, 0x00, 0x08, 0x41, 0x1C, 0x12, 0x9D, 0x02, 0x00, 0x1B, 0x00, 0x96,
- 0x04, 0x00, 0x08, 0x42, 0x08, 0x41, 0x1C, 0x47, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00,
- 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x40, 0x52, 0x17, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x43,
- 0x8E, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x27, 0x00, 0x96, 0x02,
- 0x00, 0x08, 0x41, 0x1C, 0x12, 0x9D, 0x02, 0x00, 0x1B, 0x00, 0x96, 0x04, 0x00, 0x08, 0x44, 0x08,
- 0x41, 0x1C, 0x47, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x40, 0x52, 0x17, 0x1D, 0x00
+ 0x6B, 0x65, 0x74, 0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00,
+ 0x53, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x54, 0x65, 0x73,
+ 0x74, 0x00, 0x61, 0x64, 0x76, 0x61, 0x6E, 0x63, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x61,
+ 0x64, 0x76, 0x61, 0x6E, 0x63, 0x65, 0x00, 0x67, 0x65, 0x74, 0x53, 0x6F, 0x63, 0x6B, 0x65, 0x74,
+ 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x67, 0x65, 0x74, 0x53, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x00,
+ 0x6D, 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x6D, 0x6F, 0x76, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F,
+ 0x6D, 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x6D, 0x6F, 0x76, 0x65, 0x00, 0x6D, 0x6F, 0x75, 0x73, 0x65,
+ 0x5F, 0x70, 0x72, 0x65, 0x73, 0x73, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x6D, 0x6F, 0x75, 0x73,
+ 0x65, 0x5F, 0x70, 0x72, 0x65, 0x73, 0x73, 0x00, 0x6D, 0x6F, 0x75, 0x73, 0x65, 0x5F, 0x72, 0x65,
+ 0x6C, 0x65, 0x61, 0x73, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x6D, 0x6F, 0x75, 0x73, 0x65,
+ 0x5F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x00, 0x72, 0x65, 0x6E, 0x64, 0x65, 0x72, 0x00,
+ 0x54, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x6E, 0x64, 0x65, 0x72, 0x00, 0x72, 0x65, 0x73, 0x65,
+ 0x74, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x73, 0x65, 0x74, 0x00, 0x72, 0x61, 0x74,
+ 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x67, 0x65, 0x74, 0x5F, 0x72, 0x61, 0x74, 0x65, 0x00,
+ 0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x54, 0x65, 0x73, 0x74, 0x5F, 0x67, 0x65, 0x74, 0x5F, 0x74,
+ 0x72, 0x61, 0x63, 0x65, 0x00, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x00, 0x73, 0x00, 0x49, 0x4E, 0x46,
+ 0x4F, 0x3A, 0x20, 0x00, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x3A, 0x20, 0x00, 0x96, 0x04, 0x00, 0x08,
+ 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x00, 0x4E, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x00,
+ 0x1C, 0x96, 0x04, 0x00, 0x08, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x03, 0x4E, 0x4F,
+ 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04,
+ 0x00, 0x08, 0x05, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x06, 0x4E, 0x4F, 0x96, 0x04, 0x00,
+ 0x08, 0x07, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x1D, 0x96, 0x02, 0x00, 0x08,
+ 0x07, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02,
+ 0x00, 0x08, 0x07, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x08, 0x08,
+ 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x07, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x0A, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x0B, 0x4E, 0x4F, 0x96, 0x04, 0x00, 0x08, 0x0C, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x0C, 0x4E, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04,
+ 0x4E, 0x96, 0x04, 0x00, 0x08, 0x0D, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x4E, 0x4F,
+ 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x10, 0x4E, 0x96, 0x09, 0x00,
+ 0x08, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E,
+ 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x09, 0x00, 0x08, 0x12, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x13, 0x40, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x15, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x14, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x03,
+ 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x17, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x16,
+ 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02,
+ 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x19, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x18, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x03, 0x00, 0x02,
+ 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x1B, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x1A, 0x07, 0x03,
+ 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08,
+ 0x11, 0x52, 0x17, 0x96, 0x02, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x1E, 0x4E, 0x96,
+ 0x02, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x1D, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x1C,
+ 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02,
+ 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x02, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x21,
+ 0x4E, 0x96, 0x02, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x20, 0x4E, 0x96, 0x09, 0x00,
+ 0x08, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E,
+ 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x22, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x23,
+ 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04,
+ 0x00, 0x08, 0x24, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x25, 0x4E, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x12, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x26, 0x08, 0x01,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x27, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28, 0x8E, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96,
+ 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x29, 0x08, 0x01, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x2A, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x2B, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x2C, 0x4E,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00,
+ 0x08, 0x24, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x2D, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08,
+ 0x28, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x26, 0x08, 0x01, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x2E, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x28, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x2F, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30,
+ 0x4E, 0x4F, 0x96, 0x04, 0x00, 0x08, 0x31, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x31, 0x4E,
+ 0x1D, 0x96, 0x02, 0x00, 0x08, 0x31, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x04, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x31, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96,
+ 0x04, 0x00, 0x08, 0x32, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x33, 0x4E, 0x4F, 0x96, 0x02,
+ 0x00, 0x08, 0x31, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x34, 0x08,
+ 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x31, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x36, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x37, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x31, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E,
+ 0x96, 0x04, 0x00, 0x08, 0x38, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x39, 0x4E, 0x4F, 0x96,
+ 0x02, 0x00, 0x08, 0x31, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x3A,
+ 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3B, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x31, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x3C, 0x08, 0x01, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x3D, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x31, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04,
+ 0x4E, 0x96, 0x04, 0x00, 0x08, 0x3E, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3F, 0x4E, 0x4F,
+ 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x41, 0x4E, 0x96, 0x09, 0x00,
+ 0x08, 0x40, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x31, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E,
+ 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x03, 0x00, 0x02, 0x08, 0x01, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x43, 0x4E, 0x96, 0x09, 0x00, 0x08, 0x42, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x31,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x02,
+ 0x00, 0x08, 0x44, 0x8E, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x27,
+ 0x00, 0x96, 0x02, 0x00, 0x08, 0x45, 0x1C, 0x12, 0x9D, 0x02, 0x00, 0x1B, 0x00, 0x96, 0x04, 0x00,
+ 0x08, 0x46, 0x08, 0x45, 0x1C, 0x47, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x01,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x44, 0x52, 0x17, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x8E, 0x0B,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x27, 0x00, 0x96, 0x02, 0x00, 0x08,
+ 0x45, 0x1C, 0x12, 0x9D, 0x02, 0x00, 0x1B, 0x00, 0x96, 0x04, 0x00, 0x08, 0x47, 0x08, 0x45, 0x1C,
+ 0x47, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x01, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x44, 0x52, 0x17, 0x1D, 0x00
};
diff --git a/test/swfdec_test_plugin.c b/test/swfdec_test_plugin.c
index bea718d..62768a7 100644
--- a/test/swfdec_test_plugin.c
+++ b/test/swfdec_test_plugin.c
@@ -24,6 +24,7 @@
#include "swfdec_test_plugin.h"
#include <swfdec/swfdec.h>
#include "swfdec_test_test.h"
+#include "swfdec_test_swfdec_socket.h"
static void
swfdec_test_plugin_swfdec_advance (SwfdecTestPlugin *plugin, unsigned int msecs)
@@ -125,8 +126,12 @@ swfdec_test_plugin_swfdec_new (SwfdecTestPlugin *plugin)
plugin->mouse_press = swfdec_test_plugin_swfdec_mouse_press;
plugin->mouse_release = swfdec_test_plugin_swfdec_mouse_release;
plugin->finish = swfdec_test_plugin_swfdec_finish;
- plugin->data = player = swfdec_player_new (NULL);
+ plugin->data = player = g_object_new (SWFDEC_TYPE_PLAYER, "random-seed", 0,
+ "loader-type", SWFDEC_TYPE_FILE_LOADER, "socket-type", SWFDEC_TYPE_TEST_SWFDEC_SOCKET,
+ "max-runtime", 0,
+ NULL);
+ g_object_set_data (G_OBJECT (player), "plugin", plugin);
g_signal_connect (player, "fscommand", G_CALLBACK (swfdec_test_plugin_swfdec_fscommand), plugin);
g_signal_connect (player, "trace", G_CALLBACK (swfdec_test_plugin_swfdec_trace), plugin);
g_signal_connect (player, "notify", G_CALLBACK (swfdec_test_plugin_swfdec_notify), plugin);
diff --git a/test/swfdec_test_plugin.h b/test/swfdec_test_plugin.h
index 23d95f5..9a21a87 100644
--- a/test/swfdec_test_plugin.h
+++ b/test/swfdec_test_plugin.h
@@ -74,7 +74,7 @@ struct _SwfdecTestPlugin {
void (* error) (SwfdecTestPlugin * plugin,
const char * description);
void (* request_socket) (SwfdecTestPlugin * plugin,
- SwfdecTestPluginSocket *http);
+ SwfdecTestPluginSocket *socket);
/* initialized by the plugin during swfdec_test_plugin_new() */
unsigned int width;
unsigned int height;
diff --git a/test/swfdec_test_socket.c b/test/swfdec_test_socket.c
index 6870295..fed735e 100644
--- a/test/swfdec_test_socket.c
+++ b/test/swfdec_test_socket.c
@@ -59,8 +59,10 @@ swfdec_test_socket_do_close (SwfdecTestSocket *sock, gboolean success)
sock->plugin->finish (sock->plugin, success ? 0 : 1);
sock->plugin = NULL;
- if (sock->test->pending_sockets->data == sock)
+ if (sock->test->pending_sockets &&
+ sock->test->pending_sockets->data == sock) {
sock->test->pending_sockets = sock->test->pending_sockets->prev;
+ }
sock->test->sockets = g_list_remove (sock->test->sockets, sock);
sock->test = NULL;
}
@@ -191,6 +193,9 @@ swfdec_test_socket_new (SwfdecTestTest *test, SwfdecTestPluginSocket *plugin)
g_return_val_if_fail (plugin != NULL, NULL);
cx = SWFDEC_AS_OBJECT (test)->context;
+
+ if (!swfdec_as_context_use_mem (cx, sizeof (SwfdecTestSocket)))
+ return NULL;
new = g_object_new (SWFDEC_TYPE_TEST_SOCKET, NULL);
swfdec_as_object_add (new, cx, sizeof (SwfdecTestSocket));
swfdec_as_object_get_variable (cx->global,
diff --git a/test/swfdec_test_swfdec_socket.c b/test/swfdec_test_swfdec_socket.c
new file mode 100644
index 0000000..664d80e
--- /dev/null
+++ b/test/swfdec_test_swfdec_socket.c
@@ -0,0 +1,106 @@
+/* Swfdec
+ * Copyright (C) 2006 Benjamin Otte <otte at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "swfdec_test_swfdec_socket.h"
+#include <libsoup/soup.h>
+#include <libsoup/soup-address.h>
+
+/*** SwfdecTestSwfdecSocket ***/
+
+G_DEFINE_TYPE (SwfdecTestSwfdecSocket, swfdec_test_swfdec_socket, SWFDEC_TYPE_SOCKET)
+
+#define SWFDEC_TEST_SWFDEC_SOCKET_FROM_PLUGIN(x) \
+ SWFDEC_TEST_SWFDEC_SOCKET ((gpointer) ((guint8 *) (x) - G_STRUCT_OFFSET (SwfdecTestSwfdecSocket, plugin)))
+
+static void
+swfdec_test_swfdec_socket_close (SwfdecStream *stream)
+{
+ SwfdecTestSwfdecSocket *test = SWFDEC_TEST_SWFDEC_SOCKET (stream);
+
+ test->plugin.close (&test->plugin);
+}
+
+static void
+swfdec_test_swfdec_socket_connect (SwfdecSocket *sock_, SwfdecPlayer *player,
+ const char *hostname, guint port)
+{
+ SwfdecTestSwfdecSocket *sock = SWFDEC_TEST_SWFDEC_SOCKET (sock_);
+ SwfdecTestPlugin *plugin = g_object_get_data (G_OBJECT (player), "plugin");
+
+ g_assert (plugin);
+ sock->plugin.host = g_strdup (hostname);
+ sock->plugin.port = port;
+ plugin->request_socket (plugin, &sock->plugin);
+}
+
+static void
+swfdec_test_swfdec_socket_send (SwfdecSocket *sock, SwfdecBuffer *buffer)
+{
+ SwfdecTestSwfdecSocket *test = SWFDEC_TEST_SWFDEC_SOCKET (sock);
+
+ test->plugin.send (&test->plugin, buffer->data, buffer->length);
+ swfdec_buffer_unref (buffer);
+}
+
+static void
+swfdec_test_swfdec_socket_class_init (SwfdecTestSwfdecSocketClass *klass)
+{
+ SwfdecStreamClass *stream_class = SWFDEC_STREAM_CLASS (klass);
+ SwfdecSocketClass *socket_class = SWFDEC_SOCKET_CLASS (klass);
+
+ stream_class->close = swfdec_test_swfdec_socket_close;
+
+ socket_class->connect = swfdec_test_swfdec_socket_connect;
+ socket_class->send = swfdec_test_swfdec_socket_send;
+}
+
+static void
+swfdec_test_swfdec_socket_receive (SwfdecTestPluginSocket *plugin,
+ unsigned char *data, unsigned long length)
+{
+ SwfdecTestSwfdecSocket *sock = SWFDEC_TEST_SWFDEC_SOCKET_FROM_PLUGIN (plugin);
+ SwfdecBuffer *buffer;
+
+ buffer = swfdec_buffer_new_for_data (g_memdup (data, length), length);
+ swfdec_stream_push (SWFDEC_STREAM (sock), buffer);
+}
+
+static void
+swfdec_test_swfdec_socket_finish (SwfdecTestPluginSocket *plugin, int error)
+{
+ SwfdecTestSwfdecSocket *sock = SWFDEC_TEST_SWFDEC_SOCKET_FROM_PLUGIN (plugin);
+
+ if (error) {
+ swfdec_stream_error (SWFDEC_STREAM (sock), "error %d", error);
+ } else {
+ swfdec_stream_eof (SWFDEC_STREAM (sock));
+ }
+}
+
+static void
+swfdec_test_swfdec_socket_init (SwfdecTestSwfdecSocket *sock)
+{
+ sock->plugin.receive = swfdec_test_swfdec_socket_receive;
+ sock->plugin.finish = swfdec_test_swfdec_socket_finish;
+}
+
diff --git a/test/swfdec_test_swfdec_socket.h b/test/swfdec_test_swfdec_socket.h
new file mode 100644
index 0000000..8753b96
--- /dev/null
+++ b/test/swfdec_test_swfdec_socket.h
@@ -0,0 +1,54 @@
+/* Swfdec
+ * Copyright (C) 2006 Benjamin Otte <otte at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifndef _SWFDEC_TEST_SWFDEC_SOCKET_H_
+#define _SWFDEC_TEST_SWFDEC_SOCKET_H_
+
+#include "swfdec_test_plugin.h"
+#include <swfdec/swfdec.h>
+
+G_BEGIN_DECLS
+
+
+typedef struct _SwfdecTestSwfdecSocket SwfdecTestSwfdecSocket;
+typedef struct _SwfdecTestSwfdecSocketClass SwfdecTestSwfdecSocketClass;
+
+#define SWFDEC_TYPE_TEST_SWFDEC_SOCKET (swfdec_test_swfdec_socket_get_type())
+#define SWFDEC_IS_TEST_SWFDEC_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_TEST_SWFDEC_SOCKET))
+#define SWFDEC_IS_TEST_SWFDEC_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_TEST_SWFDEC_SOCKET))
+#define SWFDEC_TEST_SWFDEC_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWFDEC_TYPE_TEST_SWFDEC_SOCKET, SwfdecTestSwfdecSocket))
+#define SWFDEC_TEST_SWFDEC_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_TEST_SWFDEC_SOCKET, SwfdecTestSwfdecSocketClass))
+#define SWFDEC_TEST_SWFDEC_SOCKET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_TEST_SWFDEC_SOCKET, SwfdecTestSwfdecSocketClass))
+
+struct _SwfdecTestSwfdecSocket
+{
+ SwfdecSocket socket;
+
+ SwfdecTestPluginSocket plugin;
+};
+
+struct _SwfdecTestSwfdecSocketClass {
+ SwfdecSocketClass socket_class;
+};
+
+GType swfdec_test_swfdec_socket_get_type (void);
+
+
+G_END_DECLS
+#endif
diff --git a/test/swfdec_test_test.c b/test/swfdec_test_test.c
index 34808a5..fc5cf5b 100644
--- a/test/swfdec_test_test.c
+++ b/test/swfdec_test_test.c
@@ -145,6 +145,10 @@ swfdec_test_test_dispose (GObject *object)
{
SwfdecTestTest *test = SWFDEC_TEST_TEST (object);
+ while (test->sockets)
+ swfdec_test_socket_close (test->sockets->data);
+ test->pending_sockets = NULL;
+
test->plugin_error = TRUE; /* set to avoid callbacks into the engine */
swfdec_test_test_unload_plugin (test);
commit 432d04e3cb6bfa5003497f2d9c15a3ff51115121
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 20:43:22 2008 +0100
add a (completely untested) socket implementation
diff --git a/test/swfdec_test_plugin.h b/test/swfdec_test_plugin.h
index 0866453..23d95f5 100644
--- a/test/swfdec_test_plugin.h
+++ b/test/swfdec_test_plugin.h
@@ -20,6 +20,30 @@
#ifndef _SWFDEC_TEST_PLUGIN_H_
#define _SWFDEC_TEST_PLUGIN_H_
+/**
+ * SwfdecTestPluginSocket:
+ *
+ * This object represents a socket connection, like those used by RTMP, the
+ * XMLSocket class or the xmlsocket:// policy file protocol.
+ **/
+typedef struct _SwfdecTestPluginSocket SwfdecTestPluginSocket;
+struct _SwfdecTestPluginSocket {
+ /* initialized by player while call to request_socket() */
+ void * data;
+ void (* send) (SwfdecTestPluginSocket * sock,
+ unsigned char * data,
+ unsigned long length);
+ void (* close) (SwfdecTestPluginSocket * sock);
+ /* initialized by plugin before call to request_socket() */
+ char * host;
+ unsigned int port;
+ void (* receive) (SwfdecTestPluginSocket * sock,
+ unsigned char * data,
+ unsigned long length);
+ void (* finish) (SwfdecTestPluginSocket * sock,
+ int error); /* 0 if ok, 1 for error */
+};
+
/*
* SwfdecTestPlugin:
* @filename: The absolute filename to run
@@ -29,6 +53,7 @@
* @error: Function to call whenever the plugin encounters an error. This will
* cause the plugin to not call any other function but @finish anymore
* and raise an exception containing the provided description.
+ * @request_socket: Create a socket with the given parameters
* @advance: Used to advance the player by the provided number of milliseconds
* @finish: Clean up any leftover data as the plugin is aout to be discarded
*
@@ -48,6 +73,8 @@ struct _SwfdecTestPlugin {
void (* quit) (SwfdecTestPlugin * plugin);
void (* error) (SwfdecTestPlugin * plugin,
const char * description);
+ void (* request_socket) (SwfdecTestPlugin * plugin,
+ SwfdecTestPluginSocket *http);
/* initialized by the plugin during swfdec_test_plugin_new() */
unsigned int width;
unsigned int height;
diff --git a/test/swfdec_test_socket.c b/test/swfdec_test_socket.c
index cad98f4..6870295 100644
--- a/test/swfdec_test_socket.c
+++ b/test/swfdec_test_socket.c
@@ -51,21 +51,26 @@ swfdec_test_throw (SwfdecAsContext *cx, const char *message, ...)
G_DEFINE_TYPE (SwfdecTestSocket, swfdec_test_socket, SWFDEC_TYPE_AS_OBJECT)
static void
+swfdec_test_socket_do_close (SwfdecTestSocket *sock, gboolean success)
+{
+ if (sock->plugin == NULL)
+ return;
+
+ sock->plugin->finish (sock->plugin, success ? 0 : 1);
+ sock->plugin = NULL;
+
+ if (sock->test->pending_sockets->data == sock)
+ sock->test->pending_sockets = sock->test->pending_sockets->prev;
+ sock->test->sockets = g_list_remove (sock->test->sockets, sock);
+ sock->test = NULL;
+}
+
+static void
swfdec_test_socket_dispose (GObject *object)
{
SwfdecTestSocket *sock = SWFDEC_TEST_SOCKET (object);
- if (sock->socket) {
- g_object_unref (sock->socket);
- sock->socket = NULL;
- }
- if (sock->context) {
- g_main_context_unref (sock->context);
- sock->context = NULL;
- }
- g_slist_foreach (sock->connections, (GFunc) g_object_unref, NULL);
- g_slist_free (sock->connections);
- sock->connections = NULL;
+ swfdec_test_socket_do_close (sock, FALSE);
G_OBJECT_CLASS (swfdec_test_socket_parent_class)->dispose (object);
}
@@ -81,68 +86,10 @@ swfdec_test_socket_class_init (SwfdecTestSocketClass *klass)
static void
swfdec_test_socket_init (SwfdecTestSocket *sock)
{
- sock->context = g_main_context_new ();
}
/*** AS CODE ***/
-#define swfdec_test_socket_process(sock) do { \
- g_usleep (1000); \
-} while (g_main_context_iteration ((sock)->context, FALSE))
-
-static void
-swfdec_test_socket_new_connection (SoupSocket *server, SoupSocket *conn, SwfdecTestSocket *sock)
-{
- g_object_ref (conn);
- sock->connections = g_slist_append (sock->connections, conn);
-}
-
-static void
-swfdec_test_socket_attach (SwfdecTestSocket *sock, SoupSocket *ssock)
-{
- g_assert (sock->socket == NULL);
-
- sock->socket = ssock;
- g_signal_connect (ssock, "new-connection",
- G_CALLBACK (swfdec_test_socket_new_connection), sock);
-}
-
-SWFDEC_TEST_FUNCTION ("Socket_getConnection", swfdec_test_socket_getConnection, 0)
-void
-swfdec_test_socket_getConnection (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
- SwfdecAsValue *argv, SwfdecAsValue *retval)
-{
- SwfdecTestSocket *sock;
- SwfdecAsObject *new;
- SwfdecAsValue val;
-
- SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "");
-
- if (!sock->listening) {
- swfdec_test_throw (cx, "only server sockets may call getConnection");
- return;
- }
- swfdec_test_socket_process (sock);
- if (sock->connections == NULL) {
- SWFDEC_AS_VALUE_SET_NULL (retval);
- return;
- }
-
- if (!swfdec_as_context_use_mem (cx, sizeof (SwfdecTestSocket)))
- return;
-
- new = g_object_new (SWFDEC_TYPE_TEST_SOCKET, NULL);
- swfdec_as_object_add (new, cx, sizeof (SwfdecTestSocket));
- swfdec_as_object_get_variable (cx->global,
- swfdec_as_context_get_string (cx, "Socket"), &val);
- if (SWFDEC_AS_VALUE_IS_OBJECT (&val))
- swfdec_as_object_set_constructor (new, SWFDEC_AS_VALUE_GET_OBJECT (&val));
-
- swfdec_test_socket_attach (SWFDEC_TEST_SOCKET (new), sock->connections->data);
- sock->connections = g_slist_remove (sock->connections, sock->connections->data);
- SWFDEC_AS_VALUE_SET_OBJECT (retval, new);
-}
-
SWFDEC_TEST_FUNCTION ("Socket_send", swfdec_test_socket_send, 0)
void
swfdec_test_socket_send (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
@@ -150,26 +97,16 @@ swfdec_test_socket_send (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc
{
SwfdecTestSocket *sock;
SwfdecBuffer *buffer;
- GError *error = NULL;
- gsize written;
SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "");
- if (sock->listening) {
- swfdec_test_throw (cx, "server sockets may not call send");
+ if (sock->plugin == NULL) {
+ swfdec_test_throw (cx, "socket is closed");
return;
}
- swfdec_test_socket_process (sock);
buffer = swfdec_test_buffer_from_args (cx, argc, argv);
- if (soup_socket_write (sock->socket, buffer->data, buffer->length, &written,
- NULL, &error) != SOUP_SOCKET_OK) {
- swfdec_test_throw (cx, "%s", error->message);
- g_error_free (error);
- } else if (buffer->length != written) {
- swfdec_test_throw (cx, "only wrote %u bytes of %u", written, buffer->length);
- }
+ sock->plugin->receive (sock->plugin, buffer->data, buffer->length);
swfdec_buffer_unref (buffer);
- swfdec_test_socket_process (sock);
}
SWFDEC_TEST_FUNCTION ("Socket_receive", swfdec_test_socket_receive, 0)
@@ -179,92 +116,111 @@ swfdec_test_socket_receive (SwfdecAsContext *cx, SwfdecAsObject *object, guint a
{
SwfdecTestSocket *sock;
SwfdecBuffer *buffer;
- GError *error = NULL;
- gsize len;
+ gsize len, depth;
SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "|i", &len);
- if (sock->listening) {
- swfdec_test_throw (cx, "server sockets may not call receive");
- return;
- }
- swfdec_test_socket_process (sock);
+ depth = swfdec_buffer_queue_get_depth (sock->receive_queue);
if (len > 0) {
- buffer = swfdec_buffer_new (len);
- if (soup_socket_read (sock->socket, buffer->data, buffer->length, &len,
- NULL, &error) != SOUP_SOCKET_OK) {
- swfdec_test_throw (cx, "%s", error->message);
- g_error_free (error);
- swfdec_buffer_unref (buffer);
- return;
- } else if (buffer->length != len) {
- swfdec_test_throw (cx, "only read %u bytes of %u", len, buffer->length);
- swfdec_buffer_unref (buffer);
+ if (depth < len) {
+ swfdec_test_throw (cx, "nly %zu bytes available", depth);
return;
+ } else {
+ buffer = swfdec_buffer_queue_pull (sock->receive_queue, len);
}
} else {
- SwfdecBufferQueue *queue = swfdec_buffer_queue_new ();
- SoupSocketIOStatus status = SOUP_SOCKET_OK;
- while (status == SOUP_SOCKET_OK) {
- buffer = swfdec_buffer_new (128);
- status = soup_socket_read (sock->socket, buffer->data, 128, &
- buffer->length, NULL, &error);
- if (status != SOUP_SOCKET_OK && status != SOUP_SOCKET_WOULD_BLOCK) {
- swfdec_test_throw (cx, "%s", error->message);
- g_error_free (error);
- swfdec_buffer_unref (buffer);
- swfdec_buffer_queue_unref (queue);
- return;
- }
- swfdec_buffer_queue_push (queue, buffer);
+ if (depth == 0) {
+ SWFDEC_AS_VALUE_SET_NULL (retval);
+ return;
+ } else {
+ buffer = swfdec_buffer_queue_pull (sock->receive_queue, depth);
}
- buffer = swfdec_buffer_queue_pull (queue, swfdec_buffer_queue_get_depth (queue));
- swfdec_buffer_queue_unref (queue);
}
SWFDEC_AS_VALUE_SET_OBJECT (retval, swfdec_test_buffer_new (cx, buffer));
}
-SWFDEC_TEST_FUNCTION ("Socket_close", swfdec_test_socket_close, 0)
+SWFDEC_TEST_FUNCTION ("Socket_error", swfdec_test_socket_error, 0)
void
-swfdec_test_socket_close (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+swfdec_test_socket_error (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
SwfdecAsValue *argv, SwfdecAsValue *retval)
{
- swfdec_test_throw (cx, "implement");
+ SwfdecTestSocket *sock;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "");
+
+ swfdec_test_socket_do_close (sock, FALSE);
}
-SWFDEC_TEST_FUNCTION ("Socket", swfdec_test_socket_create, swfdec_test_socket_get_type)
+SWFDEC_TEST_FUNCTION ("Socket_close", swfdec_test_socket_close_as, 0)
void
-swfdec_test_socket_create (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+swfdec_test_socket_close_as (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
SwfdecAsValue *argv, SwfdecAsValue *retval)
{
SwfdecTestSocket *sock;
- SoupSocket *ssock;
- int port;
- SoupAddress *addr;
- SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "i", &port);
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "");
+
+ swfdec_test_socket_do_close (sock, TRUE);
+}
- if (!swfdec_as_context_is_constructing (cx))
- return;
+static void
+swfdec_test_socket_plugin_send (SwfdecTestPluginSocket *plugin, unsigned char *data,
+ unsigned long length)
+{
+ SwfdecTestSocket *sock = plugin->data;
+ SwfdecBuffer *buffer;
- sock->listening = TRUE;
- /* FIXME: throw here? */
- if (port < 1024 || port >= 65535) {
- swfdec_test_throw (cx, "invalid port %d", port);
- return;
- }
+ buffer = swfdec_buffer_new_for_data (g_memdup (data, length), length);
+ swfdec_buffer_queue_push (sock->receive_queue, buffer);
+}
- addr = soup_address_new_any (SOUP_ADDRESS_FAMILY_IPV4, port);
- ssock = soup_socket_new (
- SOUP_SOCKET_FLAG_NONBLOCKING, TRUE,
- SOUP_SOCKET_ASYNC_CONTEXT, sock->context,
- SOUP_SOCKET_LOCAL_ADDRESS, addr,
- NULL);
- g_object_unref (addr);
- swfdec_test_socket_attach (sock, ssock);
- if (!soup_socket_listen (ssock)) {
- swfdec_test_throw (cx, "failed to listen");
- return;
- }
+static void
+swfdec_test_socket_plugin_close (SwfdecTestPluginSocket *plugin)
+{
+ swfdec_test_socket_do_close (plugin->data, TRUE);
+}
+
+SwfdecAsObject *
+swfdec_test_socket_new (SwfdecTestTest *test, SwfdecTestPluginSocket *plugin)
+{
+ SwfdecAsValue val;
+ SwfdecAsContext *cx;
+ SwfdecAsObject *new;
+
+ g_return_val_if_fail (SWFDEC_IS_TEST_TEST (test), NULL);
+ g_return_val_if_fail (plugin != NULL, NULL);
+
+ cx = SWFDEC_AS_OBJECT (test)->context;
+ new = g_object_new (SWFDEC_TYPE_TEST_SOCKET, NULL);
+ swfdec_as_object_add (new, cx, sizeof (SwfdecTestSocket));
+ swfdec_as_object_get_variable (cx->global,
+ swfdec_as_context_get_string (cx, "Socket"), &val);
+ if (SWFDEC_AS_VALUE_IS_OBJECT (&val))
+ swfdec_as_object_set_constructor (new, SWFDEC_AS_VALUE_GET_OBJECT (&val));
+
+ plugin->send = swfdec_test_socket_plugin_send;
+ plugin->close = swfdec_test_socket_plugin_close;
+ plugin->data = new;
+ SWFDEC_TEST_SOCKET (new)->test = test;
+ SWFDEC_TEST_SOCKET (new)->plugin = plugin;
+ test->sockets = g_list_append (test->sockets, new);
+
+ SWFDEC_AS_VALUE_SET_STRING (&val,
+ swfdec_as_context_get_string (cx, plugin->host));
+ swfdec_as_object_set_variable (new,
+ swfdec_as_context_get_string (cx, "host"), &val);
+ SWFDEC_AS_VALUE_SET_INT (&val, plugin->port);
+ swfdec_as_object_set_variable (new,
+ swfdec_as_context_get_string (cx, "port"), &val);
+
+ return new;
+}
+
+void
+swfdec_test_socket_close (SwfdecTestSocket *sock)
+{
+ g_return_if_fail (SWFDEC_IS_TEST_SOCKET (sock));
+
+ return swfdec_test_socket_do_close (sock, FALSE);
}
diff --git a/test/swfdec_test_socket.h b/test/swfdec_test_socket.h
index 95a51de..f5661dd 100644
--- a/test/swfdec_test_socket.h
+++ b/test/swfdec_test_socket.h
@@ -20,6 +20,8 @@
#ifndef _SWFDEC_TEST_SOCKET_H_
#define _SWFDEC_TEST_SOCKET_H_
+#include "swfdec_test_plugin.h"
+#include "swfdec_test_test.h"
#include <swfdec/swfdec.h>
#include <libsoup/soup.h>
@@ -38,15 +40,11 @@ typedef struct _SwfdecTestSocketClass SwfdecTestSocketClass;
struct _SwfdecTestSocket
{
- SwfdecAsObject as_object;
+ SwfdecAsObject as_object;
- GMainContext * context; /* the main context we're running in */
- SoupSocket * socket; /* the socket we're servicing */
- gboolean listening; /* TRUE if it's a listening socket */
- gboolean connected; /* TRUE if the connection is still alive (valid for both types) */
-
- /* for listening sockets */
- GSList * connections; /* connections that still need to be given out */
+ SwfdecTestPluginSocket * plugin; /* the socket we manage or NULL if closed */
+ SwfdecTestTest * test; /* the test that spawned us */
+ SwfdecBufferQueue * receive_queue; /* queue with received data */
};
struct _SwfdecTestSocketClass
@@ -56,6 +54,9 @@ struct _SwfdecTestSocketClass
GType swfdec_test_socket_get_type (void);
+SwfdecAsObject *swfdec_test_socket_new (SwfdecTestTest * test,
+ SwfdecTestPluginSocket * sock);
+void swfdec_test_socket_close (SwfdecTestSocket * sock);
G_END_DECLS
#endif
diff --git a/test/swfdec_test_test.c b/test/swfdec_test_test.c
index c38a7f8..34808a5 100644
--- a/test/swfdec_test_test.c
+++ b/test/swfdec_test_test.c
@@ -28,6 +28,7 @@
#include "swfdec_test_buffer.h"
#include "swfdec_test_function.h"
#include "swfdec_test_image.h"
+#include "swfdec_test_socket.h"
#include "swfdec_test_utils.h"
/*** PLUGIN HANDLING ***/
@@ -70,6 +71,15 @@ swfdec_test_test_trace (SwfdecTestPlugin *plugin, const char *message)
}
static void
+swfdec_test_test_request_socket (SwfdecTestPlugin *plugin,
+ SwfdecTestPluginSocket *psock)
+{
+ SwfdecTestTest *test = SWFDEC_TEST_TEST_FROM_PLUGIN (plugin);
+
+ swfdec_test_socket_new (test, psock);
+}
+
+static void
swfdec_test_test_load_plugin (SwfdecTestTest *test, const char *filename)
{
memset (&test->plugin, 0, sizeof (SwfdecTestPlugin));
@@ -85,6 +95,7 @@ swfdec_test_test_load_plugin (SwfdecTestTest *test, const char *filename)
test->plugin.trace = swfdec_test_test_trace;
test->plugin.quit = swfdec_test_test_quit;
test->plugin.error = swfdec_test_test_error;
+ test->plugin.request_socket = swfdec_test_test_request_socket;
/* load the right values */
if (swfdec_test_plugin_name) {
@@ -315,6 +326,32 @@ swfdec_test_test_new (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
swfdec_test_do_reset (test, filename[0] ? filename : NULL);
}
+SWFDEC_TEST_FUNCTION ("Socket_getSocket", swfdec_test_test_getSocket, 0)
+void
+swfdec_test_test_getSocket (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+ SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+ SwfdecTestTest *test;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_TEST, &test, "");
+
+ if (test->pending_sockets == NULL) {
+ if (test->sockets == NULL) {
+ SWFDEC_AS_VALUE_SET_NULL (retval);
+ } else {
+ test->pending_sockets = test->sockets;
+ SWFDEC_AS_VALUE_SET_OBJECT (retval, test->pending_sockets->data);
+ }
+ } else {
+ if (test->pending_sockets->next == NULL) {
+ SWFDEC_AS_VALUE_SET_NULL (retval);
+ } else {
+ test->pending_sockets = test->pending_sockets->next;
+ SWFDEC_AS_VALUE_SET_OBJECT (retval, test->pending_sockets->data);
+ }
+ }
+}
+
SWFDEC_TEST_FUNCTION ("Test_get_trace", swfdec_test_test_get_trace, 0)
void
swfdec_test_test_get_trace (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
diff --git a/test/swfdec_test_test.h b/test/swfdec_test_test.h
index f074108..6ba421e 100644
--- a/test/swfdec_test_test.h
+++ b/test/swfdec_test_test.h
@@ -49,6 +49,9 @@ struct _SwfdecTestTest
char * filename; /* file the player should be loaded from */
SwfdecBufferQueue * trace; /* all captured trace output */
+
+ GList * sockets; /* list of all sockets */
+ GList * pending_sockets;/* last socket handed out or NULL if none given out */
};
struct _SwfdecTestTestClass
More information about the Swfdec-commits
mailing list