Color Profiles, the DPPX, DPI and DPCM units and CSS Variables

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 21

A total of 1,814 commits landed in the projects last week, 625 for WebKit and 1,189 for Chromium.

Web Inspector switched to using Chas Emerick’s jsdifflib for creating diffs between revisions. A dock-to-right icon has been added to the status bar, the settings screen has been rearranged and the list of local modifications may now be cleared. Furthermore, removing a result in the Profiles Panel can now be done through a context menu, and JavaScriptCore now supports breaking from native callbacks.

Following Chromium for Mac, Tony made sure that the Windows and Linux versions now also support color profiles in images, by utilizing ICCJPEG and QCMS libraries.

Animations and transitions may now be applied to :first-element pseudo-elements. The accept attribute of input elements now accepts file extensions and accuracy of state tracking in radio button groups has been improved. David Barr is making good progress on implementing CSS’ image-resolution property, also adding support for the dppx, dpi and dpcm units.

The Blob.slice method has lost its prefix. The document.documentURI property is now read-only, the overset property of Named Flows will return true when no region chain has been attached and the Pointer Lock implementation was updated with the pointerLockElement property, and the requestPointerLock and exitPointerLock methods.

Luke landed the initial implementation of CSS Variables in WebKit. While it’s disabled by default and not enabled on any platform yet, it’s very exciting that work is on its way.

Other changes which occurred last week:

There will only be a brief update next week, while there won’t be any at all the week after.

Read more (23 comments) »

Unregistering protocol handlers and improved input accuracy

Published on in Google Chrome, Last Week, tech, WebKit.

Last week, Chromium counted 1,018 changes while WebKit received 587.

Web Inspector’s pretty print feature now respects the indenting preferences. Only the root domain will be expanded in the Sources and Scripts Panels and links will be opened by default in the Sources panel, falling back to either the Resources or Network panels.

Nico landed yet another piece in improving Chrome’s experience on Mac High DPI modes, this time initial support for High DPI in web content display. The Chrome Blog has a nice image showing the impact his work has.

Zero is now a recognized number again for numeric input fields. Rendering nested flexible box objects has been fixed, the “order” property now accepts a number rather than an integer and more CSS 2.1 issues have been fixed.

Besides registering protocol handlers, they can now be checked for existence and unregistered as well. The imageSmoothingEnabled setting for 2D Canvas contexts will now apply to patterns as well, client rectangles for frames in scaled pages will return the right values and the Pointer Lock implementation gained support for the change and error events. Finally, a build flag for the Undo Manager has landed.

The Blob constructor now accepts ArrayBufferView instead of a normal ArrayBuffer for its constructor’s parameter. Elements with an empty string as it’s “itemprop” value won’t be listed in Microdata’s properties list anymore and several SVG features now report to be supported through DOMImplementation.

After some more intermediary steps, Yoshifumi Inoue introduced the new Decimal type for an input’s value properties, fixing rounding errors in number and range input fields.

Other changes which occurred last week:

  • Duplicated Content Security Policy directives will now display errors in the console.
  • The “target-DensityDPI” viewport meta value will no longer be recognized by WebKit.
  • Wins of 3% on Kraken and 3% on v8 for the JavaScriptCore engine.
  • Render Nodes lost 8 bytes of weight, saving up to 2.6 megabytes when viewing the HTML5 specification.
  • GPU accelerated canvas can now be disabled through about:flags.
  • Support for DTLS-SRTP (RFC 5764) has been implemented in Chrome’s NSS.

I’m not sure about the schedule of updates in the next few weeks, as I’ll be traveling through the United States. I’ll try to keep up!

Read more (2 comments) »

Image resolution, error’d exceptions and querySelector performance

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 21

728 WebKit commits and 924 Chromium commits add up to a total of 1,652 changes made during last week.

Parsing for the box-decoration-break CSS property landed, with the rendering part still pending. Form controls in disabled fieldsets won’t be checked for validity anymore, and fieldsets themselves now feature the elements accessor. Input elements with a :first-letter style are editable again, the &AElig named entity will now be rendered as expected and the :enabled pseudo-class now applies to option elements too.

Implementation of CSS Images Level 3’s image-resolution property has started, just like bits of the CSS4 Media Queries specification, with the implementation of the “hover” and “pointer” queries for Chromium. Various names used in the Flexible Box Module implementation have been renamed to the names now listed by the updated specification. Dave Hyatt is continuing work on re-implementing Multiple Columns to be based on Regions.

Exceptions now have Error.prototype on their prototype chain. The reserved 1005, 1006 and 1015 closing status codes for Web Sockets will now be handled as broken. Content Security Policy messages to the console will now include a line number for ports using JavaScriptCore, the “overflow” property of NamedFlows has been renamed to “overset”.

The “files” attribute for input elements is now writable and IndexedDB requests and transactions now support the error property. Usage of window.blur() is now disallowed altogether, while window.focus() may only be invoked from the context that created the window.

Other changes which occurred last week:

  • Kentaro Hara improved performance of querySelector() by about eight times!
  • Web Inspector’s Settings screen now features multiple tabs to more clearly support all available settings.
  • Attribute getters returning empty strings has been made 66% faster.
  • The need for a second layout for certain Flexible Box features has been optimized out.
  • The EFL port has enabled support for -webkit-image-set().
  • A new gesture was added for Chromium: two finger-tap to trigger the context menu.
  • WebGL has been enabled by the Qt port when using the WebKit 2 API.
  • The extension overview page in Chromium now shows a warning when a private key is included.
  • Legacy viewport feature such as MobileOptimized and HandheldFriendly are now supported.
  • An Extension API has been added to Chromium for access to Serial ports, now implemented on Windows.
  • Following a Mac OS X Lion update, Chromium will now allow proceeding with <1024bit certificates again.
  • Only twenty static initializers are remaining in Chromium Mac builds!

 

Read more (no comments) »

Seamless iframes, Private Names and the new Sources Panel

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 21

Last week brought 981 commits for Chromium, and 931 for WebKit, totaling up at 1,912 changes. Highlights include a new Sources Panel for Web Inspector, seamless iframes for Chromium and sub-pixel layout for Chromium.

Web Inspector’s Sources Panel, which intends to combine features from the Resources and Scripts panel such as revision historyis no longer experimental. The Go to Source shortcut is now accessible from all panels, drag and drop from the Navigator Panel has been added and preparations are being made to visualize layer compositing performance on the Timeline Panel.

With the layout code landed, most of the functionality seamless iframes deliver has been implemented. The new negative flexing algorithm for the Flexible Box Module has been implemented, and automated margins on flexboxes will now allocated space in the flex and cross directions. The color CSS Property may now be used on regions. Chromium has enabled support for sub-pixel layout in WebKit.

JavaScriptCore has started to implement ECMAScript 6’s Private Names feature, initially be allowing property maps to contain keys that aren’t identifiers. The interface code for DOM4’s DOMError landed, key paths in IndexedDB may now be arrays and a page’s scrollWidth() and scrollHeight() are now page scale invariant.

Other changes which occurred last week:

  • A setting has been added for disabling synchronous XMLHTTPRequest requests.
  • John committed compile and runtime flags for Font Boosting, Chrome for Android’s text inflation algorithm.
  • A setting has been added to make fixed positioning create a new layer stacking context.
  • WebKit’s backface-visibility tests have been updated per the HTML5 specification.
  • Carlos Garcia Campos is now a WebKit Reviewer, congratulations!
  • Grammar checking has been enabled for Chromium upon pasting text in any editable field.
  • Dictionaries for Afrikaans and Faroese have been added for spellchecking in Chromium.
  • Chromium OS now features an high contrast mode, available through the Accessibility settings page.
  • Touch-screen pinch zooming may now be enabled through about:flags.
  • An implementation of the Connection Status API has been added to Chromium.

And that’s it again for last week. This week we may see a tabbed settings dialog for Web Inspector!

Read more (2 comments) »

Decreased input padding, 8-bit canvas and getUserMedia()

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 21

Last week brought 1,819 commits, 999 for Chromium and 820 for WebKit. Highlights include changes to the padding of <input> elements and getUserMedia() being available by default in Chromium.

The debugger sidebar for Web Inspector’s Script Panel can now be toggled using a button. Console messages about Content Security Policy violations now name the directive and support for saving snippets has been implemented.

Using the latest CSS Flexible Box module now requires you to define an element’s display property as “-webkit-flex” as opposed to the previous “-webkit-flexbox”. Input elements are now two pixels smaller in width, as one pixel of unnecessary padding has been removed from either side.

Image smoothing for the <canvas> element may now be disabled. Loading video files served through scripts without a supplied mime-type will now work, and two issues with CSS 2.1 support have been fixed, namely text baselines in the first row of a table and wrapping stand-alone table columns in anonymous tables.

A compile-time flag has been introduced for toggling support for CSS Variables in WebKit ports. Furthermore, an initial test-suite to test the status of the implementation has landed as well.

Other changes which occurred last week:

For those of you interested in security, information about Pinkie Pie’s Pwnium exploit has been published — a very good read! Finally, a hat tip to 00 :-].

Read more (no comments) »

Tab Sizing, String Values for IndexedDB and Chrome 21

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 21

1,693 changes landed last week, 650 in WebKit’s repositories and 1,043 in Chromium’s. Highlights include Chromium 21, support for the tab-size property and strings instead of constants for IndexedDB.

Web Inspector’s search box supports CSS selectors again, JavaScriptCore timers will now show up on the timeline and a context menu has been added for tabs.

Text decorations, such as underlines, will now be rendered for text in :first-line selectors. Implementation of the :first-letter selector was aligned with the specification. Eric landed stylesheet inheritance support for seamless iframes, as well as the ability to inherit styles from their parent iframe.  The RadioNodeList interface is now supported, background-size is now part of the “background” shorthand and, albeit disabled, the <intent> element landed.

IndexedDB now uses strings instead of numeric constants. Violation reports generated by Content Security Policy now also include the referer, original policy and the URL which got blocked. The File System API is now able to deal with cross-file system operations, widths and heights are now exposed for <input type=image> images, and the offsetLeft property was broken when used together with CSS Columns.

WebKit has also gained support for the tab-size CSS property. This property, which is also supported by Firefox and Opera, allows you to define the number of spaces a tab should be equal to.

Included among other minor updates on the WebKit website, the conditions under which the WebKit trademark can be used are now available on the Mac OS Forge website.

Other changes which occurred last week:

An exciting thing to keep an eye out for in the upcoming weeks is Luke’s work on bringing CSS Variables to WebKit, the announcement for which has already been made!

Read more (4 comments) »

Sub-pixel layout, Inspecting Web Socket Frames and Seamless Iframes

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 20

Today’s update covers many Chromium and WebKit changes made over the past two weeks, meaning 2,055 commits for Chromium and 1,418 for WebKit, totaling up at 3,473 changes.

Web Inspector now offers the ability to disable all JavaScript execution on a page, and also allows Web Socket frames to be inspected. The shortcut overlay has received some UI polish and the Timeline Frame Mode has been taken out of experimental.

Fixed placeholders have been implemented for date input types, a form field’s entries supplied through a <datalist> are now barred from validation. The Apple Mac port removed support for BlobBuilder and the Selector APIs have been aligned with the specification when pseudo-element selectors are used.

Retrieving a canvas’ image data will now return a Uint8ClampedArray instead of a CanvasPixelArray object. In preparation of supporting getUserMedia on Chromium, the Peer Connection API implementation has been separated with a compile time flag. Tables now support the createTBody() method and the IndexedDB implementation can now open cursors based on a IDBKey, and advance cursors as well.

Eric landed the first parts of support for seamless iframes in WebKit, namely some tests, sandbox and styling and navigation. A vendor-prefixed version of the Performance Timeline API landed, the getUserMedia() method now takes an object instead of a string and the noteOn and noteOff methods of the Web Audio API’s oscillator got implemented.

Antti made it possible to share stylesheet data structures between documents, decreasing memory usage by several megabytes (take note, kling) depending on the port’s implementation. Furthermore, parsed stylesheets may now be cached, increasing performance of subsequent page loads.

Per commit 116009, Levi and Emil were able to close the meta bug for supporting sub-pixel layout in WebKit. While this has not yet been enabled for any port, this is a significant milestone for the project. This article provides some insight in the importance.

Other changes which occurred last week:

  • Code supporting positioned floats has been removed from WebKit, pending proper implementation.
  • The EFL port has enabled support for the <track> element, the Web Timing API and the Web Audio API!
  • The BlackBerry port enabled support for the download attribute on anchors.
  • Abhishek Arya (inferno) is now a WebKit Reviewer, congratulations!
  • Chromium is working towards enabling getUserMedia by default.
  • Multiple input channels are now supported for the JavaScriptAudioNode.
  • HTTP Pipelining is now enabled for all users on Chrome’s dev channel.
  • All Chrome Canary Windows users will now receive the PPAPI-based Flash.
  • Work is being done to enable an x86 Chromium Android build, which would work in the emulator.
  • A new USB Extension API has been added to Chromium.
  • A command line flag for enabling Peer-to-Peer connections has been added, though is still experimental.
  • It’s now possible to save webpages as MHTML within Chromium.

And that’s it again, thanks for reading! 🙂

Read more (no comments) »

WebKit Contributors meeting, data-lists and HTTP pipelining

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 20

Last week, a total of 1,575 landed in the repositories: 923 for Chromium and 652 to WebKit. Highlights include the WebKit Contributors meeting, Web Inspector updates and support for <datalist> in Chromium.

Last Thursday and Friday, Apple kindly hosted the 2012 WebKit Contributors Meeting in Cupertino. With contributors from many different vendors around, a large number of subjects were covered in presentations and discussions. Transcripts of most of these are available on WebKit’s Trac, including a group photo of all attendees.

An experimental Style Panel has been introduced to Web Inspector which mimics the interface of the Script Panel, which also features an open stylesheet-dialog. Cross-frame security error spam when typing in the console is gone, calling document.open() will now reset the Elements Panel and the Inspector is now shimming the startsWith() and endsWith() methods on the String prototype, anticipating implementation of Microsoft’s proposal.

Parsing rules of the :nth-*() pseudo-classes has been aligned with the specification. Clipping issues with the CSS drop-shadow filter have been resolved and the “-webkit-filter” CSS property will now show up when enumerating over an element’s computed style.

Support for the HTML5 <datalist> element has been enabled for Chromium. It provides similar functionality to suggestions by the browser based on what you previously entered in a text field, with the difference that these suggestions are provided by the website.

Other changes which occurred last week:

  • The WebKitGTK port has enabled the Web Timing implementation.
  • Performance of several String-returning DOM attribute and property getters has been improved for v8.
  • The localStorage.setItem() method cannot override methods on the Storage prototype anymore.
  • The footprint of an element’s attributes has been reduced to a minimum for common usage.
  • The IndexedDB implementation can now retrieve values or keys by IDBKeyRanges.
  • HTTP pipelining has been enabled for 10% of Chrome’s dev-channel users.
  • The Chrome OS window manager (Aura) now supports the three-finger swipe.
  • Chromium’s touch optimized UI will make menu items 40 pixels in height.
  • Linux users using display resolution larger than 4000×4000 are now able to view all of Chrome again!

Next week’s update will probably be a bit brief as I’ll be in Barcelona. Thanks for reading!

Read more (3 comments) »

Limiting -khtml- and -apple- prefixes, and location.ancestorOrigins

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 20

882 revisions landed in Chromium’s repository last week and 667 in WebKit’s. Highlights include removal of support for the -khtml- and -apple- CSS vendor prefixes in Chromium, and the new location.ancestorOrigins() method.

Work on Device Emulation in Web Inspector is continuing and now also supports dimension wrapping to mimic orientation changes, and a “fit to width” option which will inherit the browser window’s dimensions as the device’s resolution. Lines having a breakpoint will now show line numbers and the vertical timeline overview now shows the wall time.

Support for -khtml- and -apple- properties has been removed for most WebKit ports, including Chromium, after previous attempts failed due to compatibility issues. Background sizes are now correct if the page is zoomed out, the default box-shadow color now defaults to the element’s “color” property, the viewport-relative CSS units now work for Replaced objects (such as images) and the -webkit-image-set CSS property was enabled for the Chromium port.

The ancestorOrigins() method was added to the window.location object, Chromium now exposes the Battery Status API and a Mutation Observer’s attributeFilter is now able to deal with namespaced attributes as well. The contentNodes property for NamedFlows was added, JavaScriptAudioNodes now respect the number of output channels and timestamps used in WebVTT had their limits relaxed.

Split over a number of commits, Avi has renamed Chromium’s TabContents class to WebContentsImpl.

Other changes which occurred last week:

And that’ll be all :). Maybe see you at the WebKit’s Contributors Meeting!

Read more (4 comments) »

UI for date-input fields, Iframe’s srcdoc attribute and Flexbox updates

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 20

Last week brought 995 commits to the Chromium repository and 732 to WebKit’s. Highlights include work on the user interface for date-input fields and the “srcdoc” attribute for iframes.

The animatedPathSegList property for SVG path elements has been implemented, completing support for the animVal properties. Minor type updates were done aligning WebKit’s typed array implementation with the specification, the Web Audio API’s Oscillator and WaveTable interfaces have been implemented and plumbing for the new JavaScript Speech API continues.

Support for the CSS flex() function has been removed in favor of the flex property, which Tony Chang implemented and made animatable. Empty @media and @charset declarations are now being ignored, image-set updates dynamically when the device scale factor changes and syntax was updated for two CSS Exclusion functions.

Now that a user interface for color input types is available, next in line is an interface for the date and time input types. Kent Tamura has been working on implementing this, an early example of which can be seen here. Meanwhile, work has started on cleaning up and implementing support for <datalist>. The <iframe srcdoc> attribute is now also supported, allowing untrusted HTML code to leverage an iframe’s sandbox constraints.

Other changes which occurred last week:

As always, thanks for reading. Next week’s update may be a bit brief as I’ll be in the Mountain View area, also attending the WebKit Contributors Meeting!

Read more (no comments) »