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.
  • 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:
  • 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.

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://
url =

Do the same for the QtWebKit team repository:
url =

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
  • 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
  • 22fb1b1: 2010-07-22 Kim Gronholm
  • 5472c61: 2010-07-22 Kim Gronholm
  • d4625f2: Merge branch 'transform-action-event' of git:// 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
  • 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
  • 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 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
  • d22010b: [Qt] Clean up the input method handling
  • 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
  • 29b5a48: The scratch register should be saved in YARR with ARM JIT
  • cb74947: [Qt] Clean up mobile feature useage
  • 8b78c73: [Qt] Introduce Maemo6 for mobile features
  • 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
  • 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
  • f81dde5: Unreviewed build fix.
  • e6c6b3a: 2010-08-18 Sheriff Bot
  • 95feade: [Qt] Request for permission before starting Geolocation service
  • 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 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 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

blur support for CSS and Canvas shadow

Lately I have been working on adding blur support for CSS and Canvas, see master bug 34479. It is using Gaussian blur approximation via successive box blurs (I wrote detailed info on how it works and performs).

This is still work-in-progress, although it already allows QtWebKit to show soft shadow for text:

as well as, like Andreas mentioned, nice effect on Canvas demo Parcycle:

Friday, September 3, 2010

Installing Qt in parallel on Symbian

Jocelyn just gave me time-saving important advice:

If you're building Qt with an infix to be able to install Qt in parallel on a Symbian device, then you may run into the problem that the installation of QtMyInfix.sis fails. The error message is usually "General OS-related error", which tells us clearly what's wrong. NOT ;)

One likely source of error is a file conflict. The way to fix this is to look at the Qt_template.pkg file and comment out any files and directories that do not have your infix in the name. For example some of the qml directories are not infixed and they exist already on the device, so just comment it out in the .pkg file with a semi-colon and then it'll install.

It's a bit of trial-and-error, but for the time being it works :)

This week (35) in Oslo

Back to a weekly rhythm:

  • We're ramping up on our technical evaluation of V8 for QtScript. Olivier joined (yay).
  • We're preparing hardware/software for a Qt/Symbian/WebKit workshop in Oslo.
  • Jocelyn - our Symbian Knight - has been debugging network load issues with Qt/QtWebKit.
  • Andreas started reviewing Vlad's V8-for-QtWebKit patches, so that we can find out how QtWebKit would work with V8.
  • Qt Developer Days are coming up, so some of us have been busy preparing presentations.
  • Benjamin is investigating clipping performance with WebKit and the OpenGL paint engine, but as usual we often come back to the conclusion of wanting raster. (update: It seems scissor clipping was disabled)
  • Hangs with SSL on Symbian are also giving us headaches. A guy from Digia was able to reproduce it and is helping out. Yay :)

Installing the Crash Analyser in Carbide

Jocelyn ran into this yesterday, I ran into it, too. The future reference in this searchable archive:

If your Carbide installation lacks the Crash Analyser (in the Carbide Menu), here's how to install it:

  • Upgrade to Carbide >= 2.6. You can use Help->Check For Updates to upgrade your existing installation in place. Works beautifully :)
  • Help -> Install New Software
  • Select the Carbide C++ Update Site under "Work with:"
  • Select the Crash Analyser in the list of available software
  • Next and Finish :)