Update changelog for event changes in dart:html, etc in 1.16

Closes https://github.com/dart-lang/sdk/issues/25970

R=alanknight@google.com, terry@google.com

Review URL: https://codereview.chromium.org/1911213002 .
This commit is contained in:
Kevin Moore 2016-04-25 14:43:43 -07:00
parent 4cd1d552e4
commit fd08dae063

View file

@ -14,10 +14,92 @@
* Introduce `ChunkedConverter` and deprecate chunked methods on `Converter`.
* `dart:html`
There have been a number of **BREAKING** changes to align APIs with recent
changes in Chrome. These include:
* Chrome's `ShadowRoot` interface no longer has the methods `getElementById`,
`getElementsByClassName`, and `getElementsByTagName`, e.g.,
```dart
elem.shadowRoot.getElementsByClassName('clazz')
```
should become:
```dart
elem.shadowRoot.querySelectorAll('.clazz')
```
* The `clipboardData` property has been removed from `KeyEvent`
and `Event`. It has been moved to the new `ClipboardEvent` class, which is
now used by `copy`, `cut`, and `paste` events.
* The `layer` property has been removed from `KeyEvent` and
`UIEvent`. It has been moved to `MouseEvent`.
* The `Point get page` property has been removed from `UIEvent`.
It still exists on `MouseEvent` and `Touch`.
There have also been a number of other additions and removals to `dart:html`,
`dart:indexed_db`, `dart:svg`, `dart:web_audio`, and `dart:web_gl` that
correspond to changes to Chrome APIs between v39 and v45. Many of the breaking
changes represent APIs that would have caused runtime exceptions when compiled
to Javascript and run on recent Chrome releases.
* `dart:io`
* Added `SecurityContext.alpnSupported`, which is true if a platform
supports ALPN, and false otherwise.
### JavaScript interop
For performance reasons, a potentially **BREAKING** change was added for
libraries that use JS interop.
Any Dart file that uses `@JS` annotations on declarations (top-level functions,
classes or class members) to interop with JavaScript code will require that the
file have the annotation `@JS()` on a library directive.
```dart
@JS()
library my_library;
```
The analyzer will enforce this by generating the error:
The `@JS()` annotation can only be used if it is also declared on the library
directive.
If part file uses the `@JS()` annotation, the library that uses the part should
have the `@JS()` annotation e.g.,
```dart
// library_1.dart
@JS()
library library_1;
import 'package:js/js.dart';
part 'part_1.dart';
```
```dart
// part_1.dart
part of library_1;
@JS("frameworkStabilizers")
external List<FrameworkStabilizer> get frameworkStabilizers;
```
If your library already has a JS module e.g.,
```dart
@JS('array.utils')
library my_library;
```
Then your library will work without any additional changes.
### Analyzer
* Static checking of `for in` statements. These will now produce static