Archive for the ‘WebKit’ category (118 posts)

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) »

Download extension API, composited canvas filling and PulseAudio

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

Last week brought another 1,205 changes; 465 to the WebKit repository, and 740 to Chromium’s. Highlights include a new extension API for downloads and fixed composited canvas filling for certain modes.

Within Chromium, stubs for an experimental download extension API have landed. The proposal aims to enable extension authors to offer features such as downloading all the images on a page, and deals with permissions and security concerns accordingly.

An announcement by the Android Browser team was made on the webkit-dev mailing list today in which they announced their intentions of improving collaboration with the WebKit community. The first two steps will be removing all current Android-specific code from WebKit and contributing a build bot to aid in long-term maintenance.

As for specification related changes, region invalidation and repainting now works properly. Canvas fill and fillRect have been taught how to deal with five more compositing modes, WebSocket’s CloseEvent now contains the code and reason properties and text input events for textboxes which may not contain text will now be ignored. Finally, three new CSS properties for CSS Regions were added and content within a region no longer is scrollable.

Two changes were committed by Jeffrey Pfau for the new XML parser, namely the document fragment parser and support for scripting within XML documents.

Other changes which occurred this week:

And that’ll be all again.

Read more (9 comments) »

Settings API, New Tab Page, CSS Regions and much cleaner HTML

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

Last week brought another 1,245 accepted changelists in the repositories of Chromium and WebKit. Highlights include a new Settings extension API for Chromium, CSS Regions and Exclusions being enabled by default and a separate i18n project for v8.

Chromium’s new New Tab Page, which has been in the works for several months now, now is the default one for the browser. It contains three pages, most visited, Apps and bookmarks, is touch-friendly and accessible. It looks quite good too. If you really want to go back to the former version, you can use the –new-tab-page-3 command line flag.

The experimental Internationalization API that’s being implemented in v8 has moved to it’s own open-source repository, allowing the work to progress more visibly. The API will expose the possibility to utilize features like localized string matching, number formatting and date and time formatting to web authors.

Benjamin Kalman has landed the first part of the long awaited Settings extension API to Chromium. This API will allow extension authors to specify settings for their extensions, which can then be synchronized across a user’s computers. Just like bookmarks. Early documentation is available on Chrome’s Google Code docs.

Within Web Inspector, the Network Panel won’t show local resources statuses as pending anymore. You can now choose to hide user-agent stylesheets in the style panes, the Resource Panel will now show cookies for the main resource, folders in the Script Panel are now optional and it’s now clearer which properties are non-enumerable when expanding objects. Finally, scripts from different domains won’t appear in the same folder anymore.

As for specification related updates, the width of a numeric input will now depend on the values it accepts. Basic horizontal flexing has been implemented for the new Flexible Box implementation and WebSockets now accept multiple sub-protocols and supports the protocol and binaryType attributes. Tom Zakrajsek made sure that unknown HTML elements now derive from HTMLUnknownElement and advanced text shaping was implemented for Linux.

Following these two commits, Ryosuke Niwa was finally able to claim victory on his crusade to get rid of wrapping spans and Apple’s Apple-style-span class in WebKit’s editing component. His work resulted in much cleaner generated HTML for editable components.

Other changes which occurred last week:

And that’ll be all again, let’s see what this week brings 🙂

Read more (1 comment) »

Renewed form validation UI, fuller full-screen and advanced fonts

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

With just 1,227 commits in the past week, 487 at WebKit’s and 740 at Chromium’s, it has been a normal week again. This week’s highlights include a new validation message UI, two full-screen modes for Chromium on Mac OS X Lion and the first step in supporting low level font features through CSS.


With Nico Weber toggling the switch, Google Chrome versions 15 and beyond will no longer use GCC for compiling the source, but instead will be using Clang. Clang is the C, C++ and Objective C front-end for the LLVM compiler. This change has led to a size-drop of well over 10 megabytes in the size of Chromium.app!

In the effort of improving Chrome’s support for Mac OS X Lion, status bubbles will have their corners rounded appropriately now. More importantly, the concept of full-screen has been split into two modes: Lion’s own interpretation of “full-screen”, placing the window in it’s own space while still having a visible dock, and a presentation mode which is a more conventional full-screen mode.


Web Inspector won’t present warnings anymore when including a JSONP resource, and will pretty-print them in the Network Panel as well. The Script Panel now groups scripts by the folder they’re in, the scrolling position of the script console will be remembered when changing panels and arrows are now nicer to click on.

After adding a new performance test for float element lookup, Adobe’s Alexandru Chiculita landed an optimization which yields a performance improvement of about 150% for looking up a floated element. Nice!

As for specification related work, using a percentage value for an object’s border attribute now works appropriately. The PeerConnection interface from the Peer2Peer API has been implemented, a VTT parser has been added for subtitles for the <track> element and an important part in supporting <input type=color> has landed too.

The first step in supporting CSS3 font features has been implemented by Kenichi Ishibashi, namely parsing of the font-feature-settings CSS property. The property, which is already available in Mozilla Firefox, allows web authors to control low level font features such as discretionary ligatures and swashes.

Other changes which occurred last week:

And that’ll be all again 🙂

Read more (7 comments) »

Web Intents, the download attribute and positioned floats

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

Last week brought 1,352 updates to the projects, 445 for WebKit and 907 towards Chromium’s repository. Highlights include Chromium 15, the download attribute and work on implementing positioned floats.

The Web Intents shim was announced by Paul Kinlan about a month ago, and last week the initial signs of Chrome’s implementation started to show up. While it’s only preparatory work so far, a command line switch has been added and work on WebKit’s side is about to start.


In light of adding a cd()-like feature to Web Inspector, some refactoring has landed last week. An initiator column has been added to the network overview, and instead of disabling it altogether, the cache will now be cleared after navigation. Custom getters in the property pane won’t appear dimmed anymore.

As for specification-related changes, the selectionDirection property on input and textarea elements is now supported, just as the sizes attribute for link-elements is now supported as well. Specifying unicode-bidi as plaintext on textarea elements works correctly again, behavior of the Float32Array constructor has been fixed and v8 can now actually serialize script elements correctly.


Following Darin’s announcement, this response from Ian Hickson and the actual edit to HTML, WebKit now supports the download attribute on anchor elements. It’s quite simple really: specify the download attribute, optionally defining a filename, and the browser will download the anchor’s location rather than navigate to it.

Dave Hyatt has started to work on implementing positioned floats in WebKit. Currently, floated elements either float to the right or left side of their container, allowing content appear on the opposite side. Positioned floats allow floated elements to appear, for example, in the middle, spreading content between the left and right hand area’s of the floated element. While there definitely is progress, no actual rendering effects will be visible at this point.

Other changes which occurred last week:

  • The first basic layout test for the Web Audio API landed!
  • A remarkable change from Apple’s side: support for a built-in -webkit-pictograph font which can
    render image-like glyphs. The font face itself seems to be private.
  • Chrome can now identify itself with the freeway running between California and Montana.
  • Larger hit-boxes will apply to select-boxes when Touch UI support has been enabled.
  • Knobs of disabled range controls will no longer be draggable.
  • The Data-tab of Chromium’s net-internals page has been split up in three tabs: Import, Export and Capture.
  • Tests for validating WebKit’s WebVTT parser (for <track>) have been added.
  • Printing an accelerated canvas in Chromium now works properly again.
  • As work on WebKit’s brand new XML Parser continues, a wild tokenizer appeared.
  • Chromium’s close-animation on Mac OS X has been sped up by request of the Gods.
  • The avatars available for multiple profiles have been revised, and several new ones have been added as well.
  • Chromium will now remember whether you wanted to print the last page in grey-scale or in color.
  • The filename-text for file upload controls is now properly aligned with the button-text for various platforms.
  • Splitting up the chrome-library in components can now create views.dll/.so as well.
  • Work on eliminating 2-pass painting for composited pages already gained 20% in performance in tests.
  • Support for basic RenderRegion and collecting flowed elements was added for CSS Regions.
  • Support for bitmap images was added to Chromium OS’  file browser.
  • Two new experiments related to Instant will be done with 10% of the Google Chrome users.
  • The Web UI Task Manager will be enabled by default for the Chrome OS 14 release.
  • Motorola is busy adjusting WebKit GTK to use the v8 JavaScript engine.

And for a pretty exciting update on browser usage: open source-based browsers (being Chrome and Firefox) now serve the majority of the web with a combined market share of 50.09%! That is pretty cool.

Read more (1 comment) »