Phil, thanks for that information. The Qt web browser you linked is extremely minimal, it's just a WebView with four methods LoadPage, LoadPageHtml, and EvaluateJavaScript. It'll be a good reference for me to extend to Qt and Cocoa, but just to be clear I've added the following:
Gtk2, Gtk3 support.
TWebInspector control.
Customizable platform independent TWebAddressBar control.
Platform independent TWebStatusPanel control used to display web page mouse hit test information and resource load progress bar.
Platform independent TWebEditorBar control used to convert a web view into a word processor editor with support for MHTML storage.
Search engine, and map providers.
Full web page image capture and printing support.
Processing many more web page events, customizable alert/confirm/prompt events, page level error notification, console log intercept, download management, resource request alteration, customizing context menus, and more.
Currently I am working on improving the javascript integration so that it will be possible to allow for pascal object to be accessible to web pages at the discretion of the developer. This is where smart pointer support would be much appreciated. It can be done without smart pointers, but it would be much more messy.
Thanks for the OSX link, but I believe I can create a small pascal file for each webkit API, both webview and javascriptcore, with cross platform support for at least OSX, Qt, and Gtk, given what you provided and with all of the features I described above, plus maybe a few extra IDE designers.
I look at supporting Windows last.
A final note, as far as Gtk support for webkit goes, we really need to improve Gtk3 support in Lazarus, because webkit stopped supporting Gtk2 a few years back and it's stuck with an old version with many security problems.
As such I've done some work on LCL Gtk3, fixing things and adding things. I'll submit my LCL Gtk3 changes as a patch when I release the first public version on the packing I'm writing.
If smart pointer are going to be moved into trunk I'll be using them, otherwise I'll use a less elegant solution.