Dawit, please excuse me if I'm missing something obvious, but is there any reason why we can't walk the DOM using QWebElement to find and fill in the INPUT elements?
I've done the following in rekonq, which fills in my forms for me and avoids the javascript execution bug I found earlier. The code is primitive and not optimal, but it works. void WebPage::loadFinished(bool ok) { ... //wallet()->fillFormData(mainFrame()); QScopedPointer<KWallet::Wallet> w; WId wid = 0; QWidget* widget = topLevelWindow(this); if (widget) wid = widget->winId(); QString walletName = KWallet::Wallet::NetworkWallet(); w.reset(KWallet::Wallet::openWallet(walletName, wid, KWallet::Wallet::Synchronous)); w->setFolder(KWallet::Wallet::FormDataFolder()); walkFrame(w.operator->(), mainFrame()); } void walkFrame(KWallet::Wallet *wallet, QWebFrame *frame) { walkElement(wallet, frame, "", frame->documentElement()); foreach(QWebFrame *childFrame, frame->childFrames()) { walkFrame(wallet, childFrame); } } void walkElement(KWallet::Wallet *wallet, QWebFrame *frame, QString formName, QWebElement elem) { elem = elem.firstChild(); while (! elem.isNull()) { if (elem.tagName().compare("FORM", Qt::CaseInsensitive) == 0) formName = elem.attribute("name"); else if (elem.tagName().compare("INPUT", Qt::CaseInsensitive) == 0) { QString inputType = elem.attribute("type").toLower(); if (inputType == "text" || inputType == "password") { // Fill it from Wallet QUrl url = (frame->url().isEmpty() ? frame->baseUrl().resolved(frame->url()) : frame->url()); QString key = url.toString(QUrl::RemoveQuery|QUrl::RemoveFragment); key += QL1C('#'); key += formName; QMap<QString, QString> cachedValues; wallet->readMap(key, cachedValues); QString name = elem.attribute("name"); QString value = cachedValues.value(name); elem.setAttribute("value", value); } } walkElement(wallet, frame, formName, elem); elem = elem.nextSibling(); } } -- Lindsay Mathieson
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ webkit-qt mailing list webkit-qt@lists.webkit.org http://lists.webkit.org/mailman/listinfo/webkit-qt