// This file was generated by the Gtk# code generator.
// Any changes made will be lost if regenerated.

namespace WebKit {

	using System;
	using System.Collections;
	using System.Collections.Generic;
	using System.Runtime.InteropServices;
	using static GLib.AbiStructExtension;

#region Autogenerated code
	public partial class WebContext : GLib.Object {

		public WebContext (IntPtr raw) : base(raw) {}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_new();
		static d_webkit_web_context_new webkit_web_context_new = FuncLoader.LoadFunction<d_webkit_web_context_new>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_new"));

		public WebContext () : base (IntPtr.Zero)
		{
			if (GetType () != typeof (WebContext)) {
				CreateNativeObject (Array.Empty<string> (), Array.Empty<GLib.Value> ());
				return;
			}
			Raw = webkit_web_context_new();
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_new_ephemeral();
		static d_webkit_web_context_new_ephemeral webkit_web_context_new_ephemeral = FuncLoader.LoadFunction<d_webkit_web_context_new_ephemeral>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_new_ephemeral"));

		public static WebContext NewEphemeral()
		{
			WebContext result = new WebContext (webkit_web_context_new_ephemeral());
			return result;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_new_with_website_data_manager(IntPtr manager);
		static d_webkit_web_context_new_with_website_data_manager webkit_web_context_new_with_website_data_manager = FuncLoader.LoadFunction<d_webkit_web_context_new_with_website_data_manager>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_new_with_website_data_manager"));

		public WebContext (WebKit.WebsiteDataManager manager) : base (IntPtr.Zero)
		{
			if (GetType () != typeof (WebContext)) {
				var vals = new List<GLib.Value> ();
				var names = new List<string> ();
				CreateNativeObject (names.ToArray (), vals.ToArray ());
				return;
			}
			Raw = webkit_web_context_new_with_website_data_manager(manager == null ? IntPtr.Zero : manager.Handle);
		}

		[Obsolete]
		[GLib.Property ("local-storage-directory")]
		public string LocalStorageDirectory {
			get {
				GLib.Value val = GetProperty ("local-storage-directory");
				string ret = (string) val;
				val.Dispose ();
				return ret;
			}
		}

		[GLib.Property ("process-swap-on-cross-site-navigation-enabled")]
		public bool ProcessSwapOnCrossSiteNavigationEnabled {
			get {
				GLib.Value val = GetProperty ("process-swap-on-cross-site-navigation-enabled");
				bool ret = (bool) val;
				val.Dispose ();
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_webkit_web_context_get_use_system_appearance_for_scrollbars(IntPtr raw);
		static d_webkit_web_context_get_use_system_appearance_for_scrollbars webkit_web_context_get_use_system_appearance_for_scrollbars = FuncLoader.LoadFunction<d_webkit_web_context_get_use_system_appearance_for_scrollbars>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_use_system_appearance_for_scrollbars"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_use_system_appearance_for_scrollbars(IntPtr raw, bool enabled);
		static d_webkit_web_context_set_use_system_appearance_for_scrollbars webkit_web_context_set_use_system_appearance_for_scrollbars = FuncLoader.LoadFunction<d_webkit_web_context_set_use_system_appearance_for_scrollbars>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_use_system_appearance_for_scrollbars"));

		[GLib.Property ("use-system-appearance-for-scrollbars")]
		public bool UseSystemAppearanceForScrollbars {
			get  {
				bool raw_ret = webkit_web_context_get_use_system_appearance_for_scrollbars(Handle);
				bool ret = raw_ret;
				return ret;
			}
			set  {
				webkit_web_context_set_use_system_appearance_for_scrollbars(Handle, value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_website_data_manager(IntPtr raw);
		static d_webkit_web_context_get_website_data_manager webkit_web_context_get_website_data_manager = FuncLoader.LoadFunction<d_webkit_web_context_get_website_data_manager>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_website_data_manager"));

		[GLib.Property ("website-data-manager")]
		public WebKit.WebsiteDataManager WebsiteDataManager {
			get  {
				IntPtr raw_ret = webkit_web_context_get_website_data_manager(Handle);
				WebKit.WebsiteDataManager ret = GLib.Object.GetObject(raw_ret) as WebKit.WebsiteDataManager;
				return ret;
			}
		}

		[GLib.Signal("automation-started")]
		public event WebKit.AutomationStartedHandler AutomationStarted {
			add {
				this.AddSignalHandler ("automation-started", value, typeof (WebKit.AutomationStartedArgs));
			}
			remove {
				this.RemoveSignalHandler ("automation-started", value);
			}
		}

		[GLib.Signal("user-message-received")]
		public event WebKit.UserMessageReceivedHandler UserMessageReceived {
			add {
				this.AddSignalHandler ("user-message-received", value, typeof (WebKit.UserMessageReceivedArgs));
			}
			remove {
				this.RemoveSignalHandler ("user-message-received", value);
			}
		}

		[GLib.Signal("initialize-web-extensions")]
		public event System.EventHandler InitializeWebExtensions {
			add {
				this.AddSignalHandler ("initialize-web-extensions", value);
			}
			remove {
				this.RemoveSignalHandler ("initialize-web-extensions", value);
			}
		}

		[GLib.Signal("download-started")]
		public event WebKit.DownloadStartedHandler DownloadStarted {
			add {
				this.AddSignalHandler ("download-started", value, typeof (WebKit.DownloadStartedArgs));
			}
			remove {
				this.RemoveSignalHandler ("download-started", value);
			}
		}

		[GLib.Signal("initialize-notification-permissions")]
		public event System.EventHandler InitializeNotificationPermissionsEvent {
			add {
				this.AddSignalHandler ("initialize-notification-permissions", value);
			}
			remove {
				this.RemoveSignalHandler ("initialize-notification-permissions", value);
			}
		}

		static DownloadStartedNativeDelegate DownloadStarted_cb_delegate;
		static DownloadStartedNativeDelegate DownloadStartedVMCallback {
			get {
				if (DownloadStarted_cb_delegate == null)
					DownloadStarted_cb_delegate = new DownloadStartedNativeDelegate (DownloadStarted_cb);
				return DownloadStarted_cb_delegate;
			}
		}

		static void OverrideDownloadStarted (GLib.GType gtype)
		{
			OverrideDownloadStarted (gtype, DownloadStartedVMCallback);
		}

		static void OverrideDownloadStarted (GLib.GType gtype, DownloadStartedNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("download_started"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void DownloadStartedNativeDelegate (IntPtr inst, IntPtr download);

		static void DownloadStarted_cb (IntPtr inst, IntPtr download)
		{
			try {
				WebContext __obj = GLib.Object.GetObject (inst, false) as WebContext;
				__obj.OnDownloadStarted (GLib.Object.GetObject(download) as WebKit.Download);
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebContext), ConnectionMethod="OverrideDownloadStarted")]
		protected virtual void OnDownloadStarted (WebKit.Download download)
		{
			InternalDownloadStarted (download);
		}

		private void InternalDownloadStarted (WebKit.Download download)
		{
			DownloadStartedNativeDelegate unmanaged = class_abi.BaseOverride<DownloadStartedNativeDelegate>(this.LookupGType(), "download_started");
			if (unmanaged == null) return;

			unmanaged (this.Handle, download == null ? IntPtr.Zero : download.Handle);
		}

		static InitializeWebExtensionsNativeDelegate InitializeWebExtensions_cb_delegate;
		static InitializeWebExtensionsNativeDelegate InitializeWebExtensionsVMCallback {
			get {
				if (InitializeWebExtensions_cb_delegate == null)
					InitializeWebExtensions_cb_delegate = new InitializeWebExtensionsNativeDelegate (InitializeWebExtensions_cb);
				return InitializeWebExtensions_cb_delegate;
			}
		}

		static void OverrideInitializeWebExtensions (GLib.GType gtype)
		{
			OverrideInitializeWebExtensions (gtype, InitializeWebExtensionsVMCallback);
		}

		static void OverrideInitializeWebExtensions (GLib.GType gtype, InitializeWebExtensionsNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("initialize_web_extensions"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void InitializeWebExtensionsNativeDelegate (IntPtr inst);

		static void InitializeWebExtensions_cb (IntPtr inst)
		{
			try {
				WebContext __obj = GLib.Object.GetObject (inst, false) as WebContext;
				__obj.OnInitializeWebExtensions ();
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebContext), ConnectionMethod="OverrideInitializeWebExtensions")]
		protected virtual void OnInitializeWebExtensions ()
		{
			InternalInitializeWebExtensions ();
		}

		private void InternalInitializeWebExtensions ()
		{
			InitializeWebExtensionsNativeDelegate unmanaged = class_abi.BaseOverride<InitializeWebExtensionsNativeDelegate>(this.LookupGType(), "initialize_web_extensions");
			if (unmanaged == null) return;

			unmanaged (this.Handle);
		}

		static InitializeNotificationPermissionsEventNativeDelegate InitializeNotificationPermissionsEvent_cb_delegate;
		static InitializeNotificationPermissionsEventNativeDelegate InitializeNotificationPermissionsEventVMCallback {
			get {
				if (InitializeNotificationPermissionsEvent_cb_delegate == null)
					InitializeNotificationPermissionsEvent_cb_delegate = new InitializeNotificationPermissionsEventNativeDelegate (InitializeNotificationPermissionsEvent_cb);
				return InitializeNotificationPermissionsEvent_cb_delegate;
			}
		}

		static void OverrideInitializeNotificationPermissionsEvent (GLib.GType gtype)
		{
			OverrideInitializeNotificationPermissionsEvent (gtype, InitializeNotificationPermissionsEventVMCallback);
		}

		static void OverrideInitializeNotificationPermissionsEvent (GLib.GType gtype, InitializeNotificationPermissionsEventNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("initialize_notification_permissions"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void InitializeNotificationPermissionsEventNativeDelegate (IntPtr inst);

		static void InitializeNotificationPermissionsEvent_cb (IntPtr inst)
		{
			try {
				WebContext __obj = GLib.Object.GetObject (inst, false) as WebContext;
				__obj.OnInitializeNotificationPermissionsEvent ();
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebContext), ConnectionMethod="OverrideInitializeNotificationPermissionsEvent")]
		protected virtual void OnInitializeNotificationPermissionsEvent ()
		{
			InternalInitializeNotificationPermissionsEvent ();
		}

		private void InternalInitializeNotificationPermissionsEvent ()
		{
			InitializeNotificationPermissionsEventNativeDelegate unmanaged = class_abi.BaseOverride<InitializeNotificationPermissionsEventNativeDelegate>(this.LookupGType(), "initialize_notification_permissions");
			if (unmanaged == null) return;

			unmanaged (this.Handle);
		}

		static AutomationStartedNativeDelegate AutomationStarted_cb_delegate;
		static AutomationStartedNativeDelegate AutomationStartedVMCallback {
			get {
				if (AutomationStarted_cb_delegate == null)
					AutomationStarted_cb_delegate = new AutomationStartedNativeDelegate (AutomationStarted_cb);
				return AutomationStarted_cb_delegate;
			}
		}

		static void OverrideAutomationStarted (GLib.GType gtype)
		{
			OverrideAutomationStarted (gtype, AutomationStartedVMCallback);
		}

		static void OverrideAutomationStarted (GLib.GType gtype, AutomationStartedNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("automation_started"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void AutomationStartedNativeDelegate (IntPtr inst, IntPtr session);

		static void AutomationStarted_cb (IntPtr inst, IntPtr session)
		{
			try {
				WebContext __obj = GLib.Object.GetObject (inst, false) as WebContext;
				__obj.OnAutomationStarted (GLib.Object.GetObject(session) as WebKit.AutomationSession);
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebContext), ConnectionMethod="OverrideAutomationStarted")]
		protected virtual void OnAutomationStarted (WebKit.AutomationSession session)
		{
			InternalAutomationStarted (session);
		}

		private void InternalAutomationStarted (WebKit.AutomationSession session)
		{
			AutomationStartedNativeDelegate unmanaged = class_abi.BaseOverride<AutomationStartedNativeDelegate>(this.LookupGType(), "automation_started");
			if (unmanaged == null) return;

			unmanaged (this.Handle, session == null ? IntPtr.Zero : session.Handle);
		}

		static UserMessageReceivedNativeDelegate UserMessageReceived_cb_delegate;
		static UserMessageReceivedNativeDelegate UserMessageReceivedVMCallback {
			get {
				if (UserMessageReceived_cb_delegate == null)
					UserMessageReceived_cb_delegate = new UserMessageReceivedNativeDelegate (UserMessageReceived_cb);
				return UserMessageReceived_cb_delegate;
			}
		}

		static void OverrideUserMessageReceived (GLib.GType gtype)
		{
			OverrideUserMessageReceived (gtype, UserMessageReceivedVMCallback);
		}

		static void OverrideUserMessageReceived (GLib.GType gtype, UserMessageReceivedNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("user_message_received"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool UserMessageReceivedNativeDelegate (IntPtr inst, IntPtr message);

		static bool UserMessageReceived_cb (IntPtr inst, IntPtr message)
		{
			try {
				WebContext __obj = GLib.Object.GetObject (inst, false) as WebContext;
				bool __result;
				__result = __obj.OnUserMessageReceived (GLib.Object.GetObject(message) as WebKit.UserMessage);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebContext), ConnectionMethod="OverrideUserMessageReceived")]
		protected virtual bool OnUserMessageReceived (WebKit.UserMessage message)
		{
			return InternalUserMessageReceived (message);
		}

		private bool InternalUserMessageReceived (WebKit.UserMessage message)
		{
			UserMessageReceivedNativeDelegate unmanaged = class_abi.BaseOverride<UserMessageReceivedNativeDelegate>(this.LookupGType(), "user_message_received");
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle, message == null ? IntPtr.Zero : message.Handle);
			return __result;
		}


		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _class_abi = null;
		static public unsafe new GLib.AbiStruct class_abi {
			get {
				if (_class_abi == null)
					_class_abi = new GLib.AbiStruct (new List<GLib.AbiField>{ 
						new GLib.AbiField("download_started"
							, GLib.Object.class_abi.Fields
							, (uint) sizeof( IntPtr ) // download_started
							, null
							, "initialize_web_extensions"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("initialize_web_extensions"
							, -1
							, (uint) sizeof( IntPtr ) // initialize_web_extensions
							, "download_started"
							, "initialize_notification_permissions"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("initialize_notification_permissions"
							, -1
							, (uint) sizeof( IntPtr ) // initialize_notification_permissions
							, "initialize_web_extensions"
							, "automation_started"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("automation_started"
							, -1
							, (uint) sizeof( IntPtr ) // automation_started
							, "initialize_notification_permissions"
							, "user_message_received"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("user_message_received"
							, -1
							, (uint) sizeof( IntPtr ) // user_message_received
							, "automation_started"
							, "_webkit_reserved0"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_webkit_reserved0"
							, -1
							, (uint) sizeof( IntPtr ) // _webkit_reserved0
							, "user_message_received"
							, "_webkit_reserved1"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_webkit_reserved1"
							, -1
							, (uint) sizeof( IntPtr ) // _webkit_reserved1
							, "_webkit_reserved0"
							, "_webkit_reserved2"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_webkit_reserved2"
							, -1
							, (uint) sizeof( IntPtr ) // _webkit_reserved2
							, "_webkit_reserved1"
							, null
							, (uint) sizeof(IntPtr)
							, 0
							),
					});

				return _class_abi;
			}
		}


		// End of the ABI representation.

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_type();
		static d_webkit_web_context_get_type webkit_web_context_get_type = FuncLoader.LoadFunction<d_webkit_web_context_get_type>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_type"));

		public static new GLib.GType GType { 
			get {
				IntPtr raw_ret = webkit_web_context_get_type();
				GLib.GType ret = new GLib.GType(raw_ret);
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_default();
		static d_webkit_web_context_get_default webkit_web_context_get_default = FuncLoader.LoadFunction<d_webkit_web_context_get_default>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_default"));

		public static WebKit.WebContext Default { 
			get {
				IntPtr raw_ret = webkit_web_context_get_default();
				WebKit.WebContext ret = GLib.Object.GetObject(raw_ret) as WebKit.WebContext;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_add_path_to_sandbox(IntPtr raw, IntPtr path, bool read_only);
		static d_webkit_web_context_add_path_to_sandbox webkit_web_context_add_path_to_sandbox = FuncLoader.LoadFunction<d_webkit_web_context_add_path_to_sandbox>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_add_path_to_sandbox"));

		public void AddPathToSandbox(string path, bool read_only) {
			IntPtr native_path = GLib.Marshaller.StringToFilenamePtr (path);
			webkit_web_context_add_path_to_sandbox(Handle, native_path, read_only);
			GLib.Marshaller.Free (native_path);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_allow_tls_certificate_for_host(IntPtr raw, IntPtr certificate, IntPtr host);
		static d_webkit_web_context_allow_tls_certificate_for_host webkit_web_context_allow_tls_certificate_for_host = FuncLoader.LoadFunction<d_webkit_web_context_allow_tls_certificate_for_host>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_allow_tls_certificate_for_host"));

		public void AllowTlsCertificateForHost(GLib.TlsCertificate certificate, string host) {
			IntPtr native_host = GLib.Marshaller.StringToPtrGStrdup (host);
			webkit_web_context_allow_tls_certificate_for_host(Handle, certificate == null ? IntPtr.Zero : certificate.Handle, native_host);
			GLib.Marshaller.Free (native_host);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_clear_cache(IntPtr raw);
		static d_webkit_web_context_clear_cache webkit_web_context_clear_cache = FuncLoader.LoadFunction<d_webkit_web_context_clear_cache>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_clear_cache"));

		public void ClearCache() {
			webkit_web_context_clear_cache(Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_download_uri(IntPtr raw, IntPtr uri);
		static d_webkit_web_context_download_uri webkit_web_context_download_uri = FuncLoader.LoadFunction<d_webkit_web_context_download_uri>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_download_uri"));

		public WebKit.Download DownloadUri(string uri) {
			IntPtr native_uri = GLib.Marshaller.StringToPtrGStrdup (uri);
			IntPtr raw_ret = webkit_web_context_download_uri(Handle, native_uri);
			WebKit.Download ret = GLib.Object.GetObject(raw_ret, true) as WebKit.Download;
			GLib.Marshaller.Free (native_uri);
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_webkit_web_context_get_cache_model(IntPtr raw);
		static d_webkit_web_context_get_cache_model webkit_web_context_get_cache_model = FuncLoader.LoadFunction<d_webkit_web_context_get_cache_model>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_cache_model"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_cache_model(IntPtr raw, int cache_model);
		static d_webkit_web_context_set_cache_model webkit_web_context_set_cache_model = FuncLoader.LoadFunction<d_webkit_web_context_set_cache_model>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_cache_model"));

		public WebKit.CacheModel CacheModel { 
			get {
				int raw_ret = webkit_web_context_get_cache_model(Handle);
				WebKit.CacheModel ret = (WebKit.CacheModel) raw_ret;
				return ret;
			}
			set {
				webkit_web_context_set_cache_model(Handle, (int) value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_cookie_manager(IntPtr raw);
		static d_webkit_web_context_get_cookie_manager webkit_web_context_get_cookie_manager = FuncLoader.LoadFunction<d_webkit_web_context_get_cookie_manager>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_cookie_manager"));

		public WebKit.CookieManager CookieManager { 
			get {
				IntPtr raw_ret = webkit_web_context_get_cookie_manager(Handle);
				WebKit.CookieManager ret = GLib.Object.GetObject(raw_ret) as WebKit.CookieManager;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_favicon_database(IntPtr raw);
		static d_webkit_web_context_get_favicon_database webkit_web_context_get_favicon_database = FuncLoader.LoadFunction<d_webkit_web_context_get_favicon_database>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_favicon_database"));

		public WebKit.FaviconDatabase FaviconDatabase { 
			get {
				IntPtr raw_ret = webkit_web_context_get_favicon_database(Handle);
				WebKit.FaviconDatabase ret = GLib.Object.GetObject(raw_ret) as WebKit.FaviconDatabase;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_favicon_database_directory(IntPtr raw);
		static d_webkit_web_context_get_favicon_database_directory webkit_web_context_get_favicon_database_directory = FuncLoader.LoadFunction<d_webkit_web_context_get_favicon_database_directory>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_favicon_database_directory"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_favicon_database_directory(IntPtr raw, IntPtr path);
		static d_webkit_web_context_set_favicon_database_directory webkit_web_context_set_favicon_database_directory = FuncLoader.LoadFunction<d_webkit_web_context_set_favicon_database_directory>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_favicon_database_directory"));

		public string FaviconDatabaseDirectory { 
			get {
				IntPtr raw_ret = webkit_web_context_get_favicon_database_directory(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
			set {
				IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value);
				webkit_web_context_set_favicon_database_directory(Handle, native_value);
				GLib.Marshaller.Free (native_value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_geolocation_manager(IntPtr raw);
		static d_webkit_web_context_get_geolocation_manager webkit_web_context_get_geolocation_manager = FuncLoader.LoadFunction<d_webkit_web_context_get_geolocation_manager>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_geolocation_manager"));

		public WebKit.GeolocationManager GeolocationManager { 
			get {
				IntPtr raw_ret = webkit_web_context_get_geolocation_manager(Handle);
				WebKit.GeolocationManager ret = GLib.Object.GetObject(raw_ret) as WebKit.GeolocationManager;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_get_plugins(IntPtr raw, IntPtr cancellable, GLibSharp.AsyncReadyCallbackNative cb, IntPtr user_data);
		static d_webkit_web_context_get_plugins webkit_web_context_get_plugins = FuncLoader.LoadFunction<d_webkit_web_context_get_plugins>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_plugins"));

		[Obsolete]
		public void GetPlugins(GLib.Cancellable cancellable, GLib.AsyncReadyCallback cb) {
			GLibSharp.AsyncReadyCallbackWrapper cb_wrapper = new GLibSharp.AsyncReadyCallbackWrapper (cb);
			cb_wrapper.PersistUntilCalled ();
			webkit_web_context_get_plugins(Handle, cancellable == null ? IntPtr.Zero : cancellable.Handle, cb_wrapper.NativeDelegate, IntPtr.Zero);
		}

		public void GetPlugins() {
			GetPlugins (null, null);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_plugins_finish(IntPtr raw, IntPtr _result, out IntPtr error);
		static d_webkit_web_context_get_plugins_finish webkit_web_context_get_plugins_finish = FuncLoader.LoadFunction<d_webkit_web_context_get_plugins_finish>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_plugins_finish"));

		[Obsolete]
		public unsafe WebKit.Plugin[] GetPluginsFinish(GLib.IAsyncResult _result) {
			IntPtr error = IntPtr.Zero;
			IntPtr raw_ret = webkit_web_context_get_plugins_finish(Handle, _result == null ? IntPtr.Zero : ((_result is GLib.Object) ? (_result as GLib.Object).Handle : (_result as GLib.AsyncResultAdapter).Handle), out error);
			WebKit.Plugin[] ret = GLib.Marshaller.ListPtrToArray<WebKit.Plugin, WebKit.Plugin> (raw_ret, true, true);
			if (error != IntPtr.Zero) throw new GLib.GException (error);
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_webkit_web_context_get_process_model(IntPtr raw);
		static d_webkit_web_context_get_process_model webkit_web_context_get_process_model = FuncLoader.LoadFunction<d_webkit_web_context_get_process_model>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_process_model"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_process_model(IntPtr raw, int process_model);
		static d_webkit_web_context_set_process_model webkit_web_context_set_process_model = FuncLoader.LoadFunction<d_webkit_web_context_set_process_model>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_process_model"));

		public WebKit.ProcessModel ProcessModel { 
			get {
				int raw_ret = webkit_web_context_get_process_model(Handle);
				WebKit.ProcessModel ret = (WebKit.ProcessModel) raw_ret;
				return ret;
			}
			set {
				webkit_web_context_set_process_model(Handle, (int) value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_webkit_web_context_get_sandbox_enabled(IntPtr raw);
		static d_webkit_web_context_get_sandbox_enabled webkit_web_context_get_sandbox_enabled = FuncLoader.LoadFunction<d_webkit_web_context_get_sandbox_enabled>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_sandbox_enabled"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_sandbox_enabled(IntPtr raw, bool enabled);
		static d_webkit_web_context_set_sandbox_enabled webkit_web_context_set_sandbox_enabled = FuncLoader.LoadFunction<d_webkit_web_context_set_sandbox_enabled>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_sandbox_enabled"));

		public bool SandboxEnabled { 
			get {
				bool raw_ret = webkit_web_context_get_sandbox_enabled(Handle);
				bool ret = raw_ret;
				return ret;
			}
			set {
				webkit_web_context_set_sandbox_enabled(Handle, value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_security_manager(IntPtr raw);
		static d_webkit_web_context_get_security_manager webkit_web_context_get_security_manager = FuncLoader.LoadFunction<d_webkit_web_context_get_security_manager>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_security_manager"));

		public WebKit.SecurityManager SecurityManager { 
			get {
				IntPtr raw_ret = webkit_web_context_get_security_manager(Handle);
				WebKit.SecurityManager ret = GLib.Object.GetObject(raw_ret) as WebKit.SecurityManager;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_webkit_web_context_get_spell_checking_enabled(IntPtr raw);
		static d_webkit_web_context_get_spell_checking_enabled webkit_web_context_get_spell_checking_enabled = FuncLoader.LoadFunction<d_webkit_web_context_get_spell_checking_enabled>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_spell_checking_enabled"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_spell_checking_enabled(IntPtr raw, bool enabled);
		static d_webkit_web_context_set_spell_checking_enabled webkit_web_context_set_spell_checking_enabled = FuncLoader.LoadFunction<d_webkit_web_context_set_spell_checking_enabled>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_spell_checking_enabled"));

		public bool SpellCheckingEnabled { 
			get {
				bool raw_ret = webkit_web_context_get_spell_checking_enabled(Handle);
				bool ret = raw_ret;
				return ret;
			}
			set {
				webkit_web_context_set_spell_checking_enabled(Handle, value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_context_get_spell_checking_languages(IntPtr raw);
		static d_webkit_web_context_get_spell_checking_languages webkit_web_context_get_spell_checking_languages = FuncLoader.LoadFunction<d_webkit_web_context_get_spell_checking_languages>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_spell_checking_languages"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_spell_checking_languages(IntPtr raw, IntPtr[] languages);
		static d_webkit_web_context_set_spell_checking_languages webkit_web_context_set_spell_checking_languages = FuncLoader.LoadFunction<d_webkit_web_context_set_spell_checking_languages>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_spell_checking_languages"));

		public string[] SpellCheckingLanguages { 
			get {
				IntPtr raw_ret = webkit_web_context_get_spell_checking_languages(Handle);
				string[] ret = GLib.Marshaller.NullTermPtrToStringArray (raw_ret, false);
				return ret;
			}
			set {
				int cnt_value = value == null ? 0 : value.Length;
				IntPtr[] native_value = new IntPtr [cnt_value + 1];
				for (int i = 0; i < cnt_value; i++)
					native_value [i] = GLib.Marshaller.StringToPtrGStrdup (value[i]);
				native_value [cnt_value] = IntPtr.Zero;
				webkit_web_context_set_spell_checking_languages(Handle, native_value);
				for (int i = 0; i < native_value.Length - 1; i++) {
					value [i] = GLib.Marshaller.Utf8PtrToString (native_value[i]);
					GLib.Marshaller.Free (native_value[i]);
				}
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_webkit_web_context_get_tls_errors_policy(IntPtr raw);
		static d_webkit_web_context_get_tls_errors_policy webkit_web_context_get_tls_errors_policy = FuncLoader.LoadFunction<d_webkit_web_context_get_tls_errors_policy>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_tls_errors_policy"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_tls_errors_policy(IntPtr raw, int policy);
		static d_webkit_web_context_set_tls_errors_policy webkit_web_context_set_tls_errors_policy = FuncLoader.LoadFunction<d_webkit_web_context_set_tls_errors_policy>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_tls_errors_policy"));

		[Obsolete]
		public WebKit.TLSErrorsPolicy TlsErrorsPolicy { 
			get {
				int raw_ret = webkit_web_context_get_tls_errors_policy(Handle);
				WebKit.TLSErrorsPolicy ret = (WebKit.TLSErrorsPolicy) raw_ret;
				return ret;
			}
			set {
				webkit_web_context_set_tls_errors_policy(Handle, (int) value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate uint d_webkit_web_context_get_web_process_count_limit(IntPtr raw);
		static d_webkit_web_context_get_web_process_count_limit webkit_web_context_get_web_process_count_limit = FuncLoader.LoadFunction<d_webkit_web_context_get_web_process_count_limit>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_get_web_process_count_limit"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_web_process_count_limit(IntPtr raw, uint limit);
		static d_webkit_web_context_set_web_process_count_limit webkit_web_context_set_web_process_count_limit = FuncLoader.LoadFunction<d_webkit_web_context_set_web_process_count_limit>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_web_process_count_limit"));

		[Obsolete]
		public uint WebProcessCountLimit { 
			get {
				uint raw_ret = webkit_web_context_get_web_process_count_limit(Handle);
				uint ret = raw_ret;
				return ret;
			}
			set {
				webkit_web_context_set_web_process_count_limit(Handle, value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_initialize_notification_permissions(IntPtr raw, IntPtr allowed_origins, IntPtr disallowed_origins);
		static d_webkit_web_context_initialize_notification_permissions webkit_web_context_initialize_notification_permissions = FuncLoader.LoadFunction<d_webkit_web_context_initialize_notification_permissions>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_initialize_notification_permissions"));

		public void InitializeNotificationPermissions(GLib.List allowed_origins, GLib.List disallowed_origins) {
			webkit_web_context_initialize_notification_permissions(Handle, allowed_origins == null ? IntPtr.Zero : allowed_origins.Handle, disallowed_origins == null ? IntPtr.Zero : disallowed_origins.Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_webkit_web_context_is_automation_allowed(IntPtr raw);
		static d_webkit_web_context_is_automation_allowed webkit_web_context_is_automation_allowed = FuncLoader.LoadFunction<d_webkit_web_context_is_automation_allowed>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_is_automation_allowed"));

		public bool IsAutomationAllowed { 
			get {
				bool raw_ret = webkit_web_context_is_automation_allowed(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_webkit_web_context_is_ephemeral(IntPtr raw);
		static d_webkit_web_context_is_ephemeral webkit_web_context_is_ephemeral = FuncLoader.LoadFunction<d_webkit_web_context_is_ephemeral>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_is_ephemeral"));

		public bool IsEphemeral { 
			get {
				bool raw_ret = webkit_web_context_is_ephemeral(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_prefetch_dns(IntPtr raw, IntPtr hostname);
		static d_webkit_web_context_prefetch_dns webkit_web_context_prefetch_dns = FuncLoader.LoadFunction<d_webkit_web_context_prefetch_dns>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_prefetch_dns"));

		public void PrefetchDns(string hostname) {
			IntPtr native_hostname = GLib.Marshaller.StringToPtrGStrdup (hostname);
			webkit_web_context_prefetch_dns(Handle, native_hostname);
			GLib.Marshaller.Free (native_hostname);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_register_uri_scheme(IntPtr raw, IntPtr scheme, WebKitSharp.URISchemeRequestCallbackNative cb, IntPtr user_data, GLib.DestroyNotify user_data_destroy_func);
		static d_webkit_web_context_register_uri_scheme webkit_web_context_register_uri_scheme = FuncLoader.LoadFunction<d_webkit_web_context_register_uri_scheme>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_register_uri_scheme"));

		public void RegisterUriScheme(string scheme, WebKit.URISchemeRequestCallback cb) {
			IntPtr native_scheme = GLib.Marshaller.StringToPtrGStrdup (scheme);
			WebKitSharp.URISchemeRequestCallbackWrapper cb_wrapper = new WebKitSharp.URISchemeRequestCallbackWrapper (cb);
			IntPtr user_data;
			GLib.DestroyNotify user_data_destroy_func;
			if (cb == null) {
				user_data = IntPtr.Zero;
				user_data_destroy_func = null;
			} else {
				user_data = (IntPtr) GCHandle.Alloc (cb_wrapper);
				user_data_destroy_func = GLib.DestroyHelper.NotifyHandler;
			}
			webkit_web_context_register_uri_scheme(Handle, native_scheme, cb_wrapper.NativeDelegate, user_data, user_data_destroy_func);
			GLib.Marshaller.Free (native_scheme);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_send_message_to_all_extensions(IntPtr raw, IntPtr message);
		static d_webkit_web_context_send_message_to_all_extensions webkit_web_context_send_message_to_all_extensions = FuncLoader.LoadFunction<d_webkit_web_context_send_message_to_all_extensions>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_send_message_to_all_extensions"));

		public void SendMessageToAllExtensions(WebKit.UserMessage message) {
			webkit_web_context_send_message_to_all_extensions(Handle, message == null ? IntPtr.Zero : message.Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_additional_plugins_directory(IntPtr raw, IntPtr directory);
		static d_webkit_web_context_set_additional_plugins_directory webkit_web_context_set_additional_plugins_directory = FuncLoader.LoadFunction<d_webkit_web_context_set_additional_plugins_directory>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_additional_plugins_directory"));

		[Obsolete]
		public string AdditionalPluginsDirectory { 
			set {
				IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value);
				webkit_web_context_set_additional_plugins_directory(Handle, native_value);
				GLib.Marshaller.Free (native_value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_automation_allowed(IntPtr raw, bool allowed);
		static d_webkit_web_context_set_automation_allowed webkit_web_context_set_automation_allowed = FuncLoader.LoadFunction<d_webkit_web_context_set_automation_allowed>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_automation_allowed"));

		public bool AutomationAllowed { 
			set {
				webkit_web_context_set_automation_allowed(Handle, value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_disk_cache_directory(IntPtr raw, IntPtr directory);
		static d_webkit_web_context_set_disk_cache_directory webkit_web_context_set_disk_cache_directory = FuncLoader.LoadFunction<d_webkit_web_context_set_disk_cache_directory>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_disk_cache_directory"));

		[Obsolete]
		public string DiskCacheDirectory { 
			set {
				IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value);
				webkit_web_context_set_disk_cache_directory(Handle, native_value);
				GLib.Marshaller.Free (native_value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_network_proxy_settings(IntPtr raw, int proxy_mode, IntPtr proxy_settings);
		static d_webkit_web_context_set_network_proxy_settings webkit_web_context_set_network_proxy_settings = FuncLoader.LoadFunction<d_webkit_web_context_set_network_proxy_settings>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_network_proxy_settings"));

		[Obsolete]
		public void SetNetworkProxySettings(WebKit.NetworkProxyMode proxy_mode, WebKit.NetworkProxySettings proxy_settings) {
			IntPtr native_proxy_settings = GLib.Marshaller.StructureToPtrAlloc (proxy_settings);
			webkit_web_context_set_network_proxy_settings(Handle, (int) proxy_mode, native_proxy_settings);
			Marshal.FreeHGlobal (native_proxy_settings);
		}

		public void SetNetworkProxySettings(WebKit.NetworkProxyMode proxy_mode) {
			SetNetworkProxySettings (proxy_mode, WebKit.NetworkProxySettings.Zero);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_preferred_languages(IntPtr raw, IntPtr[] languages);
		static d_webkit_web_context_set_preferred_languages webkit_web_context_set_preferred_languages = FuncLoader.LoadFunction<d_webkit_web_context_set_preferred_languages>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_preferred_languages"));

		public string[] PreferredLanguages { 
			set {
				int cnt_value = value == null ? 0 : value.Length;
				IntPtr[] native_value = new IntPtr [cnt_value + 1];
				for (int i = 0; i < cnt_value; i++)
					native_value [i] = GLib.Marshaller.StringToPtrGStrdup (value[i]);
				native_value [cnt_value] = IntPtr.Zero;
				webkit_web_context_set_preferred_languages(Handle, native_value);
				for (int i = 0; i < native_value.Length - 1; i++) {
					value [i] = GLib.Marshaller.Utf8PtrToString (native_value[i]);
					GLib.Marshaller.Free (native_value[i]);
				}
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_web_extensions_directory(IntPtr raw, IntPtr directory);
		static d_webkit_web_context_set_web_extensions_directory webkit_web_context_set_web_extensions_directory = FuncLoader.LoadFunction<d_webkit_web_context_set_web_extensions_directory>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_web_extensions_directory"));

		public string WebExtensionsDirectory { 
			set {
				IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value);
				webkit_web_context_set_web_extensions_directory(Handle, native_value);
				GLib.Marshaller.Free (native_value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_webkit_web_context_set_web_extensions_initialization_user_data(IntPtr raw, IntPtr user_data);
		static d_webkit_web_context_set_web_extensions_initialization_user_data webkit_web_context_set_web_extensions_initialization_user_data = FuncLoader.LoadFunction<d_webkit_web_context_set_web_extensions_initialization_user_data>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_context_set_web_extensions_initialization_user_data"));

		public GLib.Variant WebExtensionsInitializationUserData { 
			set {
				webkit_web_context_set_web_extensions_initialization_user_data(Handle, value == null ? IntPtr.Zero : value.Handle);
			}
		}


		static WebContext ()
		{
			GtkSharp.WebkitGtkSharp.ObjectManager.Initialize ();
		}

		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _abi_info = null;
		static public unsafe new GLib.AbiStruct abi_info {
			get {
				if (_abi_info == null)
					_abi_info = new GLib.AbiStruct (new List<GLib.AbiField>{ 
						new GLib.AbiField("priv"
							, GLib.Object.abi_info.Fields
							, (uint) sizeof( IntPtr ) // priv
							, null
							, null
							, (uint) sizeof(IntPtr)
							, 0
							),
					});

				return _abi_info;
			}
		}


		// End of the ABI representation.

#endregion
	}
}
