Happy New Year! Even though there were only 354 commits in total, there certainly were some interesting subjects to write about. Highlights include cleaner gradient syntax for WebKit, support for the :in-range and :out-of-range CSS Selectors and background extensions enabled by default.
There are two things which I’ll change with the weekly updates, starting at this article. Firstly, I’m no longer forcing external links to open up in new tabs/windows: clicking them will navigate away from the article. Furthermore, I have added tags indicating the latest Chromium version at the time of publishing, making it easier to determine what changed in a major Chrome release: version 7, 8, 9 and the latest: Chrome 10.
Following Tab Atkins’ promise that the gradient part of the CSS3 Images specification won’t change anymore, Simon Fraser was quick to jump in and implement the gradient syntax in WebKit. This is good news for the cutting-edge developer, as WebKit’s own proprietary syntax won’t be nessesary anymore in the near feature.
So far, two patches for supporting the new gradient syntax have landed. The first one implements the syntax for non-repeating linear gradients, including support for non-percent based and negative lengths. The second patch adds support for radial gradients through the -webkit-radial-gradient property, which includes shapes and sizing for the ellipse. Mind that only circular ellipses are supported for now.
Hopefully the new CSS3 Images module will be published as a Working Draft soon, as Tab Atkins is intending to request it. The new draft introduces the ability to use elements as backgrounds, as well as a more convenient way of cross fading background images.
The Web Inspector team didn’t seem to care about the New Year either and landed various patches. The protocol has been cleaned up and was enriched with Network, DOM Storage and Database domains. Disabled style properties get enabled when they’re edited and pasting a full property declaration will now split it up in a property and value automatically.
Other changes in this week include:
Support for HTML5’s :in-range and :out-of-range CSS selectors has been added.
Viewing the source of a pinned/app window won’t clone the tab’s state anymore.
The JSON.parse method in JavaScriptCore now properly exists as a function taking two parameters.
With the addition of the Surface3D class, the Pepper3D API is now complete, but not fully functional yet.
JavaScriptCore now recognizes vertical tabs and form feeds as valid JSON whitespace characters.
Accidental white-space for Chromium OS usernames will now be removed.
Sandboxed iframes no longer have access to the top.history methods.
Periods in Google Apps account names won’t be ignored anymore in Chromium OS.
WebKit’s client-based GeoLocation has been enabled for Chromium.
Background extensions have been enabled for all platforms, except for Chromium OS.
Submitting forms using the GET method to the current location as its action won’t reload the page.
Where my first day of work in 2011 has already passed, yours might just be beginning. See you next week!
With just 347 commits at WebKit, and 433 at Chromium, activity indeed has been down a bit. Nevertheless, there have been some interesting changes, including spatialization resources and Strict Mode fixes for Safari.
Matrices have been given some love within WebKit, with two more methods for the CSSMatrix class: skewX and skewY. Both normal 2D matrices and 3D matrices will now take the page’s zoom factor in account, and some additional tests have been added to ensure that behavior on CSSMatrix as well.
Specification support has been given quite some attention again. JavaScriptCore, the JavaScript engine used by Safari, no longer allows you to delete variables, functions or arguments per ECMAScript 5’s Strict Mode. Defining multiple font families for a CSS @font-face rule will discard the rule. The box-shadow property no longer requires a prefix, although -webkit-box-shadow remains available for non-standard blur radiuses.
Within Web Inspector, work is well on its way to support auto-completion for a property’s values. There still are some patches which need to be updated before the feature can be implemented, but the forecast is rather good. Meanwhile, Chris Rogers added spatialization resource files for the Web Audio API and landed an AudioBus for Chromium, bringing wider support for the API a step closer.
Other changes last week include:
Borders with non-opaque alpha colors won’t break gradients anymore for Chromium.
Support for listening sockets was added for Chromium, used for Cloud Print, Remoting and Automation.
Five new commands have been implemented in Chromium’s Web Driver, for tracking a page’s elements.
V8’s implementation of window.open has been moved to WebKit’s common one.
The initial state for HTML5’s interactive validation on <select required> elements has been fixed.
Rendering and script execution won’t block anymore on deferred stylesheets.
Ryosuke Niwa has joined WebKit’s reviewers team, congratulations!
Chromium’s timeline in media controls can now deal with widths less than 240 pixels.
The performance of Chromium’s toDataURL for canvasses has been improved by 3 times.
The root layer of a composited page will now be tiled as well.
Some major directory reorganization work is underway within WebKit: don’t get lost!
Considering this year only counts four more days, I don’t think this week will bring much surprises, even though there are some interesting patches pending. Have a great New Year’s Eve and a happy New Year!
With 611 commits to the Chromium repository last week, and 449 commits to the WebKit one, my guess is that last week was the last week this year with more than a thousand changes. Highlights include support for the text-emphasis property and Web Inspector’s style editing panes, which now support Firebug-like editing.
Good news for fans of Firebug: editing CSS properties in Web Inspector will now be done with separate fields for the property’s name and value. Using the arrow keys to increment or decrement a numeric value will cause immediate changes again. Furthermore, some more work was done on the Extension API. Specifically, support was added for adding and overriding HTTP request headers.
As for specification related changes, the endedPlayback property for HTML5 media elements won’t return true anymore if the media file couldn’t be loaded. The -webkit-appearance property no longer accepts the value caps-lock-indicator and the delete method for IndexedDB Cursors has been added.
Work on two text-related CSS properties has continued as well. Firstly, Dan Bernstein has been working on the text-emphasis property, the final part of which landed last Friday. This property allows you to include small symbols next to the text, which Eastern Asian documents may use to emphasize the run of the text. Takumi Takano updated the values for text-combine to match the current CSS proposal.
Other changes last week include:
Kenneth Russell ported the Web Audio API’s FFTFrame implementation to MKL.
Stylesheets defined under the “print” media will now be downloaded with a lowered priority.
Chromium OS now also reports to accept the language “en”, following the Chromium browser.
Chrome Frame will now ignore IE’s conditional comment tags when parsing a HTML stream.
Since the next article will take another seven days: Merry Christmas! I’m going to spend my time with family, so expect next week’s post to be rather short. However, I probably won’t be the only one. Enjoy!
Even though there were just 1016 commits in the last seven days, the announcements from the Chrome team have certainly made it interesting. This week’s highlights include Crankshaft, extensive documentation for Web Inspector and quite some updates on specification support.
Tuesday, Google’s Sundar Pichai went on stage to make some announcements around the Chromium project. While it was rather obvious that the Chrome Web Store and Chrome OS would be announced, I did not expect free laptops for reviewing purposes to be given away. Neither did I expect the Crankshaft update to the V8 JavaScript engine, which significantly improves performance. Since I’m sure you’ve read most of it, I’ll just give a quick recap:
The V8 team has introduced Crankshaft which uses adaptive compiling to focus optimizations on the areas that need it. It’s available on the Canary channel already.
Chrome OS’ development has entered the stage at which it needs feedback from end-users. People living in the United States can apply for a notebook in the Pilot program.
The Chrome Web Store has been launched! Already filled with a wide range of applications, it can strongly increase the capabilities of your browser.
The Google Chrome Developer Tools, or simply Web Inspector, is quite an extensive piece of software. Almost every developer will be familiar with the main screen: a clear overview of the elements available on the page and the CSS rules associated with them. But not everyone is aware that you can expand the Properties pane in the sidebar to see all the DOM properties, let alone the possibility to profile your JavaScript’s CPU usage, create memory heap snapshots or list the cookies which were sent when downloading an image.
In terms of improved standards support, the marquee element will now stop scrolling if scrollAmount has been set to zero. The object element now is an associated form element. Furthermore, I’ve updated Maciej Stachowiak’s patch which allowed support for the HTML5 hidden attribute to land (despite my earlier thoughts) and added the default CSS definitions for the <figure> and <figcaption> elements, completing support. Dai Mikurube added support for the required attribute on the select element.
Other changes include:
Web Inspector is now usable with the WebKit2 API on Windows.
Pasted text will now be checked for spelling errors in Chromium as well.
Layout flow for involving transforms in scrolling has been refactored.
The border-radius property can now be used for CSS Animations.
Spatial navigation is now available for map and area elements too.
Some progress on implementing the search function in Chrome’s Web UI.
Transitioning multiple shadows should now be working correctly again.
Support for the validation API for <object> and <keygen> elements was improved.
James Robinson fixed the blurred text issue on large accelerated layers!
Reflected unsigned attributes in IDL files will now be trimmed to [0, 2^31].
Chromium is on its way to switch their libjpeg implementation to libjpeg-turbo.
A quick patch has landed to solve the infinite redirects on developer.apple.com pages.
The WebKit GTK port has landed support for the viewport meta-tag.
The Input Speech API will now be available by default on Chrome’s dev-channel.
And that’s it again. This week has been a bit Chromium-y due to the announcements, I’ll give WebKit a bit more attention next week again! I’m on stage right at this very moment giving a talk about the Audio APIs, I’ll certainly write some more articles on that in the near future as well!
With the commit count being up 52 percent compared to last week, totaling 1,184 commits, activity has been a lot higher than two weeks ago. Highlights include Google Chrome 8, tomorrow’s announcement and lots of updates to standard support.
Exactly six weeks and over 8,472 commits after the release of Google Chrome 7, Google has updated the Stable channel to the 8th version of their browser. This release brings support for Element.classList, asynchronous script loading, support for the steps timing-function for transitions, the about:flags page and hyperlink auditing, enabled by default.
As a quick peek-ahead towards a feature for Google Chrome that’s currently scheduled for version 9, which would be around mid January: Google Cloud Printing. The idea is simple: connect your printer with GCP and you’ll be able to print to it from any computer or smart phone, regardless of where you are. Probably unrelated: an event will be happening in San Francisco tomorrow morning sharing some exciting news about Google Chrome. While I have a fair idea what it will be about, there is little point in morespeculation.
WebKit has taken a huge leap forward in terms of support for various standards. ArrayBuffers may now be transmitted using XMLHttpRequest’s send-method, a form’s elements property now includes fieldset and keygen elements, getBoundingClientRect won’t truncate the coordinates to integers anymore and focussed <area> elements will no longer use the image’s focus-styles.
An <input type=color> will no longer accept named colors and the incremental property is now available on the DOM of all input elements. The toDataURL method of a canvas’ context in Chromium can now export the image as a JPEG, the marquee element’s properties have been updated per the HTML5 specification (besides the events) and, while they don’t have visual effects yet, support for the four text-emphasis properties from the CSS3 Text module was added.
Finally, support for both lower and upper Armenian list style types has been implemented and initial versions of the HTML5 <details> and <summary> elements have been added by Luiz Agostini. Even though they aren’t interactive yet, work has started!
Other interesting changes which occurred last week:
Option elements will not be bold anymore for certain Chromium versions.
The about:flags page will now show a drop-down for items where multiple values are possible.
Hyperlink auditing (<a ping>) may now be disabled via the about:flags page.
No, of course I didn’t forget Web Inspector. The “revert to revision” system has been implemented for the revision-system in the Resources panel. The display name of an object will now equal its constructor rather than its type, copy(node) in the Console works again, the cookies tab for a Network resource will only show for Chromium, and, finally, the Inspector protocol has been cleaned up.
As already mentioned earlier in the post, the Google Chrome team scheduled an announcement for tomorrow. Be sure to keep an eye out for news and updates, I’ll certainly devote some tweets to the announcement!
With only 777 commits, this week has been rather calm in terms of changes to the repositories. Nevertheless, there have been some interesting changes to both projects, and lots of ongoing work of course.
Even though WebKit only received 281 commits last week, in one of the changes Luiz Agostini landed support for the matchMedia method from the CSSOM View module. The method adds support for event-based Media Queries to JavaScript. This allows you to detect, for example, changes in the orientation of a visitor’s display:
On top of the default media queries specified in the specification, WebKit also supports “-webkit-view-mode”. Using that query together with the matchMedia method allows you to detect whether a WebKit instance is windowed, floating, minimized or maximized. Unfortunately these features are not yet available for Chromium.
Other specification related changes include that usage of percentage values for transform origins on the z-axis will now invalidate the entire property. Furthermore, the DataView interface from WebGL’s Typed Array specification has been implemented.
Even though I have known about the feature for a while now (and briefly tweeted about it), there wasn’t really a lot to say yet. That has changed now that new mock-ups on chromium.org are available: I’ll quickly sum up the multiple profile feature Chrome will be getting.
There will be two types of profiles: limited profiles and profiles based on Google accounts. The former will only be available on the current computer, while profiles based on Google accounts have the ability to synchronize their settings/bookmarks and may be used to access the Chrome Web Store.
Switching to another account will require you to enter the password in order to properly log in. Multiple browser windows may use different profiles, and each profile can use its own Incognito Mode.
Each profile can have a shortcut on your desktop, showing a little avatar in the bottom-right corner.
While there is no known date on which these features should be finished, it’s currently aimed for Milestone 10. This means that it might be hitting the stable channel around late February next year.
The Web Inspector team has been busy again with their effort to provide developers with a complete set of tools for efficient developing. The latestaddition is support for locally modified files, including the ability to see the added, changed or removed lines inline in the file’s content view. While these features haven’t been finished yet, they certainly are worth looking forward to.
The Inspector’s Network panel now shows a Timing-tab for individual resources, showing a graphed overview of loading times. The interfaces of the Network and Resources panels have been polished, and work has started on showing highlighted differences between a file’s revisions.
Other changes to the projects last week:
After using speech-input, the onspeechchange event will now be fired.
Outside list-bullets will no longer ignore text alignment within the item.
WebKit’s XMLHttpRequest object now has two new properties: response and responseType.
TimeComposer has added support for one and two-digit millisecond values for date parsing.
Web Inspector’s ResourceView has been abstracted as more types of resources arise.
Capitalization for the “Check for update” menu-item has been fixed to meet Google’s sentence standards.
Chromium’s compositor has been updated with a texture manager to manage the amount of VRAM usage.
Synchronous support for the File Writer API has been added, with a Chromium-implementation as well.
An issue in the Yarr Regular Expressions engine has been solved in WebKit, pending in Mozilla Firefox.
Internally WebKit’s CSS Parser has been taught the correct spelling of “hertz”.
Displaying of suggested results in the omnibox through Google Instant is now available for Mac OS X.
An exponential back-off system has been implemented, preventing Chrome from causing DDoS attacks.
Part of Chrome’s side for HTML5’s interactive validation has landed, validation messages for forms.
Acer’s Jeff Fang seems to by busy porting Chrome to a limited memory device.
Next week branching for Google Chrome 9 will occur, and I’m expecting more work on Web Inspector’s revision system to be completed. See you next Monday!
Last week the projects received another 1,126 commits, 615 for Chromium and 511 for WebKit. Some highlights include updated Terms of Service and the removal of the CSS Variables code.
To start off with improved standards support, the stepUp and stepDown API methods for certain input elements have been updated to match the specification in case step-mismatching occurs. The unloadEventStart property has been added for the Web Timing implementation.
In scope of the Web Audio API, event hooks were added for JavaScript Audio Nodes, as well as custom bindings for AudioNode. More work has been completed on vertical text as well: support for vertical text in ruby was enhanced and fonts with no vertical metrics will now synthesize baselines.
WebKit’s implementation of CSS Variables has been removed. Even though it has been disabled for ages and the implementation never shipped in stable builds, I’m quite a fan of variables. It just makes creating and, more importantly, maintaining large websites a lot easier. Nevertheless, since Google really wants the feature to be implemented, be sure to keep an eye out for this bug if you’re interested as well.
Implementation is one thing, but getting them standardized and available in other engines won’t be easy. With an essay like this around from a member of the CSS Working Group and a lot of discussion in general, reaching a consensus on any syntax, behavior or draft won’t be simple.
Other updates which occurred last week:
Google Chrome’s Terms of Service have been updated, adding additional terms for Enterprise use.
The style property on attribute nodes has been removed, except for Objective-C bindings.
Internally Web Inspector’s Storage Panel has been renamed to Resources Panel as well.
CSS files included for Chromium’s Web Inspector will be concatenated.
WebKit now really passes the Acid 3 test, as two bugs were cancelling each other out.
Synchronization of resizing the renderer for accelerated compositing no longer is Darwin-specific.
Downloads in Chromium may now be restarted if they previously have been cancelled.
Asynchronous file writers will now be available for Web Workers.
The fullscreen UA-stylesheet will now only be injected when the document is in fullscreen mode.
Multiple background images on an element won’t cause repeated repaints anymore.
More message-functions have been added in preparation of full support for interactive validation.
Navigating on websites with dark backgrounds used to result in white flashes – it won’t anymore.
The focus ring on image maps has been updated to take zooming into account.
The spatial navigation’s node selection algorithm has been updated quite significantly.
The network-error pages will now only contain gradients if the user’s display supports high color depths.
DirectX diagnostics will now be gathered asynchronously on about:gpuinfo due to performance reasons.
A search box has been added to the DOM UI, but it doesn’t actually do anything yet.
The Omnibox Extension API has been moved out of its experimental status.
The “Edit Bookmark” dialogs on Chromium for Windows are now resizable as well. Great change really.
And that’s all for this week. If you happen to be a member of Fronteers, the annual general meeting will be held on the 24th of November. Furthermore, I’ll be giving a presentation about the Audio APIs on the 13th of December in Groningen, the Netherlands. If you speak Dutch and would like to attend, feel free to sign up!
With 1,087 commits in the past week, most of which were created for the Chromium project, it has been another average week. This week’s update will be brief considering I’m a bit short on time right now :).
There have been some interesting changes to form-support within WebKit in the last week. A bunch of new attributes are now available, like the form-attribute, as well as the formaction, formenctype, formmethod and formtarget attributes. Meanwhile, work on the framework for interactive validation support continues.
More progress has been made on supporting vertical text within WebKit. Support for vertical ruby has been finalized and lists now work vertically as well. Furthermore, repaint invalidation has been fixed and a number of bugs with the orientation of fonts have been solved as well.
Within Chromium’s about:flags page, support for click-to-play, experimental extension APIs and Snap Start has been added. For the sake of clearing up the situation around issue 61745 a bit: different from what news sites report, preloading pages in the background has not been implemented yet, and therefore it’s impossibleto notice improved performance. Makes sense, right?
Other changes which occurred last week:
Option elements for Chromium can now be hidden by setting the CSS property display to none.
The accuracy of serialization of numeric input elements has been decreased, WebKit was too precise.
The first steps towards exposing the synchronous implementation of File Writer have been made.
Support for the HTML5 ruby elements cannot be disabled anymore.
canvas.putImageData (canvas.getImageData (..)) will now do its job without losing quality.
Support for multisampling has been added to the GPU’s drawing buffer.
The selectionStart and selectionEnd properties will now report the right values for textareas.
Parsing of various CSS keywords has been added for the content-property to fix out-of-flow counters.
Although, statistically seen, it has been quite a regular week with 1,096 commits, 494 for WebKit and 602 for Chromium, there have been some very nice changes and announcements over the past seven days.
As for ongoing work, Dave Hyatt added support for selections on vertical text, and made sure that repaint invalidation now works with vertical lines as well. Dan Bernstein committed basic support for multiple writing modes in tables, including support for collapsing borders.
Meanwhile, Chris Rogers has been busy landing parts of the Audio API in WebKit. The RealtimeAnalyser (and its Node) landed about a week ago, just like the ConvolverNode and the AudioBufferSourceNode. A class to pass on the active buffers to the onaudioprocess event, named the AudioProcessingEvents Interface, has been committed as well. With more patches in the queue, progress on the API steadily continues.
Several announcements were done during one of the keynotes at Adobe’s MAX conference last month, some of which illustrated Adobe’s interest in HTML5. Mark Anders introduced EDGE, giving web developers an interface similar to Adobe Flash for creating HTML-based animations on their websites. Furthermore, it was also announced that Adobe will be contributing an animation framework to jQuery, as well as proposing and contributing changes to WebKit.
Last week Paul Gubbay demoed one of the prototypes the team at Adobe has been working at, showing text-wrapping around arbitrary shapes. It actually consists of two parts: a JavaScript framework, which is likely to work with jQuery, allowing the user to move the text and image around, as well as handling text reflows. The WebKit-side of the demonstration exists of a CSS property in which a polygon gets defined. This polygon defines a region to which text should be clipped, or from which text should be excluded.
Adobe is working together with Google to accelerate the process of landing the changes in WebKit, and thus making them available in a browser release. While the CSS property’s syntax is expected to evolve following community feedback, Adobe certainly intends to propose the feature to the CSS Working Group.
In terms of standards compliance, getComputedStyle received an update allowing you to retrieve all backgrounds instead of just the first one. The window.name property will now return an empty string for unnamed windows and frames and, in preparation of landing the actual interactive validation UI, a framework for showing the messages has been added as well.
Kenichi Ishibashi added support for the HTML5 <output> element, which is intended to represent the result of a calculation of two or more other form fields. After a way too long period of time, Erik Arvidsson landed an adjusted version of my patch to support the unprefixed box-sizing CSS property. Finally, since the IETF now seems to consider prefixed HTTP headers harmful, the “X-Purpose” header has been renamed to “Purpose”.
More updates which occurred last week:
The integrated PDF viewer has landed in Chrome’s Beta channel.
A minor update was done to the EULA of Chrome OS, clarifying the concept and implications of themes.
All the poor folks with e-mail addresses ending with @google.com have hard-coded screen locking.
Many thanks to Paul Gubbay and Alexandru Costin from Adobe for answering my questions. Also, this page contains a clear lead about what’s (hopefully!) to expect for next week 😉
Another busy week has passed with 579 commits in the WebKit repository, and 683 in Chromium’s. Next to large amounts of on-going work on supporting the writing modes through CSS and great progress on the Web Audio implementation, a lot of other components have been improved or enhanced again.
Quite some work has been put into image support in both WebKit and Chromium. About three months after the idea first arose, the libjpeg-turbo library has landed in Chromium’s repository. As the name suggests, it’s basically a fast, optimized library to display JPEG images.
Furthermore, another image-related subject which is being worked on is enabling ICC Color Profiles for the open source image decoders in WebKit. Previously color profiles were supported on Mac OS X, through the CoreGraphics framework, but because Chromium on Mac has now switched to the open source decoders, it’s a temporary regression.
While most of the work on color profiles still seems to be focused on Mac OS X and, right now, on JPEG and PNG files, it’s a good sign that progress is being made. It might even open up the path for supporting color profiles on Windows and Linux. With larger resolutions, additional image formats and rendering on the GPU through accelerated compositing, it’ll be interesting to see where it’ll be going.
I’ve talked about two larger changes in Web Inspector in the past few weeks: the new Network Panel and the merge of the Resources and Storage panels. Earlier today, Pavel Feldman activated both changes, allowing them to land in recent Chromium builds. There still are bugs, and lots of fine-tuning, enhancements and moving things around, but it’s accessible and ready to be experimented with!
Chromium on the Mac OS X operating system will now actually use WebKit’s image decoders.
The File System API has now been integrated with Web Inspector, but isn’t visible yet.
New images for scrollbars on Chromium OS have been committed.
Dynamically inserted animated GIF images which don’t define a loop count will now only animate once.
The “seeked” event will be invoked when seeking for very small increments on media elements.
Resuming CSS Animations won’t invoke the “animationstart” event anymore.
The <input type=number> element will now be using single-precision IEEE 754 floats.
Quotas for IndexedDB databases are now calculated per origin, and no longer per database.
The “grammar” attribute for Google’s speech input has been added, named “x-webkit-grammar”.
The Google Chrome Extensions documentation site will soon be getting some additional love.
Notifications may now be 160 pixels tall, forty pixels more compared to the old limit.
The “Hyphen” library from the Hunspell project has been added to the project.
To all the people at TPAC: have a great week, I wish I could be there 🙂 If you want to stay informed about CSS proposals such as “drinking-mode“, read about the clothing guidelines and other interesting updates, keep an eye out for the #tpac hashtag on Twitter.
Update
I’ve revised the post following comments from Nico and Peter Kasting. WebKit (and Chromium) on Mac OS X already supported image color-profiles through the CoreGraphics libraries, and switching to the open source decoders created a temporary regression in the support. According to this comment, WebKit on Mac OS X already supported JPEG 2000, but that’s no longer the casenow that it doesn’t use the CoreGraphics library anymore.