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 |