kdewebkit moved to kdereview

Lukas Appelhans l.appelhans at gmx.de
Mon Oct 26 20:39:23 GMT 2009

Am Montag 26 Oktober 2009 20:38:08 schrieb Dawit A.:
> On Monday 26 October 2009 02:24:29 Benjamin Meyer wrote:
> [snipped]
> > Glad to see that was improved.  Looking at the api here are some notes:
> >
> > QWebView's isExternalContentAllowed function docs should point to
> > KWebPage's documentation to indicate that the functions are nothing
> > more then wrappers around the functions in KWebPage.  In both classes
> > what is "external" is never defined in the docs.  And perhaps they
> > should also point to KIO::AccessManager's external functions as they
> > are both nothing more then wrappers around those functions.
> Fixed the documentation...
> > openUrlInNewTab docs are incorrect.  It is also emited if you ctrl
> > click on a link.
> > openUrlInNewWindow seems to be missing for when the user would click
> > on a link with those keyboard modifiers.
> > What about the about when the user wants to open the link in a new tab
> > and have it be selected?
> Fixed the documentation and renamed the signal to 'openUrlInNewWindow'.
> Whether you want to handle that signal by opening a new window or a new tab
>  or how that tab should be positioned afterwards is an application specific
>  issue. This class have no means of even knowing that your application uses
>  tabs.
> > The wheel event code does not do the same thing in qt 4.5 and 4.6.
> > Should this wheel behavior actually go upstream into qtwebkit?
> Ahhh... There is only a "#if QT_VERSION < 0x040500" in that code to make it
> work with QtWebKit from Qt 4.4 so I do not understand the 4.6 reference in
> your comment...
> As far as that function is concerned, it is only used to do page zooming. I
>  am not entirely sure that this would be accepted upstream since one can
>  implement this functionality by simply installing an event filter on the
>  QWebPage. It is added here following the theme of a convenience
>  function...
> > There seems to be missing convenience functions to get the kde network
> > access manager and plugin factory
> Ahem... I do not follow... There is already a
>  QWebPage::networkAccessManager() and  QWebPage::pluginFactory().
> KWebPluginFactory is a pure re-implementation of existing virtual member
> functions and does not provide any additional methods. For the network
>  access manager, if you invoked QWebPage::setNetworkAccessManager(...) with
>  an instance to a re-implementation, then you already have access to that
>  instance or you should simply use qobject_cast to down cast what is
>  returned by QWebPage::networkAccessManager....  So I fail to understand
>  what you mean here...
> > As QL1S is defined might as well use it in the code everywhere
> Done with the exception of the icon names which might be removed based on
>  your suggestions below...
> > KWebPage sets a ton of icons on the actions when the KWebPage is
> > created.  This slows down the startup time and really upstream should
> > get a patch to use QIcon::fromTheme if it doesn't already.  Same goes
> > for the shortcuts.
> QIcon::fromTheme ? New function in Qt 4.6 ? I do not see that function in
>  the QIcon class documentation. I think there is no objection to do that if
>  it is possible, but you have to elaborate on what you mean...
> > In the constructor this bit of code seems wrong.  Does a view() exist
> > at this point?  What if I set a view later?  Could this crash?
> >    qlonglong windowId = view()->window()->winId();
> Fixed. For what it is worth the current implementation does not crash when
> used from webkitpart, but your point is valid. It might crash depening on
>  how the class is used...
> > setSessionMetaData and setRequestMetaData don't have getters and the
> > docs don't link to the kio docs and give a hint that they are nothing
> > more then frontends
> Fixed though I personally think the getters in practise will be rarely
>  used. However, point well taken and in fact I have even added functions to
>  remove the meta data entries simply for completeness sake.
> > chooseFile, javaScriptAlert javaScriptPrompt, and javaScriptConfirm
> > shouldn't need to be overloaded.  KFileDialog should show up and the
> > messagebox's shown by QtWebKit should be identical to the ones
> > KWebPage has.  (ignoring the null pointer checks that are missing that
> > will cause a crash)
> Right. I tested this out and it seems to work as you stated ; so the re-
> implementations of those functions have been removed...
> > The userAgentForUrl look like it has issues  Is
> > KProtocolManager::userAgentForHost(url); setup to only return KHTML
> > results?
> For the record, there is no such thing as "KHTML results" when it comes to
> user-agent strings in KDE. All user-agent settings are KIO specific. In
>  other words, the user-agent settings coming from KProtocolManager apply to
>  all applications that use KIO, not just KHTML.
> > messing around with hardcoded string offsets of the
> > QWebPage::userAgentForUrl() I think is asking for trouble.  If you
> > need the WebKit version you can get that from qtwebkitversion.h  It
> > would be nice if this was just
> > {
> >   return KProtocalManager::userAgentForHost(url, defaultUserAgent);
> > }
> > meant to remove this?
> > //kDebug() << userAgent;
> That is fixed now. The only thing the userAgentForHost re-implementation
>  should be doing is using KProtocolManager::userAgentForHost(...) unless
>  that function returns the default user agent string. When it does return
>  the default useragent string, it is supposed to revert to using
>  QWebPage::userAgentForUrl.
> > KWebPage::createPlugin shouldn't do anything by default.  That is what
> > KWebPluginFactory is for.  Besides the current code might have
> > security issues.
> Fixed. Yes, that should actually not be necessary. Even if it was to be
>  left it should have been done such that it was restricted to local (read:
>  file) resource.
> > KWebPage::downloadRequest
> > - Shouldn't this call to kget over dcop?
> Yes and that is on the TODO list. This code was lifted out of khtml ; so it
> probably needs to be fixed there as well...
Well as KGet lies in KDENetwork noone guarantees that it is installed... in 
the Webkit-Part is already a tweak on calling a download manager like KGet...

I'm not the expert here though, maybe Urs can clarify... :)

> > - Isn't there a option if it should pop up the file dialog?
> Where would it get the destination filename from ? Hmm... maybe that
> information can be passed through QNetworkRequest::setAttribute function
>  using user specific attributes...
> > - Might be nice to add api to KIO::file_copy to take a QNetworkRequest
> Probably...
> > authorizedRequest looks nice, we can drop in the adblock network code
> > I wrote for Arora into that very easily.
> No objection there. The webkitpart re-implementation already does do ad
>  block filtering...
> Thanks for your input/suggestions/critique...

More information about the kde-core-devel mailing list