With lucky number 13 -Chromium’s current version- now available, version 12 has been branched. Last week’s 1,423 commits bring highlights such as Google Chrome Canary which will be coming to Mac OS X, a new CSS property prefix for the EPUB format and lots of removed code.
While it has not been released yet, Google does seem to be ready to release Google Chrome Canary for Mac OS X systems. The browser cannot be made the default browser through the preferences and the release monitor says that the latest version was released today, using the same revision as Windows’ Canary.
Web Inspector will now show hyperlink auditing requests in the network panel. Copying data from the Resources panel has been made easier, the option “Open link in new tab” has been added to several context menus and it’s now possible to follow retained paths in detailed heap snapshots.
Following discussion on both the mailing list and during the contributor meeting, support for WML (“Wireless Markup Language”) has been removed from WebKit. This was a logical step as only BlackBerry needs to continue to support WML, and are doing so through a proprietary plugin. Microsoft and Opera still support it. Other code removed includes the Image Resizer, support for datagrids and Android’s build system.
As for specification related updates, setting outerHTML on an element will now merge text nodes. The onchange event on text fields has been made more reliable, styling a speech input-button with paddings and borders has been improved and the root element will now establish a new block formatting context, and will therefore expand to enclose overhanging floats. Finally, the CSS sibling selector (~) now works properly with the :target pseudo-class.
WebKit now supports the -epub- CSS property-prefix as an alias, similar to its support for the -apple- and -khtml- prefixes. This addition was made following a conference call in the EPUB Working Group last Thursday, and while notall issues have been resolved yet, it’s likely that they’re here to stay. One thing which is surprising is the fact that all vendors will use the same prefix: -epub-, contrary to CSS’ vendor prefixes.
Averaging about 180 commits per day in the last month, this week’s commit count of 1,447 pushes the limit once again. Highlights include lots of border-rendering fixes, the WebRequest Extension API in Chromium, progress on Content Security Policy and lots of Web Inspector updates.
One project I should give more attention to is v8, the JavaScript engine used in Chromium, especially as some interesting developments have become apparent recently. Support for Float64Arrays has been added and work on EcmaScript’s Internationalization APIs continues with a partial implementation of the Collator. Did you know Chromium already exposes a Locale object as window.v8Locale?
Besides that, the first steps towards adding Harmony Proxieshave been made by exposing an experimental Proxy object, which can be enabled by running Chromium with –js-flags=”–harmony_proxies”. Do keep in mind that the implementation currently only exposes an empty, thus void, Proxy object.
WebKit’s implementation of the Content Security Policy draft received quite some improvements again. Policy violations will be logged to Web Inspector’s console, support for the frame-src directive has beenadded and the report-uri directive has been implemented, which will send a violation report to a chosen URL, albeit slightly different from the current draft specification. Finally, the policy definition syntax has been updated.
As for specification support, the disabled property of link elements handling stylesheets now matches the HTML5 specification. The error-event for <script> elements won’t bubble anymore and form control elements’ label property will allow custom attributes to be set.
WebKit’s border rendering now sucks less, as Simon Fraser puts it. He fixed several bugs by refactoring a lot of code and implementing optimizations for common cases, among which are overlapping semi-transparent borders, anti-aliasing for borders on transformed elements and rounded border rendering for different border styles, which has been improved. Background color leakage has been fixed, as has gradient leaking.
Other changes which occurred last week:
The LevelDB wrappers landed and will be compiled in for Android WebKit.
Incremental decoding for the WebP image format has been added.
The requestFileSystem method from the FileSystem API has been prefixed.
Folders may now be dragged to file inputs with the webkitdirectory attribute.
New resources have been added for Chromium OS’ profile photo displays.
Given the large amount of command line switches in Chromium, work is being done to move them to different files. This causes the command line overview to be incomplete right now, which I plan to fix this week 🙂
The Chromium and WebKit teams checked in a grand total of 1,496 changesets over the past 168 hours. Highlights include the availability for the Web Audio API on all platforms, script de-obfuscation in Web Inspector and a slightly updated user interface for Chrome 12.
Following the availability of the Web Audio API on Mac OS X, Kenneth Russell flipped the switch for branded Windows builds, after which Chris Rogers landed a patch making it work on Linux. If you’re on Windows, get yourself a Chrome Canary build, launch it with the “–enable-webaudio” flag and check out some examples! The commit has been reverted, but work is on its way to get the API back in.
The Web Inspector team has made some great commits again. Firstly, obfuscated source-code (such as a minimized jQuery) may now be cleaned up in the Script Panel by right-clicking on the content and selecting the de-obfuscate option. Undo and redo has been implemented for the text editor, accidentally switching panels during live editing using certain shortcuts has been fixed and the resources panel can now display raw HTTP-headers. Finally, early steps have been taken to move the Detailed Heap Snapshots processing into workers.
One of the problems the prefetch relation for <link>-elements has, is that the linked file will be loaded in WebKit at a very low priority. In order to offer authors a way to preload resources which will be used on the current page, Gavin Peters has implemented the “subresource” relation.
As for specification compliance, a regression related to the ACID3 test has been fixed meaning that it will render pixel-perfect again. The Blob’s slice method has been renamed to Blob.webkitSlice, while also having its semantics change to mimic Array.slice. Simon Fraser has begun with improving WebKit’s border mechanisms, initially by improving the logic used to compute the inner radii on curved borders. Stay tuned..
WebKit’s Content-Security-Policy is now aware of the “self” source and will block string arguments to setTimeout and setInterval unless the “eval-script” option has been set, as they would evaluate the string internally. It is now also possible to define what sources media elements can load from, using the media-src directive.
The 630 commits at WebKit and 707 commits at Chromium add up to a total of 1,337 commits. And I’m not evenkidding. Highlights are two removed events, automated ruby overhang behavior and offline audio rendering for the Web Audio API.
Quite some visual changes have been made to Chromium. The concept of scrolling tabs has been introduced for the Touch UI, ensuring that selected tabs stay in the view. Users of Side Tabs will have noticed two new arrows at the top of the tab-bar, allowing you to scroll through the tabs upwards and downwards. The profile button has been moved a bit, making space for a new full-screen button and a stub implementation has been added for Panels, one thing I really miss for extensions.
New features have been given quite some attention. Feature defines have been added for an implementation of the <track> element, which means that work will be starting. The getUserMedia method and JavaScript bindings have been implemented for the Media Stream API and WebKit is now capable of rendering fonts using Skia, bringing its PDF rendering one step closer to handling Chrome’s print previews.
Dan Bernstein had a go at improving WebKit’s ruby implementation by adding support automated overhang, which means that ruby text can overhang characters adjacent to the base text. While this has become the default and only behavior for WebKit, as the ruby-overhang CSS property has not been implemented yet, the specification’s draft does not reflect the new initial value yet.
Now that the Web Audio API has been in development for well over a year, work has begun on making it testable. Offline audio rendering has been added to the AudioContext API and DumpRenderTree (the testing-framework) for WebKit’s Mac port has been improved with supporting audio tests.
Other changes which occurred last week:
WebKit’s GTK port is now capable of running WebGL!
Spin-buttons for numeric input elements are clickable again when large paddings are used.
A WebUI implementation for HTTP Authentication dialogs has landed for Chromium OS.
The default favicon to show for websites has been changed to the address bar’s little globe.
Tabs on Chromium’s Touch UI tab-bar will be using 32×32 pixel favicons, double their normale size.
TCP-classes have been renamed to Transport in scope of unifying APIs for TCP, UDP and SCTP protocols.
Dragging multiple tabs in Chromium will now show an accurate thumbnail showing all tabs.
Just pre-loading the metadata for video elements can now be done by setting preload=metadata.
And that’s it again. If you hadn’t noticed yet, last Tuesday I announced that I’ll be joining the Google Chrome team in June. While the set-up of these updates may change, I definitely intend to continue making them!
1,403 new patches have been introduced to the Chromium and WebKit repositories in the last week, among which were results of the WebKit BiDi-sprint, free-flow CSS editing and SMS notifications for Chromium OS.
More work has been done on the multiple-profile implementation for Chromium, resulting in visual results for Mac users now as well. The button is quite different from the early mock-ups shown in November, but definitely looks neat and uses less space than the original version.
Quite some patches were submitted to WebKit as part of the announced BiDi-sprint. The <title>-element now supports the dir attribute, moving the caret by word will now occur in visual order when editing text and BiDi-rendering for SVG Text has been improved. Furthermore, the text-align CSS property can now handlematch-parent and the valuesisolate and plaintext can now be parsed for the unicode-bidi property, all prefixed.
Web Inspector now supports free-flow text editing for CSS files! This is a major usability improvement, as it means that making larger modification will be a lot easier. The feature is already available in Google Canary and Chromium nightlies. Just go to the Resources Panel, select a CSS file and double click on its contents to start editing. Committing the changes may be done via Cmd/Ctrl+S.
Many other fixes landed as well for Web Inspector. Changing the value of a hexadecimal number will now be treated correctly, as will a console message’s position for formatted scripts. Furthermore, property abbreviation has been disabled and the periods at the end of error messages have been removed.
In light of improving spec alignment, the behavior of the “start” and “end” values for the text-align property has been updated to match other browsers. DOM bindings have been implemented for the ping attribute on anchor tags and the noresize attribute on frames may now be set using JavaScript. Finally, the sizes of H1-elements nested in HTML5 sectioning elements will now be determined based on their depth.
With 1,116 commits, 522 for WebKit and 594 for Chromium, there have been quite a lot of changes again. More progress has been made for Chromium OS’ touch support, a new CSS selector has been implemented, as well as the line-box-contain CSS property.
Dave Hyatt proposed and implemented a new CSS property for WebKit: line-box-contain. The property addresses cases in which text on the first line will be shown in a larger size than the rest of the line, causing the line-height to change. The prefixed version is already available in WebKit and Chromium nightlies!
As for other specification-related changes, more work has been done to improve percentage rounding. XMLHttpRequest will now properly set the referrer when Web Workers are being used and some more CSS 2.1 counter-related tests will now pass. The onchange-event will not fire anymore when a text field’s contents have not changed.
An implementation for asynchronous communication between a Pepper Plugin and JavaScript landed.
HTTP throttling may now be disabled via a new tab on the about:net-internals page.
A raw video pipeline has been added for the <video> element, with a specialized protocol: media://.
A simplified normal flow layout path optimization for overflow recomputation and for positioned objects inside relatively positioned containers has been added.
WebGL will now always be exposed to the DOM, even if it has been disabled.
Google Gears has now been removed from WebKit as well, of course in favor of HTML5.
Web Inspector will now show the correct transfer size for compressed resources.
Highlights among this week’s 1,291 commits are quite some Chrome OS touch-related changes, support for relatively positioned table-cells and a wider experiment for background pre-rendering in Chromium.
The Chrome OS team seems to be gearing up for a tablet release. Following someusability-related improvements for touch-based devices, the user-agent string will now indicate the usage of a touch-only device. Furthermore, a brand new New Tab Page landed which provides an iPad-like overview of the installed applications. For all those who want to get a sneak previous of the page, but don’t own a Chrome OS touch-device yet, enable the overview pagina using the “Experimental new tab page” setting on about:flags.
In light of improving specification-compliance, WebKit’s SVG implementation received a rather large commit which implements proper bi-directionality support for SVG Text. Rounding for non-integral percentages has been fixed and exporting WebGL-canvasses to an image, texture or Data URL will now honor the non-premultiplied-alpha attribute.
Relatively positioned table-cells have gained support from the engine and the maxlength attribute for textarea-elements will now take newlines into account. Finally, shadows are now supported for a canvas’ drawImage method and support for GPU-accelerated shadows has been added.
Other changes which occurred in the last week:
The prerendering experiment now applies to 30% of the Canary users.
Auto-filled form elements will now also force a specific text-color, ensuring visibility.
Another week passed, bringing a total of 1,350 change-sets to Chromium (796 commits) and WebKit (554 commits). Highlights include a new logo for Chromium, selecting multiple tabs, an Animation API, CSS’ new text-orientation property and an improved pale-violet-red color.
Scott Violet landed the first functional part of a new feature: multiple tab selection. Instead of being able to select just one tab, multiple tabs can be selected by using <shift>+click or <ctrl>+click. While the feature still needs work, including proper rendering of multiple tabs and a better dragging thumbnail, it’s already available for you to check out in nightlies: just launch Chromium with “–enable-multi-tab-selection“.
Another change for Chromium’s tab bar is that adjoined tabs sharing a common title prefix, such as “Chromium Blog”, will have their titles elided. This means that the shown title will be more relevant and that it will be easier to find the tab you’re looking for. Right now it’s only available for Chromium builds on Windows, but support for the other platforms is in the works.
Dean Jackson landed the first part of an API for managing animations which apply to a certain element. The API is available in both Chromium and WebKit nightlies and adds a new method to DOM HTML Elements: webkitGetAnimations. It returns an AnimationList which contains the active animations, as Animation objects. As is visible here, it provides access to most common settings for CSS-based animations. While the play() and pause() methods are being exposed, they’ll start functioning after an upcoming patch lands.
As for new features, an initial part of HTML5’s DataTransferItem and DataTransferItems interfaces landed, together with a partial implementation for Chromium. Dave Hyatt implemented the text-orientation property from the CSS3 Writing Modes module, although it hasn’t been implemented for Windows yet. Luiz Agostini landed the rendering part for the <details> and <summary> implementations.
In the effort to improve standard compliance, several commits addressed failures in the CSS 2.1 test-suite. Several issues with the ex unit have been solved, parsing for background position components has been rewritten and the ::before and ::after pseudo-elements may now be used on table rows. Furthermore, the values of the named “palevioletred” and “mediumpurple” colors have been fixed.
One not so significant, yet certainly interesting change, is the inclusion of the jQuery test-suite in the WebKit tree. Widely used as the library is, it’s a good thing to see that both parties will test on each other’s software to ensure full compatibility.
Other changes which occurred last week:
Chromium received a new logo, quite different from the previous one.
A minor change in preparation of Chromium’s registerProtocolHandler implementation.
Moving nodes across different documents in the DOM is now possible for certain methods.
JavaScriptCore fixed three issues with the RegExp prototype, improving conformance with ES5.
Through a minor Accept-header change, WebKit now properly indicates to prefer HTML over XML.
Safari on Mac OS X Lion will be able to use the AV Foundation framework for media playback.
Soft hyphens will now always be correctly rendered when a linebreak occurs.
With 617 commits at the WebKit side and 808 for Chromium, last week was another busy week. Highlights are that WebKit finally implements CSS 2.1 quotes and lots of work on several upcoming features, such as MHTML.
One feature a lot of people are looking out for is the inclusion of a date-picker in WebKit. Tamura Kent started implementing a calendar for several date-related input types exactly a month ago, which has now evolved in a graphical and usable date picker.
While the implementation is by no means complete, it’s a good thing that work is being done to finish support for Web Forms. Keep an eye out on bug 53961 to stay up-to-date.
Chromium users may have seen a new option appear on their about:flags page: “P2P API”. While not a lot is known about the team’s plans, it’s safe to assume that implementation of the HTML5 peer-to-peer connection API has been started, together with an interface for Pepper. So far, an implementation for Mac and Linux was added, a dispatcher for the renderer and initial work on the internal implementation.
The Web Inspector team improved performance of DOM search as it was extremely slow for GMail. The summary bar in the network panel’s item view won’t overlap the contents anymore. Furthermore, the fourth part of Detailed Heap Snapshots landed in WebKit as well, which implements displaying of different snapshot projections. While they’re not available yet, there are some screenshots available.
As for standard-related updates, Dave Hyatt made sure that positioned elements work with vertical text. Ruby text will now be expanded when it’s shorter than its base and the document.open implementation has been updated per the HTML5 specification.
Carol Szabo implemented full support for quotes in WebKit, following the CSS 2.1 specification. The -webkit-hyphenate-limit-{before,after} CSS properties have been added. Safari’s JavaScriptCore JavaScript Engine now implements the seal/freeze/preventExtensions methods for normal object types, except for arrays.
Other changes which occured last week include:
The -webkit-hyphenate-locale CSS property has been renamed to -webkit-locale.
Layout performance for pages with a lot of floating objects has been improved majorly.
Numeric input fields which have an initial value may be cleared again, and accept localized values.
Through an ICU update, Chrome now respects the new sorting rules for the French language.
WebKit’s GTK port now supports multiple threads for JavaScriptCore due to this change.
Handling of the currentColor color for SVG now follows the specification.
Support for handling quoted-printable strings has been added, in preparation of MHTML support.
CSS Outlines will now be drawn for table and table-cell elements.
The WebKit2 API now supports printing pages on Windows.
A redundant “Windows; ” has been dropped from the default User Agent string on Windows.
The fast-path for rgba() parsing now properly clamps out-of-range alpha values.
Another site for the hardcoded HSTS list; shouldn’t we try to avoid doing this?
Support for the WebKit Full-Screen API has been added to Chromium, hidden behind a flag.
The speech bubble volume indicator has been improved with an indicator for background noise.
Another flag has been added to trigger the multi-profile feature, no functionality yet either.
And that’s it again. If you want to dig around in the updates from two weeks ago, check out all WebKit and Chromium commits. Upcoming work to keep an eye out for are the visibility API and an implementation of the text-orientation CSS property. Finally: Thanks, guys! 🙂
With 611 commits at Chromium and 733 commits at WebKit, last week brought a total of 1,344 changesets. Highlights include dynamic minimum intervals for DOM Timers and the addition of a chrome://crashes page.
Web Inspector will now reflect style changes when they occur without the Inspector, e.g. though a piece of JavaScript code. Furthermore, work has been laid out for improving the Web Inspector debugging protocol. A document on Google Docs has been created, carefully drafting the JSON-based protocol.
One downside of having a tabbed browser is that websites often remain open while you aren’t using them. Normally this isn’t a problem, but sites with high frequency timers can continue to use a lot of CPU this way. Therefore Chromium intends to make the minimum DOM Timer interval dependent on the visibility of the tab.
Following this WebKit patch, Kenneth Russell landed both support for dynamic values and an experimental decrease from 4 milliseconds for foreground tabs to 1 second for background tabs. While it was reverted shortly after it landed (and thus not available anymore), it certainly is an experiment to keep an eye out for.
Other interesting Chromium changes include the feature for Mac OS X users to hide extension badges via their context menu, addition of a chrome://crashes page to display recently reported crashes and renewed information about the latest version of Adobe Reader, Flash, Shockwave and RealPlayer. The minimum version of Java has been increased to make sure that the user’s installation includes a critical patch.
As for specification-related updates, Luiz Agostini continued his work on implementing the HTML5 <details> and <summary> elements by supporting localized text for them. Right now a patch implementing the element’s rendering is up for review. Support for “dir=auto” has been added, the prepare a scriptsection of the <script> element has been implemented and Chromium was taught how to handle elliptical gradients.
A special note for Dave Hyatt’s monster patch which changed WebKit’s entire line box tree from using integers to using floats. This allowed for the removal of many rounding hacks and opens up the path for features such as sub-pixel positioning for fonts.
Other changes which occurred last week:
Select elements may now be borderless on Chromium for Linux.
The IndexedDB team has finished up implementing the new event model.
Chromium’s WebDriver protocol gained support for manipulating cookies for a session.
Initial support for per-origin quotas has been added to the IndexedDB implementation.
The fast CSS selector path has been enabled for child and subselector combinators.
The third part or the detailed heap snapshot implementation for V8 has landed.
No more green pixels as the edges of certain GPU-accelerated videos due to this commit.
Opening Adobe Reader for PDFs can be enabled by default via an information bar again.
An initial version of the WebGL OES_vertex_array_object extension has been implemented.
The parser will now yield for layout before running scripts, which improves the first paint-time
significantly for slower connection speeds (up to 20% on YouTube!).
The set and remove cookie methods from Chromium’s Cookie Extension API now support callbacks.
Displaying fixed elements on scaled pages has been improved.
Developers working on WebKit changes through Chromium can now access its debugging channels.
SVG Animations are now able to animate to or from “inherit” and “currentColor” values.
Chromoting has received various minor updates, but still is not accessible for end-users.
New icons have been committed for Chromium to indicate whether prerendering succeeded.
Badges have been added to Chromium OS to display what kind of mobile network is being used.
Unfortunately, I won’t be around next week to write an update, so the next update will be two weeks from now. Check out Planet Chromium for updates in the meantime. See you on the 7th (or earlier elsewhere)!