Chromium Blog
News and developments from the open source browser project
Chrome 58 Beta: IndexedDB 2.0, an improvement to iframe navigation, and immersive full screen for PWAs
Tuesday, March 21, 2017
Unless otherwise noted, changes described below apply to the newest Chrome
Beta
channel release for Android, Chrome OS, Linux, Mac, and Windows.
IndexedDB 2.0
The
IndexedDB 2.0
standard is now fully supported in Chrome, making it simpler to work with large data sets in the browser. IDB 2.0 features new schema management, bulk action methods, and more standardized handling of failures.
The structure of a site’s database has large performance impacts and can be difficult to change. To simplify updates,
object stores
and
indexes
can now be renamed in-place after a refactoring. Sites can also use more natural keys without worrying about a performance penalty thanks to
binary keys
, which allow compact representations for custom keys.
Data retrieval is easier with the
getKey()
and
openKeyCursor()
methods, which also provide better performance when only a database key is needed. The new
continuePrimaryKey()
cursor method makes it easier to divide large data access across transactions and page loads without worrying about duplicate primary keys. The
getAll()
and
getAllKeys()
methods allow bulk recovery of entire datasets without the need for a cursor.
An improvement to
iframe
navigation
Third-party content, such as advertising, that automatically redirects the page can annoy users and create security issues. Because of this, developers are able to put third-party content inside sandboxed
iframes
to prevent this behavior. However, in some cases this type of content needs to navigate the top-level page when clicked, like a standard advertisement.
To address this, Chrome 58 now supports the new
iframe
sandbox keyword
allow-top-navigation-by-user-activation
. This keyword gives sandboxed
iframes
the ability to navigate the top-level page when triggered by user interaction, while still blocking auto-redirects.
Immersive full screen for PWAs
When
Progressive Web Apps
(PWAs) are launched from the Android Home screen, they launch in a standalone app-like mode that hides the
omnibox
. This helps create an engaging user experience, and frees up screen space for content. However, for even more immersive experiences like games, video players, or other rich content, other mobile UI elements such as
the system bars
can still be a distraction.
Now PWAs can provide a fully immersive experience by setting
display: fullscreen
in their
web app manifest
, which hides non-app UI when the site is launched from the home screen.
A PWA launched from the home screen (left), launched from the home screen in
standalone
mode (middle), and launched from the home screen in
fullscreen
mode (right).
Other features in this release
Workers
and
SharedWorkers
can now be created using
data:
URLs, making development with Workers more secure by giving them an
opaque origin
.
PointerEvents.getCoalescedEvents()
allows developers to access all input events since the last time a
PointerEvent
was delivered, making it easier for drawing apps to create smoother curves using a precise history of points.
Developers can now
customize
Chrome’s native media controls such as the
download
,
fullscreen
and
remoteplayback
buttons using the new
ControlsList API
.
On Chrome for Android, sites installed using the
improved Add to Homescreen flow
will be allowed to autoplay audio and video served from origins included in the manifest’s scope without restrictions.
On Chrome for Android, videos using the
autoplay
attribute will be paused when offscreen and resumed when back in view to preserve consistency across browsers.
Sites can now
access
the approximate range of colors supported by Chrome and output devices using the
color-gamut
Media Query.
Instead of manually resetting multiple layout properties like
float
and
clear
, sites can now add a
new block-formatting context
using
display: flow-root
.
To improve JavaScript parsing time,
SVGPoint
,
SVGRect
, and
SVGMatrix
have been transferred to
new interfaces
outside of
Geometry
.
Using
removeRange()
, a new
Selection API
function, developers can now programmatically remove a specified text
Range
.
The
PointerEvent.tangentialPressure
and
PointerEvent.twist
attributes are now supported on Chrome for Mac to provide more information to stylus devices and painting apps.
To simplify developer experience, trailing commas are now
allowed
in JavaScript for formal parameter and argument lists.
The WebAudio API’s new
playback
AudioContextLatencyCategory
enables the developer to easily make conscious tradeoffs between latency, power, and CPU efficiency.
Deprecations and interoperability improvements
Apple-interchange-newline
,
Apple-converted-space
,
Apple-paste-as-quotation
,
Apple-style-span
, and
Apple-tab-span
have been deprecated as they are non-standard CSS classes.
usemap
attributes now use case-sensitive matching rather than
compatibility caseless
to better align with spec.
Sites must now use HTTPS when requesting notification permissions or creating non-persistent local notifications with the
Notifications API
, in accordance with Chrome's
policy
around powerful features.
To better align with spec,
cancelBubble
is now considered an alias to
stopPropagation()
when set to true, and does not do anything when set to false.
The
VTTRegion
interface functions,
addRegion()
and
removeRegion()
, have been removed from the
WebVTT
spec and are therefore being removed from Chrome.
Top-level navigations to
data:
URLs have been deprecated to further protect users from spoofing and phishing attempts.
An instance of
HTMLEmbedElement
or
HTMLObjectElement
can no longer be called as a function, since the legacy caller has been removed.
Pre-standard ChaCha20-Poly1305 ciphers have been removed following the standardization of these algorithms at the
IETF
as
RFC 7539
and
RFC 7905
, and the subsequent shipping of the standard versions in Chrome 41.
To improve interoperability,
Selection.addRange()
now ignores an additional range if it overlaps with an existing range, rather than merging the two ranges.
Encrypted Media Extensions transmitted over non-sec
ure origins has been deprecated per Chrome's
policy
around powerful features and in compliance with the spec.
The
AudioBuffer
constructor now accepts the
sampleRate
member of an
AudioBufferOptions
dictionary instead of a
context
argument, simplifying the interface and emphasizing that
AudioBuffers
can be shared between
AudioContexts
.
The synchronous
FileReaderSync API
has been deprecated in service workers, as the service worker spec requires all types of synchronous requests to be initiated outside of a service worker.
The
abbr
and
acronym
elements now have a dotted underline by default to align with the HTML standard.
The motion-path
,
motion-offset
, and
motion-rotation
CSS properties have been removed in favor of the new versions:
offset-path
,
offset-distance
,
offset-rotate
.
When accessing
Selection API
properties like
selectionDirection
,
selectionStart
, and
selectionEnd
, Chrome will now return
null
when it would have thrown an
InvalidStateError
DOMException
.
Rather than silently clamping offset values that were too large, the
Selection API’s
setBaseAndExtent()
now throws an
IndexSizeError
DOMException
to better align with spec.
Rather than silently failing for
DocumentType
node inputs, the
Selection API’s
setBaseAndExtent()
,
extend()
, and
collapse()
now throw
InvalidNodeTypeError
DOMException
to better align with spec.
To better align with spec,
getRangeAt()
now always returns a new
Range
with position normalization.
The
AudioSourceNode
interface has been removed as it was not part of the WebAudio spec.
The
webkitdropzone
attribute has been removed as it was not widely adopted.
Posted by Victor Costan, IndexedDB Interloper
Faster 3D rendering with WebGL 2.0
Thursday, March 16, 2017
The
WebGL
JavaScript API exposes hardware-accelerated 3D graphics to the web. Chrome 56 brings support for
WebGL 2.0
, a major upgrade to the API which unlocks a variety of new graphics features and advanced rendering techniques. WebGL 2.0 is currently available for Chrome users with modern graphics hardware on Windows, macOS, and Linux, and is coming soon to Android.
WebGL 2.0 Transform Feedback demo (
live link
,
Github repository
)
WebGL 1.0
first launched in Chrome 6 years ago
and gave web developers the ability to create immersive plugin-free graphics experiences, from
remixing World Cup plays in real-time
to visualizing a
rock climbing route in a news article
. WebGL 2.0 makes it even easier to build 3D web applications, with faster real-time rendering, new types of textures and shaders, and reduced video memory consumption. Techniques including deferred shading, tone mapping, volumetric effects, and particle effects can now be efficiently implemented. The new APIs also bring WebGL up to feature parity with
OpenGL ES 3.0
, a graphics platform commonly used in mobile games.
In addition to new rendering capabilities, WebGL 2.0 also introduces a substantially expanded
conformance test suite
with over 340,000 test cases to help ensure that different web browsers offer compatible graphics platforms. Chrome passes 100% of these test cases across multiple GPU vendors on every desktop platform, ensuring that its WebGL 2.0 implementation is stable and consistent.
To get started using WebGL 2.0, check out the
WebGL 2.0 Samples Pack
, which contains small self-contained examples of most new API features. You can also see WebGL 2.0 in action in
After the Flood
1
, an interactive demo by PlayCanvas, created
in conjunction with Mozilla
. Finally, check back here for more news about future graphics features, such as OpenGL ES 3.1 support and explorations into a lower-level web graphics API supporting the new explicit graphics interfaces like
Vulkan
,
Metal
, and
DirectX 12
.
Posted by Zhenyao Mo, Software Engineer
[1] If this demo or other WebGL 2.0 content doesn’t run on your machine, you may need to update your graphics hardware or driver.
Reducing power consumption for background tabs
Tuesday, March 14, 2017
Efficient power usage is an important aspect of speed, one of
Chrome’s key pillars
. To prolong battery life, Chrome should minimize power impact from things users can’t see. This includes background tabs, which consume a third of Chrome's power usage on desktop. Starting in version 57, Chrome will throttle individual background tabs by limiting the timer fire rate for background tabs using excessive power.
Chrome has focused on improving the user experience by throttling tab performance
for many years
. Like many browsers, Chrome has limited timers in the background to only run once per second.
Via the new throttling policy
, Chrome 57 will delay timers to limit average CPU load to 1% of a core if an application uses too much CPU in background. Tabs playing audio or maintaining real-time connections like WebSockets or WebRTC won’t be affected.
We've found that this throttling mechanism leads to 25% fewer busy background tabs.
In the long-term
, the ideal is for background tabs to be fully suspended and instead rely on new APIs for service workers to do work in the background. Chrome will continue to take steps in this direction to prolong users' battery life, while still enabling all the same experiences developers can build today.
Posted by Alexander Timin, Software Engineer and Power Saver
Labels
$200K
1
10th birthday
4
abusive ads
1
abusive notifications
2
accessibility
3
ad blockers
1
ad blocking
2
advanced capabilities
1
android
2
anti abuse
1
anti-deception
1
background periodic sync
1
badging
1
benchmarks
1
beta
83
better ads standards
1
billing
1
birthday
4
blink
2
browser
2
browser interoperability
1
bundles
1
capabilities
6
capable web
1
cds
1
cds18
2
cds2018
1
chrome
35
chrome 81
1
chrome 83
2
chrome 84
2
chrome ads
1
chrome apps
5
Chrome dev
1
chrome dev summit
1
chrome dev summit 2018
1
chrome dev summit 2019
1
chrome developer
1
Chrome Developer Center
1
chrome developer summit
1
chrome devtools
1
Chrome extension
1
chrome extensions
3
Chrome Frame
1
Chrome lite
1
Chrome on Android
2
chrome on ios
1
Chrome on Mac
1
Chrome OS
1
chrome privacy
4
chrome releases
1
chrome security
10
chrome web store
32
chromedevtools
1
chromeframe
3
chromeos
4
chromeos.dev
1
chromium
9
cloud print
1
coalition
1
coalition for better ads
1
contact picker
1
content indexing
1
cookies
1
core web vitals
2
csrf
1
css
1
cumulative layout shift
1
custom tabs
1
dart
8
dashboard
1
Data Saver
3
Data saver desktop extension
1
day 2
1
deceptive installation
1
declarative net request api
1
design
2
developer dashboard
1
Developer Program Policy
2
developer website
1
devtools
13
digital event
1
discoverability
1
DNS-over-HTTPS
4
DoH
4
emoji
1
emscriptem
1
enterprise
1
extensions
27
Fast badging
1
faster web
1
features
1
feedback
2
field data
1
first input delay
1
Follow
1
fonts
1
form controls
1
frameworks
1
fugu
2
fund
1
funding
1
gdd
1
google earth
1
google event
1
google io 2019
1
google web developer
1
googlechrome
12
harmful ads
1
html5
11
HTTP/3
1
HTTPS
4
iframes
1
images
1
incognito
1
insecure forms
1
intent to explain
1
ios
1
ios Chrome
1
issue tracker
3
jank
1
javascript
5
lab data
1
labelling
1
largest contentful paint
1
launch
1
lazy-loading
1
lighthouse
2
linux
2
Lite Mode
2
Lite pages
1
loading interventions
1
loading optimizations
1
lock icon
1
long-tail
1
mac
1
manifest v3
2
metrics
2
microsoft edge
1
mixed forms
1
mobile
2
na
1
native client
8
native file system
1
New Features
5
notifications
1
octane
1
open web
4
origin trials
2
pagespeed insights
1
pagespeedinsights
1
passwords
1
payment handler
1
payment request
1
payments
2
performance
20
performance tools
1
permission UI
1
permissions
1
play store
1
portals
3
prefetching
1
privacy
2
privacy sandbox
4
private prefetch proxy
1
profile guided optimization
1
progressive web apps
2
Project Strobe
1
protection
1
pwa
1
QUIC
1
quieter permissions
1
releases
3
removals
1
rlz
1
root program
1
safe browsing
2
Secure DNS
2
security
36
site isolation
1
slow loading
1
sms receiver
1
spam policy
1
spdy
2
spectre
1
speed
4
ssl
2
store listing
1
strobe
2
subscription pages
1
suspicious site reporter extension
1
TCP
1
the fast and the curious
23
TLS
1
tools
1
tracing
1
transparency
1
trusted web activities
1
twa
2
user agent string
1
user data policy
1
v8
6
video
2
wasm
1
web
1
web apps
1
web assembly
2
web developers
1
web intents
1
web packaging
1
web payments
1
web platform
1
web request api
1
web vitals
1
web.dev
1
web.dev live
1
webapi
1
webassembly
1
webaudio
3
webgl
7
webkit
5
WebM
1
webmaster
1
webp
5
webrtc
6
websockets
5
webtiming
1
writable-files
1
yerba beuna center for the arts
1
Archive
2024
Dec
Aug
Jun
May
Apr
Mar
Feb
2023
Nov
Oct
Sep
Aug
Jun
May
Apr
Feb
2022
Dec
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2021
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2015
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2014
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2011
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2010
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2009
Dec
Nov
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2008
Dec
Nov
Oct
Sep
Feed
Follow @ChromiumDev
Give us feedback in our
Product Forums
.