[gitg: 1/5] Switch to using webkit2 for the diff view



commit 6fb216bd73e26a7fc12a2367660ebb48c51f5a45
Author: Jesse van den Kieboom <jesse vandenkieboom epfl ch>
Date:   Fri Aug 17 11:19:35 2012 +0200

    Switch to using webkit2 for the diff view
    
    https://bugs.webkit.org/show_bug.cgi?id=94313
    https://bugs.webkit.org/show_bug.cgi?id=94314
    https://bugs.webkit.org/show_bug.cgi?id=94315

 configure.ac                                       |    7 +-
 libgitg-gtk/Makefile.am                            |    3 +-
 libgitg-gtk/gitg-gtk-diff-view-request-diff.vala   |    8 +-
 .../gitg-gtk-diff-view-request-resource.vala       |    8 +-
 libgitg-gtk/gitg-gtk-diff-view-request.vala        |  173 +-
 libgitg-gtk/gitg-gtk-diff-view.vala                |  125 +-
 libgitg-gtk/resources/base.js                      |    2 +-
 plugins/diff/gitg-diff.vala                        |    8 +-
 vapi/WebKit-3.0.gir                                |27139 --------------------
 vapi/{webkitgtk-3.0.deps => webkit2gtk-3.0.deps}   |    0
 vapi/webkit2gtk-3.0.vapi                           |  732 +
 vapi/webkitgtk-3.0.vapi                            | 4818 ----
 12 files changed, 871 insertions(+), 32152 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 42e1c18..1ce0e1c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -154,11 +154,11 @@ AC_SUBST(LIBGITG_LIBS)
 
 AC_SUBST(GITG_VALAFLAGS)
 
-WEBKITGTK_REQUIRED_VERSION=1.8.0
+WEBKITGTK_REQUIRED_VERSION=1.9.6
 
 PKG_CHECK_MODULES(LIBGITG_GTK, [
 	gtk+-3.0 >= $GTK_REQUIRED_VERSION
-	webkitgtk-3.0 >= $WEBKITGTK_REQUIRED_VERSION
+	webkit2gtk-3.0 >= $WEBKITGTK_REQUIRED_VERSION
 	gee-1.0
 	json-glib-1.0
 ])
@@ -244,7 +244,8 @@ GITG_PLUGIN_VALAFLAGS="				\
 	--pkg libpeas-1.0			\
 	--pkg gee-1.0				\
 	--pkg json-glib-1.0			\
-	--pkg webkitgtk-3.0			\
+	--pkg libsoup-2.4			\
+	--pkg webkit2gtk-3.0			\
 	--pkg config				\
 	--pkg posix				\
 	\$(GITG_VALAFLAGS)			\
diff --git a/libgitg-gtk/Makefile.am b/libgitg-gtk/Makefile.am
index f90b28e..94ba287 100644
--- a/libgitg-gtk/Makefile.am
+++ b/libgitg-gtk/Makefile.am
@@ -26,7 +26,8 @@ AM_VALAFLAGS = 					\
 	--pkg libgitg-1.0			\
 	--pkg gtk+-3.0				\
 	--pkg gio-2.0				\
-	--pkg webkitgtk-3.0			\
+	--pkg libsoup-2.4			\
+	--pkg webkit2gtk-3.0			\
 	--pkg gee-1.0				\
 	--pkg json-glib-1.0			\
 	--pkg egglistbox			\
diff --git a/libgitg-gtk/gitg-gtk-diff-view-request-diff.vala b/libgitg-gtk/gitg-gtk-diff-view-request-diff.vala
index 4f871e9..a45e38e 100644
--- a/libgitg-gtk/gitg-gtk-diff-view-request-diff.vala
+++ b/libgitg-gtk/gitg-gtk-diff-view-request-diff.vala
@@ -18,11 +18,11 @@
  */
 namespace GitgGtk
 {
-	class DiffViewRequestDiff : DiffViewRequestHandler
+	class DiffViewRequestDiff : DiffViewRequest
 	{
-		public DiffViewRequestDiff(DiffView? view, Soup.URI uri)
+		public DiffViewRequestDiff(DiffView? view, WebKit.URISchemeRequest request, Soup.URI uri)
 		{
-			base(view, uri);
+			base(view, request, uri);
 			d_mimetype = "application/json";
 		}
 
@@ -282,7 +282,7 @@ namespace GitgGtk
 			return new MemoryInputStream.from_data(data, stream.destroy_function);
 		}
 
-		public override InputStream? send(Cancellable? cancellable) throws GLib.Error
+		public override InputStream? run_async(Cancellable? cancellable) throws GLib.Error
 		{
 			if (d_view == null)
 			{
diff --git a/libgitg-gtk/gitg-gtk-diff-view-request-resource.vala b/libgitg-gtk/gitg-gtk-diff-view-request-resource.vala
index 9ef9dea..f7a4df1 100644
--- a/libgitg-gtk/gitg-gtk-diff-view-request-resource.vala
+++ b/libgitg-gtk/gitg-gtk-diff-view-request-resource.vala
@@ -18,13 +18,13 @@
  */
 namespace GitgGtk
 {
-	class DiffViewRequestResource : DiffViewRequestHandler
+	class DiffViewRequestResource : DiffViewRequest
 	{
 		private File? d_resource;
 
-		public DiffViewRequestResource(DiffView? view, Soup.URI uri)
+		public DiffViewRequestResource(DiffView? view, WebKit.URISchemeRequest request, Soup.URI uri)
 		{
-			base(view, uri);
+			base(view, request, uri);
 		}
 
 		private File ensure_resource()
@@ -54,7 +54,7 @@ namespace GitgGtk
 			return d_resource;
 		}
 
-		public override InputStream? send(Cancellable? cancellable) throws GLib.Error
+		public override InputStream? run_async(Cancellable? cancellable) throws GLib.Error
 		{
 			var f = ensure_resource();
 
diff --git a/libgitg-gtk/gitg-gtk-diff-view-request.vala b/libgitg-gtk/gitg-gtk-diff-view-request.vala
index 91955f1..e889098 100644
--- a/libgitg-gtk/gitg-gtk-diff-view-request.vala
+++ b/libgitg-gtk/gitg-gtk-diff-view-request.vala
@@ -18,106 +18,48 @@
  */
 namespace GitgGtk
 {
-	class DiffViewRequestHandler
+	public class DiffViewRequest
 	{
 		protected DiffView? d_view;
 		protected Soup.URI d_uri;
 		protected string? d_mimetype;
 		protected int64 d_size;
+		protected WebKit.URISchemeRequest d_request;
 
-		public DiffViewRequestHandler(DiffView? view, Soup.URI uri)
+		public DiffViewRequest(DiffView? view, WebKit.URISchemeRequest request, Soup.URI uri)
 		{
 			d_view = view;
+			d_request = request;
 			d_uri = uri;
+			d_size = -1;
+			d_mimetype = null;
 		}
 
-		public virtual InputStream? send(Cancellable? cancellable) throws GLib.Error
+		public DiffView? view
 		{
-			return null;
-		}
-
-		public virtual InputStream? send_async(Cancellable? cancellable) throws GLib.Error
-		{
-			return send(cancellable);
-		}
-
-		public virtual int64 get_content_length()
-		{
-			return d_size;
-		}
-
-		public virtual string get_content_type()
-		{
-			return d_mimetype;
-		}
-	}
-
-	class DiffViewRequest : Soup.Request
-	{
-		private DiffViewRequestHandler? d_handler;
-		private string? d_contenttype;
-
-		static construct
-		{
-			schemes = new string[] {"gitg-internal"};
-		}
-
-		public override InputStream? send(Cancellable? cancellable) throws GLib.Error
-		{
-			return d_handler.send(cancellable);
-		}
-
-		private class SendResult : Object, AsyncResult
-		{
-			public InputStream? stream;
-			public Object source;
-
-			public SendResult(Object source, InputStream? stream)
-			{
-				this.source = source;
-				this.stream = stream;
-			}
-
-			public Object get_source_object()
-			{
-				return source;
-			}
-
-			public void *get_user_data()
-			{
-				return (void *)stream;
-			}
-
-			public bool is_tagged(void *source_tag)
-			{
-				// FIXME: is this right?
-				return false;
-			}
+			get { return d_view; }
 		}
 
-		public override InputStream? send_finish(AsyncResult result) throws GLib.Error
+		protected virtual InputStream? run_async(Cancellable? cancellable) throws GLib.Error
 		{
-			var res = result as SendResult;
-
-			return res.stream;
+			return null;
 		}
 
-		private async InputStream? run_async(Cancellable? cancellable)
+		private async InputStream? run_impl(Cancellable? cancellable) throws GLib.Error
 		{
-			SourceFunc callback = run_async.callback;
+			SourceFunc callback = run_impl.callback;
 			InputStream? ret = null;
 
 			new Thread<void*>("gitg-gtk-diff-view", () => {
 				// Actually do it
 				try
 				{
-					ret = d_handler.send_async(cancellable);
+					ret = run_async(cancellable);
 				}
 				catch {}
 
 				// Schedule the callback in idle
 				Idle.add((owned)callback);
-
 				return null;
 			});
 
@@ -128,90 +70,43 @@ namespace GitgGtk
 			return ret;
 		}
 
-		public override void send_async(Cancellable? cancellable,
-		                                AsyncReadyCallback callback) throws GLib.Error
-		{
-			// run the diff in a thread
-			run_async.begin(cancellable, (obj, res) => {
-				var r = new SendResult(obj, run_async.end(res));
-
-				callback(this, r);
-			});
-		}
-
-		private Gee.HashMap<string, DiffView> diffmap
+		public void run(Cancellable? cancellable)
 		{
-			get
-			{
-				return session.get_data<Gee.HashMap<string, DiffView>>("GitgGtkDiffViewMap");
-			}
-		}
-
-		public override bool check_uri(Soup.URI uri)
-		{
-			var path = uri.get_path();
-			var parts = path.split("/", 3);
-
-			if (parts.length != 3)
-			{
-				return false;
-			}
-
-			uri.set_scheme(parts[1]);
-			uri.set_path("/" + parts[2]);
-			d_handler = null;
-
-			DiffView? view = null;
-
-			var q = uri.get_query();
+			run_impl.begin(cancellable, (obj, res) => {
+				InputStream? stream = null;
 
-			if (q != null)
-			{
-				var f = Soup.Form.decode(q);
-				var vid = f.lookup("viewid");
-
-				if (vid != null && diffmap.has_key(vid))
+				try
 				{
-					view = diffmap[vid];
+					stream = run_impl.end(res);
 				}
-			}
+				catch {}
 
-			switch (parts[1])
-			{
-				case "resource":
-					d_handler = new DiffViewRequestResource(view, uri);
-				break;
-				case "diff":
-					d_handler = new DiffViewRequestDiff(view, uri);
-				break;
-			}
+				if (stream == null)
+				{
+					stream = new MemoryInputStream();
+				}
 
-			return d_handler != null;
+				d_request.finish(stream,
+				                 get_content_length(),
+				                 get_content_type());
+			});
 		}
 
-		public override int64 get_content_length()
+		public virtual int64 get_content_length()
 		{
-			if (d_handler != null)
-			{
-				return d_handler.get_content_length();
-			}
-
-			return 0;
+			return d_size;
 		}
 
-		public override unowned string? get_content_type()
+		public virtual string get_content_type()
 		{
-			if (d_handler != null)
+			if (d_mimetype != null)
 			{
-				d_contenttype = d_handler.get_content_type();
+				return d_mimetype;
 			}
-
-			if (d_contenttype == null)
+			else
 			{
-				d_contenttype = "application/octet-stream";
+				return "application/octet-stream";
 			}
-
-			return d_contenttype;
 		}
 	}
 }
diff --git a/libgitg-gtk/gitg-gtk-diff-view.vala b/libgitg-gtk/gitg-gtk-diff-view.vala
index f3d5258..5c6159e 100644
--- a/libgitg-gtk/gitg-gtk-diff-view.vala
+++ b/libgitg-gtk/gitg-gtk-diff-view.vala
@@ -32,6 +32,7 @@ namespace GitgGtk
 		public File? custom_js { get; construct; }
 		public Ggit.DiffOptions? options { get; construct set; }
 
+		private Cancellable d_cancellable;
 		private bool d_loaded;
 
 		public Ggit.Diff? diff
@@ -60,19 +61,67 @@ namespace GitgGtk
 
 		static construct
 		{
-			var r = new Soup.Requester();
+			s_diffmap = new Gee.HashMap<string, GitgGtk.DiffView>();
 
-			r.add_feature(typeof(DiffViewRequest));
+			var context = WebKit.WebContext.get_default();
+			context.register_uri_scheme("gitg-diff", gitg_diff_request);
+		}
 
-			var session = WebKit.get_default_session();
+		private static DiffViewRequest? parse_request(WebKit.URISchemeRequest request)
+		{
+			var uri = new Soup.URI(request.get_uri());
+			var path = uri.get_path();
+			var parts = path.split("/", 3);
 
-			session.add_feature(r);
+			if (parts.length != 3)
+			{
+				return null;
+			}
 
-			s_diffmap = new Gee.HashMap<string, GitgGtk.DiffView>();
-			session.set_data("GitgGtkDiffViewMap", s_diffmap);
+			uri.set_scheme(parts[1]);
+			uri.set_path("/" + parts[2]);
+
+			DiffView? view = null;
+
+			var q = uri.get_query();
+
+			if (q != null)
+			{
+				var f = Soup.Form.decode(q);
+				var vid = f.lookup("viewid");
+
+				if (vid != null && s_diffmap.has_key(vid))
+				{
+					view = s_diffmap[vid];
+				}
+			}
+
+			switch (parts[1])
+			{
+				case "resource":
+					return new DiffViewRequestResource(view, request, uri);
+				case "diff":
+					return new DiffViewRequestDiff(view, request, uri);
+			}
+
+			return null;
+		}
+
+		private static void gitg_diff_request(WebKit.URISchemeRequest request)
+		{
+			var req = parse_request(request);
+
+			if (req.view != null)
+			{
+				req.view.request(req);
+			}
+			else
+			{
+				req.run(null);
+			}
 		}
 
-		private void parse_font(string val, ref string family, ref int size)
+		private void parse_font(string val, ref string family, ref uint size)
 		{
 			var fdesc = Pango.FontDescription.from_string(val);
 
@@ -97,6 +146,11 @@ namespace GitgGtk
 			}
 		}
 
+		public void request(DiffViewRequest request)
+		{
+			request.run(d_cancellable);
+		}
+
 		private void update_font_settings()
 		{
 			var settings = get_settings();
@@ -118,14 +172,11 @@ namespace GitgGtk
 			settings.default_monospace_font_size = fsize;
 		}
 
-		construct
+		protected override void constructed()
 		{
-			var settings = new WebKit.WebSettings();
+			base.constructed();
 
-			if (custom_css != null)
-			{
-				settings.user_stylesheet_uri = custom_css.get_uri();
-			}
+			var settings = new WebKit.Settings();
 
 			var dbg = Environment.get_variable("GITG_GTK_DIFF_VIEW_DEBUG") != "";
 
@@ -149,34 +200,21 @@ namespace GitgGtk
 				update_font_settings();
 			});
 
-			if (dbg)
-			{
-				var inspector = get_inspector();
-
-				inspector.inspect_web_view.connect((insp, view) => {
-					var wnd = new Gtk.Window();
-					wnd.set_default_size(400, 300);
-
-					var nvw = new WebKit.WebView();
-					nvw.show();
-
-					wnd.add(nvw);
-					wnd.show();
-
-					return wnd.get_child() as WebKit.WebView;
-				});
-			}
-
 			++s_diff_id;
 			s_diffmap[s_diff_id.to_string()] = this;
 
-			document_load_finished.connect((v, fr) => {
-				d_loaded = true;
-				update();
+			d_cancellable = new Cancellable();
+
+			load_changed.connect((v, ev) => {
+				if (ev == WebKit.LoadEvent.FINISHED)
+				{
+					d_loaded = true;
+					update();
+				}
 			});
 
 			// Load the diff base html
-			var uri = "gitg-internal:///resource/org/gnome/gitg/gtk/diff-view/base.html?viewid=" + s_diff_id.to_string();
+			var uri = "gitg-diff:///resource/org/gnome/gitg/gtk/diff-view/base.html?viewid=" + s_diff_id.to_string();
 
 			// Add custom js as a query parameter
 			if (custom_js != null)
@@ -184,6 +222,12 @@ namespace GitgGtk
 				uri += "&js=" + Soup.URI.encode(custom_js.get_uri(), null);
 			}
 
+			// Add custom css as a query parameter
+			if (custom_css != null)
+			{
+				uri += "&css=" + Soup.URI.encode(custom_css.get_uri(), null);
+			}
+
 			d_loaded = false;
 
 			load_uri(uri);
@@ -201,6 +245,10 @@ namespace GitgGtk
 				return;
 			}
 
+			// Cancel running operations
+			d_cancellable.cancel();
+			d_cancellable = new Cancellable();
+
 			if (d_commit != null)
 			{
 				d_diff = null;
@@ -239,7 +287,12 @@ namespace GitgGtk
 
 			if (d_diff != null)
 			{
-				execute_script("update_diff();");
+				run_javascript.begin("update_diff();", d_cancellable, (obj, res) => {
+					try
+					{
+						run_javascript.end(res);
+					} catch {}
+				});
 			}
 		}
 	}
diff --git a/libgitg-gtk/resources/base.js b/libgitg-gtk/resources/base.js
index b201545..44b704f 100644
--- a/libgitg-gtk/resources/base.js
+++ b/libgitg-gtk/resources/base.js
@@ -201,7 +201,7 @@ function update_diff()
 
 	var t = (new Date()).getTime()
 
-	r.open("GET", "gitg-internal:/diff/?t=" + t + "&viewid=" + params.viewid);
+	r.open("GET", "gitg-diff:/diff/?t=" + t + "&viewid=" + params.viewid);
 	r.send();
 }
 
diff --git a/plugins/diff/gitg-diff.vala b/plugins/diff/gitg-diff.vala
index 2fa6f07..d2bf82a 100644
--- a/plugins/diff/gitg-diff.vala
+++ b/plugins/diff/gitg-diff.vala
@@ -25,19 +25,13 @@ namespace GitgDiff
 		private const string version = Gitg.Config.VERSION;
 
 		public GitgExt.Application? application { owned get; construct set; }
-		private Gtk.ScrolledWindow d_sw;
 		private GitgGtk.DiffView d_diff;
 		private GitgExt.ObjectSelection? d_view;
 
 		construct
 		{
 			d_diff = new GitgGtk.DiffView(null);
-			d_sw = new Gtk.ScrolledWindow(null, null);
-
-			d_sw.show();
 			d_diff.show();
-
-			d_sw.add(d_diff);
 		}
 
 		public string id
@@ -104,7 +98,7 @@ namespace GitgDiff
 					on_selection_changed(objsel);
 				}
 
-				return d_sw;
+				return d_diff;
 			}
 		}
 
diff --git a/vapi/webkitgtk-3.0.deps b/vapi/webkit2gtk-3.0.deps
similarity index 100%
rename from vapi/webkitgtk-3.0.deps
rename to vapi/webkit2gtk-3.0.deps
diff --git a/vapi/webkit2gtk-3.0.vapi b/vapi/webkit2gtk-3.0.vapi
new file mode 100644
index 0000000..34766bd
--- /dev/null
+++ b/vapi/webkit2gtk-3.0.vapi
@@ -0,0 +1,732 @@
+/* webkit2gtk-3.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "WebKit", gir_namespace = "WebKit2", gir_version = "3.0", lower_case_cprefix = "webkit_")]
+namespace WebKit {
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_back_forward_list_get_type ()")]
+	public class BackForwardList : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected BackForwardList ();
+		public unowned WebKit.BackForwardListItem get_back_item ();
+		public GLib.List<weak WebKit.BackForwardListItem> get_back_list ();
+		public GLib.List<weak WebKit.BackForwardListItem> get_back_list_with_limit (uint limit);
+		public unowned WebKit.BackForwardListItem get_current_item ();
+		public unowned WebKit.BackForwardListItem get_forward_item ();
+		public GLib.List<weak WebKit.BackForwardListItem> get_forward_list ();
+		public GLib.List<weak WebKit.BackForwardListItem> get_forward_list_with_limit (uint limit);
+		public uint get_length ();
+		public unowned WebKit.BackForwardListItem get_nth_item (int index);
+		public signal void changed (WebKit.BackForwardListItem? item_added, void* items_removed);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_back_forward_list_item_get_type ()")]
+	public class BackForwardListItem : GLib.InitiallyUnowned {
+		[CCode (has_construct_function = false)]
+		protected BackForwardListItem ();
+		public unowned string get_original_uri ();
+		public unowned string get_title ();
+		public unowned string get_uri ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_context_menu_get_type ()")]
+	public class ContextMenu : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public ContextMenu ();
+		public void append (WebKit.ContextMenuItem item);
+		public unowned WebKit.ContextMenuItem first ();
+		public unowned WebKit.ContextMenuItem get_item_at_position (uint position);
+		public unowned GLib.List<WebKit.ContextMenuItem> get_items ();
+		public uint get_n_items ();
+		public void insert (WebKit.ContextMenuItem item, int position);
+		public unowned WebKit.ContextMenuItem last ();
+		public void move_item (WebKit.ContextMenuItem item, int position);
+		public void prepend (WebKit.ContextMenuItem item);
+		public void remove (WebKit.ContextMenuItem item);
+		public void remove_all ();
+		[CCode (has_construct_function = false)]
+		public ContextMenu.with_items (GLib.List<WebKit.ContextMenuItem> items);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_context_menu_item_get_type ()")]
+	public class ContextMenuItem : GLib.InitiallyUnowned {
+		[CCode (has_construct_function = false)]
+		public ContextMenuItem (Gtk.Action action);
+		[CCode (has_construct_function = false)]
+		public ContextMenuItem.from_stock_action (WebKit.ContextMenuAction action);
+		[CCode (has_construct_function = false)]
+		public ContextMenuItem.from_stock_action_with_label (WebKit.ContextMenuAction action, string label);
+		public unowned Gtk.Action get_action ();
+		public WebKit.ContextMenuAction get_stock_action ();
+		public unowned WebKit.ContextMenu get_submenu ();
+		public bool is_separator ();
+		[CCode (has_construct_function = false)]
+		public ContextMenuItem.separator ();
+		public void set_submenu (WebKit.ContextMenu? submenu);
+		[CCode (has_construct_function = false)]
+		public ContextMenuItem.with_submenu (string label, WebKit.ContextMenu submenu);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_cookie_manager_get_type ()")]
+	public class CookieManager : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected CookieManager ();
+		public void delete_all_cookies ();
+		public void delete_cookies_for_domain (string domain);
+		public async WebKit.CookieAcceptPolicy get_accept_policy (GLib.Cancellable? cancellable) throws GLib.Error;
+		[CCode (array_length = false, array_null_terminated = true)]
+		public async string[] get_domains_with_cookies (GLib.Cancellable? cancellable) throws GLib.Error;
+		public void set_accept_policy (WebKit.CookieAcceptPolicy policy);
+		public void set_persistent_storage (string filename, WebKit.CookiePersistentStorage storage);
+		public signal void changed ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_download_get_type ()")]
+	public class Download : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Download ();
+		public void cancel ();
+		public unowned string get_destination ();
+		public double get_elapsed_time ();
+		public double get_estimated_progress ();
+		public uint64 get_received_data_length ();
+		public unowned WebKit.URIRequest get_request ();
+		public unowned WebKit.URIResponse get_response ();
+		public void set_destination (string uri);
+		public string destination { get; }
+		public double estimated_progress { get; }
+		public WebKit.URIResponse response { get; }
+		public signal bool created_destination (string destination);
+		public virtual signal bool decide_destination (string suggested_filename);
+		public signal void failed (void* error);
+		public signal void finished ();
+		public signal void received_data (uint64 data_length);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_file_chooser_request_get_type ()")]
+	public class FileChooserRequest : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected FileChooserRequest ();
+		public void cancel ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_mime_types ();
+		public unowned Gtk.FileFilter get_mime_types_filter ();
+		public bool get_select_multiple ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_selected_files ();
+		public void select_files ([CCode (array_length = false, array_null_terminated = true)] string[] files);
+		[NoAccessorMethod]
+		public Gtk.FileFilter filter { owned get; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] mime_types { get; }
+		public bool select_multiple { get; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] selected_files { get; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_find_controller_get_type ()")]
+	public class FindController : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected FindController ();
+		public void count_matches (string search_text, uint32 find_options, uint max_match_count);
+		public uint get_max_match_count ();
+		public uint32 get_options ();
+		public unowned string get_search_text ();
+		public unowned WebKit.WebView get_web_view ();
+		public void search (string search_text, uint32 find_options, uint max_match_count);
+		public void search_finish ();
+		public void search_next ();
+		public void search_previous ();
+		public uint max_match_count { get; }
+		public WebKit.FindOptions options { get; }
+		[NoAccessorMethod]
+		public string text { owned get; }
+		public WebKit.WebView web_view { get; construct; }
+		public signal void counted_matches (uint match_count);
+		public signal void failed_to_find_text ();
+		public signal void found_text (uint match_count);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_form_submission_request_get_type ()")]
+	public class FormSubmissionRequest : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected FormSubmissionRequest ();
+		public unowned GLib.HashTable<void*,void*> get_text_fields ();
+		public void submit ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_geolocation_permission_request_get_type ()")]
+	public class GeolocationPermissionRequest : GLib.Object, WebKit.PermissionRequest {
+		[CCode (has_construct_function = false)]
+		protected GeolocationPermissionRequest ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_hit_test_result_get_type ()")]
+	public class HitTestResult : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected HitTestResult ();
+		public bool context_is_editable ();
+		public bool context_is_image ();
+		public bool context_is_link ();
+		public bool context_is_media ();
+		public uint get_context ();
+		public unowned string get_image_uri ();
+		public unowned string get_link_label ();
+		public unowned string get_link_title ();
+		public unowned string get_link_uri ();
+		public unowned string get_media_uri ();
+		public uint context { get; construct; }
+		public string image_uri { get; construct; }
+		public string link_label { get; construct; }
+		public string link_title { get; construct; }
+		public string link_uri { get; construct; }
+		public string media_uri { get; construct; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "webkit_javascript_result_get_type ()")]
+	[Compact]
+	public class JavascriptResult {
+		public WebKit.JavascriptResult @ref ();
+		public void unref ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "webkit_mime_info_get_type ()")]
+	[Compact]
+	public class MimeInfo {
+		public unowned string get_description ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_extensions ();
+		public unowned string get_mime_type ();
+		public WebKit.MimeInfo @ref ();
+		public void unref ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_navigation_policy_decision_get_type ()")]
+	public class NavigationPolicyDecision : WebKit.PolicyDecision {
+		[CCode (has_construct_function = false)]
+		protected NavigationPolicyDecision ();
+		public unowned string get_frame_name ();
+		public uint get_modifiers ();
+		public uint get_mouse_button ();
+		public WebKit.NavigationType get_navigation_type ();
+		public unowned WebKit.URIRequest get_request ();
+		public string frame_name { get; }
+		public uint modifiers { get; }
+		public uint mouse_button { get; }
+		public WebKit.NavigationType navigation_type { get; }
+		public WebKit.URIRequest request { get; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_plugin_get_type ()")]
+	public class Plugin : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Plugin ();
+		public unowned string get_description ();
+		public unowned GLib.List<WebKit.MimeInfo> get_mime_info_list ();
+		public unowned string get_name ();
+		public unowned string get_path ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_policy_decision_get_type ()")]
+	public abstract class PolicyDecision : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected PolicyDecision ();
+		public void download ();
+		public void ignore ();
+		public void use ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_print_operation_get_type ()")]
+	public class PrintOperation : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public PrintOperation (WebKit.WebView web_view);
+		public unowned Gtk.PageSetup get_page_setup ();
+		public unowned Gtk.PrintSettings get_print_settings ();
+		public void print ();
+		public WebKit.PrintOperationResponse run_dialog (Gtk.Window? parent);
+		public void set_page_setup (Gtk.PageSetup page_setup);
+		public void set_print_settings (Gtk.PrintSettings print_settings);
+		public Gtk.PageSetup page_setup { get; set; }
+		public Gtk.PrintSettings print_settings { get; set; }
+		[NoAccessorMethod]
+		public WebKit.WebView web_view { owned get; construct; }
+		public signal void failed (void* error);
+		public signal void finished ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_response_policy_decision_get_type ()")]
+	public class ResponsePolicyDecision : WebKit.PolicyDecision {
+		[CCode (has_construct_function = false)]
+		protected ResponsePolicyDecision ();
+		public unowned WebKit.URIRequest get_request ();
+		public unowned WebKit.URIResponse get_response ();
+		public WebKit.URIRequest request { get; }
+		public WebKit.URIRequest response { get; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "webkit_script_dialog_get_type ()")]
+	[Compact]
+	public class ScriptDialog {
+		public void confirm_set_confirmed (bool confirmed);
+		public WebKit.ScriptDialogType get_dialog_type ();
+		public unowned string get_message ();
+		public unowned string prompt_get_default_text ();
+		public void prompt_set_text (string text);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_settings_get_type ()")]
+	public class Settings : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Settings ();
+		public bool get_allow_modal_dialogs ();
+		public bool get_auto_load_images ();
+		public unowned string get_cursive_font_family ();
+		public unowned string get_default_charset ();
+		public unowned string get_default_font_family ();
+		public uint32 get_default_font_size ();
+		public uint32 get_default_monospace_font_size ();
+		public bool get_draw_compositing_indicators ();
+		public bool get_enable_caret_browsing ();
+		public bool get_enable_developer_extras ();
+		public bool get_enable_dns_prefetching ();
+		public bool get_enable_frame_flattening ();
+		public bool get_enable_fullscreen ();
+		public bool get_enable_html5_database ();
+		public bool get_enable_html5_local_storage ();
+		public bool get_enable_hyperlink_auditing ();
+		public bool get_enable_java ();
+		public bool get_enable_javascript ();
+		public bool get_enable_offline_web_application_cache ();
+		public bool get_enable_page_cache ();
+		public bool get_enable_plugins ();
+		public bool get_enable_private_browsing ();
+		public bool get_enable_resizable_text_areas ();
+		public bool get_enable_site_specific_quirks ();
+		public bool get_enable_tabs_to_links ();
+		public bool get_enable_webaudio ();
+		public bool get_enable_webgl ();
+		public bool get_enable_xss_auditor ();
+		public unowned string get_fantasy_font_family ();
+		public bool get_javascript_can_access_clipboard ();
+		public bool get_javascript_can_open_windows_automatically ();
+		public bool get_load_icons_ignoring_image_load_setting ();
+		public bool get_media_playback_allows_inline ();
+		public bool get_media_playback_requires_user_gesture ();
+		public uint32 get_minimum_font_size ();
+		public unowned string get_monospace_font_family ();
+		public unowned string get_pictograph_font_family ();
+		public bool get_print_backgrounds ();
+		public unowned string get_sans_serif_font_family ();
+		public unowned string get_serif_font_family ();
+		public bool get_zoom_text_only ();
+		public void set_allow_modal_dialogs (bool allowed);
+		public void set_auto_load_images (bool enabled);
+		public void set_cursive_font_family (string cursive_font_family);
+		public void set_default_charset (string default_charset);
+		public void set_default_font_family (string default_font_family);
+		public void set_default_font_size (uint32 font_size);
+		public void set_default_monospace_font_size (uint32 font_size);
+		public void set_draw_compositing_indicators (bool enabled);
+		public void set_enable_caret_browsing (bool enabled);
+		public void set_enable_developer_extras (bool enabled);
+		public void set_enable_dns_prefetching (bool enabled);
+		public void set_enable_frame_flattening (bool enabled);
+		public void set_enable_fullscreen (bool enabled);
+		public void set_enable_html5_database (bool enabled);
+		public void set_enable_html5_local_storage (bool enabled);
+		public void set_enable_hyperlink_auditing (bool enabled);
+		public void set_enable_java (bool enabled);
+		public void set_enable_javascript (bool enabled);
+		public void set_enable_offline_web_application_cache (bool enabled);
+		public void set_enable_page_cache (bool enabled);
+		public void set_enable_plugins (bool enabled);
+		public void set_enable_private_browsing (bool enabled);
+		public void set_enable_resizable_text_areas (bool enabled);
+		public void set_enable_site_specific_quirks (bool enabled);
+		public void set_enable_tabs_to_links (bool enabled);
+		public void set_enable_webaudio (bool enabled);
+		public void set_enable_webgl (bool enabled);
+		public void set_enable_xss_auditor (bool enabled);
+		public void set_fantasy_font_family (string fantasy_font_family);
+		public void set_javascript_can_access_clipboard (bool enabled);
+		public void set_javascript_can_open_windows_automatically (bool enabled);
+		public void set_load_icons_ignoring_image_load_setting (bool enabled);
+		public void set_media_playback_allows_inline (bool enabled);
+		public void set_media_playback_requires_user_gesture (bool enabled);
+		public void set_minimum_font_size (uint32 font_size);
+		public void set_monospace_font_family (string monospace_font_family);
+		public void set_pictograph_font_family (string pictograph_font_family);
+		public void set_print_backgrounds (bool print_backgrounds);
+		public void set_sans_serif_font_family (string sans_serif_font_family);
+		public void set_serif_font_family (string serif_font_family);
+		public void set_zoom_text_only (bool zoom_text_only);
+		public bool allow_modal_dialogs { get; set construct; }
+		public bool auto_load_images { get; set construct; }
+		public string cursive_font_family { get; set construct; }
+		public string default_charset { get; set construct; }
+		public string default_font_family { get; set construct; }
+		public uint default_font_size { get; set construct; }
+		public uint default_monospace_font_size { get; set construct; }
+		public bool draw_compositing_indicators { get; set construct; }
+		public bool enable_caret_browsing { get; set construct; }
+		public bool enable_developer_extras { get; set construct; }
+		public bool enable_dns_prefetching { get; set construct; }
+		public bool enable_frame_flattening { get; set construct; }
+		public bool enable_fullscreen { get; set construct; }
+		public bool enable_html5_database { get; set construct; }
+		public bool enable_html5_local_storage { get; set construct; }
+		public bool enable_hyperlink_auditing { get; set construct; }
+		public bool enable_java { get; set construct; }
+		public bool enable_javascript { get; set construct; }
+		public bool enable_offline_web_application_cache { get; set construct; }
+		public bool enable_page_cache { get; set construct; }
+		public bool enable_plugins { get; set construct; }
+		public bool enable_private_browsing { get; set construct; }
+		public bool enable_resizable_text_areas { get; set construct; }
+		public bool enable_site_specific_quirks { get; set construct; }
+		public bool enable_tabs_to_links { get; set construct; }
+		public bool enable_webaudio { get; set construct; }
+		public bool enable_webgl { get; set construct; }
+		public bool enable_xss_auditor { get; set construct; }
+		public string fantasy_font_family { get; set construct; }
+		public bool javascript_can_access_clipboard { get; set construct; }
+		public bool javascript_can_open_windows_automatically { get; set construct; }
+		public bool load_icons_ignoring_image_load_setting { get; set construct; }
+		public bool media_playback_allows_inline { get; set construct; }
+		public bool media_playback_requires_user_gesture { get; set construct; }
+		public uint minimum_font_size { get; set construct; }
+		public string monospace_font_family { get; set construct; }
+		public string pictograph_font_family { get; set construct; }
+		public bool print_backgrounds { get; set construct; }
+		public string sans_serif_font_family { get; set construct; }
+		public string serif_font_family { get; set construct; }
+		public bool zoom_text_only { get; set construct; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_uri_request_get_type ()")]
+	public class URIRequest : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public URIRequest (string uri);
+		public unowned string get_uri ();
+		public string uri { get; construct; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_uri_response_get_type ()")]
+	public class URIResponse : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected URIResponse ();
+		public uint64 get_content_length ();
+		public bool get_https_status (out unowned GLib.TlsCertificate certificate, out GLib.TlsCertificateFlags errors);
+		public unowned string get_mime_type ();
+		public uint get_status_code ();
+		public unowned string get_uri ();
+		public uint64 content_length { get; }
+		public string mime_type { get; }
+		public uint status_code { get; }
+		public string uri { get; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_uri_scheme_request_get_type ()")]
+	public class URISchemeRequest : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected URISchemeRequest ();
+		public void finish (GLib.InputStream stream, int64 stream_length, string? mime_type);
+		public unowned string get_path ();
+		public unowned string get_scheme ();
+		public unowned string get_uri ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_context_get_type ()")]
+	public class WebContext : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected WebContext ();
+		public void clear_cache ();
+		public WebKit.Download download_uri (string uri);
+		public WebKit.CacheModel get_cache_model ();
+		public unowned WebKit.CookieManager get_cookie_manager ();
+		public static unowned WebKit.WebContext get_default ();
+		public async GLib.List<WebKit.Plugin> get_plugins (GLib.Cancellable? cancellable) throws GLib.Error;
+		public bool get_spell_checking_enabled ();
+		public unowned string get_spell_checking_languages ();
+		public void register_uri_scheme (string scheme, owned WebKit.URISchemeRequestCallback callback);
+		public void set_additional_plugins_directory (string directory);
+		public void set_cache_model (WebKit.CacheModel cache_model);
+		public void set_spell_checking_enabled (bool enabled);
+		public void set_spell_checking_languages (string languages);
+		public signal void download_started (WebKit.Download download);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_inspector_get_type ()")]
+	public class WebInspector : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected WebInspector ();
+		public void close ();
+		public uint get_attached_height ();
+		public unowned string get_inspected_uri ();
+		public unowned WebKit.WebViewBase get_web_view ();
+		public bool is_attached ();
+		public void show ();
+		public uint attached_height { get; }
+		public string inspected_uri { get; }
+		[HasEmitter]
+		public signal bool attach ();
+		public signal bool bring_to_front ();
+		public signal void closed ();
+		[HasEmitter]
+		public signal bool detach ();
+		public signal bool open_window ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_resource_get_type ()")]
+	public class WebResource : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected WebResource ();
+		public async uint8 get_data (GLib.Cancellable? cancellable, out size_t length) throws GLib.Error;
+		public unowned WebKit.URIResponse get_response ();
+		public unowned string get_uri ();
+		public WebKit.URIResponse response { get; }
+		public string uri { get; }
+		public signal void failed (void* error);
+		public signal void finished ();
+		public signal void received_data (uint64 data_length);
+		public signal void sent_request (WebKit.URIRequest request, WebKit.URIResponse redirected_response);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_view_get_type ()")]
+	public class WebView : WebKit.WebViewBase, Atk.Implementor, Gtk.Buildable {
+		[CCode (has_construct_function = false, type = "GtkWidget*")]
+		public WebView ();
+		public async bool can_execute_editing_command (string command, GLib.Cancellable? cancellable) throws GLib.Error;
+		public bool can_go_back ();
+		public bool can_go_forward ();
+		public bool can_show_mime_type (string mime_type);
+		public void execute_editing_command (string command);
+		public unowned WebKit.BackForwardList get_back_forward_list ();
+		public unowned WebKit.WebContext get_context ();
+		public unowned string get_custom_charset ();
+		public double get_estimated_load_progress ();
+		public unowned WebKit.FindController get_find_controller ();
+		public unowned WebKit.WebInspector get_inspector ();
+		public unowned WebKit.WebResource get_main_resource ();
+		public unowned WebKit.Settings get_settings ();
+		public GLib.List<weak WebKit.WebResource> get_subresources ();
+		public unowned string get_title ();
+		public unowned string get_uri ();
+		public unowned WebKit.WindowProperties get_window_properties ();
+		public double get_zoom_level ();
+		public void go_back ();
+		public void go_forward ();
+		public void go_to_back_forward_list_item (WebKit.BackForwardListItem list_item);
+		public void load_html (string content, string? base_uri);
+		public void load_plain_text (string plain_text);
+		public void load_request (WebKit.URIRequest request);
+		public void load_uri (string uri);
+		public void reload ();
+		public void reload_bypass_cache ();
+		public void replace_content (string content, string content_uri, string? base_uri);
+		public async WebKit.JavascriptResult run_javascript (string script, GLib.Cancellable? cancellable) throws GLib.Error;
+		public void set_custom_charset (string? charset);
+		public void set_settings (WebKit.Settings settings);
+		public void set_zoom_level (double zoom_level);
+		public void stop_loading ();
+		[CCode (has_construct_function = false, type = "GtkWidget*")]
+		public WebView.with_context (WebKit.WebContext context);
+		public double estimated_load_progress { get; }
+		public string title { get; }
+		public string uri { get; }
+		[NoAccessorMethod]
+		public WebKit.WebContext web_context { owned get; construct; }
+		public double zoom_level { get; set; }
+		public virtual signal void close ();
+		public virtual signal bool context_menu (WebKit.ContextMenu context_menu, Gdk.Event event, WebKit.HitTestResult hit_test_result);
+		public virtual signal void context_menu_dismissed ();
+		public signal Gtk.Widget create ();
+		public virtual signal bool decide_policy (WebKit.PolicyDecision decision, WebKit.PolicyDecisionType type);
+		public virtual signal bool enter_fullscreen ();
+		public virtual signal bool leave_fullscreen ();
+		public virtual signal void load_changed (WebKit.LoadEvent load_event);
+		public virtual signal bool load_failed (WebKit.LoadEvent load_event, string failing_uri, void* error);
+		public virtual signal void mouse_target_changed (WebKit.HitTestResult hit_test_result, uint modifiers);
+		public virtual signal bool permission_request (WebKit.PermissionRequest permission_request);
+		public virtual signal bool print_requested (WebKit.PrintOperation print_operation);
+		public virtual signal void ready_to_show ();
+		public virtual signal void resource_load_started (WebKit.WebResource resource, WebKit.URIRequest request);
+		public virtual signal void run_as_modal ();
+		public virtual signal bool run_file_chooser (WebKit.FileChooserRequest request);
+		public virtual signal bool script_dialog (WebKit.ScriptDialog dialog);
+		public virtual signal void submit_form (WebKit.FormSubmissionRequest request);
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_view_base_get_type ()")]
+	public class WebViewBase : Gtk.Container, Atk.Implementor, Gtk.Buildable {
+		[CCode (has_construct_function = false)]
+		protected WebViewBase ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_window_properties_get_type ()")]
+	public class WindowProperties : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected WindowProperties ();
+		public bool get_fullscreen ();
+		public Gdk.Rectangle get_geometry ();
+		public bool get_locationbar_visible ();
+		public bool get_menubar_visible ();
+		public bool get_resizable ();
+		public bool get_scrollbars_visible ();
+		public bool get_statusbar_visible ();
+		public bool get_toolbar_visible ();
+		public bool fullscreen { get; construct; }
+		public Cairo.RectangleInt geometry { get; construct; }
+		public bool locationbar_visible { get; construct; }
+		public bool menubar_visible { get; construct; }
+		public bool resizable { get; construct; }
+		public bool scrollbars_visible { get; construct; }
+		public bool statusbar_visible { get; construct; }
+		public bool toolbar_visible { get; construct; }
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_permission_request_get_type ()")]
+	public interface PermissionRequest : GLib.Object {
+		public abstract void allow ();
+		public abstract void deny ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_CACHE_MODEL_")]
+	public enum CacheModel {
+		DOCUMENT_VIEWER,
+		WEB_BROWSER,
+		DOCUMENT_BROWSER
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_CONTEXT_MENU_ACTION_")]
+	public enum ContextMenuAction {
+		NO_ACTION,
+		OPEN_LINK,
+		OPEN_LINK_IN_NEW_WINDOW,
+		DOWNLOAD_LINK_TO_DISK,
+		COPY_LINK_TO_CLIPBOARD,
+		OPEN_IMAGE_IN_NEW_WINDOW,
+		DOWNLOAD_IMAGE_TO_DISK,
+		COPY_IMAGE_TO_CLIPBOARD,
+		COPY_IMAGE_URL_TO_CLIPBOARD,
+		OPEN_FRAME_IN_NEW_WINDOW,
+		GO_BACK,
+		GO_FORWARD,
+		STOP,
+		RELOAD,
+		COPY,
+		CUT,
+		PASTE,
+		DELETE,
+		SELECT_ALL,
+		INPUT_METHODS,
+		UNICODE,
+		SPELLING_GUESS,
+		NO_GUESSES_FOUND,
+		IGNORE_SPELLING,
+		LEARN_SPELLING,
+		IGNORE_GRAMMAR,
+		FONT_MENU,
+		BOLD,
+		ITALIC,
+		UNDERLINE,
+		OUTLINE,
+		INSPECT_ELEMENT,
+		OPEN_VIDEO_IN_NEW_WINDOW,
+		OPEN_AUDIO_IN_NEW_WINDOW,
+		COPY_VIDEO_LINK_TO_CLIPBOARD,
+		COPY_AUDIO_LINK_TO_CLIPBOARD,
+		TOGGLE_MEDIA_CONTROLS,
+		TOGGLE_MEDIA_LOOP,
+		ENTER_VIDEO_FULLSCREEN,
+		MEDIA_PLAY,
+		MEDIA_PAUSE,
+		MEDIA_MUTE,
+		CUSTOM
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_COOKIE_POLICY_ACCEPT_")]
+	public enum CookieAcceptPolicy {
+		ALWAYS,
+		NEVER,
+		NO_THIRD_PARTY
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_COOKIE_PERSISTENT_STORAGE_")]
+	public enum CookiePersistentStorage {
+		TEXT,
+		SQLITE
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_DOWNLOAD_ERROR_")]
+	public enum DownloadError {
+		NETWORK,
+		CANCELLED_BY_USER,
+		DESTINATION;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_FIND_OPTIONS_")]
+	[Flags]
+	public enum FindOptions {
+		NONE,
+		CASE_INSENSITIVE,
+		AT_WORD_STARTS,
+		TREAT_MEDIAL_CAPITAL_AS_WORD_START,
+		BACKWARDS,
+		WRAP_AROUND
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_HIT_TEST_RESULT_CONTEXT_")]
+	[Flags]
+	public enum HitTestResultContext {
+		DOCUMENT,
+		LINK,
+		IMAGE,
+		MEDIA,
+		EDITABLE
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_JAVASCRIPT_ERROR_SCRIPT_")]
+	public enum JavascriptError {
+		FAILED;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_LOAD_")]
+	public enum LoadEvent {
+		STARTED,
+		REDIRECTED,
+		COMMITTED,
+		FINISHED
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_NAVIGATION_TYPE_")]
+	public enum NavigationType {
+		LINK_CLICKED,
+		FORM_SUBMITTED,
+		BACK_FORWARD,
+		RELOAD,
+		FORM_RESUBMITTED,
+		OTHER
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_NETWORK_ERROR_")]
+	public enum NetworkError {
+		FAILED,
+		TRANSPORT,
+		UNKNOWN_PROTOCOL,
+		CANCELLED,
+		FILE_DOES_NOT_EXIST;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_PLUGIN_ERROR_")]
+	public enum PluginError {
+		FAILED,
+		CANNOT_FIND_PLUGIN,
+		CANNOT_LOAD_PLUGIN,
+		JAVA_UNAVAILABLE,
+		CONNECTION_CANCELLED,
+		WILL_HANDLE_LOAD;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_POLICY_DECISION_TYPE_")]
+	public enum PolicyDecisionType {
+		NAVIGATION_ACTION,
+		NEW_WINDOW_ACTION,
+		RESPONSE
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_POLICY_ERROR_")]
+	public enum PolicyError {
+		FAILED,
+		CANNOT_SHOW_MIME_TYPE,
+		CANNOT_SHOW_URI,
+		FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE,
+		CANNOT_USE_RESTRICTED_PORT;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_PRINT_ERROR_")]
+	public enum PrintError {
+		GENERAL,
+		PRINTER_NOT_FOUND,
+		INVALID_PAGE_RANGE;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_PRINT_OPERATION_RESPONSE_")]
+	public enum PrintOperationResponse {
+		PRINT,
+		CANCEL
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_SCRIPT_DIALOG_")]
+	public enum ScriptDialogType {
+		ALERT,
+		CONFIRM,
+		PROMPT
+	}
+	[CCode (cheader_filename = "webkit2/webkit2.h", instance_pos = 1.9)]
+	public delegate void URISchemeRequestCallback (WebKit.URISchemeRequest request);
+	[CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_COPY")]
+	public const string EDITING_COMMAND_COPY;
+	[CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_CUT")]
+	public const string EDITING_COMMAND_CUT;
+	[CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_PASTE")]
+	public const string EDITING_COMMAND_PASTE;
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]