1 module webkit2.UserMessage;
2 
3 private import gio.UnixFDList;
4 private import glib.ConstructionException;
5 private import glib.Str;
6 private import glib.Variant;
7 private import gobject.ObjectG;
8 private import webkit2.c.functions;
9 public  import webkit2.c.types;
10 
11 
12 /**
13  * A WebKitUserMessage is a message that can be used for the communication between the UI process
14  * and web extensions. A WebKitUserMessage always has a name, and it can also include parameters and
15  * UNIX file descriptors. Messages can be sent from a #WebKitWebContext to all #WebKitWebExtension<!-- -->s,
16  * from a #WebKitWebExtension to its corresponding #WebKitWebContext, and from a #WebKitWebView to its
17  * corresponding #WebKitWebPage (and vice versa). One to one messages can be replied to directly with
18  * webkit_user_message_send_reply().
19  *
20  * Since: 2.28
21  */
22 public class UserMessage : ObjectG
23 {
24 	/** the main Gtk struct */
25 	protected WebKitUserMessage* webKitUserMessage;
26 
27 	/** Get the main Gtk struct */
28 	public WebKitUserMessage* getUserMessageStruct(bool transferOwnership = false)
29 	{
30 		if (transferOwnership)
31 			ownedRef = false;
32 		return webKitUserMessage;
33 	}
34 
35 	/** the main Gtk struct as a void* */
36 	protected override void* getStruct()
37 	{
38 		return cast(void*)webKitUserMessage;
39 	}
40 
41 	/**
42 	 * Sets our main struct and passes it to the parent class.
43 	 */
44 	public this (WebKitUserMessage* webKitUserMessage, bool ownedRef = false)
45 	{
46 		this.webKitUserMessage = webKitUserMessage;
47 		super(cast(GObject*)webKitUserMessage, ownedRef);
48 	}
49 
50 
51 	/** */
52 	public static GType getType()
53 	{
54 		return webkit_user_message_get_type();
55 	}
56 
57 	/**
58 	 * Create a new #WebKitUserMessage with @name.
59 	 *
60 	 * Params:
61 	 *     name = the message name
62 	 *     parameters = the message parameters as a #GVariant, or %NULL
63 	 *
64 	 * Returns: the newly created #WebKitUserMessage object.
65 	 *
66 	 * Since: 2.28
67 	 *
68 	 * Throws: ConstructionException GTK+ fails to create the object.
69 	 */
70 	public this(string name, Variant parameters)
71 	{
72 		auto __p = webkit_user_message_new(Str.toStringz(name), (parameters is null) ? null : parameters.getVariantStruct());
73 
74 		if(__p is null)
75 		{
76 			throw new ConstructionException("null returned by new");
77 		}
78 
79 		this(cast(WebKitUserMessage*) __p);
80 	}
81 
82 	/**
83 	 * Create a new #WebKitUserMessage including also a list of UNIX file descriptors to be sent.
84 	 *
85 	 * Params:
86 	 *     name = the message name
87 	 *     parameters = the message parameters as a #GVariant
88 	 *     fdList = the message file descriptors
89 	 *
90 	 * Returns: the newly created #WebKitUserMessage object.
91 	 *
92 	 * Since: 2.28
93 	 *
94 	 * Throws: ConstructionException GTK+ fails to create the object.
95 	 */
96 	public this(string name, Variant parameters, UnixFDList fdList)
97 	{
98 		auto __p = webkit_user_message_new_with_fd_list(Str.toStringz(name), (parameters is null) ? null : parameters.getVariantStruct(), (fdList is null) ? null : fdList.getUnixFDListStruct());
99 
100 		if(__p is null)
101 		{
102 			throw new ConstructionException("null returned by new_with_fd_list");
103 		}
104 
105 		this(cast(WebKitUserMessage*) __p);
106 	}
107 
108 	/**
109 	 * Get the @message list of file descritpor
110 	 *
111 	 * Returns: the message list of file descriptors
112 	 *
113 	 * Since: 2.28
114 	 */
115 	public UnixFDList getFdList()
116 	{
117 		auto __p = webkit_user_message_get_fd_list(webKitUserMessage);
118 
119 		if(__p is null)
120 		{
121 			return null;
122 		}
123 
124 		return ObjectG.getDObject!(UnixFDList)(cast(GUnixFDList*) __p);
125 	}
126 
127 	/**
128 	 * Get the @message name
129 	 *
130 	 * Returns: the message name
131 	 *
132 	 * Since: 2.28
133 	 */
134 	public string getName()
135 	{
136 		return Str.toString(webkit_user_message_get_name(webKitUserMessage));
137 	}
138 
139 	/**
140 	 * Get the @message parameters
141 	 *
142 	 * Returns: the message parameters
143 	 *
144 	 * Since: 2.28
145 	 */
146 	public Variant getParameters()
147 	{
148 		auto __p = webkit_user_message_get_parameters(webKitUserMessage);
149 
150 		if(__p is null)
151 		{
152 			return null;
153 		}
154 
155 		return new Variant(cast(GVariant*) __p);
156 	}
157 
158 	/**
159 	 * Send a reply to @message. If @reply is floating, it's consumed.
160 	 * You can only send a reply to a #WebKitUserMessage that has been
161 	 * received.
162 	 *
163 	 * Params:
164 	 *     reply = a #WebKitUserMessage to send as reply
165 	 *
166 	 * Since: 2.28
167 	 */
168 	public void sendReply(UserMessage reply)
169 	{
170 		webkit_user_message_send_reply(webKitUserMessage, (reply is null) ? null : reply.getUserMessageStruct());
171 	}
172 }