Earlier today Google Chrome team released the stable version of Chrome 31 on Windows, OSX/Mac and Linux. We just deployed Chrome 31 to all our servers and Chrome 31 is now available to everyone!

Cross-browser testing in Chrome 31

Try Chrome 31 in Browserling now!

Significant changes in Chrome 31:

  • Payment requestAutocomplete() on Chrome for Android, Windows, Chrome OS.
  • PNaCl on desktop versions of Chrome.
  • New Chrome Apps APIs: With URL handlers for apps, Chrome App developers can now specify URLs to be handled by a Chrome App. For example, a document link on a website could open a document editor Chrome App. This gives users more seamless entry points into their favorite Chrome Apps.
  • Directory access for Apps allows Chrome Apps to access and write to user-approved folders. This feature can be used to share files between a Chrome App and a native app. For example, a Chrome App code editor could modify files managed by a native Git client.
  • SCTP for WebRTC Data Channel allows P2P data transfers between browsers to be either best effort, reliable, or semi reliable, opening up use cases such as gaming.
  • Alpha channel support for WebM video enables transparency masking (a.k.a. green screen effects) in WebM videos.
  • Speech recognition with the JavaScript Web Speech API is now supported on Chrome for Android.
  • window.devicePixelRatio now takes full-page zoom (but not pinch zoom) into account.
  • Support for { alpha: false } in getContext('2d') lets you create an opaque canvas. This is similar to existing WebGL functionality and can improve the rendering performance of your app.
  • The Media Source API has been unprefixed and is now supported on Chrome for Android. It allows JavaScript to generate media streams for playback, addressing use cases like adaptive streaming and time shifting live streams.
  • 2D canvas now supports the "ellipse" method.
  • Support for several Mutation Events has been removed. Consider using MutationObserver instead.

Significant changes in iOS version of Chrome 31:

  • Fast form completion with Autofill.
  • Long press on an image to search for related images.
  • Stability / security improvements and bug fixes.

Chrome 31 implements the following new features and updates:

  • CSS object-fit and object-position - CSS properties that control the position and size of replaced content within the content box
  • Canvas focus ring - Adds APIs to the canvas 2D context that make it possible to draw a focus ring around a canvas path and notify the operating system of the bounding box of the focused object for accessibility.
  • DOM3 Wheel Events - Implementation of the standard DOM Level 3 WheelEvent. Currently Blink implements a non standard mousewheel event with a very similar but incompatible API.
  • Device Motion - Provides access to device's physical motion.
  • Portable Native Client (PNaCl) - Run C/C++ code compiled to LLVM bitcode on any web page. The code runs inside the Native Client sandbox and has access to the same capabilities as JavaScript via the Pepper APIs.
  • devicePixelRatio on zoom - Update window.devicePixelRatio on full page zoom so that it accurately portraitists the ratio between css and device pixels.

Chrome 31 includes 25 security fixes. Google Chrome team highlighted the following fixes that were contributed by external researchers:

  • CVE-2013-6621: Use after free related to speech input elements. Credit to Khalil Zhani.
  • CVE-2013-6622: Use after free related to media elements. Credit to cloudfuzzer.
  • CVE-2013-6623: Out of bounds read in SVG. Credit to miaubiz.
  • CVE-2013-6624: Use after free related to id attribute strings. Credit to Jon Butler.
  • CVE-2013-6625: Use after free in DOM ranges. Credit to cloudfuzzer.
  • CVE-2013-6626: Address bar spoofing related to interstitial warnings. Credit to Chamal de Silva.
  • CVE-2013-6627: Out of bounds read in HTTP parsing. Credit to skylined.
  • CVE-2013-6628: Issue with certificates not being checked during TLS renegotiation. Credit to Antoine Delignat-Lavaud and Karthikeyan Bhargavan from Prosecco of INRIA Paris.
  • CVE-2013-2931: Various fixes from internal audits, fuzzing and other initiatives.
  • CVE-2013-6629: Read of uninitialized memory in libjpeg and libjpeg-turbo. Credit to Michal Zalewski of Google.
  • CVE-2013-6630: Read of uninitialized memory in libjpeg-turbo. Credit to Michal Zalewski of Google.
  • CVE-2013-6631: Use after free in libjingle. Credit to Patrik Hoglund of the Chromium project.

Happy cross-browser testing in Chrome 31!