Peter Beverloo

Mar 272013
 

WebKit saw 717 new revisions last week, and this update discusses them up to r146744.

Work has started enabling Web Inspector to report various CSS parsing errors, such as mismatched braces and missing semicolons. A menu has been added allowing you to customize the panels displayed in the toolbar, capitalization of menu items has been made consistent and IndexedDB data may now be cleared.

WebKit’s Content Security Implementation will now fire a SecurityPolicyViolation event whenever violations occur, and will include the effective-directive key in violation reports as well.

Intrinsic sizing (i.e. min-content) now work on flexible box elements, and parsing for the -webkit-each-line value for CSS 3′s text-indent property got implemented as well. The Grid Layout implementation now supports default grid item sizing, and can parse the grid-auto-{column, row} CSS properties.

Apple’s JavaScript engine ninja Filip Pizlo filed a series of bugs covering some future plans and experiments in regards to JavaScriptCore. Ideas including changing it to a quadruple-tier virtual machine, allowing it to do more optimizations for longer running scripts, running the optimizer on awesome new threads and experimenting with LLVM as a backend.

Other changes which occurred last week:

Mar 132013
 

Last week saw 752 commits to our repository. This update discusses them, up to revision 145340.

Error messages displayed in Web Inspector’s console which contain long URLs will now have them shortened. WOFF fonts will now be recognized with their newly registered mime-type and the touchmove event will now be emulated within iframes. The Ace editor, which also powers the Cloud9 IDE, has been made available in the Inspector as an experiment.

The “width” and “height” directives for media queries now take full page zooming into account. The desktop version of -webkit-text-size-adjust has been removed, selector indexes got an extra bit meaning WebKit supports 8191 selectors again and a video’s line-height won’t inherit to its cues anymore.

Quite some updates were done in light of Web Components: touch events are now supported in shadow trees and work is underway to allow any HTML element to be a superclass of a custom element. The Web Audio API now exposes the maximum number of available channels, the WEBGL_compressed_texture_atc extension is now available and the default background of dragged images is now being properly set.

Regions will now be automatically generated for David’s new multiple column implementation. Meanwhile, Julien has made various changes to the CSS Grid Layout implementation, namely parsing of the the grid-{start, before} properties and the grid-{end, after} properties, resolving them and extending the grammar to support two positions for the grid-{row, column} properties.

Other changes which occurred last week:

Mar 082013
 

This update discusses last week’s 718 changes to WebKit, up to revision 144595.

Web Inspector will now show raster tasks on the Timeline Panel. Furthermore, the various profiling tools, such as the JavaScript CPU Profiler, canvas profiler and the memory snapshots, have been moved in separate panels.

When enabling the CSP 1.1 implementation, the new directives will now work on the unprefixed header as well. The meta referrer directive will now be honored for window.open() calls,the X-Frame-Options header accepts the “ALLOWALL” value and no callback is required anymore for requesting a notification permission. Rules for up and down-mixing channels in the Web Audio API have been implemented, and collapsing rules for empty buttons have been corrected.

The :first-letter pseudo element is now being ignored in flexible box elements. Dave rewrote the stacking model for the new multiple column implementation to be spec compliant and made sure transformed objects show up. CSS Shaders’ non-separable color and luminosity blend modes have been implemented, and parsing of CSS’ transition-property property has been improved.

Work on refreshing the calendar picker in WebKit continues with various new components, among which support for scrollbars, a month popup view and a table view for the calendar itself.

One feature that is nearing completion is the threaded HTML tokenizer. Now that more tests have been fixed and some optimizations have been done, it’s been enabled for Chromium’s DumpRenderTree.

Other changes which occurred last week:

Feb 262013
 

Today’s update talks about the 745 changes made to WebKit last week, up to revision 143884.

Web Inspector’s Timeline panel now shows the networking events associated with Web Sockets, i.e. creating the socket and receiving a reply to the connection handshake. The “undefined” keyword will now be lowlighted, and Pavel landed a basic console.table() implementation.

An implementation of Web Components’ document.register() function landed, making it possible for JavaScript to register custom HTML elements with WebKit. Date and time input fields now accept “24″ as a valid hour as well and the “reflected-xss” directive has been implemented as part of the experimental CSP 1.1 implementation.

Iframes now recognize the “allowfullscreen” attribute, whereas they already accepted the prefixed version. Furthermore, Mutation Observers have been unprefixed as well!

Several more tests have been fixed in the new multi-threaded HTML parser by implementing missing functionality and support for edge-cases. There are 25 failing test-cases remaining and the number of open issues is decreasing.

Dave continued his work on the new Region-based multiple column implementation, also taking the first steps towards specification-compliant painting of columns. Meanwhile, Julien continued his work on the implementation of the CSS Grid Layout Module, finishing the auto placement algorithm implementation.

Other changes which occurred last week:

  • JavaScriptCore’s script source cache has been shrunk, yielding significant memory usage improvements.
  • Support for the canvas’ Path object has been enabled for all ports except for Chromium.
  • An implementation of the DFG JIT for MIPS architectures has been implemented.
  • An OpenCL implementation of the FEMerge filter landed, with many more on their way.
  • The WebKitGTK port updated their media controls to be CSS-based rather than GTK-based.
  • Stephen Chenney has become a WebKit Reviewer. Congratulations!
Feb 222013
 

This update describes the 725 WebKit commits that landed last week, up to revision 143146.

Within Web Inspector, an option has been added to split the Elements and Source sidebars in two separate panes. DOM nodes are now being highlighted when hovering over them in the Debug panel, the ability to have whitespace indicators now is experimental and the re-do feature in the text editor will now move the selection past the text.

Support for the “ch” CSS unit has been added to WebKit, which matches the width and spacing of the “0″-glyph in the current font. The @supports at-rule now has improved error recovery, the “src” property in @filter at-rules can now be parsed correctly and the correct behavior of the -webkit-margin-collapse property has been implemented.

Changing an element’s border or padding will now re-layout its children, intrinsic widths on replaced elements -such as images- are now more accurate and Opera’s Morten Stenshorne made WebKit stop ignoring column rules wider than the gaps. CSS Exclusions’ shape-inside property now defaults to outside-shape, and shape-inside now supports circles.

Support for the ::distributed() pseudo-element, part of the Shadow DOM specification, has been implemented. Pablo also landed support for the CSS.supports() method, which is the DOM API specified in the CSS Conditional Rules module.

The threaded HTML parser has been updated to pass all layout tests, and the preload scanner has been enabled as part of the background parsing thread after parts of it have been updated to be therad safe.

Other changes which occurred last week:

Feb 142013
 

This update describes the 696 commits made to WebKit last week, up to revision 142428.

It’s now possible to change the dock side of Web Inspector by dragging its toolbar. There’s now an option to show composited layer borders and the JavaScript tokenizer can now detect round braces. Also recently introduced is the Continuous Painting Mode and the possible upcoming addition of a console.table() function.

Adam, Eric and Tony have been working on changing WebKit’s HTML parser to handle tokenization and parts of parsing on a background thread. On resource constrained systems, such as the Nexus 7 tablet, this yields improvements of at least 10%, with the maximum stop time going down by roughly 50%. Some of last week’s fixes focused on the preload scanner, timing of the load event and the XSS auditor.

WebKit’s Media Stream implementation has been enhanced with support for DTMF. Mike will be working on support for X-Content-Type-Options:nosniff and edit actions have been added for Bold and Italic commands. document.activeElement won’t return non-focusable elements anymore, the formenctype attribute now defaults to an empty string and FocusEvent got a constructor.

Rik started working on implementing support for the background-blend-mode CSS property to WebKit, which determines the blending mode of the background image. The vmax unit has been implemented, completing the vh, vw, vmin and vmax group, and language selection for the ::cue pseudo-element is now available. Grids now recompute their logical height after row or column changes, and WebKit can now parse grid-auto-flow.

In a series of just over a dozen commits, Gregg imported a slightly modified Khronos WebGL conformance test suite into WebKit. Sharing test suites is great, and I hope we can see more of this!

Other changes that occurred last week:

Dec 182012
 

This update discusses the 1,522 WebKit changes that landed in the past two weeks, up to revision 137871.

The Toolbar Icons in Web Inspector won’t be shown by default anymore. The gear icon immediately goes to the Settings dialog again. Newly added items to the Network Panel will now be applied to filtering and cookies can be sorted by their size again. The viewport-related warning messages have been cleaned up, a new warning has been added for scripts blocked by @sandbox and messages created by console.time and timeEnd() can now be filtered out.

Support has been added for the “widows”, “orphans” CSS properties, as well as for the “ruby-position” property. The text-orientation property now supports the “sideways-right” value and text decorations will now work correctly when text-combine is being used as well. Furthermore, out-of-range values will now be clamped to values the supported range. Applying SVG filters to elements through the url() syntax will now work even when the filter isn’t available yet, and CSS Exclusions’ shape-inside is now supported for multiple-segment polygons.

Elliot moved generated content in :before and :after CSS pseudo-elements to the DOM, which also means that supporting animations and transitions on them is close. The Shadow DOM’s ShadowRoot constructor is gone, XMLHttpRequests for blob data will now set their Content-Type header accordingly and status events will now be fired for <link rel=prerender> elements. The Web Audio API now supports an offline audio context and the ::cue pseudo-element for video elements now is supported as well.

Support for in-band text tracks is now available on the Mac port, and plumbing has been added to allow deferring displaying of text tracks to the embedder.

Following the final pieces of it’s implementation, Alexis enabled support for the new background-position offset syntax on several platforms before enabling it by default, and removing the feature flag altogether. Meanwhile Tab started on aligning WebKit’s gradient implementation with the specification, towards unprefixing.

As for more experimental features, work on implementing CSS Grid Layout continues with improved and viewport-relative breadth sizes” href=”http://trac.webkit.org/changeset/136432″>and layouting capabilities. Rick started working on supporting -webkit-image-set() on cursors, too.

Other changes which occurred these weeks:

Dec 062012
 

This update talks about the 690 WebKit patches that landed last week, up to revision 136364.

A canvas’ 2D context’s globalCompositeOperation property now also accepts the various blending modes. The unpause() method on a MediaController object is now supported. Removing non-existent cues from a text track will raise an exception, and a media element’s textTracks property has been updated to work with date and time input types as well. The -webkit-mask-attachment property has been removed and the masking size has been added to the -webkit-mask shorthand. WebKit’s Multiple Column implementation now accepts “none” as the value for column-span rather than just one, and tables have started respecting the max-height property.

As for experimental features, Julien is continuing his work to implement the CSS Grid Layout Module in WebKit, and landed several more patches. Dave also landed another patch for the new Multiple Column implementation, and CSS Shaders’ input colors will now be clamped before being blended. More tests have been added for the CSS Device Adaptation implementation, and values provided through the meta tag won’t be clamped anymore.

Other changes that occurred last week:

  • An OpenCL-based implementation of several filter effects has been added.
  • A basic implementation of the Web Audio API’s MediaStreamAudioDestinationNode landed.
  • Printing in a custom font on a <canvas> object can now also fall-back to other fonts if it’s unavailable.
  • It’s now possible to run WebKit’s performance tests on Chromium for Android.
  • In order to make performance profiling easier, the run-perf-tests script now accepts a –profile option.
  • A feature flag has been added for an implementation of the HTML <template> element.
  • Partytime has been brought back to WebKit!
Dec 012012
 

This belated update talks about the 575 WebKit patches that landed last week, up to revision 135681.

Web Inspector has enabled JSON previews for text/html XMLHttpRequests. Line numbers in the timeline panel are now searchable and pressing the Ctrl+End shortcut in the code editor will bring you to the last character again.

Erik continued with his renaming of DOM Exception names. The CSS Device Adaptation implementation is now able to apply the resolved viewport rules and, when enabled, exposes an API to the DOM. Text Autosizing’s display of nested comments on reddit.com has been vastly improved, changing relatively positioned elements to being statically positioned now puts them in the right spot and CSS Exclusions’ shape-outside values are now accepted on shape-inside as well. Alexis landed CSS B&B3-compliant parsing support for the background-position property.

The IDBDatabaseException object has been removed in its entirety. Initial infrastructure has been created allowing ports to handle in-band subtitle tracks, a new layer stack has been added to accommodate the needs of both the Fullscreen API and the <dialog> element, and biquad filter nodes for the Web Audio API now have a “detune” attribute.

The feature flag for the DAP Proximity Events feature landed. A few other potentially upcoming features were discussed on the WebKit mailing lists last week as well, namely using OpenCL for filters, Pointer Events, the Screen Orientation API and adding the <main> element.

Other changes that occurred last week:

  • James started working on Resource Timing tests, in W3C style so they can be submitted.
  • The EFL port added support for using the ATK library for Accessibility support.
  • Chromium for Mac switched to WebKit’s TCMalloc, improving DOM modification performance by up to 15%.
  • Chromium enabled support for the datalist UI for datetime and datetime-local input fields.
  • Qt separated all their code that depends on QWidget in a separate static library.
Dec 012012
 

This belated update talks about the 575 WebKit patches that landed last week, up to revision 135681.

Web Inspector has enabled JSON previews for text/html XMLHttpRequests. Line numbers in the timeline panel are now searchable and pressing the Ctrl+End shortcut in the code editor will bring you to the last character again.

Erik continued with his renaming of DOM Exception names. The CSS Device Adaptation implementation is now able to apply the resolved viewport rules and, when enabled, exposes an API to the DOM. Text Autosizing’s display of nested comments on reddit.com has been vastly improved, changing relatively positioned elements to being statically positioned now puts them in the right spot and CSS Exclusions’ shape-outside values are now accepted on shape-inside as well. Alexis landed CSS B&B3-compliant parsing support for the background-position property.

The IDBDatabaseException object has been removed in its entirety. Initial infrastructure has been created allowing ports to handle in-band subtitle tracks, a new layer stack has been added to accommodate the needs of both the Fullscreen API and the <dialog> element, and biquad filter nodes for the Web Audio API now have a “detune” attribute.

The feature flag for the DAP Proximity Events feature landed. A few other potentially upcoming features were discussed on the WebKit mailing lists last week as well, namely using OpenCL for filters, Pointer Events, the Screen Orientation API and adding the <main> element.

Other changes that occurred last week:

  • James started working on Resource Timing tests, in W3C style so they can be submitted.
  • The EFL port added support for using the ATK library for Accessibility support.
  • Chromium for Mac switched to WebKit’s TCMalloc, improving DOM modification performance by up to 15%.
  • Chromium enabled support for the datalist UI for datetime and datetime-local input fields.
  • Qt separated all their code that depends on QWidget in a separate static library.