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 }