Projects/WebKit/TODO
Short term
- History issues in KPart
- Needs additions in QtWebKit. Discussed with Simon Hausmann; addition in QWebHistory: saveState, loadState to keep WebKit history in sync with Konquerors history
Mid term
- Fix flash and other plugins with WebKit trunk. Infrastructure is there, works also in Qt-only integration of QtWebKit, but not in the KPart. Needs some investigations why.
- Implement form completion / password save
- Get as much of the library into kdelibs as possible. Already the QtNetwork/KIO bridge is there.
Long term
- Konqueror integration;
- User defined custom stylesheets are working but the accessibility stylesheet is not.
- Extensions like e.g. Akregator newsfeed and WebArchiver. Some like the uachangerplugin are already working fine.
Unsorted
- Need a way to expose functions to JS that is more powerful than the current support for exposing the slots on a QObject. We need to be able to add functions directly to the window object so that we can expose methods directly without a containing object.
- Workaround for now: Use the evaluateJavascript facility to add a forwarding method written in js (yuck!).
- We also need a way to be able to expose methods that are defined at run time. For example if we wanted to implement something like the flash-js bridge where we do not know at compile time which methods should be available we cannot implement this using the current API.
- Not sure if we can workaround this one, though something might be possible if you created a metaobject on the fly.
- Need a way to render block level elements directly to a QPaintDevice, specifically divs. These are divs that can be dragged out of a website onto the the desktop and will remain updated. One possibility is that the elements returned by a QWebElement search could have a paint( QPaintDevice * ) method.
- Workaround: Maybe find the bounding box of the element and paint that? Horrible hack and will not handle elements that have an alpha channel very well.
- Need a way to integrate QtWebKit into KWallet. There are problems on some pages where JS clears form contents late in the page load sequence, after eg KWallet may have present the form contents.
- KDE features to form widgets etc. It is not known how to integrate KDE features such as text completion with the versions of these features implemented in JS in the web page. Currently since the AJAX mostly does not work in KHTML, the KDE versions are used.
- Cookies - QNetworkCookie[Jar] is used, some bridging to KCookieJar already exists.
- What happens to javascript cookies? do they get into the wallet, if not talk to thiago. We need to check the KIO::NetworkAccessManager.
- Configuration management using kcontrol. QWebSetting is used to get settings into Webkit
- Adblock - relies on DOM hacking. Could be implemented using the QWebElement API.
- How do we integrate java? There are 2 ways Java is integrated, via the <embed> element or as applets via the NPAPI. The problem with the NPAPI system is that existing Java plugins also rely on XPCOM. <applet> is mapped atm by QWebKit to <embed>.
- Missing ability to launch the web inspector.
- All of the QWebKit api is in the webkit repo, it is NOT in the qt gitorious. We should work at the webkit repo and submit patches there like other contributors, not work in a 'fork' git branch.
- on #webkit we can get the trolls to help review patches.
- Not loading the right thing when linking to other data types eg. text files, or spreadsheets. QWebPluginFactory should be usable to load KParts. There were some questions whether this would be able to react to dynamic changes to the set of available plugins - need way to tell the Factory to reload its plugin list.
- How do we populate the right click context menu when clicking on links. ContextMenuEvent
- How to suppress right click menu.
- How do we get information about which resources comprise a particular page to implement something like the web archive plugin. The information is present in the web inspector but we have no access to it.
- Can do embedded kparts using QtWebKitPluginFactory. Need to pass it a list of the available plugins so that the navigator.plugins javascript list will be populated. Is the factory queried for every load or not, simon thinks it might be only called once. thiago thinks we need a notification when we get asked to load something. We need a method to force a refresh() to ensure the list is valid if we install new kparts.
- I've written an example plugin and put it online at http://gitorious.org/qt-examples/qt-examples/trees/master/qtwebkitplugins which shows we should be able to embed widgets and hence kparts quite easily (rich).
- State saving/loading for eg 'Undo Close Tab'
- Font size (screen dimensions) need to be communicated correctly to WebKit. Gof is working on a platform plugin to get font sizes in.
- Plugins. WebArchiver needs access to the source so it can store it and the resources it references (images,css) and edit the dom so the references point to the local copies. This may be possible with QWebInspector. Could also watch things coming through QNetworkAccessManager, but this would break when there are interleaved page requests. Perhaps KIO cache should be used to get and save these resources without reloading 2Mb web pages.
- Improving plugin support in Konqueror is desirable but orthogonal to fixing the web experience