Your own protocols, Page Visibility API and the GPU-accelerated 2D canvas

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

A total of 1,515 commits, 627 for WebKit and 888 for Chromium (made by 220 authors!), brought a large number of interesting changes again this week. Highlights include new features such as the Page Visibility API and the possibility of registering your own protocol.

One well anticipated feature of HTML5 is the possibility to a custom protocol for your site. Starting at revision 86944, registerProtocolHandler is now enabled for all versions of Chromium. It features a neat settings page and allows the browser to become the default handler for arbitrary protocols on Mac OS X and Windows. However, no peter:// for me: the recently added whitelist requires custom protocols to be prefixed with web+.

As for specification related updates, the frequency at which selectstart will be fired has been brought back to just once. The RGBA serialization algorithm has been updated to match the HTML5 specification, just one blur-event will be dispatched when tabbing out with an invalid value and CSS Selector matching has been fixed in regards to attribute selectors. The sniffing mechanism for images has been updated per the latest draft.

There has also been lots of work on implementing new features. Following last month’s v8 change, WebKit now also implements Float64Array‘s for JavaScript. Work on <input type=color> is progressing steadily, the Stream and GeneratedStream classes have been implemented, as have HTML5’s TrackList, MultipleTrackList and ExclusiveTrackList objects. Finally, Yael Aharon implemented the dropzone attribute.

Adam Barth added support for the new crossorigin property on image elements. The attribute, which will eventually also work with video and audio elements, will allow canvasses to properly use remote images if the CORS header allows it, including usage of the getImageData and toDataURL methods. Meanwhile, Jay Civelli added support for reading MHTML files to WebKit. The plan is to allow exporting pages to MHTML archives too.

Other changes which occurred in the last week:

And that’d be all again! If you’re a fan of web conferences, be sure to take a look at this year’s Fronteers! We’ve just announced five more speakers: Divya Manian, Jake Archibald, John Resig, Stephen Hay and, last but not least, Robert Nyman. Only 30 early-bird tickets are still available, so don’t wait too long 😉

7 Responses to “Your own protocols, Page Visibility API and the GPU-accelerated 2D canvas”

Both comments and pings are currently closed.

Wow, such great stuff this week!

“- An option to search through synchronized information has been added to chrome://sync-internals. – A new API has been added for maintaining synchronization types for Chrome developers.”

So this is the settings/preferences sync API for extensions/apps, then? Sweet!

I’m also really happy about crossorigin on images, but I’m curious as to why you would want to do your own protocal. DRM reasons?


May 31, 2011 at 3:56 pm

As always thank you for a great work!

Memory handling of WebCore has been significantly improved for low-memory environments – i will test it in practice :->

Peter Beverloo

May 31, 2011 at 10:03 pm

Hi Andrew. No, this does not (yet) mean that extension developers will be able to sync information themselves. There are plans to develop this feature, but no actual progress (except for the two named changes) has been made yet. You can star this issue to stay in the loop:


May 31, 2011 at 10:32 pm

Hi Peter,

When will GPU Accelerated 2D Canvas be enabled on mac?

Thanks, Manish

Peter Beverloo

June 1, 2011 at 10:54 am

The feature has been enabled for all platforms, so including Mac OS X. It’s probably going to be part of Google Chrome 13.

Maybe it will useful for someone: I write useful wrap under Page Visibility API with high-end functions and syntax sugar:

For example, it allow you to set timers (setInterval) only for visibility state: Visibility.every(‘1 second’, function() { updateCountdown(); })