Archive for the ‘WebKit’ category (118 posts)

Reversed Lists, Animatable Filters, CSS Shaders and secure SSL

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

Another 1,492 commits have been added to the projects; 826 to Chromium and an evil 666 to WebKit. Highlights include support for <ol reversed>, lots of changes for CSS Filters and rendering CSS Shaders.

Going forth in improving security in the browser, Chromium will now display a fatal error when it encounters pages using SSL certificates signed with the MD2 and MD4 hashing algorithms, and will display an interstitial warning page for certificates signed with MD5. Certificates with RSA and DSA keys of less than 1024 keys will also be rejected.

Within Web Inspector, a sidebar has been added to the Script Panel displaying the included scripts on by their host. A large amount of internal properties of objects using the Detailed Heap Snapshot tool have been hidden and hex-colors with just three characters will now be highlighted.

As for specification related updates, Adam Barth made sure that six recent changes to the HTML5 parsing algorithm reflect in WebKit’s implementation. Clickable controls such as form fields may now be used as a <detail> element summary and cancelRequestAnimationFrame has been renamed to cancelAnimationFrame. Numbered lists can now be reversed using the reverse-attribute and XMLHttpRequest.responseXML now supports HTML documents.

A large amount of work has been done on the CSS Filter implementation. Filters are now animatable, they will affect visual overflow and several filters will now accept percentages as values. Finally, the implementation has been aligned with the specification and they can now be hardware accelerated, with an implementation for Apple’s Safari. Filters are now enabled for Chromium, and despite the security concerns, rendering CSS Shaders is now possible in WebKit builds which have the feature enabled!

Other changes which occurred last week:

Since next Monday happens to be Boxing Day, I’ll publish a (probably brief) update the day after, Tuesday the 27th. Thank you for reading and have a Merry Christmas!

Read more (1 comment) »

Animatable Background Images, Mutation Observers and !important

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

With 912 commits at Chromium and 590 at WebKit, totaling up at 1,502 changes, a fair amount of changes have happened again. Highlights include Mutation Observers for Chromium and animatable background images.

Chromium has reached a version number which equals a pentagonal pyramidal number: 18. In total, 7,107 Chromium commits, 4,198 WebKit commits and 526 v8 commits are included, totaling up to 11,831 changes for the Google Chrome 17 release, besides changes in other related projects such as Skia and NaCL.

Mutation Observers have been enabled for Chromium, which provide a much better alternative to DOM Mutation Events. Though still disabled by default, Chromium has been taught how to handle meta viewport elements, the scoped attribute for scoped stylesheets landed, table cells now understand widths in percentages and security around loading out-of-band text tracks has been improved by utilizing CORS.

WebKit now supports animations between background, border and list images utilizing the cross-fade() function which landed a few weeks ago. Parsing for multiple grid rows and columns has been added, as has parsing for the wrap and wrap-reverse values for the flex-flow property.

As a first step in being able to CSS Regions, background colors will now be applied. The behavior of !important in inline style sets has been aligned with the specification, automatic color adjustments for disabled input elements has been removed for Chromium and various more CSS 2.1 test failures have been fixed.

Other changes which occurred last week:

And that’ll be all for last week again. Things to keep an eye out for this week include custom written CSS Lexer and work by Simon Fraser to make the CSS Filter property animatable!

Read more (1 comment) »

Reverse flexible rows and columns, Socket API and Panels

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

Following the relatively low count of 1,097 changes two weeks ago, last week introduced a combined total of 1,945 changes, 1,186 at Chromium and 759 at WebKit. While many of these changes were part of the rush for features to make it into Google Chrome 17 (which will be branched tomorrow), highlights include two important new features for the Flexbox implementation and a Socket API.

A few updates have been made to Chromium’s extension APIs, namely that the MHTML and webRequest APIs have been moved out of the experimental namespace, and a checkpoint commit for a new Socket API. While it’s not functional yet, it will eventually allow for extensions such as SSH and IRC clients to be made.

The visual appearance of Panels has been worked on quite a lot last week, with a visual refresh landing on Chromium for Mac OS X, together with a three-stage minimize animation. For Windows, the UI has been updated as well, and Panels can now also be drawn in iconified mode.

As for specification support, WebKit’s implementation of the bdo, bdi and output elements is now mostly aligned with the HTML5 specification. Limited parsing for the grid-columns and grid-rows properties has been implemented, CSS Filters will now render correctly on transformed elements and CSS Flexbox has been taught about reverse rows and columns. Images’ sources can be overwritten using the CSS content property now, and the correct focus rings for areas defined in an image’s image map will now be shown for zoomed pages.

The getMatchedCSSRules() method now knows how to handle pseudo-elements, SVG Gaussian blurs in a single dimension have been corrected, dragging the mouse out of :active elements will make it lose :hover as well and both range sliders and spin buttons have been fixed for usage in multiple columns.

To name a few improvements in accessibility support: multi-line selects on Windows will now expose the right states, tabs, menu and list items will receive mouse events and non-focusable nodes will no longer report to be focusable.

Other changes which occurred last week:

This week I expect Chromium to reach version 18, lots of additional BlackBerry upstreaming and more work on scoped stylesheets. That’ll be all again!

Read more (5 comments) »

GamePad API, revision 10,000 and WebGL for WebKitGTK

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

Thanksgiving made last week a short week for people living in the United States, and as such only 1,079 changes landed to the Chromium and WebKit repositories. Highlights include a number of extension API updates, work on supporting game controllers and WebGL for the WebKitGTK port.

Quite some housekeeping has been done in Chromium’s extension APIs: the clipboard API has been removed in favor of document.execCommand, the Settings API has been renamed to the Storage API and notifications were added for screen wake-ups and unlocks. Also new is the ability to change a window’s state.

In light of the recent commit milestones Chromium and WebKit hit, it’s noteworthy to add that v8 reached revision 10,000 last week. Performance of switches using string clauses has been improved and preliminary detection for ES.next’s extended mode has been added, which basically reflects strict mode with some added functionality.

Another two CSS 2.1 conformance errors were fixed, the CSS Exclusions implementation has been aligned with the specification and the wrap property will now be parsed. A crash with filters was fixed, and the first step towards being able to use CSS Transforms on SVG elements also landed last week.

WebKit’s side of supporting game controllers was landed by Scott Graham, together with the first part of the Chromium-side implementation. It may be tested using the –enable-gamepad command line flag, or via about:flags. The addCue and removeCue methods for subtitles are now supported, and the HTML5 dirname and Microdata properties attributes are now supported.

Other changes which occurred last week:

And that’s it again. Interesting changes for the upcoming week include the NamedFlow JavaScript interface for CSS Regions and stack traces for cross-origin access errors within Web Inspector.

Read more (3 comments) »

Cross Fading, CSS Flexible Box, Grid Layout, Filters and Meta Referrer

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

Last week was the busiest week so far for both projects, totaling up to 1,745 changes — 794 for WebKit, and 951 for Chromium. Highlights include CSS Cross Fading, Flexible Box, Filters and <meta name=referrer>.

Within Chromium, the new History UI has been launched and can be seen on chrome://history. Content Security Policy will be enabled for all extensions using a (newly introduced) manifest version of two or higher and improved download protection has now been enabled by default, assuming you have Safe Browsing enabled.

Right clicking on function values in Web Inspector will now give you the ability to browse to it’s definition. The font property in the styles pane will now show up as a proper shorthand property, selected items in context menus have been given a slight gradient and messages from the front-end to the back-end are now asynchronous.

Timothy Horton landed support for the CSS4 Images cross-fade() function. Though not fully implemented yet, it can be used as a value for any property that expects an image, such as background-image, and will render a cross faded combination of the two given images or gradients. Examples working in nightlies can be found here.

The new CSS3 Flexible Box implementation in WebKit has been enabled by default. While new features and enhancements are still incoming, it is a lot more performant and aligns WebKit better with the spec. Ojan, Tony and Julien have started working on implementing CSS Grid Layout, some patches for which have already landed.

Another new feature which landed today is support for <meta name=”referrer”>. By specifying the referrer policy in the content attribute, which can be one of never (don’t include a referrer header on navigation), always (which includes cross-protocol requests), origin (just send the page’s origin) and default, you can anonymize any request.

As for improved specification support, another CSS 2.1 test was fixed last week. The document.width and document.height properties have been removed, as has the initProgressEvent method, and access keys now work on all elements. JavaScriptCore’s implementation of Error.prototype.toString is now ES5 conformant, adding invalid track formats will throw an exception and the report-only mode for Content Security Policy has been fixed.

Most CSS Filters now work in WebKit nightlies, which includes grayscale, serpia, invert, hue rotating, saturating, opacity, gamma, drop shadow and blurring effects. Meanwhile, computed styles for CSS Shaders have been implemented as well. For CSS Exclusions, the wrap-margin, wrap-padding, wrap-flow and wrap-through properties are now being parsed, indicating good progress.

Other changes which occurred last week:

Work to keep an eye out for this week are related to Web Intents. That’ll be all!

Read more (7 comments) »

CSS Hue Rotation, r100,000, Changing the UA and Suggestions

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

With another 1,616 commits down the pipeline, 904 at Chromium’s and 712 as WebKit’s, another very busy week has passed. The highlights include a first working CSS Filter, the hundred-thousandth commit for WebKit and the ability to change your user agent in Web Inspector.

A large number of changes by Nico Weber removed a significant amount of static initializers and exit-time destructors, which will improve Chromium’s overall performance during start-up and shut-down.

Web Inspector now shows the media queries which are associated with certain CSS Rules. The user agent with which a page gets loaded may now be changed, selected text in a Script panel received an extra context menu option to evaluate it directly in the console and a suggestion box will now be shown for both CSS as JavaScript properties. Finally, the indentation of pretty-printed JavaScript can now be configured.

Dean Jackson added code to WebKit’s CSS Parser, making it understand the syntax for drop shadows. Meanwhile, the first part of parsing the custom() filter definition, used for CSS Filters, landed as well. Support for parsing the line-grid-snap property has been added as well, which will allow snapping of text towards the nearest enclosing grid.

The sandbox attribute for iframes won’t accept vertical tabs as separators anymore, the IndexedDB implementation gained support for compound keys and the textTracks attribute for media elements has been added, supposing your port of choice enables subtitles. The importNode will now do a deep copy by default, zooming of SVG images in <object> elements has stabilized and IDL files have landed describing the Mouse Lock API.

For WebKit ports who have CSS Filters enabled, the hue-rotate() filter started working per Dean’s plumbing of filter effects through the rendering code. Small as it is, it’s enough to be excited about :).

Other changes which occurred last week:

And that’ll be all again!

Read more (5 comments) »

Non-economic Printing, Parallel GC Tracing and CSS Shaders

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

Last week, 1,332 changes landed in both repositories: 768 at Chromium’s and 564 at WebKit. Highlights include the possibility to print background images and colors, a vastly improved GC for Apple’s JavaScriptCore and quite some updates on Content Security Policy following last week’s TPAC.

A multi-threaded accelerated surface implementation has landed now for Chromium on Windows as well, which, together with a follow up patch, will aid in having multiple windows rendering at 60 frames per second.

Following discussion at last week’s TPAC, WebKit’s Content Security Policy implementation has been updated to handle empty URLs, the allow-popups directive has been implemented on request of Microsoft, as has the sandbox directive, which basically mirrors the “sandbox” attribute for html and iframe elements.

In terms of specification compliance, the CSS Parser has been adjusted to accept any character in a string except for newlines and the string-opening quote. Finally, window.onerror will now fire for exceptions and errors in attribute-scripts. Canvas objects can now be exported to WebP images and using a border-box box-sizing with elements that have display on table-cell won’t calculate the content height anymore.

For subtitles, a TrackEvent was added, as were load notifications. WebKit now supports the -webkit-print-color-adjust property which allows you to toggle printing of background images and colors, and Fady Samuel landed the parsing stage of a new -webkit-aspect-ratio property, specified on Tab’s blog.

In the past few weeks, a lot of performance improvements already landed for Apple’s JavaScriptCore, followed this week by another 3.8% on Kraken and 3.5% on v8. The latter is especially interesting, as it adds parallel tracing to the garbage collector, reducing GC pauses by almost 50% in day-to-day usage!

A compile time flag has been added for CSS Shaders, indicating that work there will be starting! A fair number of bugs has already been created, which are being worked on together by Adobe and Apple engineers.

Other changes which occurred last week:

And that’ll be all again 🙂

Read more (no comments) »

OpenBSD, HTML5 Microdata and Cross-Fading Images

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

Another 1,511 changes further on, 885 made at Chromium’s repository and 626 at WebKit’s. Last week’s highlights include upstreaming of OpenBSD support into Chromium, lots of progress on implementing support for HTML5 Microdata and first steps towards supporting the CSS cross-fade() function for images.

At Chromium, a series of patches has been contributed by Robert Nagy which strongly improve support for the OpenBSD operating system. Previously it was maintained as a port on OpenBSD Ports.

Within Web Inspector, it’s now possible to select the indentation which will be used in the text editors. The four options available are two, four or eight spaces, or a tab. Advanced search is now available for content scripts and inline background-image CSS properties won’t show a warning anymore in the console.

Arko Saha’s work on implementing the HTML5 Microdata properties and DOM API is progressing nicely, as the itemprop, itemref and itemvalue properties landed last week. The itemtype attribute has been enhanced to accept a space-separated list of values, and code for the itemid attribute is just about to land as well.

As for specification related improvements, drawing images on a canvas by using certain composition modes has been fixed. Input step-values may now start with dots, IndexedDB has been taught the deleteDatabase method and two patches landed implementing parts of the Mutation Observers specification.

Support for argument-less functions has been added, in preparation of the greyscale CSS filter and column progression is now independent of writing mode. Automatic sizing of flexbox has been fixed, setting visibility: hidden on video elements on Safari now works properly and three more CSS 2.1 test-failures have been fixed, which includes proper support for intrinsic background sizes.

Parsing of two new CSS features has landed, namely for line-grid and for the cross-fade() function. The former is a shorthand for line-grid-mode and line-grid-progression defined in the CSS Text Module, whereas the latter allows cross fading images and is defined in CSS Image Values Level 4.

Other changes which occurred last week:

In other news, Andy Wingo published an excellent article about the new DFG JIT Apple is implementing in JavaScriptCore. Picks for the this week are notifications for the GTK port and four new media pseudo-classes.

Read more (1 comment) »

A Repunit Prime, HTTP Pipelining, advanced searching and Chromium 17

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

With 974 changes to Chromium’s repository, and 637 at WebKit’s, last week totaled up at 1,611 commits. Highlights are the new Chromium version, work on the Mouse Locking API and more work on Regions.

Chromium has reached version 17. The number, which also happens to be a repunit prime when written in base-16, supersedes the now branched Chrome 16. There are about 5,500 Chromium revisions going in the 16th major.

Vincent Scheibb has been working on a Mouse Locking API, the back-end for the settings of which landed in Chromium last week. Meanwhile, the WebKit side of the implementation is also starting, with the ability to toggle the feature either at compile or run-time.

As for Web Inspector, it now supports case sensitive searches and has support for regular expressions for the advanced search features and searches will now display their progress again. An element’s dimensions will now be displayed clearer with it’s highlight on the page.

As for specification support, the -webkit-from-flow value for the content property has been changed into its own property: -webkit-from-flow. Furthermore, the @-webkit-region at-rule can now be parsed, support for XPath is now enabled for all ports and the new Flexible Box Module implementation can now handle column flows.

Rendering of certain column-rule styles in vertical writing modes has been fixed, the ArrayBuffer object now supports the slice method, IDL files for the <track>-element have been added and content can now be clipped to variable width regions. Column rules will now be positioned correctly in vertical layouts when horizontal borders or paddings apply. Two patches have been committed in relation to the new Mutation Observers API as well.

Other changes which occurred last week:

That’d be all again. For the upcoming week, keep an eye out for work on the CSS aspect-ratio property and the Page Visibility API for the EFL port.

Read more (no comments) »

Microdata, the Web Component Model and hybi-17 for Web Sockets

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

Last week introduced another 1,540 changes in the WebKit and Chromium repositories, which beats the previous record of 1,515 commits. Highlights include a branch for the Web Component Model, first steps in WebKit’s Microdata implementation and searching through multiple scripts in Web Inspector.

The Web Component Model has received its own branch at WebKit, allowing initial work to start. The Component Model provides programmatic ways to ways to build components, utilizing features such as the Shadow DOM, templates and the ability to create your own elements. It layers a declarative form of the same capabilities on this infrastructure, making it available to most HTML developers. See Alex Russell’s slides for more information.

A number of updates were done to Chromium’ Extension APIs. The Permission (docs) and Panel (docs) APIs have been moved out of experimental, whereas support for a new experimental Clipboard API has been added, which will grant extensions access to the system’s clipboard. Finally, the onAuthRequired callback in the webRequest API can now provide credentials when needed.

Within Web Inspector, support was added for an advanced search feature in the Scripts Panel that allows you to search through multiple scripts at the same time. Back-end work was done in preparation of supporting the ability to debug shared work initialization, and the ability to look up and explore an object from an heap profile was added.

As for specification support, the first patch for implementing HTML5 Microdata has landed, namely the getItems() method. For CSS Regions support, the content-order CSS property has been removed, flow has been renamed to flow-into and positioned blocks now work with variable width regions.

Robert Hogan has landed three more patches fixing tests from the CSS 2.1 test-suite, the event.layerX and .layerY properties have been removed, the :checked pseudo-element selector now matches a selected option and right-margins will be taken into account for vertical writing modes. Finally, the new CSS3 Flexbox implementation now supports flex-align for cross axis alignment in flex-flow: row containers.

Other changes which occurred last week:

For this week, you may want to keep an eye out on progress for a custom-written CSS Lexer and progress on implementing flex-flow for columns, both of which are quite exciting :).

Read more (2 comments) »