{"id":637,"date":"2012-12-26T10:20:42","date_gmt":"2012-12-26T09:20:42","guid":{"rendered":"http:\/\/blogs.igalia.com\/carlosgc\/?p=637"},"modified":"2012-12-26T10:21:39","modified_gmt":"2012-12-26T09:21:39","slug":"webkitgtk-hackfest-2012","status":"publish","type":"post","link":"https:\/\/blogs.igalia.com\/carlosgc\/2012\/12\/26\/webkitgtk-hackfest-2012\/","title":{"rendered":"WebKitGTK+ Hackfest 2012"},"content":{"rendered":"<p>This year again the <a href=\"https:\/\/live.gnome.org\/Hackfests\/WebKitGTK2012\">WebKitGTK+ hackfest<\/a> took place at the <a href=\"http:\/\/www.igalia.com\">Igalia<\/a> office in A Coru\u00f1a, and this year again it&#8217;s been awesome.<\/p>\n<p>My main goal for the hackfest was to implement an extension system for the web process in <a href=\"http:\/\/trac.webkit.org\/wiki\/WebKit2\">WebKit2<\/a>, that would allow, among other things, to access the DOM, which is the major regression of the <a href=\"http:\/\/www.webkitgtk.org\/reference\/webkit2gtk\/unstable\/index.html\">WebKit2 GTK+ API<\/a>. The idea was to use the exactly same GObject DOM bindings API we are currently using in WebKit1, so I <a href=\"https:\/\/bugs.webkit.org\/show_bug.cgi?id=104527\">moved it to a convenient static library<\/a> and <a href=\"https:\/\/bugs.webkit.org\/show_bug.cgi?id=104663\">installed the public headers in its own directory<\/a> making it shareable between WebKit1 and WebKit2. Once GObject DOM bindings were accessible from WebKit2 I wrote a <a href=\"https:\/\/bugs.webkit.org\/show_bug.cgi?id=105631\">first patch to implement the web extension system<\/a> providing a new API for extensions to access the DOM.<\/p>\n<p>I also took advantage of the hackfest time, to re-take a task I had pending for some time, adding an API to WebKit2 to handle SSL errors. I didn&#8217;t have time to finish the API, but managed to write a <a href=\"https:\/\/bugs.webkit.org\/show_bug.cgi?id=104482\">first patch to set a policy for SSL errors<\/a>. For now it only allows to ignore SSL errors and continue the load or make the load fail in case of SSL errors. The idea is to add a new policy to ask the user what to do.<\/p>\n<p>Even though it was not part of my initial plans for the hackfest I ended up working on the document reading integration in Epiphany. I wrote an <a href=\"https:\/\/bugzilla.gnome.org\/show_bug.cgi?id=689992\">initial patch<\/a> for Epiphany to load documents supported by Evince embedded in the window like a web view. There are still a lot of features to integrate like zooming, searching, printing, etc.<\/p>\n<div id=\"attachment_640\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/ephy-evince.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-640\" class=\"size-medium wp-image-640\" src=\"http:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/ephy-evince-300x245.png\" alt=\"\" width=\"300\" height=\"245\" srcset=\"https:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/ephy-evince-300x245.png 300w, https:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/ephy-evince-1024x837.png 1024w, https:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/ephy-evince.png 1030w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-640\" class=\"wp-caption-text\">Epiphany showing a PDF document<\/p><\/div>\n<p>I set a milestone to switch Epiphany to WebKit2 by default at the end of the hackfest, but I didn&#8217;t have time to fix all the regressions. We are a lot closer, though.<\/p>\n<p>This event is impossible without the sponsors, thanks!<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-645 aligncenter\" src=\"http:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/igalia.png\" alt=\"\" width=\"168\" height=\"60\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-643\" src=\"http:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/collabora.png\" alt=\"\" width=\"181\" height=\"87\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-644\" src=\"http:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/GNOME_Foundation-300x106.png\" alt=\"\" width=\"300\" height=\"106\" srcset=\"https:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/GNOME_Foundation-300x106.png 300w, https:\/\/blogs.igalia.com\/carlosgc\/files\/2012\/12\/GNOME_Foundation.png 360w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This year again the WebKitGTK+ hackfest took place at the Igalia office in A Coru\u00f1a, and this year again it&#8217;s been awesome. My main goal for the hackfest was to implement an extension system for the web process in WebKit2, &hellip; <a href=\"https:\/\/blogs.igalia.com\/carlosgc\/2012\/12\/26\/webkitgtk-hackfest-2012\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,6,7,8],"tags":[21,12,17,22],"class_list":["post-637","post","type-post","status-publish","format-standard","hentry","category-free-software","category-gnome","category-igalia","category-webkit","tag-epiphany","tag-evince","tag-pdf","tag-webkit"],"_links":{"self":[{"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/posts\/637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/comments?post=637"}],"version-history":[{"count":10,"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/posts\/637\/revisions"}],"predecessor-version":[{"id":652,"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/posts\/637\/revisions\/652"}],"wp:attachment":[{"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/media?parent=637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/categories?post=637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.igalia.com\/carlosgc\/wp-json\/wp\/v2\/tags?post=637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}