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 }