Archive for the ‘Rendering Engines’ category (1 post)

Non-economic Printing, Parallel GC Tracing and CSS Shaders

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 17

Last week, 1,332 changes landed in both repositories: 768 at Chromium’s and 564 at WebKit. Highlights include the possibility to print background images and colors, a vastly improved GC for Apple’s JavaScriptCore and quite some updates on Content Security Policy following last week’s TPAC.

A multi-threaded accelerated surface implementation has landed now for Chromium on Windows as well, which, together with a follow up patch, will aid in having multiple windows rendering at 60 frames per second.

Following discussion at last week’s TPAC, WebKit’s Content Security Policy implementation has been updated to handle empty URLs, the allow-popups directive has been implemented on request of Microsoft, as has the sandbox directive, which basically mirrors the “sandbox” attribute for html and iframe elements.

In terms of specification compliance, the CSS Parser has been adjusted to accept any character in a string except for newlines and the string-opening quote. Finally, window.onerror will now fire for exceptions and errors in attribute-scripts. Canvas objects can now be exported to WebP images and using a border-box box-sizing with elements that have display on table-cell won’t calculate the content height anymore.

For subtitles, a TrackEvent was added, as were load notifications. WebKit now supports the -webkit-print-color-adjust property which allows you to toggle printing of background images and colors, and Fady Samuel landed the parsing stage of a new -webkit-aspect-ratio property, specified on Tab’s blog.

In the past few weeks, a lot of performance improvements already landed for Apple’s JavaScriptCore, followed this week by another 3.8% on Kraken and 3.5% on v8. The latter is especially interesting, as it adds parallel tracing to the garbage collector, reducing GC pauses by almost 50% in day-to-day usage!

A compile time flag has been added for CSS Shaders, indicating that work there will be starting! A fair number of bugs has already been created, which are being worked on together by Adobe and Apple engineers.

Other changes which occurred last week:

And that’ll be all again 🙂

Read more (no comments) »

OpenBSD, HTML5 Microdata and Cross-Fading Images

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 17

Another 1,511 changes further on, 885 made at Chromium’s repository and 626 at WebKit’s. Last week’s highlights include upstreaming of OpenBSD support into Chromium, lots of progress on implementing support for HTML5 Microdata and first steps towards supporting the CSS cross-fade() function for images.

At Chromium, a series of patches has been contributed by Robert Nagy which strongly improve support for the OpenBSD operating system. Previously it was maintained as a port on OpenBSD Ports.

Within Web Inspector, it’s now possible to select the indentation which will be used in the text editors. The four options available are two, four or eight spaces, or a tab. Advanced search is now available for content scripts and inline background-image CSS properties won’t show a warning anymore in the console.

Arko Saha’s work on implementing the HTML5 Microdata properties and DOM API is progressing nicely, as the itemprop, itemref and itemvalue properties landed last week. The itemtype attribute has been enhanced to accept a space-separated list of values, and code for the itemid attribute is just about to land as well.

As for specification related improvements, drawing images on a canvas by using certain composition modes has been fixed. Input step-values may now start with dots, IndexedDB has been taught the deleteDatabase method and two patches landed implementing parts of the Mutation Observers specification.

Support for argument-less functions has been added, in preparation of the greyscale CSS filter and column progression is now independent of writing mode. Automatic sizing of flexbox has been fixed, setting visibility: hidden on video elements on Safari now works properly and three more CSS 2.1 test-failures have been fixed, which includes proper support for intrinsic background sizes.

Parsing of two new CSS features has landed, namely for line-grid and for the cross-fade() function. The former is a shorthand for line-grid-mode and line-grid-progression defined in the CSS Text Module, whereas the latter allows cross fading images and is defined in CSS Image Values Level 4.

Other changes which occurred last week:

In other news, Andy Wingo published an excellent article about the new DFG JIT Apple is implementing in JavaScriptCore. Picks for the this week are notifications for the GTK port and four new media pseudo-classes.

Read more (1 comment) »

A Repunit Prime, HTTP Pipelining, advanced searching and Chromium 17

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 17

With 974 changes to Chromium’s repository, and 637 at WebKit’s, last week totaled up at 1,611 commits. Highlights are the new Chromium version, work on the Mouse Locking API and more work on Regions.

Chromium has reached version 17. The number, which also happens to be a repunit prime when written in base-16, supersedes the now branched Chrome 16. There are about 5,500 Chromium revisions going in the 16th major.

Vincent Scheibb has been working on a Mouse Locking API, the back-end for the settings of which landed in Chromium last week. Meanwhile, the WebKit side of the implementation is also starting, with the ability to toggle the feature either at compile or run-time.

As for Web Inspector, it now supports case sensitive searches and has support for regular expressions for the advanced search features and searches will now display their progress again. An element’s dimensions will now be displayed clearer with it’s highlight on the page.

As for specification support, the -webkit-from-flow value for the content property has been changed into its own property: -webkit-from-flow. Furthermore, the @-webkit-region at-rule can now be parsed, support for XPath is now enabled for all ports and the new Flexible Box Module implementation can now handle column flows.

Rendering of certain column-rule styles in vertical writing modes has been fixed, the ArrayBuffer object now supports the slice method, IDL files for the <track>-element have been added and content can now be clipped to variable width regions. Column rules will now be positioned correctly in vertical layouts when horizontal borders or paddings apply. Two patches have been committed in relation to the new Mutation Observers API as well.

Other changes which occurred last week:

That’d be all again. For the upcoming week, keep an eye out for work on the CSS aspect-ratio property and the Page Visibility API for the EFL port.

Read more (no comments) »

Microdata, the Web Component Model and hybi-17 for Web Sockets

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 16

Last week introduced another 1,540 changes in the WebKit and Chromium repositories, which beats the previous record of 1,515 commits. Highlights include a branch for the Web Component Model, first steps in WebKit’s Microdata implementation and searching through multiple scripts in Web Inspector.

The Web Component Model has received its own branch at WebKit, allowing initial work to start. The Component Model provides programmatic ways to ways to build components, utilizing features such as the Shadow DOM, templates and the ability to create your own elements. It layers a declarative form of the same capabilities on this infrastructure, making it available to most HTML developers. See Alex Russell’s slides for more information.

A number of updates were done to Chromium’ Extension APIs. The Permission (docs) and Panel (docs) APIs have been moved out of experimental, whereas support for a new experimental Clipboard API has been added, which will grant extensions access to the system’s clipboard. Finally, the onAuthRequired callback in the webRequest API can now provide credentials when needed.

Within Web Inspector, support was added for an advanced search feature in the Scripts Panel that allows you to search through multiple scripts at the same time. Back-end work was done in preparation of supporting the ability to debug shared work initialization, and the ability to look up and explore an object from an heap profile was added.

As for specification support, the first patch for implementing HTML5 Microdata has landed, namely the getItems() method. For CSS Regions support, the content-order CSS property has been removed, flow has been renamed to flow-into and positioned blocks now work with variable width regions.

Robert Hogan has landed three more patches fixing tests from the CSS 2.1 test-suite, the event.layerX and .layerY properties have been removed, the :checked pseudo-element selector now matches a selected option and right-margins will be taken into account for vertical writing modes. Finally, the new CSS3 Flexbox implementation now supports flex-align for cross axis alignment in flex-flow: row containers.

Other changes which occurred last week:

For this week, you may want to keep an eye out on progress for a custom-written CSS Lexer and progress on implementing flex-flow for columns, both of which are quite exciting :).

Read more (2 comments) »

Joystick API, Subtitles, Remote Desktop and bouncing animations

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 16

Due to the absence of last week’s update as I was having a vacation, this article covers the past two weeks. In total, 1,118 commits happened at WebKit and 1,743 at Chromium, totaling up to 2,861 changes.

Last week, an extension has been released which implements Remote Desktop support to Chromium. Previously known as Chromoting, the extension allows you to remotely see and control any computer on any platform.

Web Inspector is still gearing up to support source mapping for languages such as CoffeeScript. Highlighting inline elements now differentiates between paddings, borders and margins and the heap snapshot color legend will pop-up again. Furthermore, many more files have been added to the script compilation.


Firstly, WebKit’s implementation of the HTML5 <track> element has finally matured enough to be exposed to web authors without custom builds. By supplying the –enable-video-track command line switch to any recent Chromium build, all available elements, attributes and properties will be exposed to your scripts. While the implementation is still incomplete, it’s definitely one to play around with.

A lot of work has been done in implementing CSS Regions in WebKit. The majority of overflow behavior has been implemented now, covering clamping a region’s descendants to their containing region, correct box painting of overflowed content into regions and proper behavior for the hidden, auto, scroll and visible values for the overflow property. Block splitting for regions with variable widths has been implemented, positioned objects will now use the first region as their initial containing block and the region-overflow CSS property and outlines are now supported.

As for the CSS filter property, the property syntax can now be parsed with the exception of the drop-shadow function, and can also be retrieved through the getComputedStyle method. Infrastructure for applying filters has been implemented, and the feColorMatrix saturation won’t be clamped between 0 and 1 anymore, per the spec.


As for specification support, font shaping through the font-feature-settings CSS property has been implemented on Windows. RGB colors using percentages now show the correct hex and HSL values, support for currentColor has been implemented for gradients, box-shadow and text-shadow. Attribute selectors have been added to the fast-path selector and have been taught how to share their styles.

Values in the cubic-bezier timing function are no longer clipped between 0 and 1, which allows bouncing effects. The -webkit-tap-highlight-color property is now available for all ports which enable touch events, and the text-transform property will now apply to select elements.

The method, enctype, formMethod and formEnctype attributes will now only accept known values. Web Sockets now have the extensions attribute, drawing stroked lines on a canvas may now be done by the proprietary webkitLineDash and webkitLineDashOffset attributes and audio elements will now emit the playing event for each run. For JSC, Object.prototype getter and setters have been aligned with ES5, as has Array.prototype this-handling.

Accessibility-wise, the new HTML5 section elements now map to the appropriate ARIA roles. Following this change, screen readers can actually understand your newer HTML5 code.

Other changes which occurred in the past two weeks:

Remind me not to skip next week, this was quite a write-up. More personally, thanks to all the awesome Fronteers 2011 attendees, speakers and organizers! I had a great time and the conference was a great success 🙂

Read more (3 comments) »

CSS Filter Effects, Extensions Settings API and seamless GCF updates

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 16

Last week, 539 changes landed in WebKit’s repository and 824 landed in Chromium’s, totaling up to 1,363 changes. Highlights include start of the CSS Filter implementation and lots of removed code within WebKit.

The Extension Settings API has been implemented for Chromium! This new API will allow you to specify settings for your extensions which will then be synchronized to the user’s Google Account, similar to your bookmarks.

Google Chrome Frame has been updated to no longer show a security prompt after it has been updated without re-starting Internet Explorer. This improves the user-experience for those stuck to IE quite significantly.


For those using Web Inspector on Windows, saving the timeline data is now working again. Callbacks originating from requestAnimationFrame will show up in the timeline panel, and the Metrics sidebar pane for the Elements panel will now be drawn at all times. Outlines have been removed from this pane as well, considering they’re not part of the box region.

Two more tests from the CSS 2.1 test-suite are now passing, getting a non-premultiplied image from a WebGL object will now yield the expected result and positioning issues with :before and :after pseudo-selectors used with tables have been fixed.  Finally, Apple finally implemented Function.prototype.bind for their JavaScript engine, and also aligned the String.prototype.split implementation with ES5!


Quite some cleaning up has occurred within WebKit as well, for one, the BREWMP and HAIKU ports have been removed as they weren’t being maintained anymore. similar to the implementation of WCSS. Several features, such as Application Cache and Server Sent Events have been enabled for all ports, and clearing of other miscellaneous compile-time flags started as well.

As for new features, Dean Jackson announced to start implementing the CSS Filter Effects, an effort led by the SVG and CSS Working Groups, enabling effects such as blur and drop shadows to occur on a page. Besides the implementation itself, investigation will be done as to enabling the effects to be animated and to be  accelerated.

Other changes from last week include:

  • The chrome://settings/extensions page has now officially taken over from chrome://extensions.
  • The Console Extension API for the Developer Tools has now been exposed to extensions.
  • The team-page on WebKit’s website will now be auto-generated from committers.py.
  • Performance improvements of 1.4%, 4%, 1.4% and 2% for Apple’s JavaScriptCore engine.
  • Corners of elements being manipulated using CSS 3D Transforms will now anti-alias correctly.
  • Redrawing the dirty parts of a large table has been optimized by adding additional caching.
  • Similar to Chromium, using OVERRIDE and FINAL annotations in code is now possible in WebKit.
  • Apple seems to be interested in using the Web Audio API, as they’ve added run-time settings for it.
  • Clicking backspace to merge a header with a paragraph won’t produce a span element anymore.
  • The Qt port has started implementing the JavaScript Full Screen API.
  • Implementation of DOM Mutation Observers seems to be starting in WebKit.
  • Animating the alpha value of a composited layer within Chromium is now possible.
  • Preparations are being made to move Grit to its own open source project.
  • An entry in about:flags has been added allowing people to disable WebGL.
  • Chromium on Mac OS X systems has now switched to using Skia as the default graphics layer.
  • The Image Gallery has been made more ribbon-like for Chromium OS.

And that’ll be all again.

Read more (7 comments) »

Clipping to border radiuses, the Download API and Border Images

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 16

WebKit’s repository received 460 commits during last week, while Chromium’s repository received 939, totaling up to 1,399 changes in a single week. Highlights include progress on the Download API, layers being clipped to border-radius and a completely implemented border-image.

Implementation of the download extension API in Chromium is continuing at a steady pace. Last week support was added for the onCreate and onErased callbacks, together with an implementation of the download() method. With this, the most basic behavior should be functioning.

As for specification support, the PeerConnection constructor has been renamed to the prefixed webkitPeerConnection, indicating that it may get enabled soon. Apple’s experimenting with removing the ability to call most collections, ruby text won’t overhang more than half the width of the neighboring text, the flex-align values have been renamed to match the specification and regions no longer slice line box render.

Work is continuing to support event constructors in WebKit. During last week, patches landed to support constructing ProgressEventErrorEvent and HashChangeEvent, among various others for both V8 and JSC. WebKit’s hyphenation won’t wrap anymore between hyphen-minus and numeric characters, and changing the document.title variable will now affect the contents of the title element in XHTML documents.

WebKit’s implementation of the border-image CSS property went unprefixed, followed by a series of patches finalizing proper support for the property. Meanwhile, Dave also fixed overflow clipping to border-radius to work across layers.

Other changes which occurred last week:

And that’ll be all again. For this week, keep an eye out on Motorola’s interest to implement HTML5 <time>.

Read more (3 comments) »

Chrome 16, revision 100,000 and isolated Unicode BiDi

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 16

With 903 commits to Chromium and 438 commits to WebKit, a combined 1,341 changes landed to both repositories during the last week. Highlights include revision 100,000, all separate border-image properties and isolated bidi.

Starting last Friday, Chromium’s version number is equal to the number of ounces in an avoirdupois pound. Meanwhile, Kazuhiro Inaba landed revision number 100,000, beating five other people who accidentally committed right around that time as well. On to revision number 217!

A new user interface is being implemented in Chromium for errors and warnings. The wrench menu badge and icon were added last week, shortly followed by bubble views for Mac, Views and GTK. The bubble will initially be used for displaying synchronization errors, but may later on contain other messages as well.

Within Web Inspector, pressing F5 on non-Mac platforms will refresh the page again as expected. Pop-overs will be disabled when a mouse button is pressed, suggestions in the Style sidebar pane can now be tabbed through infinitely and live editing for JavaScript and CSS has been made more discoverable. Finally, Chrome’s extension API for accessing the resources has been renamed from devtools.resources to devtools.network and the console API has been exposed.

As for specification related updates, the HTMLSpanElement object has been added and the HTMLBlockquoteElement has been removed. Change events for numeric input fields will be fired when the user reverts a script-made change, support for the parting the scoped attribute has been added, in preparation of supporting scoped stylesheets and Eric Seidel finalized support for the unicode-bidi: isolate CSS property, together with the new <bdi> HTML element.

Three new CSS properties were added last week. Firstly, Dave Hyatt finalized support for the separate border-image properties by landing patches for border-image-width and border-image-outset, again with their masking equivalents. Dan Bernstein landed support for the hyphenate-limit-lines property, even though Safari is still the only port supporting hyphenation.

Other changes which occurred last week:

And with that, yet another busy week of changes has been aggregated.

Read more (5 comments) »

Media Source, Binary Web Sockets, Accessibility and Border Images

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 15

With 563 commits at WebKit and 854 at Chromium, totalling up to 1,407 changes, it has been a busy week again. Highlights include addition of the Media Source API and support for binary Web Socket messages.

Dominic Mazzoni landed quite some accessibility improvements in Chromium for Windows. Dozens of roles and states have been corrected for a variety of elements, support for tables featuring row and column spans has been improved, and support for range inputs and live regions has been added. Finally, an onVolumeChange event has been added to the Accessibility Extension API. Mac work will follow soon.

Network related error messages in Web Inspector’s console will now link to the respective request in the Network panel. Furthermore, the window won’t grow anymore on every close-open cycle.

As for improved support for specifications, Chris Marrin landed support for requestAnimationFrame in the Mac. Text within a <dfn> element will now be italic, the WebVTT cue text parsing rules have been implemented, together with DOM construction and six new non-prefixed protocols are now supported by registerProtocolHandler. Top margins for table captions will now be respected, media elements have been taught the muted attribute, border attributes with percent values now work on images and column breaks are now more reliable with large line heights.

For folks using Web Sockets, WebKit now supports both receiving binary messages (as Blobs and ArrayBuffers) and sending binary messages (also as Blobs and ArrayBuffers). This is a huge step forward in supporting the new protocol. Meanwhile, Aaron Colwell implemented the Media Source API within WebKit, making it possible to dynamically append data to video playback.

Dave “scattered” Hyatt started to implement the CSS properties for border-image. Patches for border-image-repeatborder-image-slice and border-image-source have already landed, meaning only border-image-width and border-image-outset are left. Simultaneously, they have also been added for WebKit’s Masks. Sam Weinig and Kentaro Hara taught WebKit about various forms of Event constructors.

Other changes which occurred last week:

And that’ll be all again! 🙂

Read more (3 comments) »

Fullscreen API, enhanced Element Highlighting and progress on Flexbox

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 15

Another 1,301 patches landed last week, 464 at WebKit’s and the rest at Chromium’s, bringing highlights such as the Fullscreen API in Chromium, colored highlighting for Web Inspector and removed code from the Android port.

James Kozianski landed support for the Fullscreen JavaScript API in Chromium, which will be enabled when the –enable-fullscreen command line flag has been supplied. Within WebKit, the API will now always be included in the build and had its internal APIs exposed.

Within Web Inspector, an element’s margin, padding and content will now be drawn using different highlighting colors, making it much easier to see why certain content may be out of line. The extension API has been updated with the ability to access page resources, and more progress has been made in the effort to support compiling the front-end using Closure Compiler.

As for progress on the updated Flexible Box implementation in WebKit, Tony and Ojan landed patches adding support for the flex-alignflex-order and flex-pack CSS properties, switched the default preferred width of the flex() function to 0px per a specification update, handling the margins of child elements and behavior when min-width and max-width are used for flexible elements.

Accuracy of the implementations of supported specifications has been improved again as well, with Alexandru Chiculita fixing two issues with floating elements, while Mihnea Ovidenie fixed getting the client rectangles for content flows. Absolutely positioned layers won’t overlap its parents anymore when a breaking element is in between, Event constructors got implemented, then reverted, then implemented again, text-overflow now works properly for button elements, layout for :before and :after content used with tables has been fixed and a createObjectURL method has been added for the MediaStream API.

Adam Barth and Steve Block removed, as promised, the Android port from WebKit. A build slave for testing WebKit’s Chromium port on the Android OS was added as well, but hasn’t been activated yet.

Other changes which occurred last week:

And that’ll be all again! Patches to look out for this week include the ability to receive binary WebSocket messages as Blobs and the addition of CORS support for Server Sent Events!

Read more (6 comments) »