| Index: CHANGELOG.md
|
| diff --git a/CHANGELOG.md b/CHANGELOG.md
|
| index f8d9aadded24121ab48dd066cbc7146c4c82cf8c..3e21825a01a565e306c669bb93a4b703658e3021 100644
|
| --- a/CHANGELOG.md
|
| +++ b/CHANGELOG.md
|
| @@ -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
|
|
|