CSS Selector Profiler, Source Mapping and Software Rendering
Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 18
Happy New Year! Since I didn’t publish an update last week, this one will cover all 680 WebKit and 986 Chromium commits made in the past two weeks. Highlights include a ton of Web Inspector changes, Jarred’s work on XMLHttpRequest and access to new JavaScript features through about:flags.
Besides support for true hardware acceleration, which pretty much is a requirement for features such as WebGL and CSS 3D Transforms, attention is also being given to software renderers. Several crashes for Apple’s OpenGL-software renderer have been fixed, and support for SwiftShader has been added for Windows installations, which will automatically be downloaded if support for GPU-based WebGL is blacklisted. While performance definitely won’t be en par with GPU-based WebGL, it’s a good solution for those on older systems.
The Web Inspector team landed some great new features, most notable of which is the CSS Selector Profiler. Available through the Profiles Panel in the Inspector, it will show the number of matches for a certain element and its contribution to the total style matching run-time. Two other new features, both displayed in the image below, are the ability to dock the Web Inspector to the right-side of the browser window (through the Settings window) and an experimental tabbed interface for the Script Panel.
New, experimental Web Inspector features will be hidden behind a command line flag and a setting. Tree views in side-bars cannot be collapsed anymore using the keyboard and subsequent @rule-statements in CSS will be highlighted. The ability to remove all breakpoints has been added, as has a cool Go To Function dialog. Finally, Web Inspector gained support for Source Mapping through the X-SourceMap HTTP header. When enabled (also through the Settings window), an Install Source Map context-menu item will be added to scripts in the Script Panel.
On Chromium’s side for Web Inspector, both the chrome.devtools and the chrome.debugger Extension APIs graduated from being experimental, so hopefully we’ll be seeing a lot of extensions starting with Chrome 18!
WebKit’s HTML5 parser has received a number of updates, which include support for the Noah’s Ark condition, 93 named entities which expand to more than a single character and some minor fixes related to NULL characters in HTML content. Video subtitles through the <track> element can now be rendered on a video, and subtitles will be enabled for WebKit-mac builds, meaning Safari. Finally, the dropzone attribute got aligned with the specification.
The XMLHttpRequest implementation has also been updated, which now compares the mime-types in a case insensitive way, gained support for the loadend event and allows more liberal modification of the withCredentials and responseType attributes. More excitingly, new response types (such as json) won’t support synchronous requests in a non-worker scope anymore. Two more init*Event methods have been removed, and retrieving the computed style of the border-style, border-color and margin properties has been implemented.
Default styling of the strong and b elements has been updated to be bold rather than bolder. CSS Filters may now be used on inline elements, the blur filter will now invalidate the entire element and animating brightness, contrast and drop-shadow filters won’t be reversed anymore, and two more issues with full CSS 2.1 support have been fixed.
Other changes which occurred during these weeks:
- Enabling the JavaScript ES.Next features (“Harmony”) in v8 is now possible through about:flags.
- Another feature which can now be enabled on about:flags are hardware accelerated CSS Filters.
- Chromium’s text rendering will now be done through Skia, instead of directly rendering with GDI.
- WebKit will now use 2.3 megabytes less memory when displaying the full HTML5 specification.
- Several HTML Collections will now be cached, also making reddit a whole lot more usable.
- The about:flags page will now show all experiments for all platforms (thanks, tbreisacher!)
- Panels on Chromium for Windows now have an overflow indicator count.
- A command line flag for experimental Web Inspector features has been added.
- As a next step in the content-API refactoring, work on WebContents has been started.
- Documentation for the WebRequest Extension API has been improved.
And that’s all again. Two bugs to keep an eye out for this week are updated patches for CSS calc()’s parsing and the beforeprint and afterprint events.