other-licenses/atk-1.0/atk/atkstreamablecontent.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

michael@0 1 /* ATK - Accessibility Toolkit
michael@0 2 * Copyright 2001 Sun Microsystems Inc.
michael@0 3 *
michael@0 4 * This library is free software; you can redistribute it and/or
michael@0 5 * modify it under the terms of the GNU Library General Public
michael@0 6 * License as published by the Free Software Foundation; either
michael@0 7 * version 2 of the License, or (at your option) any later version.
michael@0 8 *
michael@0 9 * This library is distributed in the hope that it will be useful,
michael@0 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
michael@0 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
michael@0 12 * Library General Public License for more details.
michael@0 13 *
michael@0 14 * You should have received a copy of the GNU Library General Public
michael@0 15 * License along with this library; if not, write to the
michael@0 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
michael@0 17 * Boston, MA 02111-1307, USA.
michael@0 18 */
michael@0 19
michael@0 20 #ifndef __ATK_STREAMABLE_CONTENT_H__
michael@0 21 #define __ATK_STREAMABLE_CONTENT_H__
michael@0 22
michael@0 23 #include <atk/atkobject.h>
michael@0 24
michael@0 25 #ifdef __cplusplus
michael@0 26 extern "C" {
michael@0 27 #endif /* __cplusplus */
michael@0 28
michael@0 29 #define ATK_TYPE_STREAMABLE_CONTENT (atk_streamable_content_get_type ())
michael@0 30 #define ATK_IS_STREAMABLE_CONTENT(obj) G_TYPE_CHECK_INSTANCE_TYPE ((obj), ATK_TYPE_STREAMABLE_CONTENT)
michael@0 31 #define ATK_STREAMABLE_CONTENT(obj) G_TYPE_CHECK_INSTANCE_CAST ((obj), ATK_TYPE_STREAMABLE_CONTENT, AtkStreamableContent)
michael@0 32 #define ATK_STREAMABLE_CONTENT_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), ATK_TYPE_STREAMABLE_CONTENT, AtkStreamableContentIface))
michael@0 33
michael@0 34 #ifndef _TYPEDEF_ATK_STREAMABLE_CONTENT
michael@0 35 #define _TYPEDEF_ATK_STREAMABLE_CONTENT
michael@0 36 typedef struct _AtkStreamableContent AtkStreamableContent;
michael@0 37 #endif
michael@0 38 typedef struct _AtkStreamableContentIface AtkStreamableContentIface;
michael@0 39
michael@0 40 struct _AtkStreamableContentIface
michael@0 41 {
michael@0 42 GTypeInterface parent;
michael@0 43
michael@0 44 /*
michael@0 45 * Get the number of mime types supported by this object
michael@0 46 */
michael@0 47 gint (* get_n_mime_types) (AtkStreamableContent *streamable);
michael@0 48 /*
michael@0 49 * Gets the specified mime type supported by this object.
michael@0 50 * The mime types are 0-based so the first mime type is
michael@0 51 * at index 0, the second at index 1 and so on. The mime-type
michael@0 52 * at index 0 should be considered the "default" data type for the stream.
michael@0 53 *
michael@0 54 * This assumes that the strings for the mime types are stored in the
michael@0 55 * AtkStreamableContent. Alternatively the G_CONST_RETURN could be removed
michael@0 56 * and the caller would be responsible for calling g_free() on the
michael@0 57 * returned value.
michael@0 58 */
michael@0 59 G_CONST_RETURN gchar* (* get_mime_type) (AtkStreamableContent *streamable,
michael@0 60 gint i);
michael@0 61 /*
michael@0 62 * One possible implementation for this method is that it constructs the
michael@0 63 * content appropriate for the mime type and then creates a temporary
michael@0 64 * file containing the content, opens the file and then calls
michael@0 65 * g_io_channel_unix_new_fd().
michael@0 66 */
michael@0 67 GIOChannel* (* get_stream) (AtkStreamableContent *streamable,
michael@0 68 const gchar *mime_type);
michael@0 69
michael@0 70 /*
michael@0 71 * Returns a string representing a URI in IETF standard format
michael@0 72 * (see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content
michael@0 73 * may be streamed in the specified mime-type.
michael@0 74 * If mime_type is NULL, the URI for the default (and possibly only) mime-type is
michael@0 75 * returned.
michael@0 76 *
michael@0 77 * returns NULL if the mime-type is not supported, or if no URI can be
michael@0 78 * constructed. Note that it is possible for get_uri to return NULL but for
michael@0 79 * get_stream to work nonetheless, since not all GIOChannels connect to URIs.
michael@0 80 */
michael@0 81 G_CONST_RETURN gchar* (* get_uri) (AtkStreamableContent *streamable,
michael@0 82 const gchar *mime_type);
michael@0 83
michael@0 84
michael@0 85 AtkFunction pad1;
michael@0 86 AtkFunction pad2;
michael@0 87 AtkFunction pad3;
michael@0 88 };
michael@0 89 GType atk_streamable_content_get_type (void);
michael@0 90
michael@0 91 gint atk_streamable_content_get_n_mime_types (AtkStreamableContent *streamable);
michael@0 92
michael@0 93 G_CONST_RETURN gchar* atk_streamable_content_get_mime_type (AtkStreamableContent *streamable,
michael@0 94 gint i);
michael@0 95 GIOChannel* atk_streamable_content_get_stream (AtkStreamableContent *streamable,
michael@0 96 const gchar *mime_type);
michael@0 97
michael@0 98 gchar* atk_streamable_content_get_uri (AtkStreamableContent *streamable,
michael@0 99 const gchar *mime_type);
michael@0 100
michael@0 101
michael@0 102 #ifdef __cplusplus
michael@0 103 }
michael@0 104 #endif /* __cplusplus */
michael@0 105
michael@0 106
michael@0 107 #endif /* __ATK_STREAMABLE_CONTENT_H__ */

mercurial