Archive for the ‘WebKit’ category (118 posts)

Multiple profiles, disabling the cache and finding the audible tab

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

Another 490 commits landed in WebKit’s repository last week, together with a massive 938 commits to Chromium’s, totaling up to 1,428 changesets. This week’s highlights include the ability to completely disable cache in Web Inspector, per-user proxies and quite some changes to Chromium.

Whereas using proxies on Chromium OS used to be system-wide, thus shared among all users and networks, Kuan Tan has added support for more flexible per-user and per-network proxies. Especially for those using corporate networks, as well as personal ones, this is a very welcome enhancement.

Another notable addition is that active audio streams will now be displayed on the chrome://media-internals/ page. So if you’re one of these people with hundreds of tabs open when one of them starts making noise, now you know where to find which tab to close.

Web Inspector won’t pause anymore for caught exceptions in the console, can now import and export data in the Timeline Panel (also with some keyboard short-cuts), support for disabling cache altogether was implemented and a sidebar’s width can now be restored correctly.

As for specification related updates, using the “none” value when using multiple backgrounds will no longer break other images. Calculating the height of replaced elements has been fixed according to CSS 2.1 content height rules, support for HyBi WebSocket Frames has been added and the microphone icon for right-to-left input elements will now be positioned correctly, just like numeric input types have also been fixed for rtl.

v8’s implementation of serializing script values has been brought up to speed with the specification, a Ping-From header will now be included for cross-origin, non-secured connections when clicking <a ping> anchors, three new SVG elements won’t collapse anymore when paginating content.

Other changes which occurred last week:

And that’ll be all for this week again. Things to watch out for this week will be work on CSS Flexbox and Regions, as well as more media related commits.

Read more (6 comments) »

Web Sockets-10, invisible cursors for Windows and a fabulous animation

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

Last week brought 1,204 changes to the Chromium and WebKit repositories, with highlights such as work on the new Web Sockets protocol, a minimum window size on Windows and collectively improving Web Inspector.

Web Inspector is now able to show alert modal-dialogs in docked mode as well. More work has been done on enabling debugging of Shared Web Workers, performance of panel switching has been improved, resizing of the sidebar pane has been fixed for the Timeline and Profile panels and a flickering “please wait” message on Chromium has been removed. For Chromium, some infrastructure has been added for optionally gathering user metrics, which in the long run can be used to improve Web Inspector based on actual usage. Finally, welcome to John J. Barton!

As for improved specification support, Chromium on Windows is now able to hide the cursor by setting cursor: none. Canvas compositing with a global destination-atop now works properly, SVG Text rendered by Chromium will now always use geometricPrecision, associating form elements with non-existing forms has been aligned with the ES5 specification. Finally, in order to improve coverage of tests over the CSS Selectors implementation, the official test-suite has been imported.

Work on implementing the latest Web Socket Protocol is coming together nicely as well, tools are being updated, the new hand-shake has been implemented and a patch for the updated framing structure landed earlier today. Adobe added parsing of two new properties as well, CSS Region’s content-order property and Exclusion’s wrap-shape one.

Other changes which occurred last week:

And that’ll be all again. I’m going to try to get back on the schedule of publishing on Mondays 🙂

Read more (2 comments) »

Gardening tools, multiple-profiles and lots of changes in Web Inspector

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

Much later than usual, but live from Mountain View this time! Last week brought 838 updates, 468 at Chromium’s, the rest at WebKit’s. Highlights include work on a new tool for WebKit Gardeners, many updates for Web Inspector and two more parsing patches for Adobe’s CSS Regions.

Adam Barth started to work on a new Gardening tool for WebKit, called garden-o-matic. Gardening is the act of making sure that the build tree remains green, ensuring there are no unexpected test failures, etcetera. The idea is to provide a dashboard to developers allowing convenient access to actions like reverting changes, finding unexpected failures and the build which made them fail.

Now that WebRTC has landed as a Chrome dependency and work on implementing several related features in WebKit is well on its way, Magnus Flodman landed an early implementation of the Media Stream Manager. This Manager will coordinate between WebKit’s API, permissions, WebRTC and of course your camera and microphone, ensuring that the feature will work smooth and secure.

The multiple profile feature has received quite some work as well this week. The setup UI for a new profile has been implemented, deleting profiles now is a possibility, the displayed avatar can be customized and will contain most profile-related options. Finally, it has been enabled by default on the Views UI, presumably Chromium OS.

An incredible amount of changes happened for Web Inspector last week. You can now drag and drop elements and other nodes in the Element Pane, a new settings panel has been added, and cache and cookies can soon be removed via the Network Panel. Speaking of which, you can now also search in the Network Panel, albeit still limited to filenames and paths.

The specificity of !important properties for the Inspector has been fixed, links to stylesheets will now open in the Style Panel, multiple resources will be shown when a URL is referred to multiple times and requests made by plugins will be shown in the Network Panel. Finally, it’s now clearer how to add a new style rule and adding CSS properties will no longer result in messy CSS rules.

As for specification related updates, the value property of an indeterminate progress bar will now return zero. A change event will be triggered when the selected files of a file input change, column-break-inside: avoid has been re-enabled and more key-bindings have been added to range inputs. Furthermore, parsing capabilities for the flow and from-flow properties, as part of their CSS Regions proposal. Finally, more work on switching WebKit’s Render Tree to a float-based representation has been done.

Other changes which occurred last week:

And that’ll be all! I will be in the Mountain View area until July 23rd and will attend Open Web Camp III (thanks, John Foliot!). If you want to meet up, feel free to drop me a note.

Read more (4 comments) »

WebCL Prototype, a new XML Parser and the Web Audio API for all

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

Last week brought 1,367 changes to the projects, 572 for WebKit’s repository and 795 for Chromium’s. Highlights include Samsung’s WebCL prototype, an experiment which disabled modal dialogs in the onunload event and the recent steps to move away from an integer-based render tree.

Samsung has announced the direct availability of a WebCL implementation for WebKit. While the prototype is limited to newer Apple laptops running Mac OS X, the work by itself looks promising. Nokia did something similar, they created a WebCL extension for Firefox.

Just over a week ago, Sreeram Ramachandran posted a message to the webkit-dev mailing list with statistics about websites using modal dialogs in the onunload-event: 2.3% of all users encounter at least one such modal dialog every week. Despite mixed opinions on the list, Chromium will no longer allow modal dialogs (such as those spawned by confirm() and alert()) in this event.

A few interesting changes have been made for Web Inspector. The boundaries of grouped console messages have been clarified, and nested groups won’t be merged anymore. Preparations have been made to allow pseudo-class style inspection in the future and various new entries have been added in the HAR output for requests. Finally, node selection has been sped up significantly.

Quite some work has been done in the effort to move away from using integers for Layout in WebKit. The main rationale behind moving towards a float-based rendering tree was to allow for better zooming and scaling support, but in the long run this may lead to support sub-pixel layout and positioning. WebKit is the only engine which doesn’t support this internally yet.

As for standards support, WebKit now handles adjacent sibling-selectors with the <nav>-element correctly. Multiple e-mail addresses may now be separated by spaces, the legacy color-attribute parser has been updated to match the HTML5 specification (by Tab!) and the autocomplete DOM property for forms is functional again. Support for the plaintext value for the unicode-bidi CSS property has been added as well.

Other changes which occurred last week:

  • The Web Audio API is now enabled on all platforms in Google Chrome and Chromium!
  • The maximum depth of nested HTML nodes has been lowered to 512, down from last week’s 2048.
  • The slider thumb of <input type=range> won’t be displayed upside down anymore on Mac OS X.
  • An experimental Extension API was added for displaying App notifications on the New Tab Page.
  • The SVG Morphology’s performance has been improved by 20-25% by utilizing multi-threading.
  • Support for binary MHTML files was added to WebKit’s brand new MHTML parser and serializer.
  • Keishi Hattori removed the spaces at line-endings when copying text from view-source pages, yay!
  • Upload input-fields with the multiple attribute supplied will now inform the user of this capability.
  • A settings panel has been implemented for Web Inspector, though disabled by default.
  • Work on Apple’s new Data Flow Graph JIT steadily continues. It’s quite interesting to follow.
  • Work has started on a Media Chunk API, allowing “chunks of media to be passed for rendering”.
  • An explanation was added to Chrome’s Extension API docs about synchronous v.s. asynchronous.
  • Multiple-tab selection has landed for Chromium on the Linux platform.
  • V8’s date parser will now properly handle all ECMAScript 5 date formats.
  • Chromium on Mac OS X may be able to render websites using the Skia engine soon.
  • Adobe added a build slave to WebKit for their work on CSS Regions.
  • In preparation of work on an own XML Parser for WebKit, the existing files have been moved.
  • LevelDB is now the default back-end for IndexedDB on Chromium.
  • Secure peer-to-peer sockets based on UDP packets has been added for Remoting.
  • Address space layout randomization has been enabled for Chrome builds.
  • Right-clicking on text-boxes in Chromium now allows you to add them as a search engine.
  • The version of the SunSpider JavaScript test-suite has been upped to 1.0.
  • The pseudo-random number generator in v8 has been improved for better results.
  • Nokia has announced to stop working on their WebKit1-based QtWebKit API, in favor of WebKit2.

And that’ll be all again. Happy 4th of July for those in the United States!

Read more (6 comments) »

Flexbox, Web Sockets, inclusion of WebRTC and Smooth Scrolling

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

It’s been a while, and even though I cannot guarantee the updates to become weekly again, here are the highlights of last week’s 1,366 commits. They include a rollout of the SpellCheck API, early work on smooth scrolling for Chromium and a decreased maximum depth of the created DOM tree, namely 2048 levels.

Even though it won’t be functional yet, since last Tuesday it is a possibility to enable the Media Stream APIs in WebKit by passing the “–enable-media-stream” command-line flag to Chromium. Furthermore, following some fine-tuning and a commit saying that the basic implementation of Remoting hosts has been completed, work in the Remoting feature seems to progress steadily.

Following this announcement, WebRTC has now become a dependency of Chromium. Inclusion of the library in the browser will definitely aid in work bringing camera and microphone access to web applications, as well as the ability to stream that -and other- information to other users.

Two interesting Web Inspector changes are the addition of a context menu item for enabling inspecting native workers in Chromium, and the ability to pause the debugger on changes to an element’s style attribute.

In scope of standards support, clicking on an indeterminate checkbox now flips its checked state. WebGL contexts now feature the drawingBufferWidth and drawingBufferHeight properties, out-of-band text tracks for HTML5 subtitles can now be loaded and several Stream-related classes had their names changed following a specification change. WebKit’s SVG Fonts implementation has been overhauled, and the SVG viewport attribute can now be animated. The SpellCheck API has been rolled out following following this discussion.

As for on-going work, Tony Chang and Ojan Vafai have announced to start working on adding support for the new CSS Flexbox specification to WebKit, the first patch of which landed last Wednesday. Yuta Kitamura announced to start implementing the latest WebSocket protocol (-09), the first patch of which landed as well. According to Ian Fette, the protocol is mostly finished. Both features are still disabled by default.

Other changes which occurred last week:

And that would be all again 🙂

Read more (4 comments) »

Google Chrome 14, improved text scaling and disabled features for Mac users

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

Although I’m publishing this a day later than usual, there still are 1,122 commits containing interesting changes. Highlights include changes to SVG’s text-scaling, alignment of the Page Visibility API implementation with the spec and Chromium’s new version number: 14.

One of the more obvious changes is that Chromium has reached version number 14. As Chrome’s Product Manager Anthony Laforge is keen to remark: this equals the number of legs a woodlouse has. For the changes which you can expect to be included with Google Chrome 13, check out these articles.

SVG’s text scaling has been improved for texts optimized with geometric precision, no longer causing a stair-step pattern to be visible. Setting the document.body property is now allowed in certain cases and the values for check and radioboxes have been updated to match other browsers.

Following changes in the Page Visibility API’s specification, WebKit has modified the name of the visibilitystatechange event to visibilitychange. Furthermore, the isVisible property on document has been renamed to hidden. Mind that these are still vendor prefixed as well.

Other changes which occurred last week:

  • Chromium’s protocol validation in WebKit now also accepts plusses as a valid character.
  • Frame flattening has been fixed for nested frames within WebKit.
  • Some more progress has been made in supporting websites as MHTML archives.
  • Seeking for very minor offsets in media playback has been improved for Chromium.
  • Vertical scrolling has been implemented for Chromium’s new New Tab Page.
  • Opening pages which use custom protocols via the command line now also works as expected.
  • In-browser thumbnailing has been enabled for Linux and Mac OS X.
  • Following discussion on how Mac OS X users expect the Print Preview feature within Chrome
    to work, it has been disabled for version 13.
  • More bad news for Mac OS X users: Accelerated 2D Canvas has been disabled altogether.
  • The SSL FalseStart field research has finished, as enough testing has been done.
  • When GPU vertical sync is disabled, requestAnimationFrame will now run at top-speed.
  • Tabs on Chromium OS will now also fade-out when the text doesn’t fit in the tab.
  • The “save” button has been renamed to “keep” in dialogs telling about dangerous downloads.
  • Parsing for MPEG4 metadata has been added for the File Browser. Interesting.

While I’m going to do the best I can at publishing articles in the near future, don’t count on (larger) updates in the following three weeks. Since I’ll be moving to London, things are getting rather busy right now. Be sure to keep an eye out for updates on my Twitter account in the meantime!

Read more (7 comments) »

Your own protocols, Page Visibility API and the GPU-accelerated 2D canvas

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

A total of 1,515 commits, 627 for WebKit and 888 for Chromium (made by 220 authors!), brought a large number of interesting changes again this week. Highlights include new features such as the Page Visibility API and the possibility of registering your own protocol.

One well anticipated feature of HTML5 is the possibility to a custom protocol for your site. Starting at revision 86944, registerProtocolHandler is now enabled for all versions of Chromium. It features a neat settings page and allows the browser to become the default handler for arbitrary protocols on Mac OS X and Windows. However, no peter:// for me: the recently added whitelist requires custom protocols to be prefixed with web+.

As for specification related updates, the frequency at which selectstart will be fired has been brought back to just once. The RGBA serialization algorithm has been updated to match the HTML5 specification, just one blur-event will be dispatched when tabbing out with an invalid value and CSS Selector matching has been fixed in regards to attribute selectors. The sniffing mechanism for images has been updated per the latest draft.

There has also been lots of work on implementing new features. Following last month’s v8 change, WebKit now also implements Float64Array‘s for JavaScript. Work on <input type=color> is progressing steadily, the Stream and GeneratedStream classes have been implemented, as have HTML5’s TrackList, MultipleTrackList and ExclusiveTrackList objects. Finally, Yael Aharon implemented the dropzone attribute.

Adam Barth added support for the new crossorigin property on image elements. The attribute, which will eventually also work with video and audio elements, will allow canvasses to properly use remote images if the CORS header allows it, including usage of the getImageData and toDataURL methods. Meanwhile, Jay Civelli added support for reading MHTML files to WebKit. The plan is to allow exporting pages to MHTML archives too.

Other changes which occurred in the last week:

And that’d be all again! If you’re a fan of web conferences, be sure to take a look at this year’s Fronteers! We’ve just announced five more speakers: Divya Manian, Jake Archibald, John Resig, Stephen Hay and, last but not least, Robert Nyman. Only 30 early-bird tickets are still available, so don’t wait too long 😉

Read more (7 comments) »

CurveCP, background event collection and major SVG Filter speed-ups

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

Last week brought a total of 1,228 changes, 529 at WebKit and 699 at Chromium. Highlights include CurveCP, a possible alternative to the TCP transport layer, multi-core SVG Filters and DynamicsCompressorNode.


A private extension API has been added to Chromium adding the capability to communicate with handshake-less TCP service via a proxied Web Socket, such as IRC and SSH. This addresses one of the limitations which were made in favor of security and will, for now, only be available for selected extensions like an SSH client.

Furthermore, an initial implementation of Dan Bernstein’s CurveCP transport layer landed in Chromium. While the plans are still unknown and not everyone is optimistic about the layer itself, CurveCP is similar to TCP but uses high-speed high-security elliptic-curve cryptography to protect every packet against espionage and sabotage.

Web Inspector has been enhanced with the ability to collect background networking events. These are events which occur while the Inspector itself is closed, but will be available when you open it up again. Non-color properties won’t receive a color picker in the Styles pane anymore and incrementing or decrementing very large numeric values in CSS rules no longer results in an invalid declaration.

Now that the ParallelJobs Framework has been available for about a month, work has started to enhance several SVG filters to distribute work over multiple processor cores. The FELighting, FEGaussianBlur and FEConvolveMatrix filters have been updated, yielding performance improvements between 10 and 30 percent.

As for specification-related improvements, HTML5’s numeric input won’t show a zero anymore if the input’s range does not allow the value 0. The region of an area element will be updated when it dynamically has been altered, border-radius properties with negative values will be ignored and document.activeElement will now point to the active iframe element in case content within it has been focused.

Other changes which occurred last week:

  • A new version of Chrome’s client-side phishing model has been rolled out to Chromium.
  • Text-based input elements have been updated to use the Shadow DOM.
  • Work on <input type=color> has begun within WebKit, with various patches up for review.
  • <output>, <meter> and <progress> elements with display: block aren’t tab-focusable anymore.
  • Brent Fulgham and Dirk Pranke are now WebKit Reviewers, congratulations!
  • Support for WebDriver’s alert commands was added to Chromium’s ChromeDriver implementation.
  • A separate link-relation has been added for prerender, to distinguish it from prefetch.
  • The disable-javascript-urls Content-Security-Policy directive has been removed.
  • Some minor progress has been made on updating the Web Socket implementation.
  • Detailed Heap Snapshots in Web Inspector are now enabled by default for Chromium.
  • Two new extension API methods were added to Chromium regarding handwriting functionalities.
  • Support for local stream requests was added to the Media Stream API.
  • Chris Rogers added an implementation for the Web Audio API’s DynamicsCompressorNode.
  • Support for real-time audio threads was added to Chromium, but only implemented for Mac OS X.
  • The event.clientX/clientY properties will now be non-zero when tracking a click on a label.
  • The HTML5 details element will remain enabled for Chromium.
  • Images have been added to Chromium for a new Image Burner user-interface.
  • Support for Motion JPEG has been added to Chrome’s libjpeg-turbo implementation.

And that’ll be all for this week! 🙂

Read more (3 comments) »

Compact Navigation, Print Preview and the CSS3 Grid Layout Module

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

With 484 commits to the WebKit repository and 742 to the Chromium one, totaling up to 1,226 changesets, it has been an average week. This week’s highlights include the Print Preview feature, now available by default, compact navigation and the Page Visibility API.

One well anticipated feature, Print Preview, has now been enabled by default for Google Chrome Builds. The feature generates a PDF file from the opened website and allows you to either save it to a file or send it to a printer, with various options such as orientation and use of colors. Print Preview is not available within Chromium, due to limitations on the used PDF library.

A new type of navigation has been added to Google Chrome, namely Compact Navigation. By making the address bar optional and moving the wrench menu to the title-bar, Chrome’s user interface will now only be 30 pixels in height on Windows. While this would be ideal for pinned tabs and applications, it can cause serious security issues for secured websites as the displayed address is no longer visible.

Shishir Agrawal landed an initial version of the Web Performance’s latest specification: the Page Visibility API. The API allows developers to tune performance of their application based on whether the page (or, more commonly, tab) is visible, similar to how requestAnimationFrame stops working when the tab is hidden. While browsers such as Chrome and Firefox will increase the minimum interval for timers to about a second when a page doesn’t have focus, the API allows for more friendly approaches to be taken by the developer.

As for other specification related updates, the onchange event will now fire for radio-groups when the user changes selection through their keyboard. An issue in handling the currentColor value for SVG elements has been fixed, positioning of validation bubbles on non-text input elements has been corrected, an element’s onclick event won’t fire anymore if it got removed earlier on and the noresize attribute for frames can now be set via JavaScript. Finally, Dave Hyatt seems to start implementing the CSS3 Grid Layout Module!

Other changes which occurred last week:

  • The XSS Auditor doesn’t block all http-equiv meta-elements anymore.
  • The style sidebar in Web Inspector will now be updated based on changes in
    the Resources Panel, including for free-flow text editing.
  • Throttling of the WebGL framerate has been made more accurate.
  • A minor update for the Media Streaming API: exceptions for getUserMedia.
  • Semi-transparent colors for an element’s outlines won’t overlap at the corners anymore.
  • Due to this addition, Chromium will be able to use DNS Prefetching again.
  • The path, build type and more additional information will now be shown in about:version
  • The Remoting host-component has been removed from Chromium, supposedly going to be a plugin.
  • Chromoting seems to have officially been renamed to Remoting now.
  • An option has been added to toggle the availability of background extensions.
  • Panels on Windows can now contain and display (themed) title bars.
  • Pop-ups will now properly be blocked when created in sandboxed iframes.
  • IndexedDB will no longer be visible within sandboxed iframes.
  • Error messages for the Application Cache will now show up in Web Inspector.
  • Following a series of patches, strict PassOwnPtr has now been enabled for Chromium.
  • The headers of an request are now retrievable by the WebRequest API.
  • A context-menu has been added to Chromium OS’ file browser.
  • Function constructors can now be blocked by Content-Security-Policy.
  • Touch Icons have been linked up to the Chromium post, though still no visible usage.

As a special comment, I’d like to thank RIM’s Eli Fidler for the great chats and demonstrating WebKit’s remote debugging capability of the PlayBook. Mostly thanks to Krijn, Peter-Paul and Stephen, I had a great time at Mobilism. If you’re into the mobile web, be sure to attend the event next year!

Read more (18 comments) »

Inspectable Shadow DOM, the file browser and new default avatars

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

Today’s update addresses some of the changes among the 1,280 commits which were made last week. Since I haven’t had any time at all, it’s not as detailed as usual, but contains several highlights. The Shadow DOM is now visible through Web Inspector, quite some polishing is being done on Chrome OS’ file browser and new default avatars for Chrome OS’ landed.

Chrome OS’ file manager has been in development for quite a while now. It’s based on the FileSystem API, features a list of files and folders and a side-panel with additional information. With the final file-type icons now in place and some secret shortcuts, it looks like the feature is coming together nicely. Besides local storage, the manager will support USB drives, memory cards, network storage and possibly digital cameras.

As for WebKit’s specification related changes, fixed text-indents used for input placeholders will now be respected. JavaScript may now be used to set !important CSS rules, the document.innerHTML property has been added and the preload attribute for media elements is now implemented correctly for Safari.

Other things which occurred last week:

  • Support for Core Animation has been added to Chromium’s Cairo-renderer.
  • Accelerated 2D canvasses in Chromium will now use Skia by default.
  • Client-side phishing detection won’t be enabled for stable builds just yet.
  • The skeleton of the Media Stream API within WebKit has been outlined.
  • Drag and drop effects for the Touch UI’s New Tab Page have been improved.
  • An IME UI-related extension API will be implemented (though got reverted).
  • A cross-document DOM binding fuzzer, cross_fuzz, landed to help making Chrome more stable.
  • Chromium on Mac OS X will now use the Garuda and Devanagari fonts to display Thai and Hindi text.
  • Parts three and four of WebKit’s Fullscreen API for Safari on Windows landed, completing it.
  • The default avatars to be used for Chrome OS have landed in the tree. They look awesome!
  • The navigationStart property of the Navigation Timing API will now be available for all request
    types, including cross-origin requests.
  • The Pepper API now works out-of-process in the Windows sandbox.
  • The “Report-only” mode and “disable-javascript-urls” directive for CSP have been implemented.
  • Web Inspector now supports a pane providing access to an element’s Shadow tree.
  • Elements in the Shadow DOM can now use access keys.

And that’ll be all again!

Read more (12 comments) »