[evolution/wip-webkit2] EMailDisplay - Handle CID URI scheme correctly
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip-webkit2] EMailDisplay - Handle CID URI scheme correctly
- Date: Wed, 20 Nov 2013 12:59:08 +0000 (UTC)
commit 494c392a0de210254898cad16c8a79aff4e7ca24
Author: Tomas Popela <tpopela redhat com>
Date: Wed Nov 20 13:56:39 2013 +0100
EMailDisplay - Handle CID URI scheme correctly
mail/e-mail-display.c | 40 ++++++++++++++++++++++------------------
1 files changed, 22 insertions(+), 18 deletions(-)
---
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 4c45196..601656e 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -1379,35 +1379,39 @@ mail_cid_uri_scheme_appeared_cb (WebKitURISchemeRequest *request,
{
EMailPartList *part_list;
EMailPart *part;
- CamelFolder *folder;
GInputStream *stream;
- gsize stream_length;
- const gchar *message_uid;
const gchar *uri;
const gchar *mime_type;
- gchar *content = NULL;
-
- /* Redirect cid:part_id to mail://mail_id/cid:part_id */
+ GByteArray *byte_array;
+ CamelStream *output_stream;
+ GCancellable *cancellable = NULL;
+ CamelDataWrapper *dw;
+ CamelMimePart *mime_part;
part_list = e_mail_display_get_part_list (display);
- folder = e_mail_part_list_get_folder (part_list);
- message_uid = e_mail_part_list_get_message_uid (part_list);
-
uri = webkit_uri_scheme_request_get_uri (request);
part = e_mail_part_list_ref_part (part_list, uri);
-
mime_type = e_mail_part_get_mime_type (part);
+ mime_part = e_mail_part_ref_mime_part (part);
+ dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
- /* Always write raw content of CID object. */
- content = e_mail_part_build_uri (
- folder, message_uid,
- "part_id", G_TYPE_STRING, uri,
- "mode", G_TYPE_INT, E_MAIL_FORMATTER_MODE_CID, NULL);
+ g_return_if_fail (dw);
- stream_length = strlen (content);
- stream = g_memory_input_stream_new_from_data (content, stream_length, g_free);
+ byte_array = g_byte_array_new ();
+ output_stream = camel_stream_mem_new ();
+
+ /* We retain ownership of the byte array. */
+ camel_stream_mem_set_byte_array (
+ CAMEL_STREAM_MEM (output_stream), byte_array);
+
+ camel_data_wrapper_decode_to_stream_sync (
+ dw, output_stream, cancellable, NULL);
+
+ stream = g_memory_input_stream_new_from_bytes (
+ g_byte_array_free_to_bytes (byte_array));
- webkit_uri_scheme_request_finish (request, stream, stream_length, mime_type);
+ webkit_uri_scheme_request_finish (request, stream, -1, mime_type);
+ g_object_unref (mime_part);
g_object_unref (stream);
g_object_unref (part);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]