X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=BrowserWindow.vala;h=73ac9cee7f5aa85add2f4bb51503ca1d13c2a6b4;hb=8847a28e69f86c7ca52bda090096ddfc94c2bf6f;hp=c2db2ab50e5729736584e329bee9be7a7832c027;hpb=8a175ba161abacd0a5db67874464ec40cdd29af0;p=app.webkitpdf diff --git a/BrowserWindow.vala b/BrowserWindow.vala index c2db2ab..73ac9ce 100644 --- a/BrowserWindow.vala +++ b/BrowserWindow.vala @@ -4,7 +4,7 @@ public class BrowserWindow : Object { public Gtk.Window el; private BrowserWindow _this; - + public string cookie_file; public static BrowserWindow singleton() { if (_BrowserWindow == null) { @@ -32,6 +32,7 @@ public class BrowserWindow : Object //listeners this.el.destroy.connect( () => { + Gtk.main_quit(); }); this.el.show.connect( () => { @@ -53,10 +54,47 @@ public class BrowserWindow : Object blog = r.replace(blog, blog.length, 0, ".blogspot.com/ncr/"); } - if(webkitpdf.opt_cookies.length > 0) { - print("setting cookie %s\n",webkitpdf.opt_cookies); - var ses = WebKit.get_default_session(); - //this.view.el.set_cookie(webkitpdf.opt_cookies); + if(webkitpdf.opt_cookies != null) { + print("setting cookie %s\n",webkitpdf.opt_cookies); + + var uri = new Soup.URI (blog); + + string[] cookies = webkitpdf.opt_cookies.split ("=", 2); + + if(cookies.length >=2 ) { +#if GTK3 + var context = WebKit.WebContext.get_default(); + var cookie_manager = context.get_cookie_manager(); + cookie_manager.set_accept_policy(WebKit.CookieAcceptPolicy.NEVER); + string scheme = uri.get_scheme (); + var ssl = "FALSE"; + if (scheme=="https") { + ssl="TRUE"; + } + try { + FileIOStream iostream; + File file = File.new_tmp ("cookie-XXXXXX.txt", out iostream); + this.cookie_file = file.get_path (); + print("cookie tmp file name: %s\n", file.get_path ()); + + OutputStream ostream = iostream.output_stream; + DataOutputStream dostream = new DataOutputStream (ostream); + + dostream.put_string (uri.get_host() + "\tTRUE\t/\t"+ssl+"\t2147483647\t" + cookies[0] + "\t" + cookies[1] ); + cookie_manager.set_persistent_storage(file.get_path(), WebKit.CookiePersistentStorage.TEXT); + } catch (Error e) { + stdout.printf ("Error: %s\n", e.message); + } +#else + var sess = WebKit.get_default_session(); + var cookie_jar = new Soup.CookieJar(); + cookie_jar.set_accept_policy(Soup.CookieJarAcceptPolicy.NEVER); + cookie_jar.add_cookie(new Soup.Cookie (cookies[0], cookies[1], uri.get_host(), "/", -1)); + sess.add_feature(cookie_jar); +#endif + } + + } print("loading url %s\n",blog); @@ -71,6 +109,7 @@ public class BrowserWindow : Object if (cd < 1) { print("calling printit - timed out"); _this.view.printit(); + return false; } return true; @@ -278,6 +317,7 @@ public class BrowserWindow : Object pe.set_page_setup(psetup); pe.finished.connect( () => { print("print completed\n"); + Gtk.main_quit(); });