diff --git a/lib/web_ui/dev/README.md b/lib/web_ui/dev/README.md index 50c70a54ab722d8d7660d2e3eb0df18b3144221b..309ca9a28c80cff1437af034023356c89ff97c72 100644 --- a/lib/web_ui/dev/README.md +++ b/lib/web_ui/dev/README.md @@ -165,3 +165,17 @@ Some useful links: 2. Browser and driver CIPD [packages](https://chrome-infra-packages.appspot.com/p/flutter_internal) (Note: Access rights are restricted for these packages.) 3. LUCI web [recipe](https://flutter.googlesource.com/recipes/+/refs/heads/master/recipes/web_engine.py) 4. More general reading on CIPD packages [link](https://chromium.googlesource.com/chromium/src.git/+/master/docs/cipd.md#What-is-CIPD) + +## Troubleshooting + +### Can't load Kernel binary: Invalid kernel binary format version. + +Some times `.dart_tool` cache invalidation fails, and you'll end up with a cached version of `felt` that is not compatible with the Dart SDK that you're using. + +In that case, any invocation to `felt` will fail with: + +`Can't load Kernel binary: Invalid kernel binary format version.` + +The solution is to delete the cached `felt.snapshot` files within `engine/src/flutter/lib/web_ui`: + +**`rm .dart_tool/felt.snapshot*`** diff --git a/lib/web_ui/lib/src/engine/html/platform_view.dart b/lib/web_ui/lib/src/engine/html/platform_view.dart index c5bb82a6aa3aa7e2b559172379db883dd251fafe..5987fe2f840d1ac4b65689c88a5c90704365a3c6 100644 --- a/lib/web_ui/lib/src/engine/html/platform_view.dart +++ b/lib/web_ui/lib/src/engine/html/platform_view.dart @@ -44,6 +44,7 @@ class PersistedPlatformView extends PersistedLeafSurface { _styleReset.innerHtml = ''' :host { all: initial; + cursor: inherit; }'''; _shadowRoot.append(_styleReset); final html.Element? platformView = diff --git a/lib/web_ui/test/engine/surface/platform_view_test.dart b/lib/web_ui/test/engine/surface/platform_view_test.dart index c806d67658a7896e9f7306788c18cb538b73ed9c..9bb4bd56c8be3c86a3e95e41f3c26b4a917fe7f2 100644 --- a/lib/web_ui/test/engine/surface/platform_view_test.dart +++ b/lib/web_ui/test/engine/surface/platform_view_test.dart @@ -67,6 +67,18 @@ void testMain() { expect(view.canUpdateAsMatch(anyView), isFalse); }); }); + + group('createElement', () { + test('adds reset to stylesheet', () { + final element = view.createElement(); + _assertShadowRootStylesheetContains(element, 'all: initial;'); + }); + + test('creates element transparent to "cursor" property', () { + final element = view.createElement(); + _assertShadowRootStylesheetContains(element, 'cursor: inherit;'); + }); + }); }); } @@ -86,3 +98,14 @@ Future _createPlatformView(int id, String viewType) { ); return completer.future; } + +void _assertShadowRootStylesheetContains(html.Element element, String rule) { + final shadow = element.shadowRoot; + + expect(shadow, isNotNull); + + final html.StyleElement style = shadow.children.first; + + expect(style, isNotNull); + expect(style.innerHtml, contains(rule)); +}