1 module webkit2webextension.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 webkit2webextension.c.functions;
9 public  import webkit2webextension.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 	public static GQuark errorQuark()
110 	{
111 		return webkit_user_message_error_quark();
112 	}
113 
114 	/**
115 	 * Get the @message list of file descritpor
116 	 *
117 	 * Returns: the message list of file descriptors
118 	 *
119 	 * Since: 2.28
120 	 */
121 	public UnixFDList getFdList()
122 	{
123 		auto __p = webkit_user_message_get_fd_list(webKitUserMessage);
124 
125 		if(__p is null)
126 		{
127 			return null;
128 		}
129 
130 		return ObjectG.getDObject!(UnixFDList)(cast(GUnixFDList*) __p);
131 	}
132 
133 	/**
134 	 * Get the @message name
135 	 *
136 	 * Returns: the message name
137 	 *
138 	 * Since: 2.28
139 	 */
140 	public string getName()
141 	{
142 		return Str.toString(webkit_user_message_get_name(webKitUserMessage));
143 	}
144 
145 	/**
146 	 * Get the @message parameters
147 	 *
148 	 * Returns: the message parameters
149 	 *
150 	 * Since: 2.28
151 	 */
152 	public Variant getParameters()
153 	{
154 		auto __p = webkit_user_message_get_parameters(webKitUserMessage);
155 
156 		if(__p is null)
157 		{
158 			return null;
159 		}
160 
161 		return new Variant(cast(GVariant*) __p);
162 	}
163 
164 	/**
165 	 * Send a reply to @message. If @reply is floating, it's consumed.
166 	 * You can only send a reply to a #WebKitUserMessage that has been
167 	 * received.
168 	 *
169 	 * Params:
170 	 *     reply = a #WebKitUserMessage to send as reply
171 	 *
172 	 * Since: 2.28
173 	 */
174 	public void sendReply(UserMessage reply)
175 	{
176 		webkit_user_message_send_reply(webKitUserMessage, (reply is null) ? null : reply.getUserMessageStruct());
177 	}
178 }