From 3f9f28ab425cad7e6cb182a89f7e78d5ad9ac246 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 10 Nov 2001 01:22:54 +0000 Subject: [PATCH] Try to start kcookiejar if the dcop call to it failed. Allows using cookies from javascript over any protocol, not just HTTP. Code from Waldo. svn path=/trunk/kdelibs/; revision=121620 --- khtml/dom/html_document.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/khtml/dom/html_document.cpp b/khtml/dom/html_document.cpp index b957aa5cdf..5fe8741a84 100644 --- a/khtml/dom/html_document.cpp +++ b/khtml/dom/html_document.cpp @@ -196,16 +196,21 @@ DOMString HTMLDocument::cookie() const QDataStream stream(params, IO_WriteOnly); stream << URL().string(); if (!kapp->dcopClient()->call("kcookiejar", "kcookiejar", - "findDOMCookies(QString)", params, replyType, reply)) { - kdWarning(6010) << "Can't communicate with cookiejar!" << endl; - return DOMString(); + "findDOMCookies(QString)", params, replyType, reply)) { + // Maybe it wasn't running (e.g. we're opening local html files) + KApplication::startServiceByDesktopName( "kcookiejar"); + if (!kapp->dcopClient()->call("kcookiejar", "kcookiejar", + "findDOMCookies(QString)", params, replyType, reply)) { + kdWarning(6010) << "Can't communicate with cookiejar!" << endl; + return DOMString(); + } } QDataStream stream2(reply, IO_ReadOnly); if(replyType != "QString") { - kdError(6010) << "DCOP function findDOMCookies(...) returns " - << replyType << ", expected QString" << endl; - return DOMString(); + kdError(6010) << "DCOP function findDOMCookies(...) returns " + << replyType << ", expected QString" << endl; + return DOMString(); } QString result; @@ -223,9 +228,13 @@ void HTMLDocument::setCookie( const DOMString & value ) fake_header.append("\n"); stream << URL().string() << fake_header.utf8() << windowId; if (!kapp->dcopClient()->send("kcookiejar", "kcookiejar", - "addCookies(QString,QCString,long int)", params)) + "addCookies(QString,QCString,long int)", params)) { - kdWarning(6010) << "Can't communicate with cookiejar!" << endl; + // Maybe it wasn't running (e.g. we're opening local html files) + KApplication::startServiceByDesktopName( "kcookiejar"); + if (!kapp->dcopClient()->send("kcookiejar", "kcookiejar", + "addCookies(QString,QCString,long int)", params)) + kdWarning(6010) << "Can't communicate with cookiejar!" << endl; } } -- GitLab