Monday, December 27, 2010

qtwebkit-2.1-week51 status report - changes since qtwebkit-2.1-week50

Release Notes for qtwebkit-2.1-week51 - Changes since qtwebkit-2.1-week50

0 bugs, 1 commits

Commits added or cherry-picked:
  • 164d0df: Revert "Added haptics implementation that is based on the haptics CSS properties and uses the haptics platform plugin interface"

Tuesday, December 21, 2010

qtwebkit-2.1-week50 status report - changes since qtwebkit-2.1-week49

Release Notes for qtwebkit-2.1-week50 - Changes since qtwebkit-2.1-week49
1 bugs, 1 commits

Bugs fixed / Tasks done:
  • #39958: [Qt] TextBreakIteratorQt performance
Commits added or cherry-picked:
  • 4bed859: Temporary fix for #39958 (TextBreakIterator QT performance)

Thursday, December 16, 2010

QtWebKit-2.2 branch is now open

The QtWebKit-2.2 branch is now open. In other words, the stabilization process that will lead to the 2.2 release has started.

Although still in planning stage, what we know for sure is that it'll be based on QtWebKit-2.1 (the branch has been forked from the qtwebkit-2.1 branch) and should be made available sooner than usual (in terms of branch stabilization time).

Please note that, just as QtWebKit-2.1, QtWebKit-2.2 will be an intermediary release, non officially supported by Nokia on all platforms.

Some links of interest:

Tests and feedback are very welcome, as usual.

Monday, December 13, 2010

qtwebkit-2.1-week49 status report - changes since qtwebkit-2.1-week48.1

Release Notes for qtwebkit-2.1-week49 - Changes since qtwebkit-2.1-week48.1
2 bugs, 2 commits

Bugs fixed / Tasks done:
  • #45391: QtWebKit asserts when selecting elided text.
  • #50730: Spatial Navigation: Crash when handling iframe of size 0.
Commits added or cherry-picked:
  • 6aef00a: QtWebKit asserts when selecting elided text.
  • 7bebc59: Spatial Navigation: Crash when handling iframe of size 0.

Tuesday, December 7, 2010

qtwebkit-2.1-week48.1 status report - changes since qtwebkit-2.1-week48

Release Notes for qtwebkit-2.1-week48.1 - Changes since qtwebkit-2.1-week48
3 bugs, 3 commits

This is an extra release to include a few late fixes from previous week.

Bugs fixed / Tasks done:
  • #42664: Simple lookahead hangs Yarr
  • #43852: [Qt] resizeToContent seems to trigger infinite resize on some pages
  • #49787: QtWebKit does not respond properly to QInputMethodEvents with replacement text in them.
Commits added or cherry-picked:
  • df5e090: Fixed issue where RegExp greedy jit code loops when no input is
  • e0e3111: Backport of all necessary fixes for #43852
  • 78d2e82: New fix for #49787: QtWebKit does not respond properly to QInputMethodEvents with replacement text in them

Monday, December 6, 2010

qtwebkit-2.1-week48 status report - changes since qtwebkit-2.1-week47

Release Notes for qtwebkit-2.1-week48 - Changes since qtwebkit-2.1-week47
2 bugs, 3 commits

Bugs fixed / Tasks done:
  • #43619: Bitmap.h has no default constructor
  • #50270: [Qt] [Symbian] Reintroduce compiler optimizations for JSC
Commits added or cherry-picked:
  • 0e90308: Revert "Backport fix for #49787 to qtwebkit-2.1"
  • 67daffa: Bitmap.h has no default constructor
  • e7c8392: [Qt] [Symbian] Reintroduce compiler optimizations for JSC

Monday, November 29, 2010

qtwebkit-2.1-week47 status report - changes since qtwebkit-2.1-week46

Release Notes for qtwebkit-2.1-week47 - Changes since qtwebkit-2.1-week46
6 bugs, 11 commits

Bugs fixed / Tasks done:
  • #44405: [Qt] Proper workaround for missing Gtk initialization in Adobe's flash plugins...
  • #46810: [Qt] Review the setUserPermission & friends API
  • #49373: [Qt] Add an API for informing the actual visible contents rect to WebCore
  • #49382: Spatial Navigation: issues with the node selection algorithm.
  • #49442: Spatial Navigation: Code cleanup
  • #49787: QtWebKit does not respond properly to QInputMethodEvents with replacement text in them.
Commits added or cherry-picked:
  • e60aee8: WebKit/qt:
  • e645d43: [Qt] Remove synchronous QWebPage::checkPermissions signal
  • 2290254: [Qt] Review the setUserPermission & friends API
  • 68124d7: [Qt] Review the setUserPermission & friends API
  • aa7ca33: [Qt] Review the setUserPermission & friends API
  • df0e5bc: [Qt] Review the setUserPermission & friends API
  • 0f2e0cc: Backport to qtwebkit-2.1 the fixes for #49442 and #49382
  • 85a22e1: Backport fix for #49787 to qtwebkit-2.1
  • 29553ff: Update symbian .def files after recent API changes
  • e922782: Fix regressions introduced by the spatial navigation fixes (#49442 and #49382)
  • 64a2028: Proper workaround for missing Gtk initialization in Adobe's flash plugins.

Monday, November 22, 2010

qtwebkit-2.1-week46 status report - changes since qtwebkit-2.1-week45

Release Notes for qtwebkit-2.1-week46 - Changes since qtwebkit-2.1-week45
5 bugs, 10 commits

Update: the original release notes included bug #49382 in the list of fixes, but the respective commit was reverted before the tag was made and is not part of this release.

Bugs fixed / Tasks done:
  • #34539: Implement NPN_GetValueForURL and NPN_SetValueForURL and provide a stub for NPN_GetAuthenticationInfo
  • #38911: [Qt] Patch to locate Java plugin DLL on Windows via its Registry...
  • #47022: Add proxy server query function proxyServersForURL and change the Mac plug-in code to use it
  • #49718: [Qt] Canvas doesn't animate on OpenVG backend
Commits added or cherry-picked:
  • 4364e90: Fix HTML Canvas not updating properly with VG backend
  • 9d9a127: Revert "Fix HTML Canvas not updating properly with VG backend"
  • 8c6f4ae: [Qt] Search the Windows registry for the location of the Java plugin DLL.
  • 39e824c: Add proxy server query function proxyServersForURL and change the Mac plug-in code to use it
  • a86a9d1: Add Qt ProxyServer stub.
  • 4b6d887: Fix typo.
  • 3c8023c: Implemented NPN_GetValueForURL and NPN_SetValueForURL and NPN_GetAuthenticationInfo.
  • fcda793: Fix for #49718: [Qt] Canvas doesn't animate on OpenVG backend
  • a55b974: Spatial Navigation: issues with the node selection algorithm.
  • 8576340: Revert "Spatial Navigation: issues with the node selection algorithm."

Tuesday, November 16, 2010

qtwebkit-2.1-week45 status report - changes since qtwebkit-2.1-week44

Release Notes for qtwebkit-2.1-week45 - Changes since qtwebkit-2.1-week44
8 bugs, 12 commits

Bugs fixed:
  • #44089: [Qt] Making effective use of Document::nodesFromRect
  • #46336: Make Document::nodesFromRect more flexible
  • #46492: document.nodesFromRect() needs to be removed from Document.idl
  • #46580: [Mac][DRT] Implement LayoutTestController::nodesFromRect
  • #48141: [Qt][QtTestBrowser] Toggle use of QGraphicsView messes up the menu
  • #48198: [Qt] Button's background style from default Qt Mobile Theme is overriding facebook's button style
  • #49372: [Qt] QWebScriptWorld should not be in QtWebKit 2.1
  • #49398: Spatial Navigation: Need better way to control size of content in tests.
Commits cherry-picked:
  • ee16ad6: [Qt][QtTestBrowser] Toggle use of QGraphicsView messes up the menu
  • 24c3199: Build fix (leftover from previous commit)
  • c49afb4: [Mac][DRT] Implement LayoutTestController::nodesFromRect
  • 848c9ed: Make Document::nodesFromRect more flexible
  • 659ae6b: document.nodesFromRect() needs to be removed from Document.idl
  • 3650536: [Qt] Making effective use of nodesFromRect.
  • bf5a319: Revert "[Qt] Prospective build fix for MSVC"
  • f329fc4: Revert "[Qt] Support evaluateScriptInIsolatedWorld()"
  • d625977: Revert "[Qt] Support evaluateScriptInIsolatedWorld()"
  • 9f57391: Tentative update of symbian .def files to remove QWebScriptWorld symbols
  • 1453361: [Qt] Button's background style from default Qt Mobile Theme is overriding facebook's button style
  • 655d83e: Spatial Navigation: Need better way to control size of content in tests.

Monday, November 8, 2010

qtwebkit-2.1-week44 status report - changes since qtwebkit-2.1-week42

Release Notes for qtwebkit-2.1-week44 - Changes since qtwebkit-2.1-week42
14 bugs, 15 commits

Please note that there was no week43 tag/release, exceptionally.

Bugs fixed:
  • #37153: Spatial Navigation: add support to <input type=text> and <textarea>
  • #40641: [Qt] Clicking button input does not give it focus
  • #43987: Downloading using XHR is much slower than before
  • #46814: [Qt] Fix tst_QWebPage::geolocationRequestJS()
  • #47809: [Qt] QtTestBrowser: Prevent calling load() directly from loadFinished() in robot mode.
  • #48079: [Qt] InspectorClientQt crashes when deleting a qwebpage which has an inspector
  • #48319: [Qt] Some unit tests try to use the data:<content-type>,<content> URL syntax with setHtml
  • #48323: [Qt] Assert in the tst_hybridPixmap::hybridPixmap() unit test.
  • #48324: [Qt] Skipping popup focus test for symbian
  • #48432: [Qt] tst_QWebFrame::popupFocus fails.
  • #48450: [Qt] Extend the Platform Plugin to define the padding of HitTestResult
  • #48692: [Qt] QWebPage's InputMethod event handling calls ShortcutOverride handler too
  • #48730: [Qt] QtTestBrowser runs out of memory with most of javascript benchmarks.
  • #48767: [Qt] QtTestBrowser : set mmp rule pageddata in Symbian
Commits cherry-picked:
  • baa0e2d: [Qt] Layout tests for fix focusing of control elements on mouse click.
  • f5d4208: [Qt] Unit tests: setHtml("data:text/html,...") -> load(QUrl("data:text/html,..."))
  • 12362e4: [Qt] Fix an assert with QtPixmapInstance creation.
  • 7e76cf1: [Qt] Fix tst_QWebPage::geolocationRequestJS()
  • f169505: [Qt] Fix tst_QWebFrame::popupFocus().
  • 4d3698b: [Qt] QtTestBrowser: Prevent calling load() directly from loadFinished() in robot mode.
  • a12122e: Fix the gap in the def files that was accidentially introduced in
  • da8bfab: [Qt] InspectorClientQt crashes when deleting a qwebpage which has an inspector
  • dcd6fcd: [Qt][Symbian] QtTestBrowser runs out of memory with most of javascript benchmarks.
  • 0e4d96b: [Qt] QWebPage's InputMethod event handling calls ShortcutOverride handler too
  • 136130c: [Qt] Skipping popup focus test for symbian
  • 68f99d0: [Qt] QtTestBrowser : set mmp rule pageddata in Symbian
  • 6ddf322: Spatial Navigation: add support to <input type=text> and <textarea>
  • 78ff335: Using the Platform Plugin to define the default values for the padding of HitTestResult.
  • 20290f0: Fix for #43874: Downloading using XHR is much slower than before

Thursday, October 28, 2010

notify-me

I find this script (notify-me) most useful when I build webkit :-)

Just 'make && notify-me'. You will get a tray notification when the build is complete. Code is not mine, it's ripped from some site.

#!/usr/bin/env python
"""This is a python 2.5 script that creates a notification using dbus."""
import dbus
item = ('org.freedesktop.Notifications')
path = ('/org/freedesktop/Notifications')
interface = ('org.freedesktop.Notifications')

icon = ''
array = ''
hint = ''
time = 10000 # Use seconds x 1000
app_name = ('Test Application')
title = ('Whatever it is, is done')
body = ('Its all over.')

bus = dbus.SessionBus()
notif = bus.get_object(item, path)
notify = dbus.Interface(notif, interface)
notify.Notify(app_name, 0, icon, title, body, array, hint, time)

Monday, October 25, 2010

Texture Mapper: Accelerated compositing evolved

In the last year I've been developing and maintaining the Qt implementation of Accelerated Compositing. The accelerated compositing code path in WebKit was originally written by Apple, to allow WebKit ports to accelerate animations, transitions and 3D transforms using the GPU. It was originally using CoreAnimations on Mac and on the iPhone, and something similar on Windows. In January 2010 we introduced the Qt implementation, that uses QGraphicsView and the Qt animation framework, which was then followed by the Chromium implementation, for, as you can guess, Chromium.

The Accelerated Compositing concept comes to optimize for cases where an element would be painted to the screen multiple times without its content changing. For example, a menu sliding into the screen, or a static toolbar on top of a video. It does so by creating a scene graph, a tree of objects (graphics layers), which have properties attached to them - transformation matrix, opacity, position, effects etc., and also a notification when the layer's content needs to be re-rendered.

How Qt Accelerated Compositing Works Today
If you want to know the basics about WebKit's graphics rendering, I recommend reading an entry from the Chromium blog entry from a few months ago: (https://sites.google.com/a/chromium.org/dev/developers/design-documents/gpu-accelerated-compositing-in-chrome).

Our architecture right now is slightly simpler than Chromium, since we don't use their cross process architecture. The idea right now is that each graphics layer is backed by a QGraphicsItem and a QPixmap, and the graphics scene is responsible to know which items to draw, who clips who, apply effects etc. The hardware acceleration is achieved by QtOpenGL, which knows how to accelerate repeated painting of QPixmaps, by caching them into OpenGL textures.

Why this was a good idea, and why it needs to change
Since the Qt APIs are so easy to use, getting Accelerated Compositing running on top of was quite simple. We were up and running with this approach within days, and the feature became stable rather quickly. We learned a lot about how to / how not to do this right during this time, and this wouldn't be possible without the API.

But now, after having more and more people use this feature and push its limits, the approach is showing its limitations. For example, getting 3D transformations to work correctly on top of the 2D graphics view was a pain, and it still doesn't look exactly right because support depth buffering, and isn't as fast as it can be, due to the software 3D->2D projection. Also mask and reflection effects are difficult to optimize, and texture uploads are a bottleneck. But the main problem is that there are too many abstractions - CSS goes to webkit, which goes to , then QPixmap, QPainter, the GL paint engine, and then OpenGL and the driver. Too many assumptions are being made along the way, that are not always correct in the context of the application.

Introducing Texture Mapper
The idea was to remove most of the abstractions, and go from GraphicsLayer directly to OpenGL, making the code that traverses the scene-graph and draws the texture-backed layers a cross-platform WebKit implementation that can be also used by other ports. The original code did exactly that, walked through the tree and issued GL calls, saving a texture per graphics layer. But the need for some abstraction layer came about - some GPUs require different optimizations then others, some have DirectFB and not OpenGL, some can benefit from EGL texture sharing and other proprietary extensions, and we still want this to work on pure software if hardware acceleration is not available.

The current implementation uses an abstraction called TextureMapper: it's a couple of thin abstract classes, one is a BitmapTexture and one is the TextureMapper. A BitmapTexture is equivalent to a GL texture or a QPixmap. Like QPixmap is gives you API to paint into it with software via a GraphicsContext, but it also allows you to use it as the render target for hardware accelerated drawing, like an FBO. This is important when using effects or opacity, for example. To render masks or opacity correctly on an element that has several descendant elements, the sub-tree has to be rendered into an intermediate buffer before the effect is applied. With QGraphicsEffect this is only possible using software, because of the limitations imposed by the many abstraction layers.

The TextureMapper class is equivalent to a QPainter or a GraphicsContext, but it's very limited in scope - you can bind a BitmapTexture to be the current rendering target, set the clip, and draw BitmapTextures.

Abstraction layers are usually a mistake
Abstraction layers are something I'm usually very careful about - people implement things from both sides of the layer, and you become tied to concepts you invented before the scope of the problem was completely clear. TextureMapper is an abstraction layer - which holds the same perils - but I chose to do it here anyway because of the other constraints I had.

To reduce the risks of having an abstraction layer, I limited its scope. The main limitation is that this abstraction layer is not public API, and is not pluggable. That means that, at least for now, the header files for that abstraction might change, as long as all the implementations inside webkit trunk can live with that change. So the abstraction layer just helps us separate parts of the code, it's not an "API".

Acknowledgements

This endeavor became real thanks to Sam Magnuson from Netflix, who did a lot of the work with me, and helped test and optimize it with a real-world application on TV hardware. also it was his idea and I stole it :)

Working across companies in the context of an open source project made a huge difference - they got better user experience for their application, and we got a QtWebkit feature that's functioning much better in a productized context.


Status
This code is now in webkit trunk (as of changeset 70487). To enable it, build webkit trunk with Qt (see http://trac.webkit.org/wiki/QtWebKit), adding the texmap CONFIG option. For example:

WebKit/WebKitTools/Scripts/build-webkit --qt --qmakearg="CONFIG+=texmap"

Most of the code resides under WebCore/platform/graphics/texmap, and the OpenGL implementation is under WebCore/platform/graphics/opengl.

Friday, October 22, 2010

qtwebkit-2.1-week42 status report - changes since qtwebkit-2.1-week41

Release Notes for qtwebkit-2.1-week42 - Changes since qtwebkit-2.1-week41

8 bugs, 12 commits

Bugs fixed:

  • #39625: [Qt] Sending a QInputMethodEvent::Selection event forces the Editor to go into Composition mode
  • #41480: [Qt][Symbian] Variable max heap size between target/emulator
  • #43827: [Qt] Unable to load pages on QtTestBrowser after canceling a page load.
  • #45363: [Qt] Crash when showing Flash content at staples.com...
  • #46186: [Qt] window.close() doesn't work in qt
  • #46616: [Qt] 32-bit Flash crashes on repeated SetWindow calls
  • #47545: [Qt] Right clicking on Flash in windowless mode crashes
  • #47845: QWebPage::ViewportAttributes class is not exported.

Commits cherry-picked:

  • 42e90ac: [Qt] window.close() doesn't work in qt
  • 00ea9ca: Winscw build fix
  • ec96dfd: Fix winscw cast when returning bool on methods which return Value
  • d333d7a: Updated the def file for winscw
  • 1be7a0e: Clean up the winscw changes
  • 80daa72: [Qt][Symbian] Variable max heap size between target/emulator
  • 230afa2: [QT] Unable to load pages on QtTestBrowser after canceling a page load.
  • 23549dc: [Qt] Export QWebPage::ViewportAttributes class.
  • 1994999: Rubber-stamped by Kenneth Rohde Christiansen.
  • 5afae7a: [Qt] Re-enable single-NPP_SetWindow quirk for 64-bit
  • e273313: [Qt] Windowless mode 64-bit Flash/X11 freezes when right-click is sent.
  • 1d1745e: [Qt] Sending a QInputMethodEvent::Selection event forces the

Friday, October 15, 2010

qtwebkit-2.1-week41 status report - changes since qtwebkit-2.1-week40

Release Notes for qtwebkit-2.1-week41 - Changes since qtwebkit-2.1-week40

5 bugs, 6 commits
(slow week due to Qt Dev Days)

Bugs fixed:

  • #43484: [Qt] Setting wmode to "opaque" is not necessary for Symbian
  • #46287: [Qt] Enable Netscape plugin metadata caching on Linux should not be set in QWebSettings::enablePersistentStorage
  • #47426: [Qt] Editing commands should not be executed on non-editable content.
  • #47540: [Qt] Update .def file for Symbian
  • #47613: [Qt] QtTestBrowser shows two Url input fields

Commits cherry-picked:

Friday, October 8, 2010

qtwebkit-2.1-week40 status report - changes since qtwebkit-2.1-week39

Release Notes for qtwebkit-2.1-week40 - Changes since qtwebkit-2.1-week39

13 bugs, 19 commits

Bugs fixed:

  • #40598: [Qt] QtWebkit Crashes on loading CelticKane Standard tests
  • #46182: [Qt] On Maemo platform, web style is missing for some inputs
  • #46347: [Qt] Remove setDeviceSize methods
  • #46461: [Qt] New input style for Qt Mobile theme
  • #46755: Viewport data change notification
  • #46896: Spatial Navigation: select element does not release focus with Spatial Navigation
  • #46901: Spatial Navigation: Press key "down" after page load should bring the focus to the 1st focusable element
  • #46920: [Qt] New buttons style for Qt Mobile theme
  • #46984: [Qt] Segmentation fault during zoom out
  • #46993: Spatial Navigation: Add support for
  • #47172: [Qt]Windowless flash plugin is not rendered in Symbian
  • #47268: Renaming WebCore::ViewportConfiguration to WebCore::ViewportAttributes
  • #47325: [Qt] API: ViewportConfiguration => ViewportArguments

Commits cherry-picked:

  • 0ddd163: [Qt] Fix platform plugin support after r68128
  • 1254672: 2010-10-01 Viatcheslav Ostapenko
  • e6e21be: 2010-09-28 Luiz Agostini
  • cb60b0d: 2010-10-04 Yael Aharon
  • c99c5e7: 2010-10-04 Chang Shu
  • 22653f2: QtWebkit API 2.1 cleanup.
  • 867aa08: 2010-10-04 Yael Aharon
  • 5587a3d: Fix RVCT 2.2 def files on Symbian. viewportConfigurationForSize incorrect.
  • 3d45725: [Qt] On Maemo platform, web style is missing for some inputs https://bugs.webkit.org/show_bug.cgi?id=46182
  • fd20b0a: 2010-09-27 Ragner Magalhaes
  • fb11250: 2010-10-01 Ragner Magalhaes
  • 1d5ee2c: 2010-10-01 Ragner Magalhaes
  • b2d63cf: [Qt] Remove setDeviceSize methods
  • 69b269b: Unreviewed build fix.
  • 330d6aa: Build fix due to unsuccessful merge (b2d63cf)
  • 88b5ab2: [Qt] Re-enable the web inspector for maemo6 builds
  • f188916: 2010-10-06 Luiz Agostini
  • 15761d2: 2010-10-07 Andreas Kling
  • 009aaea: Windowless flash plugin is not rendered in Symbian https://bugs.webkit.org/show_bug.cgi?id=47172

AC for plugins

I have been away from WebKit development for a while. There were some pressing matters in Maemo6 to attend to.

One of the things I am working on is the Flash support for Maemo6. And I am finding that the abstractions of QGV, meegotouch, Qt/WebKit are "adding up" resulting in much slower fps than using just plain Qt.

Some time back, Simon explained to me the concept of Accelerate Compositing. WebKit has no AC support for NPAPI plugins but by doing so we can remove the Qt/WebKit overhead when updating frames. Also, it allows us to implement Flash transparency correctly in QGV.

So, yesterday evening, I started hacking on Accelerated Composition (AC) for NPAPI plugins. With help from Noam, I am happy to report that Flash is rendering with AC :-) Expect it to land sometime next week. Here's a screenie with the fps.



(And oh, that's the first screenshot in this blog :)

UPDATE: You can find the initial code at http://gitorious.org/~girish/webkit/girishs-webkit/commits/plugins_ac_35524. https://bugs.webkit.org/show_bug.cgi?id=35524 is the bugzilla entry.

Wednesday, October 6, 2010

Cut your link time in half when building in Scratchbox/arm

... by passing --no-svg to build-webkit :)

I'm down to 1 minute 50 seconds from about 5 minutes. What's your link time? :)

Any other ideas how to improve the linking?

Problems with perl when building WebKit on Windows (even for Symbian)?

Seen this error message before?



python C:/dev/webkit/WebCore/html/parser/create-html-entity-table -o generated/HTMLEntityTable.cpp C:/dev/webkit/WebCore/html/parser/HTMLEntityNames.in
perl C:/dev/webkit/WebCore/make-hash-tools.pl generated C:/dev/webkit/WebCore/html/DocTypeStrings.gperf
syntax error at C:/dev/webkit/WebCore/make-hash-tools.pl line 149, near "} continue"
syntax error at C:/dev/webkit/WebCore/make-hash-tools.pl line 151, near "}"
Execution of C:/dev/webkit/WebCore/make-hash-tools.pl aborted due to compilation errors.
make: *** [generated\DocTypeStrings.cpp] Error 9
make: Leaving directory `C:/dev/webkit/WebCore'
Failed to generate WebCore's derived sources!



The reason is most likely that the files in your working directory - including the perl script(s) - are checked out with Windows line-endings and your perl version doesn't like it. The build of WebKit works most reliably with Unix linefeeds, so here is how you can convert your existing checkout:

git config core.autocrlf false
del .git\index
git read-tree HEAD
git checkout -f

Monday, October 4, 2010

qtwebkit-2.1-week40 status report - changes since qtwebkit-2.1-week38

Release Notes for qtwebkit-2.1-week40 - Changes since qtwebkit-2.1-week38

7 bugs, 9 commits

Bugs fixed:

  • #45509: REGRESSION: r61215 broke web views with transparent backgrounds
  • #46385: Keep viewport information in Document
  • #46617: [Qt] tst_QWebFrame::popupFocus() randomly fail on MeeGo handset because the focus is not set on the window
  • #46618: [Qt] : Enable local rendering on Maemo6
  • #46706: [Qt] tst_QWebPage::testStopScheduledPageRefresh() fails on MeeGo handset
  • #46730: [Qt] Clean up QWebPage::ViewportConfiguration API
  • #46812: [Qt] Crash if an scene with accelerated compositing layout during the paint event

Commits cherry-picked:

  • cddf898: 2010-09-27 Benjamin Poulain
  • eda6059: 2010-09-27 Girish Ramakrishnan
  • 90ea290: 2010-09-24 Luiz Agostini
  • d407fb8: 2010-08-18 Laszlo Gombos
  • 37291a9: 2010-09-28 Benjamin Poulain
  • 9615fdd: 2010-09-28 Andreas Kling
  • bf85131: 2010-09-09 Simon Fraser
  • 13e454d: 2010-09-29 Andreas Kling
  • 35e5a3e: 2010-09-30 Benjamin Poulain

Saturday, September 25, 2010

qtwebkit-2.1-week38 status report - changes since qtwebkit-2.1-week37

Release Notes for qtwebkit-2.1-week38 - Changes since qtwebkit-2.1-week37

18 bugs, 33 commits

Bugs fixed:

  • #38324: [Qt] Fix compilation with QT_NO_FEATURE
  • #41155: In FrameLoader, m_URL is not set before calling client dispatchDidCommitLoad for cached pages
  • #42787: The transaction callback parameter of db.changeVersion() should be optional
  • #43009: Abstract out page allocation from executable allocators
  • #43162: Add support for MADV_FREE to PageAllocation
  • #43185: Switch RegisterFile over to use PageAllocation
  • #43234: [QT] build fix for symbian
  • #43269: Change the JavaScript heap to use the new PageAllocation class
  • #43390: Do not CRASH if we run out of room for jit code.
  • #43515: Fix small design issues with PageAllocation, split out PageReservation.
  • #44324: [Qt] Initialize GDK before loading plugins
  • #44769: [Qt] Web Sockets are insecure with QtWebKit
  • #45878: [Qt] Symbian scoping in Qt build profile is wrong
  • #45965: [Qt] Don't copy clip path to TransparencyLayer
  • #46172: [Qt] Add robot loader timeout and extra time options.
  • #46174: [Qt] Crash while aborting a loading page.
  • #46345: [Qt] Refactor QtWebKitPlatformPlugin interface
  • #46402: [Qt] QWebHapticFeedbackPlayer needs correct exposure through QWebKitPlatformPlugin

Commits cherry-picked:

  • db31c6a: 2010-09-18 Andreas Kling
  • ab9219b: 2010-09-20 Jacob Dinu
  • a47890e: [Qt] Add robot loader timeout and extra time options. https://bugs.webkit.org/show_bug.cgi?id=46172
  • 6160419: 2010-09-21 Jocelyn Turcotte
  • 0512e77: 2010-08-14 Tasuku Suzuki
  • a74784a: 2010-08-20 Andreas Kling
  • 888e052: Bug 43009 - Abstract out page allocation from executable allocators
  • 7a94124: Build fix for !Mac platforms.
  • db8c6f7: Chromium/GTK build fix
  • 2557fec: Windows build fix from Chromium/GTK build fix!
  • e35e861: Bug 43162 - Add support for MADV_FREE to PageAllocation.
  • e582139: 2010-07-30 Mahesh Kulkarni
  • 986ae02: 2010-08-02 Mahesh Kulkarni
  • 6839b66: Bug 43390 - Do not CRASH if we run out of room for jit code.
  • 8565c8e: https://bugs.webkit.org/show_bug.cgi?id=43269
  • c0dbef5: Build fix following r64624.
  • 4da2cb3: Speculative windows build fix.
  • 1fcab4f: Build fix.
  • 0ea3d0d: Build fix.
  • 1c5d170: JavaScriptCore: Bug 43515 - Fix small design issues with PageAllocation, split out PageReservation.
  • 5ec36dd: Build fix - add new header to !Mac projects.
  • 90459cd: Windows build fix.
  • d06ce7e: Windows build fix part II.
  • aa118f4: Bug 43185 - Switch RegisterFile over to use PageAllocation
  • cced885: [Symbian] Fix commit/decommit of system memory using RChunk
  • 9b5a4b4: 2010-09-23 Tor Arne Vestb
  • 0f90c4b: Fix Qt build by adding missing file
  • 005c88d: 2010-09-23 Ademar de Souza Reis Jr
  • a2fab5a: 2010-09-24 Yael Aharon
  • 7792647: 2010-09-16 Thomas Zander
  • e24799e: [Qt] Enable building Qt/Webkit with debug symbols
  • 40a9f70: [Qt] Fix the Wince build.
  • 8e0cd1b: WebCore: Make db.changeVersion()'s third parameter optional, as required by the spec. https://bugs.webkit.org/show_bug.cgi?id=42787

Thursday, September 23, 2010

fatal: The remote end hung up unexpectedly

Gitorious is getting a bit grumpy at clones and fetches lately, especially with big repositories such as WebKit.

A workaround, as suggested by Simon and the Gitorious support, is simply to use the SSH protocol instead of the Git protocol, even for read-only access to repositories. This requires to have a Gitorious account setup, which most of us should have already.

You can edit your .git/config file to achieve that by changing the line
url = git://gitorious.org/webkit/webkit.git
to
url = git@gitorious.org:webkit/webkit.git

Do the same for the QtWebKit team repository:
url = git@gitorious.org:+qtwebkit-developers/webkit/qtwebkit.git

Gitorious are reporting having difficulties to handle all the traffic they currently have, I guess this may affect the stability of the daemon serving the git:// protocol, who knows.

Monday, September 20, 2010

This week (37) in Oslo

A fast-paced week:
  • Andreas and I finished what Vlad had started: QtWebKit trunk can now be built against V8. There's one catch: Not just any V8, it's our experimental evaluation port of QtScript that uses V8. On the upside it means the death of the ugly bridge code and instead QWebFrame::addToJavaScriptWindowObject use QtScript's native QObject bindings. Latest news is that the Web Inspector started working with the V8 build, too.
  • Andreas fixed a miter-join bug in Qt's stroker, allowing the removal of ugly workarounds in the Qt port of WebKit. Transparency layers have also received a nice performance boost through the removal of unnecessary clipping.
  • Tor Arne is hacking away on the low-end version of the video playback and QtMultimediaKit.
  • We had an intense workshop the entire week, focusing on knowledge sharing about WebKit and Qt development and the Symbian port.

Friday, September 17, 2010

qtwebkit-2.1-week37 status report - changes since qtwebkit-2.1-week36

Release Notes for qtwebkit-2.1-week37 - changes since qtwebkit-2.1-week36

11 bugs, 20 commits

Bugs fixed:

  • #44800: Notifications should support a click event
  • #45539: [Qt] selected text gets deleted when qgraphicswebview losts focus
  • #44836: [Qt] Support click event for notifications
  • #45352: Missing EOL in expected test results
  • #44201: Add common handling of viewport meta tag based on new Opera spec
  • #45678: [WINCE] Buildfix for ViewportArguments.cpp
  • #35247: [Qt] QtTestBrowser crashes when enabling QGraphicsView mode after first loading page without it enabled
  • #45776: [Qt] Zoom factor for checkboxes and radios.
  • #45923: [Qt] Remove unnecessary QPainter::clipPath() call in TransparencyLayer()
  • #43492: Make the viewport meta tag parser support the Android target-densitydpi extension.
  • #45885: [Qt] Original window overlapped on Symbian platform with a new window when we "Take screen shot" in QtTestBrowser.

Commits cherry-picked:

  • 0b88ce4: Absented missing functions
  • 5eb7da7: [Qt] Fix group of declarative web view in QML docs.
  • bdd0e42: WebCore: [Qt] Let QtWebKit inject itself into the qt configuration
  • 7f50202: [Qt] fix qt_webkit_version.pri install for in-Qt builds
  • 859cec2: Doc: qdoc fixes.
  • 3684ec4: [Qml] Ensure WebView gets focus when an editable node is clicked on.
  • 5612435: Doc: More work on the QML documentation.
  • 2d9d3fd: doc: Changed the title so lists of contents sort better.
  • 7cb9713: 2010-09-10 Yael Aharon
  • d11109d: 2010-08-27 John Gregg
  • 82ccd13: 2010-09-08 Yael Aharon
  • 48483ff: 2010-08-05 Kenneth Rohde Christiansen
  • 0cf2d84: WebCore: Update support for the viewport meta tag algorithm, to match the following draft spec:
  • 4c32a92: 2010-09-13 Patrick Gansterer
  • 4d2d04d: [Qt] Update the Symbian def files
  • 951126b: [Qt] QtTestBrowser crashes when enabling QGraphicsView mode after first loading page without it enabled https://bugs.webkit.org/show_bug.cgi?id=35247
  • 94645f6: 2010-09-14 Luiz Agostini
  • b422ce0: 2010-09-10 yi shen
  • 52d2178: 2010-09-16 Andreas Kling
  • a1ecc49: 2010-09-16 Leonid Ebril

Friday, September 10, 2010

This week (36) in Oslo

This week's highlights from Oslo:


  • We've been reviewing what we're currently working on in our "Current Project Dashboard" in JIRA.
  • Andreas has become a WebKit reviewer(!!) and posted a nice blog about the state of HTML 5 Canvas support in QtWebKit trunk.
  • Integrated Juha's awesome fix for SSL hangs on Symbian into Qt 4.7.
  • V8 evaluation for QtScript continues at fast pace, as well as Andreas' work on massaging Vlad's patches to build QtWebKit with V8.
  • More preparations for Symbian/WebKit/Qt workshop in Oslo in Week 37
  • Tor Arne is refactoring the mediaelement fullscreen  branch to work better on different platforms with different graphics architectures, as well as fixing bugs in QtMultimediaKit.
  • Jocelyn found and fixed a bug in QNetworkAccessManager's internals, improving the network stability when loading many websites consecutively.
  • Benjamin has - among many other things - fixed auto-test failures with QtWebKit on Maemo/arm.

qtwebkit-2.1-week36 status report - changes since the fork from master

Release Notes for qtwebkit-2.1-week36 - Changes since 4a1210a (fork from master)

64 bugs, 105 commits

This is a particularly large report, as it includes all changes since the branch creation back in July. Future weekly reports should be way shorter.

Bugs fixed:

  • #33280: [RVCT] ACID3 test crash
  • #37505: Enabling view modes to all platforms
  • #44674: [Qt] tst_QWebFrame::popupFocus() hardcode the element position
  • #44291: install rietveld's upload script from a versioned url
  • #40197: Enhance the hit testing to take a rectangle instead of a point
  • #43782: [Qt] NPAPI plugins not drawn until page scrolled
  • #43143: [Qt] Platform plugin interface for Haptics
  • #43530: [Qt] Input mode states are not reset after entering a password field
  • #41995: [Qt] Enable binding of QObjects to JavaScript environment for inspector frontend
  • #42892: [Qt] Decouple QTouchEvent's accepted flag from JS prevent default
  • #44697: [Qt] tst_QWebFrame::connectAndDisconnect() fails on WebKit trunk because __qt_sender__ is never set
  • #43534: Remove superfluous non-negative checks in HitTestResult:padding{Width|Height}
  • #44179: REGRESSION(r65603): 4 tests crash on Qt bot (Requested by Ossy on #webkit).
  • #41364: [Qt] QWebPage::allowGeolocationRequest should be async API
  • #29847: [Qt] Add support for automatically creating new windows in QWebView
  • #43545: [Qt] Clean up the input method handling
  • #44703: [Qt] tst_QWebFrame::inputFieldFocus() fails on MeeGo Handset with QtWebKit 2.1
  • #43037: [Qt] Incorrect input method hints
  • #41413: [Qt] QtWebKit needs public API for Notifications.
  • #43168: [Qt] QtTestBrowser not setting preferredContentsSize for resizesToContents
  • #43170: [Qt] Factor LauncherWindow class out of main.cpp (QtTestBrowser)
  • #43910: The scratch register should be saved in YARR with ARM JIT
  • #31273: [Qt][Symbian] Make sure WebKit headers are included before platform headers on Symbian
  • #43562: [Qt] Temporary files should not be created in the current directory
  • #39979: Generate TransformAction events from touch gestures
  • #37445: [Qt] Regression: Google calendar edit event details gets stuck on loading
  • #44061: [Qt] Path::closeSubpath() should only close the last subpath if it has >1 point
  • #44043: [Qt] Flash does not work on n900
  • #42027: [Qt] Request for permission before starting Geolocation service
  • #44594: [Qt] Add Visibility notification NPAPI for plugins
  • #44403: [Qt] -webkit-text-stroke is broken due to Qt::TextBypassShaping
  • #44252: QWebView::selectionChanged() is never emitted.
  • #40374: Client-based Geolocation does not pass high power option to controller and client
  • #45001: [Qt] tst_QWebPage::originatingObjectInNetworkRequests() fails on trunk
  • #43448: [Qt] [QtTestBrowser] Clean up static and global menu state controls
  • #38538: JSC TimeoutChecker::didTimeOut overflows on ARM
  • #43199: [Qt] QtTestBrowser: Move WebPage class methods definitions from main.cpp to webpage.cpp
  • #43968: [Qt] Clean up mobile feature useage
  • #43969: [Qt] Introduce Maemo6 for mobile features
  • #40002: Need Geolocation LayoutTest to test case where permission has neither been granted nor denied
  • #31115: [Qt] QWebView, QGraphicsWebView and QWebFrame setHtml() should be better documented
  • #29381: [Qt] [Regression] QWebView::setHtml() executes script body twice
  • #43209: [Qt] QtTestBrowser: -resizes-to-contents command line parameter is broken
  • #43851: [Qt] QtTestBrowser: switching between QWebView and QGraphicsWebView modes is broken
  • #39757: Add TransformActionEvent support
  • #43853: [Qt] QtTestBrowser: after switching between QWebView and QGraphicsWebView, rotation actions get broken
  • #42811: Geolocation preemptive permissions policy is buggy
  • #43179: [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin
  • #42965: CSS: Add fast-path for rgba() color parsing
  • #42821: REGRESSION(63862): animations/play-state.html fails intermittently
  • #44761: [Qt] tst_QWebView::focusInputTypes() fails on MeeGo Handset with WebKit 2.1
  • #44124: [Qt] [Symbian] Consistently use Q_OS_SYMBIAN to guard all Symbian platform dependencies
  • #40797: [Qt] Decode images directly to QPixmap
  • #44701: [Qt] tst_QWebFrame::hitTestContent() fails on Meego Handset
  • #43235: [QT][Symbian] QtTestBrowser missing location capabilities
  • #43478: [Qt] DumpRenderTree lacks functionality for new Geolocation delayed permission tests
  • #41065: [Qt] tst_QWebFrame::callQtInvokable() fails
  • #39493: Touch events do not affect the :active CSS state
  • #45167: [Qt] Qt/WebKit passes 32-bit X Pixmap to non-flash NPAPI plugins
  • #43635: [Qt] Flash content can not be displayed by Symbian Flash Player
  • #43241: [Qt] Change wording in QtTestBrowser
  • #45268: [Qt] Symbian scoping in Qt build profile is wrong
  • #43518: [Qt][QtTestBrowser] Remove unneeded QAction class members

Commits cherry-picked:

  • 54ecd4d: [RVCT] ACID3 test crash https://bugs.webkit.org/show_bug.cgi?id=33280
  • 22fb1b1: 2010-07-22 Kim Gronholm
  • 5472c61: 2010-07-22 Kim Gronholm
  • d4625f2: Merge branch 'transform-action-event' of git://gitorious.org/~kimgronholm/webkit/kimgronholms-webkit into qtwebkit-2.1
  • aa217ca: [Qt] Build fix for Qt apps
  • e3c1d99: Doc: Fixed incorrect QML property type.
  • f1ec6bf: 2010-07-24 Andreas Kling
  • c441233: [Qt] Incorrect input method hints https://bugs.webkit.org/show_bug.cgi?id=43037
  • 15e28c0: 2010-07-27 Kim Gronholm
  • 5b6f155: 2010-07-28 Kim Gronholm
  • 0698601: [Qt] Use the default timeout interval for JS as the HTML tokenizer delay for setHtml()
  • e4306d5: 2010-07-22 Jamey Hicks
  • b89b455: Unreviewed.
  • 235046a: 2010-07-22 Yael Aharon
  • 67bdb06: [Qt] Platform plugin interface for Haptics https://bugs.webkit.org/show_bug.cgi?id=43143
  • a8c6c3d: Added haptics CSS properties and values and their necessary interfaces. Also included the haptic properties in the default style sheet
  • acbb464: 2010-07-22 Ben Murdoch
  • bcfea5a: 2010-07-21 Grace Kloba , Antonio Gomes
  • a4eed5a: 2010-07-30 Mahesh Kulkarni
  • 20c90a1: 2010-07-29 Alexis Menard
  • 1be06f6: Added haptics implementation that is based on the haptics CSS properties and uses the haptics platform plugin interface
  • 83db6ec: Enabled haptics by default on QtWebKit
  • 0d41f3c: Merge branch 'haptics2' of gitorious.org:~kimgronholm/webkit/kimgronholms-webkit into qtwebkit-2.1
  • 9c3db15: 2010-08-04 Andreas Kling
  • 9723f63: 2010-08-03 Abhishek Arya
  • ea9ef08: 2010-08-04 Abhishek Arya
  • b0aea67: [Qt] Input mode states are not reset after entering a password field https://bugs.webkit.org/show_bug.cgi?id=43530
  • d22010b: [Qt] Clean up the input method handling https://bugs.webkit.org/show_bug.cgi?id=43545
  • 7e049b6: 2010-08-04 Markus Goetz
  • 195b286: 2010-08-05 Simon Hausmann
  • 776ca6d: 2010-07-29 Antonio Gomes
  • 1f92262: 2010-07-29 Antonio Gomes
  • d155e63: 2010-07-29 Antonio Gomes
  • f4f465b: 2010-07-29 Antonio Gomes
  • f7143c4: 2010-08-02 Antonio Gomes
  • 36b4417: 2010-08-04 Antonio Gomes
  • 37a7659: 2010-08-04 Antonio Gomes
  • 437b1c7: 2010-08-04 Antonio Gomes
  • 89e69fa: 2010-08-09 Antonio Gomes
  • dc33a04: 2010-08-09 Antonio Gomes
  • 1d625d5: 2010-08-09 Antonio Gomes
  • 4512af7: 2010-08-09 Antonio Gomes
  • 12afa06: 2010-08-04 Abhishek Arya
  • 4395039: 2010-07-30 Luiz Agostini
  • 40071b7: 2010-08-04 Antonio Gomes
  • b7cbbb3: [Qt] Update the Symbian def files
  • b8bfbbe: 2010-08-11 Antonio Gomes
  • 2b177d4: 2010-08-11 Antonio Gomes
  • 1ca2015: Make sure NPAPI plugins get an initial setNPWindow on Mac
  • f1c7842: [Qt] Decode images directly to QPixmap https://bugs.webkit.org/show_bug.cgi?id=40797
  • 29b5a48: The scratch register should be saved in YARR with ARM JIT https://bugs.webkit.org/show_bug.cgi?id=43910
  • cb74947: [Qt] Clean up mobile feature useage https://bugs.webkit.org/show_bug.cgi?id=43968
  • 8b78c73: [Qt] Introduce Maemo6 for mobile features https://bugs.webkit.org/show_bug.cgi?id=43969
  • 4c848c8: 2010-08-12 Hui Huang
  • 57d8d32: Revert "[Qt] instance objects created for QObjects are somtimes GC'd"
  • b88b478: Enable production builds in this release branch
  • 8961d12: 2010-08-19 Laszlo Gombos
  • a00c884: 2010-08-24 Simon Hausmann
  • 44aad6b: 2010-08-19 Ojan Vafai
  • c2aaec1: 2010-08-16 Andreas Kling
  • 1a184f3: 2010-08-23 Andreas Kling
  • aa4d118: 2010-08-16 Andreas Kling
  • cb830f8: 2010-08-17 Laszlo Gombos
  • 4172d67: 2010-08-24 Simon Hausmann
  • 72b0632: [Qt][Symbian] Make sure WebKit headers are included before platform headers on Symbian https://bugs.webkit.org/show_bug.cgi?id=31273
  • f7b1805: 2010-08-24 Simon Hausmann
  • e6e59ea: 2010-08-25 Simon Hausmann
  • b294d94: 2010-07-27 Steve Block
  • e3bec9e: 2010-08-17 Mahesh Kulkarni
  • 089151e: 2010-08-18 Mahesh Kulkarni
  • 741b9a8: Adds Geolocation LayoutTests for the case where permission is not granted or denied immediately https://bugs.webkit.org/show_bug.cgi?id=40002
  • f81dde5: Unreviewed build fix.
  • e6c6b3a: 2010-08-18 Sheriff Bot
  • 95feade: [Qt] Request for permission before starting Geolocation service https://bugs.webkit.org/show_bug.cgi?id=42027
  • 51fa560: Unreviewed build fix.
  • deff375: [Qt] Change default font from sans-serif to serif
  • 37346b4: Fix GTK layout-test break after r64114
  • acb2ef3: Update expected result as well to match r64115.
  • c74cf23: [Qt] Fix failing layout-tests after r64114
  • 8ba974e: Set PluginQuirkRequiresDefaultScreenDepth for all Flash versions and not just Flash 10.
  • 62187e6: Reviewed by Antonio Gomes.
  • 2f4975c: [Qt] Implement Maemo5 local rendering NPAPI extension. See https://wiki.mozilla.org/Plugins:NokiaMaemoImageSurface for details.
  • c181405: [Qt] Inject wmode=opaque for both QWebView and QGraphicsWebView on Maemo5 as Flash XEmbed support is flaky.
  • a5841ca: [Qt] When using the raster graphics system on Maemo5, allow Flash to render directly into the raster window surface. wmode=transparent is now supported as a result of this change.
  • 2908706: [Qt] Allow wmode=transparent in QWebView on Maemo5 after r65775.
  • be1fdcb: 2010-08-22 Marc Mutz
  • 665fb37: 2010-08-26 Simon Hausmann
  • 5019f1f: 2010-08-26 Benjamin Poulain
  • 37adffc: Merge branch 'qtwebkit-2.1' of gitorious.org:+qtwebkit-developers/webkit/qtwebkit into qtwebkit-2.1
  • 4a3c8a0: [Qt] Set the clipRect correctly in windowed and windowless mode. In Windowed mode, the values are in page coordinates. In Windowless mode the values are in drawable coordinates. Setting these values is purely academic since they are not used by Flash. However, there is a possibility that plugins might infer a 'null' clipRect to mean 'invisible'.
  • fb2dbc3: Unreviewed.
  • de555d5: 2010-08-26 Antonio Gomes
  • c61bb8f: 2010-08-27 Antonio Gomes
  • 2997cc1: 2010-08-27 Benjamin Poulain
  • a5aac3c: 2010-08-27 Benjamin Poulain
  • 7c8ea62: 2010-08-27 Benjamin Poulain
  • 4ed6900: 2010-08-27 Kimmo Kinnunen
  • 8ba35dd: 2010-08-28 Daniel Bates
  • 4f9cc59: 2010-08-31 Benjamin Poulain
  • 836b33d: 2010-08-31 Benjamin Poulain
  • c121913: 2010-08-31 Benjamin Poulain
  • 5da1b42: 2010-09-01 Mahesh Kulkarni
  • 71e3ae5: Passing a 32-bit depth X pixmap to NPAPI windowless plugins is too inefficient. Instead, pass a X Pixmap that has same depth as the screen depth since graphics operations are optimized for this depth.
  • 20452c7: 2010-09-09 Kristian Amlie
  • a64f996: 2010-09-07 Kent Hansen