New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[web] Removes patchCanvasKitModule. #42941
[web] Removes patchCanvasKitModule. #42941
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
This comment was marked as resolved.
This comment was marked as resolved.
I think I'll test this by initializing an engine (ensuring that it's downloaded canvaskit) and then checking that |
Flutter web uses requireJS in `debug` mode to assemble a DDC-compiled app from a bunch of small files ("modules"). This caused that `canvaskit.js` (and all other modules that used a browserify-like loading header) didn't work because they attempted to use the `define` function provided by Flutter's instance of `requireJS` (which kept the defined modules private, rather than as globals on the page, as the users of the JS expected). A [fix](flutter/engine#27342) was added to `flutter/engine` to trick loaders into *not* using the `requireJS` module loader, but a recent change in the fix's js-interop layer *subtly* changed its JS output on the page (objects went from `undefined` to `null`), causing this: * #126131 (and others) This PR hides a bit of code that is commonly used by module loaders to decide that they may use the `define` function provided by requireJS (so the engine workaround can be removed). ## Next steps * flutter/engine#42941 ## Issues Partially addresses: #126131 (and others) ## Tests * Added a unit test to ensure the `delete` stays * Manually tested with the Gallery app in `debug` mode with a bunch of user-supplied scripts that currently fail to load. * Also tested hot restart as suggested by @nshahan
After flutter/flutter#129032, this shouldn't be needed anymore.
8e09381
to
cfa7b1a
Compare
Added a test for the change. (Also rename other initialization tests inside the initialization directory to not start with initialization, because there's too many initializations in those paths!) |
…129599) flutter/engine@715eff2...f320b8c 2023-06-27 ditman@gmail.com [web] Removes patchCanvasKitModule. (flutter/engine#42941) 2023-06-26 skia-flutter-autoroll@skia.org Roll ANGLE from cafbf6e2660f to cba77bceb26c (1 revision) (flutter/engine#43222) 2023-06-26 bdero@google.com [Impeller] Fix CPU Porter-Duff blends (flutter/engine#43217) 2023-06-26 skia-flutter-autoroll@skia.org Roll Skia from c1effc01211e to 370132bcadb1 (2 revisions) (flutter/engine#43221) 2023-06-26 skia-flutter-autoroll@skia.org Roll ANGLE from 4a4b13cc6931 to cafbf6e2660f (2 revisions) (flutter/engine#43219) 2023-06-26 skia-flutter-autoroll@skia.org Roll Skia from 4ae209493390 to c1effc01211e (4 revisions) (flutter/engine#43218) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC jsimmons@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
**This must land _after_ flutter/flutter#129032 Flutter web uses requireJS in `debug` mode to assemble a DDC-compiled app from a bunch of small files ("modules"). This caused that `canvaskit.js` (then, but probably all other modules that used a browserify-like loading header) didn't work because it attempted to use the `define` function provided by Flutter's instance of `requireJS` (which kept the defined modules private, rather than as globals on the page, as the users of the JS expected). A [fix](flutter#27342) was added to `flutter/engine` to trick loaders into *not* using the `requireJS` module loader, but a recent change in the fix's js-interop layer *subtly* changed its JS output on the page (objects went from `undefined` to `null`), causing this: * flutter/flutter#126131 (and others) After flutter/flutter#129032, the engine fix shouldn't be required anymore, so this PR removes it. ## Issues * Fixes flutter/flutter#126131 (and possibly others) ## Testing * Manually tested with some test apps, and miscellanous JS scripts as reported by users. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
This must land after flutter/flutter#129032
Flutter web uses requireJS in
debug
mode to assemble a DDC-compiled app from a bunch of small files ("modules").This caused that
canvaskit.js
(then, but probably all other modules that used a browserify-like loading header) didn't work because it attempted to use thedefine
function provided by Flutter's instance ofrequireJS
(which kept the defined modules private, rather than as globals on the page, as the users of the JS expected).A fix was added to
flutter/engine
to trick loaders into not using therequireJS
module loader, but a recent change in the fix's js-interop layer subtly changed its JS output on the page (objects went fromundefined
tonull
), causing this:After flutter/flutter#129032, the engine fix shouldn't be required anymore, so this PR removes it.
Issues
Testing
Pre-launch Checklist
///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.