Element.matches(), the Cr tool and Happy Holidays!

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 33

Last week, 470 authors made a total of 1,883 changes to the Blink, Chromium, v8 and Skia repositories. 1,803 changes were made in the week before that, some of which I’ll mention in this update as well.

Chromium’s Developer Tools already supported zooming in on the interface itself, which can now be reset by using <ctrl>/<cmd> + <0>. Using the same control key + <1…9> can now be used to switch between the different panels it offers. The DevTools now also support casting the screen of Android applications using the Chromium-based WebView, as well as filtering control output through a regular expression.

Philip landed a series of patches for making arguments non-optional on the DocumentElementLocation and Node objects and removed a few cases in which Blink treated null as an empty string. He also removed the fourth argument for the createNodeIterator and createTreeWalker methods on the Document object. Most notably, however, is that Philip also implemented support for the new Element.matches() method!

Support for parsing the “pan-x” and “pan-y” arguments for the touch-action CSS property have been added, following the Pointer Events specification. Setting text-overflow to ellipsis will now work when vertical writing modes are being used, and the :first-letter CSS pseudo-class will now been updated when new text will be added to the paragraph’s start. New focusing steps for the <dialog> element were also implemented.

Early implementation of the Element.animate() function has commenced, and is available behind a flag. An arc drawn on a canvas can not have an angle of more than 2*pi anymore. Support for limiting pointer events on an SVG element’s bounding box has been added. SVG now also supports the beginEvent and endEvent event listeners, and media elements now support the “resize” event.

Other changes which occurred last week:

  • Ian announced the “cr” tool, proposing it as a new way to manage Chromium checkouts.
  • The chrome.sockets and chrome.system.network Extension APIs have been promoted to the Stable channel.
  • Wording on the Incognito page has been tweaked to clarify what the feature does not provide.
  • The Chrome-Proxy HTTP header can now be used to bypass the mobile optimizing proxies.
  • Experimental support for playing videos on a Chromecast has been added for Chrome on Android 33.
  • Support for BITS (background downloading of components) has been enabled for Chrome on Windows.
  • The spinner and speech button images for input fields they apply to will only be shown when focused.
  • The Oilpan project, garbage collection in Blink itself, began landing code behind a compile-time flag.
  • A NEON version of the gaussian blur filter landed in Skia, yielding 10-15% improvements on a Nexus 10.
  • Keishi finished support for <datalist> on Android, and announced its availability on blink-dev!
  • The <webview> element now supports a captureVisibleRegion() API for creating a snapshot of the page.

This will be the last update of 2013. I published 22 articles in total, but definitely intent to do better in 2014. Happy holidays!

Read more (2 comments) »

Web Animations Engine, Promises and Datalist Support for Android

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 33

Last week yielded 1,433 commits to the Blink, Chromium, v8 and Skia repositories. This article discusses them up to Chromium r238071.

CSS Animations and Transitions will now be driven by the new animations engine which will also power Web Animations. While Web Animations themselves are not enabled by default yet, this has already brought improved behavior and various bug fixes to Blink.

Keishi has brought <datalist> support to Android for most input types, which will be available starting Chrome 33. Meanwhile Fredrik has been fixing a broad range of issues in Blink’s WebVTT implementation, and Brendan added the “change” and “removetrack” events to TextTrackList and added support for TextTrack.id and TTL.getTrackById().

The base value of the “step” attribute of input elements will now be derived as specified in the HTML specification. Sandboxed iFrames can’t set document.domain anymore and the “overflowchanged” event will now be fired at the same time as requestAnimationFrame will fire. Finally, the first and last characters of a content-editable <div> element with display: table can now be removed.

Other changes which occurred last week:

  • Usage of all deprecated v8 APIs has been removed from Chromium and Blink.
  • Support for Promises has been implemented in v8!
  • Experimental support for sub-pixel font scaling has been added to Blink.
  • HTML Entities will now be highlighted in the Developer Tools’ DOM view.
  • Support for Custom Elements, parts of Web Components, will be available in Chrome Stable.
  • Chromium has been updated to use the Opus 1.1 beta-version.
  • v8 now implements Math.ceil() via the highly optimized Math.floor() implementation.
  • A command line flag has been added for running Chrome’s PDF plugin out-of-process.
  • The Chrome-powered Android WebView may soon be able to use WideVine-based encrypted content.

Cheers for reading.

Read more (no comments) »

Faster Web Font Downloads, Disableable Font Kerning and Easy Hosted Apps

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 32

The Blink, Chromium, v8 and Skia repositories saw 2,019 changes last week, made by a total of 419 authors. This update discusses them up to revision r237097.

Execution of failed <script crossorigin> references will now be blocked. The second argument to CSSStyleSheet.insertRule() has been made optional again because of compatibility issues. Sigbjørn fixed the event sequencing for XMLHttpRequest to be compliant with the specification, and Mike has been improving all the exception messages in Blink!

Web Fonts downloads will now be initiated immediately after style recalculation, rather than queuing it during layout, often reducing download latency by more than 100ms. The -webkit-font-kerning property has been fixed by Eli to actually work. The isolation: isolate CSS property, part of CSS Blending and Compositing, has been implemented for Blink in software mode.

Other changes made last week include:

Thanks for reading once again!

Read more (no comments) »

Vibration and Promises, Less Click Delays and Shutdown Sounds

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 32

Last week, 1,869 commits made by 453 authors landed in the Blink, Chromium, Skia and v8 repositories. This update discusses them up to r232687. There wasn’t an update last week as I was in Dubai!

John disabled the ability to double-tap-zoom on websites which specify a width=device-width viewport, meaning the click delay of 300ms will no longer apply! Support for display: compact has been removed, support for SVG’s getStrokeBBox() method was implemented, and the CSS properties text-align-last and text-justify: none will now impact rendering.

Blink’s Shadow DOM implementation now supports the recently overhauled distribution algorithm for Shadow DOM. The hat and cat CSS combinators for Shadow DOM are now supported as well. Creating an <image> element using createElement() has been changed again, and will now return an HTMLUnknownElement. The innerHTML and outerHTML properties moved from the HTMLElement to the Element interface, making them available to SVG.

Tim landed a patch which pauses Device Orientation events when a page goes invisible, and aligned the orientational angles returned by Chromium with what the specification dictates. Finally, support for the Vibration API is now enabled by default. Also shipping is support for Promises!

Other changes which occurred last week:

  • Chrome OS finally got support for lock, unlock and shutdown system sounds!
  • Managed bookmarks, which cannot be edited or removed, were added to the Android New Tab Page.
  • Support for the Opus audio codec in the <video> element has been implemented.
  • Using AVFoundation on Mac OS X 10.7 and higher can now be enabled by a command line flag.
  • Building Chromium for Mac OS X will now default to Ninja as the build tool.
  • People search in Chrome OS has been enabled by default.
  • Overrideable SSL interstitial pages will now be having a yellow background rather than a red one.
  • The Desktop Capture API has been enabled for Chrome’s Beta-channel builds.
  • Early steps are being made towards supporting Certificate Transparency in Chromium.

Thanks for reading!

Read more (1 comment) »

Multiple Profiles, ES6’s Math.sign() in v8 and Debugging Inactive Android Tabs

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 32

Last week, the Blink, Chromium, v8 and Skia projects saw 1,751 commits made by 432 authors. This article describes them, up to r229770.

A series of changes happened in regards to supporting multiple profiles. The profile selection menu in Chrome’s UI is being changed from displaying an avatar, to displaying a drop-down box displaying the user’s name. In Chrome OS, the icons will only show when the user is visiting another profile in their session. A menu option for teleporting windows to another user has also been added. As usual, François already made a screenshot.

avatar-buttons

All CSS Regions will now create their own layers and stacking contexts. Properties of the experimental CSS Shapes implementation have been unprefixed, but prefixed aliases remain supported for the time being. Support for parsing the text-justify and touch-action-delay properties has been implemented. Forms submitted to a dialog won’t dispatch the close event on the dialog until all processing is done.

Support for ECMAScript 6’s Math.sign() method has been implemented as an experimental feature in v8. The htmlFor property of <output> elements is now settable, creating an <image> element using createElement() will now return a generic HTMLElement and columns in the window.onerror event will now be 1-based. Dominic added support for the onvoiceschanged event as part of the the experimental Speech Synthesis API.

Other changes which occurred last week:

  • The DevTools team is working on accessing unloaded Android tabs through remote debugging.
  • The Sec-WebSocket-Extensions header will now be visible in DevTools for handshake responses.
  • A new experimental method of overflow scroll landed: Universal accelerated overflow scroll.
  • Work on the Mojo shell has started, and it’s already able to load HTTP URLs.
  • Blink layout tests which run a series of assertions can now be written without expected results.
  • An implementation of a TCP Server-socket API landed for Chrome Extensions.
  • Android now supports faster sequential tapping on pages where the page scale is fixed.

Thanks for reading!

Read more (no comments) »

Animations, 2D Canvas’ Current Transforms and Snappy for IndexedDB

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 32

A total of 1,800 commits were made by 437 authors in the Blink, Chromium, v8 and Skia repositories last week.

Animations in Blink are getting a large overhaul as the implementation of Web Animations is progressing, bringing along new features and a ton of bug-fixes. WebKit, by the way, announced their intentions to start working on implementing Web Animations as well.

JavaScript onscroll events will now fire at the same time as requestAnimationFrame(). A new form submission mode for dialogs, <form method=dialog>, has been implemented. The ArrayBuffer.isView() method has been implemented in v8, 2D canvasses now have the currentTransform property for accessing their transformation matrix and Erik started implementing the URLUtils and URL interfaces.

Blink can now synthesize small-caps for @font-face declarations with multiple sources, and transforming text to either upper or lowercase with text-transform now supports Turkic languages. Support for the column-fill property in the new CSS Regions-based multiple column implementation has landed as well!

Other changes which occurred last week:

That’d be all.

Read more (2 comments) »

Transparent VP8 Videos, Audio Codecs for MSE and Chrome’s 5th Birthday

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 31

Last week yielded 1,582 commits in the Blink, Chromium, Skia and v8 repositories, made by 427 unique authors. Incidentally, Chrome turned five years old last Thursday Monday — thanks Peter!

Various changes were made in Chrome’s media stack last week. When using the Media Source Extensions API, support for Opus and MP3 as audio codecs has been implemented. Also new is support for VP8 alpha-playback, which means that videos can now have transparency.

Tables with display:inline set will now be rendered as inline tables rather than block elements, and border-spacing won’t be doubled anymore between table row groups. Philip also changed various JavaScript properties, such as offsetWidth and offsetTop, to only do partial layouts when they’ve been changed.

Arguments must now be passed to the CSSHostRule.addRule() and deleteRule() methods. The mousemove event has been made cancellable. Finally, the unprefixed onanimation* attributes have been implemented on HTML Elements, but won’t be exposed to the web until unprefixing has been completed.

Other changes which occurred last week:

  • DevTools’ go-to-location feature using <ctrl>+<p> now supports line numbers by using a colon: “:80”.
  • Adding a webapp to your homescreen on Android will be available in about://flags.
  • A People Search feature seems to be coming to Chrome, based on Google+ APIs.
  • Spatial Navigation will be enabled for the Chrome-based Android WebView.
  • The chrome.usb.getDevices() and openDevice() Extension APIs have been implemented.

That’d be all for this week!

Read more (4 comments) »

WheelEvents, Elliptical Canvas Paths and chrome://inspect Improvements

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 31

Last week, 430 authors committed 1,760 changes to the Blink, Chromium, Skia and v8 repositories. This article highlights some of them, up to revision 220870.

Christophe deprecated the returnValue property on all events, and instead properly implemented the property on the onbeforeunload event. He made arguments mandatory on a ton of native methods, and fixed the <select>.remove() method to act as described in DOM4 is no index argument has been passed. Two weeks ago he also implemented the WheelEvent from DOM Level 3.

The preferred and intrinsic width calculations for multiple column layout have been aligned with the specification. Support for ellipses as primary citizens in the world of 2d canvas path segments has been implemented. The change which makes devicePixelRatio include browser zoom has now been enabled by default. Support for the paint-order style for SVG elements has been implemented, as has the object-fit property which aids in maintaining the aspect ratio of replaced contents within its content box.

As for experimental features, the viewport will be reset to its implicit size when @viewport rules at-rules are being dynamically removed. The escape key may now be used to dismiss an active <dialog> window, which have also been made ARIA-aware and are now able to fire close() events. Work on unprefixed CSS Animation also continues, now with the CSSOM part.

Other changes which occurred last week:

Thanks for reading!

Read more (5 comments) »

Zoom Dependent devicePixelRatio, Clear Error Messages and JSON for XMLHttpRequest

Published on in Blink, Google Chrome, Last Week, tech. Version: Chrome 31

1,621 commits were made by 417 authors to the Blink, Chromium, v8 and Skia repositories last week.

Within Chrome DevTools, work continues on implementing the new Layer panel. The <Cmd/Ctrl>-<\> shortcut has been added as a shortcut to pause and continue the debugger. Mike has been busy with improving messages shared by Blink for errors and exceptions: anything from XMLHttpRequest to localStorage and tainted images for WebGL will now throw clearer errors.

The window.devicePixelRatio property and the resolution and -webkit-device-pixel-ratio Media Queries will now be affected by the applied browser zoom. Julien started with removing support for the prefixed -webkit-marquee CSS properties and CSS Shapes now supports shape-outside image values, and can be enabled using their own runtime flag. Support for the text-decoration property shorthand landed again as well.

XMLHttpRequests in Blink do now support “json” as a responseType. Support for .wav files has been brought to the Web Audio API on Android. Accessing a cross-origin frame’s location setter may now throw an exception. A new about:flags entry also has been added for an experiment in which touchmove events aren’t being distributed to the renderer anymore. Finally, the DataTransferItemList.remove() method has been implemented.

When building Chromium for Android, the “chromium_testshell” target is the most complete browser you can build. Tommy has now updated it to include a menu option for signing in and out of Chromium.

Other changes which occurred last week:

Thanks for reading!

Read more (2 comments) »

WebGL and Device Motion for Android, Port Forwarding and Named Grid Areas

Published on in Blink, Last Week, tech. Version: Chrome 30

Another 1,859 revisions were made by 444 authors in the Chromium, Blink, Skia and v8 repositories last week. This article describes these changes, up to revision 216962.

Chrome DevTools continues to make debugging mobile pages easier, this time by adding support for port forwarding on chrome://inspect. It works for both local and remote servers, and is amazingly simple to use. They also switched to using rjsmin for JavaScript minification, and are working on a 3D layer view.

The Downloads Extension API has been promoted to the Stable channel, and will be available starting Chrome 30. Also new is a discussion group for talking about the Google Cloud Messaging-powered pushMessaging extension API.

Work on the Chrome-based Android WebView continues and support for displaying fullscreen video has been implemented, with in-page video support pending. The Remoting application for Android now supports paired authentication and had some UI polishing done.

v8 added experimental support for the Array.prototype.find and findIndex methods, part of ECMAScript 6, and now natively supports ArrayBuffer, DataView and typed arrays by default. Blink has been updated to use v8’s implementation of these instead of its own. Blink now also sets the Prototype of the interface object to that of its parent’s. Finally, Promises will be exposed in Worker-threads as well now.

Web Component’s ::content pseudo-element and :host pseudo-class have been implemented. Julien implemented support for named grid areas for Blink’s CSS Grid Layout implementation, and SVG’s stroke-dasharray CSS property has been made animatable.

Christophe Dumez improved Blink’s specification compliance for Text.splitText(), NodeList.item() and HTMLSelectElement.item(). The document.hasFocus() method will now return false when a tab doesn’t have focus, and the imageSmoothingEnabled property on a canvas object has been unprefixed.

Other changes which occurred last week:

More next week!

Read more (no comments) »