[Swfdec-commits] 2 commits - src/plugin.c src/swfmoz_loader.c src/swfmoz_player.c src/swfmoz_player.h
Pekka Lampila
medar at kemper.freedesktop.org
Mon Jun 16 04:26:47 PDT 2008
src/plugin.c | 9 +++++++-
src/swfmoz_loader.c | 12 ++++++++--
src/swfmoz_player.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++---
src/swfmoz_player.h | 5 +++-
4 files changed, 76 insertions(+), 8 deletions(-)
New commits:
commit 8743e32dd5490ade646c64dfe2d31ec64eac7e99
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Fri Jun 13 11:36:03 2008 +0300
Add support for also sending headers for the launch requests
diff --git a/src/plugin.c b/src/plugin.c
index 5dee945..3d9bf88 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -417,7 +417,14 @@ plugin_handle_event (NPP instance, void *eventp)
static void
plugin_url_notify (NPP instance, const char* url, NPReason reason, void* notifyData)
{
- SwfdecStream *stream = SWFDEC_STREAM (notifyData);
+ SwfdecStream *stream;
+
+ // plugin_post_url_notify is used for launch so headers can be sent, but we
+ // don't actually care about the notify
+ if (notifyData == NULL)
+ return;
+
+ stream = SWFDEC_STREAM (notifyData);
if (reason == NPRES_NETWORK_ERR) {
swfdec_stream_error (stream, "Network error");
diff --git a/src/swfmoz_loader.c b/src/swfmoz_loader.c
index 9decb51..afe33af 100644
--- a/src/swfmoz_loader.c
+++ b/src/swfmoz_loader.c
@@ -47,28 +47,6 @@ swfmoz_loader_dispose (GObject *object)
G_OBJECT_CLASS (swfmoz_loader_parent_class)->dispose (object);
}
-static SwfdecBuffer *
-swfmoz_loader_format_headers (guint header_count, const char **header_names,
- const char **header_values)
-{
- GString *string;
- guint i;
- gsize len;
-
- string = g_string_new ("");
- for (i = 0; i < header_count; i++) {
- g_string_append (string, header_names[i]);
- g_string_append (string, ": ");
- g_string_append (string, header_values[i]);
- g_string_append (string, "\n");
- }
- g_string_append (string, "\n\n");
-
- len = string->len;
- return swfdec_buffer_new_for_data (
- (unsigned char *)g_string_free (string, FALSE), len);
-}
-
static void
swfmoz_loader_load (SwfdecLoader *loader, SwfdecPlayer *player,
const char *url, SwfdecBuffer *buffer, guint header_count,
@@ -85,21 +63,13 @@ swfmoz_loader_load (SwfdecLoader *loader, SwfdecPlayer *player,
} else {
g_object_ref (moz);
if (buffer) {
- SwfdecBufferQueue *queue;
SwfdecBuffer *combined;
- queue = swfdec_buffer_queue_new ();
- swfdec_buffer_queue_push (queue, swfmoz_loader_format_headers (
- header_count, header_names, header_values));
- swfdec_buffer_queue_push (queue, swfdec_buffer_ref (buffer));
-
- combined = swfdec_buffer_queue_pull (queue,
- swfdec_buffer_queue_get_depth (queue));
+ combined = swfmoz_player_add_headers (buffer, header_count, header_names,
+ header_values);
plugin_post_url_notify (moz->instance, url, NULL, (char *)combined->data,
combined->length, moz);
swfdec_buffer_unref (combined);
-
- swfdec_buffer_queue_unref (queue);
} else {
// FIXME: Impossible to set headers here?
plugin_get_url_notify (moz->instance, url, NULL, moz);
diff --git a/src/swfmoz_player.c b/src/swfmoz_player.c
index a6aa801..69f5808 100644
--- a/src/swfmoz_player.c
+++ b/src/swfmoz_player.c
@@ -209,14 +209,66 @@ swfmoz_player_redraw (SwfmozPlayer *player, const SwfdecRectangle *extents,
}
}
+static SwfdecBuffer *
+swfmoz_player_format_headers (guint header_count, const char **header_names,
+ const char **header_values)
+{
+ GString *string;
+ guint i;
+ gsize len;
+
+ g_return_val_if_fail (header_count == 0 || header_names != NULL, NULL);
+ g_return_val_if_fail (header_count == 0 || header_values != NULL, NULL);
+
+ string = g_string_new ("");
+ for (i = 0; i < header_count; i++) {
+ g_string_append (string, header_names[i]);
+ g_string_append (string, ": ");
+ g_string_append (string, header_values[i]);
+ g_string_append (string, "\n");
+ }
+ g_string_append (string, "\n\n");
+
+ len = string->len;
+ return swfdec_buffer_new_for_data (
+ (unsigned char *)g_string_free (string, FALSE), len);
+}
+
+/* Returns a new buffer with the headers prepended, suitable for passing to
+ * plugin_post_url_notify */
+SwfdecBuffer *
+swfmoz_player_add_headers (SwfdecBuffer *data, guint header_count,
+ const char **header_names, const char **header_values)
+{
+ SwfdecBufferQueue *queue;
+ SwfdecBuffer *buffer;
+
+ g_return_val_if_fail (data != NULL, NULL);
+
+ queue = swfdec_buffer_queue_new ();
+ swfdec_buffer_queue_push (queue, swfmoz_player_format_headers (
+ header_count, header_names, header_values));
+ swfdec_buffer_queue_push (queue, swfdec_buffer_ref (data));
+
+ buffer = swfdec_buffer_queue_pull (queue,
+ swfdec_buffer_queue_get_depth (queue));
+ swfdec_buffer_queue_unref (queue);
+
+ return buffer;
+}
+
static void
swfmoz_player_launch (SwfmozPlayer *player, const char *url,
- const char *target, SwfdecBuffer *data, gpointer unused)
+ const char *target, SwfdecBuffer *data, guint header_count,
+ const char **header_names, const char **header_values, gpointer unused)
{
if (data) {
- plugin_post_url (player->instance, url, target, (const char *)data->data,
- data->length);
+ // use the notify version of the function so headers can be sent
+ // we don't actually care about the notify
+ plugin_post_url_notify (player->instance, url, target,
+ (const char *)data->data, data->length, NULL);
} else {
+ // FIXME: no way to send headers here?
plugin_get_url (player->instance, url, target);
}
}
diff --git a/src/swfmoz_player.h b/src/swfmoz_player.h
index 1e89995..1781344 100644
--- a/src/swfmoz_player.h
+++ b/src/swfmoz_player.h
@@ -112,7 +112,10 @@ gboolean swfmoz_player_mouse_move (SwfmozPlayer * player,
char * swfmoz_player_get_filename (SwfmozPlayer * player);
void swfmoz_player_add_variables (SwfmozPlayer * player,
const char * variables);
-
+SwfdecBuffer * swfmoz_player_add_headers (SwfdecBuffer * data,
+ guint header_count,
+ const char ** header_names,
+ const char ** header_values);
G_END_DECLS
#endif
commit 9610a4ccc0197154f15f6c261dd8361d885b6a57
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Fri Jun 13 10:17:43 2008 +0300
Add support for sending headers to the loader
diff --git a/src/swfmoz_loader.c b/src/swfmoz_loader.c
index c7221a8..9decb51 100644
--- a/src/swfmoz_loader.c
+++ b/src/swfmoz_loader.c
@@ -47,10 +47,32 @@ swfmoz_loader_dispose (GObject *object)
G_OBJECT_CLASS (swfmoz_loader_parent_class)->dispose (object);
}
+static SwfdecBuffer *
+swfmoz_loader_format_headers (guint header_count, const char **header_names,
+ const char **header_values)
+{
+ GString *string;
+ guint i;
+ gsize len;
+
+ string = g_string_new ("");
+ for (i = 0; i < header_count; i++) {
+ g_string_append (string, header_names[i]);
+ g_string_append (string, ": ");
+ g_string_append (string, header_values[i]);
+ g_string_append (string, "\n");
+ }
+ g_string_append (string, "\n\n");
+
+ len = string->len;
+ return swfdec_buffer_new_for_data (
+ (unsigned char *)g_string_free (string, FALSE), len);
+}
+
static void
swfmoz_loader_load (SwfdecLoader *loader, SwfdecPlayer *player,
const char *url, SwfdecBuffer *buffer, guint header_count,
- const char **header_names, const char ** header_values)
+ const char **header_names, const char **header_values)
{
SwfmozPlayer *mozplay = SWFMOZ_PLAYER (player);
SwfmozLoader *moz = SWFMOZ_LOADER (loader);
@@ -63,9 +85,23 @@ swfmoz_loader_load (SwfdecLoader *loader, SwfdecPlayer *player,
} else {
g_object_ref (moz);
if (buffer) {
- plugin_post_url_notify (moz->instance, url, NULL, (char *)buffer->data,
- buffer->length, moz);
+ SwfdecBufferQueue *queue;
+ SwfdecBuffer *combined;
+
+ queue = swfdec_buffer_queue_new ();
+ swfdec_buffer_queue_push (queue, swfmoz_loader_format_headers (
+ header_count, header_names, header_values));
+ swfdec_buffer_queue_push (queue, swfdec_buffer_ref (buffer));
+
+ combined = swfdec_buffer_queue_pull (queue,
+ swfdec_buffer_queue_get_depth (queue));
+ plugin_post_url_notify (moz->instance, url, NULL, (char *)combined->data,
+ combined->length, moz);
+ swfdec_buffer_unref (combined);
+
+ swfdec_buffer_queue_unref (queue);
} else {
+ // FIXME: Impossible to set headers here?
plugin_get_url_notify (moz->instance, url, NULL, moz);
}
}
More information about the Swfdec-commits
mailing list