FrameView and navigation

FrameView and navigation

Visiting a site can have certain changes on a FrameView that will not be undone when leaving it. The most prominent example is a fixed background (by CSS) which will disable using blit on scrolling. There might be different things as well. Another one would be the PageCache and navigation to pages in it. The result is that for every page navigation you will create a new FrameView. For most/all ports this is done in FrameLoaderClient::transitionToCommittedForNewPage(). There is even a convience method shared between most ports in the form of Frame::createView.

From an API point of view this means that there is one WebKitWebView (in terms of Gtk+) and this WebKitWebView has one WebCore::Page and this page has exactly one WebCore::Frame the so called mainFrame but throughout the lifetime of WebKitWebView there will be multiple instances of FrameView’s setup on the WebCore::Frame mainFrame. This also means that there are times were multiple WebCore::FrameView instances are around but only one should be active at a time.

For WebKit/GTK+ we will need to make sure that all the state of a WebKitWebView is transferred/set to the WebCore::FrameView when it gets created and ever change to a WebKitWebView gets forwarded to it. The most prominet state information are colors and GtkAdjustment (another posting). I think Gustavo is also about to introduce Scrollbar policies soon.

Embedding a GtkWidget into a HTML page

Embedding a GtkWidget into a HTML page

In the last few days I have suprisingly (actually not, it comes natural when resigning from a job) more time to do stuff that I really want to do. For the last months my webkit involvement has been mostly been reviewing patches created by other people but now I have done something I wanted to add for quite a long time…

I think one of the benefits of having a native web renderer widget in the toolkit is the integration that is possible. You can embed it into other native widgets and you should be able to embed native widgets into the web renderer. I have been working on the second part and the result can be seein in this bug. The attached example is putting the Gtk Scribble example into every plugin.

In the arora web browser this feature is used to implement ClickToFlash and I plan to still this idea too.

How to kill productivity…

How to kill productivity…

So I’m still in Taipei and my productivity on the 9th floor is not as good as I would like it to have it… So we mostly have an empty 8th floor, with silence, no artificial light, and very good air… I assumed I could just walk down, sit in one of the empty (conference) rooms and be productive… it worked… until.. oh well… there was an urgent meeting, suprisingly in the room I was sitting on… and suprisingly the other eight empty (conference) rooms with plenty of chairs and tables too couldn’t be used… and the meeting had to be held in the very same room… so I got kicked out and decided to leave the entire building *happy or not*.

Long overdue…

Long overdue…

A long overdue blog post… I’m currently in Taipei… canceled my original flight back to Germany, instead I will go to Hong Kong and then probably back to Taipei. So if you are in this area and would like to talk about WebKit, Linux, KDE, OpenBSC, OpenEmbedded… drop me a mail.

Geo Clue for WebKit/Gtk+

Geo Clue for WebKit/Gtk+

Apple was adding support for the W3C Geolocation API, I started with a implementation using Gypsy, then after some comments moved on to Geoclue. Then Aurelian Maga was more lucky getting geoclue to emit something useful and fixed my logic errors and then it was about time to put the code into the repository.

The next things will be adding API to control the privacy settings, enabling/disabling support for it and so on..

Thank you for KDE4.2

Thank you for KDE4.2

Thank you for the Club Mate at the KDE 4.2 release event in Berlin hosted by KDAB. Thanks to kubuntu I can enjoy KDE 4.2 on my intrepid installation. Which in turn allows me to use KMail 1.11.0 which is featuring the new wicked cool views and it looks like there were some nice oxygen style updates as well. Well done!

25C3 is over

25C3 is over

After Christmas I returned to Berlin to be at the BCC for the 25th C3 in time. I was honored to talk to John Gilmore and the German Openmoko population was also present and we enjoyed talking, reading and hacking away on GSM. From the many things I planned to do I have only finished some but as usual I will work on these round robin… But it is time to leave the black hole and return to work.

This time of the year

This time of the year

Last year around this time of the year I already had resigned from GMIT, figuring out what to do with myself, Thiago finished his new networking classes, Simon integrated most of it into WebKit at around FOSS.IN, we fixed the regressions of the layout test suite and I was tracing down bugs with SSL, a Cookie issue on yahoo mail, a crash on gmail… This year things look awfully similar. I know a little better what to do with myself, I have fixed a funny issue of QNetworkAccessCache (a new class in Qt4.5) breaking JavaScript sunspider benchmark.

If you write code that is using QObject::startTimer and not use QObject::killTimer you leak a timer. But if you manage to call QObject::killTimer twice chances are you have killed a timer belonging to someone else. To be safe you would have to reset the timerId you saved to an invalid timerId. The resulting code will look ugly though, but Qt to rescue! There is a shiny new class in Qt4.0 called QBasicTimer. It should not add any overhead and will avoid the above issue.

libtool must die

libtool must die

What is wrong if someone like me is fighting several hours to link a simple main.o to a library? Right, I’m trying to figure out why libtool is reshuffling my library paths…but now I think I have a pretty approximation of what libtool is doing.

while True:
random_library_path_order = randomize(sane_input)
if not link(stuff, random_library_path_order):
error(“Error you are not going to fix, sucker!”)

Let us deprecate libtool as fast as possible and let us start by making it an empty stub. I have wasted way too much time with it.

PS: Without libtool gcc is able to link this stuff just fine, so libtool is creating an artificial problem which is against any of engineering practive. It should solve problems but not be the problem… back to school boys!