What’s new in Chromium 58 and Opera 45
Opera 45 (based on Chromium 58) for Mac, Windows, Linux is out! To find out what’s new for users, see our Desktop blog. Here’s what it means for web developers.
IndexedDB 2.0
IndexedDB 2.0 is now supported in Opera, 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.
For more information about what IndexedDB 2.0 brings, check out Bevis Tseng’s summary.
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, Opera 45 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.
Selection API changes
- Using
removeRange()
, a new function, developers can now programmatically remove a specified text Range. - When accessing properties like
selectionDirection
,selectionStart
, andselectionEnd
, Opera will now returnnull
when it would have thrown anInvalidStateError DOMException
. - Rather than silently clamping offset values that were too large,
setBaseAndExtent()
now throws anIndexSizeError DOMException
to better align with spec. - Rather than silently failing for
DocumentType
node inputs,setBaseAndExtent()
,extend()
, andcollapse()
now throwInvalidNodeTypeError DOMException
to better align with spec. - To improve interoperability,
Selection.addRange()
now ignores an additional range if it overlaps with an existing range, rather than merging the two ranges. - To better align with spec,
getRangeAt()
now always returns a newRange
with position normalization.
Other features in this release
- Opera adds in-form warnings for sensitive fields when the top-level page is not HTTPS. Whenever you start filling in your password or credit card number on a page, which is not HTTPS, the warning will appear.
Workers
andSharedWorkers
can now be created usingdata:
URLs. Note that such workers will have an opaque origin.PointerEvents.getCoalescedEvents()
allows developers to access all input events since the last time aPointerEvent
was delivered, making it easier for drawing apps to create smoother curves using a precise history of points.- Developers can now customize Opera’s native media controls such as the
download
,fullscreen
andremoteplayback
buttons using the new ControlsList API. - Sites can now access the approximate range of colors supported by Opera and output devices using the
color-gamut
Media Query. display: flow-root
is now supported. An effect of flow-root is that it envelops floats, and can be used as a replacement for the clearfix hack.- To improve JavaScript parsing time,
SVGPoint
,SVGRect
, andSVGMatrix
have been transferred to new interfaces outside of Geometry. - The
PointerEvent.tangentialPressure
and PointerEvent.twist attributes are now supported on Opera 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.
Deprecated and removed features
Apple-interchange-newline
,Apple-converted-space
,Apple-paste-as-quotation
,Apple-style-span
, andApple-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 Chromium’s policy around powerful features.
- Encrypted Media Extensions transmitted over non-secure origins has been deprecated per Chromium’s policy around powerful features and in compliance with the spec.
- To better align with spec,
cancelBubble
is now considered an alias tostopPropagation()
when set to true, and does not do anything when set to false. - The
VTTRegion
interface functions,addRegion()
andremoveRegion()
, have been removed from the WebVTT spec and are therefore being removed from Opera. - Top-level navigations to
data:
URLs have been deprecated to further protect users from spoofing and phishing attempts. - An instance of
HTMLEmbedElement
orHTMLObjectElement
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 Opera 28.
- The AudioBuffer constructor now accepts the
sampleRate
member of anAudioBufferOptions
dictionary instead of acontext
argument, simplifying the interface and emphasizing thatAudioBuffers
can be shared betweenAudioContexts
. - 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
, andmotion-rotation
CSS properties have been removed in favor of the new versions:offset-path
,offset-distance
,offset-rotate
. - 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.
What’s next?
If you’re interested in experimenting with features that are in the pipeline for future versions of Opera, we recommend following our Opera Developer stream.