Skip to content
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

make hot reload reflect changes to asset transformer configurations #144660

Merged
merged 5 commits into from Mar 25, 2024

Conversation

andrewkolos
Copy link
Contributor

@andrewkolos andrewkolos commented Mar 6, 2024

In service of #143348

This PR makes hot reloads reflect changes to transformer configurations under the assets section in pubspec.yaml.
This PR is optimized for ease of implementation, and should not be merged as-is. If it is merged as-is, seriously consider creating a tech debt issue and assigning it to someone to make sure it gets resolved.

Pre-launch Checklist

@andrewkolos andrewkolos added the tool Affects the "flutter" command-line tool. See also t: labels. label Mar 6, 2024
@andrewkolos andrewkolos force-pushed the asset-transformers-hot-reload branch from 1701b64 to 5bb43aa Compare March 6, 2024 04:21
@@ -638,7 +638,7 @@ class DevFS {
bundle.entries.forEach((String archivePath, AssetBundleEntry entry) {
// If the content is backed by a real file, isModified will file stat and return true if
// it was modified since the last time this was called.
if (!entry.content.isModified || bundleFirstUpload) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is what I don't like. Callers of this API need to be sure to read entry.isModified and not entry.content.isModified. The latter really shouldn't be exposed, but it has to be because we have logic that depends on the runtime type of entry.content.

auto-submit bot pushed a commit that referenced this pull request Mar 6, 2024
`DevFSBytesContent` (and it's descendant `DevFSStringContent`) have setters that change the underlying content. These are unused outside of tests, so this PR removes them. Amongst other things, this could help me refactor #144660 into something that has fewer pitfalls.

This is purely a refactoring.
@andrewkolos andrewkolos force-pushed the asset-transformers-hot-reload branch from 5bb43aa to b932d69 Compare March 22, 2024 20:50
@andrewkolos andrewkolos marked this pull request as ready for review March 22, 2024 21:02
@andrewkolos
Copy link
Contributor Author

I originally wanted to implement this differently (to avoid the issue I cited earlier), but I didn't have time to get around to it since I got sick a week ago. I'm trying to get this feature to ready-for-release state before I go away for travel next week, so I'm marking this as ready-for-review as-is. If this is accepted, I will file a self-assigned issue to get this implemented in a cleaner way.

@@ -95,7 +95,27 @@ final class AssetBundleEntry {
final AssetKind kind;
final List<AssetTransformerEntry> transformers;

bool _hasModifiedBeenCalled = false;
bool get isModified {
if (!_hasModifiedBeenCalled) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this whole getter just be bool get isModified => content.isModified?


final DateTime creationTime = DateTime.now();

bool isModifiedAfter(DateTime dateTime) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it looks like this is never referenced. do we need this?

Copy link
Member

@christopherfujino christopherfujino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

}
return content.isModified;
}

final DateTime creationTime = DateTime.now();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we delete this?

Copy link
Member

@christopherfujino christopherfujino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewkolos
Copy link
Contributor Author

I deleted all the isModified* stuff on AssetBundleEntry. It's not needed because we end up constructing new DevFSFileContent objects whenever an asset's transformers change in between hot reloads.

@andrewkolos andrewkolos added the autosubmit Merge PR when tree becomes green via auto submit App label Mar 25, 2024
@auto-submit auto-submit bot merged commit cd78554 into flutter:master Mar 25, 2024
123 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 25, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 25, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 25, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 25, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 25, 2024
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Mar 26, 2024
Roll Flutter from 14774b95c250 to dbdcead93225 (38 revisions)

flutter/flutter@14774b9...dbdcead

2024-03-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from ef896e942f44 to 04191a122e9a (1 revision) (flutter/flutter#145709)
2024-03-25 eltociear@gmail.com Update semantics.dart (flutter/flutter#145683)
2024-03-25 sokolovskyi.konstantin@gmail.com TwoDimensionalChildDelegate should dispatch creation and disposal events (flutter/flutter#145684)
2024-03-25 sokolovskyi.konstantin@gmail.com Memory leaks clean up 1 (flutter/flutter#145691)
2024-03-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2e8d77dbb0f0 to ef896e942f44 (1 revision) (flutter/flutter#145705)
2024-03-25 Sahil.kachhap111989@gmail.com [Fix]: Searchbar doesn't lose focus when tapped outside (flutter/flutter#145232)
2024-03-25 sokolovskyi.konstantin@gmail.com Fix typo in hitTest docs (flutter/flutter#145677)
2024-03-25 engine-flutter-autoroll@skia.org Roll Packages from 611aea1 to 28d126c (1 revision) (flutter/flutter#145690)
2024-03-25 dacoharkes@google.com [deps] Bump native assets dependencies (flutter/flutter#145612)
2024-03-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from 857584c458ff to 2e8d77dbb0f0 (1 revision) (flutter/flutter#145678)
2024-03-25 tessertaha@gmail.com Add `AnimationStyle` to `showBottomSheet` and `showModalBottomSheet` (flutter/flutter#145536)
2024-03-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from ae758d54630d to 857584c458ff (2 revisions) (flutter/flutter#145673)
2024-03-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from efdde39a2a57 to ae758d54630d (1 revision) (flutter/flutter#145669)
2024-03-25 andrewrkolos@gmail.com make hot reload reflect changes to asset transformer configurations (flutter/flutter#144660)
2024-03-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from 0734f47f2a3d to efdde39a2a57 (2 revisions) (flutter/flutter#145668)
2024-03-24 engine-flutter-autoroll@skia.org Roll Flutter Engine from 7c139e0a4897 to 0734f47f2a3d (1 revision) (flutter/flutter#145662)
2024-03-24 polinach@google.com Leak clean up. (flutter/flutter#144803)
2024-03-24 polinach@google.com Turn off randomization for leak detection bots. (flutter/flutter#145624)
2024-03-24 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2f5afdf62365 to 7c139e0a4897 (1 revision) (flutter/flutter#145655)
2024-03-24 engine-flutter-autoroll@skia.org Roll Flutter Engine from 7aa8521e640e to 2f5afdf62365 (2 revisions) (flutter/flutter#145651)
2024-03-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 689ea4b10b17 to 7aa8521e640e (1 revision) (flutter/flutter#145643)
2024-03-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 42d4262b4b20 to 689ea4b10b17 (1 revision) (flutter/flutter#145636)
2024-03-23 6655696+guidezpl@users.noreply.github.com Reland #128236 "Improve build output for all platforms" (flutter/flutter#145495)
2024-03-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 7690eb12ded5 to 42d4262b4b20 (1 revision) (flutter/flutter#145635)
2024-03-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8a51e124fbf1 to 7690eb12ded5 (1 revision) (flutter/flutter#145634)
2024-03-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from bc4fa4367edb to 8a51e124fbf1 (4 revisions) (flutter/flutter#145630)
2024-03-23 49699333+dependabot[bot]@users.noreply.github.com Bump github/codeql-action from 3.24.8 to 3.24.9 (flutter/flutter#145627)
2024-03-23 godofredoc@google.com Add workaround for bug adding unicode strings to test reports. (flutter/flutter#145607)
2024-03-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 52142e428760 to bc4fa4367edb (1 revision) (flutter/flutter#145626)
2024-03-23 ditman@gmail.com [web][docs] Improve HtmlElementView widget docs. (flutter/flutter#145192)
2024-03-23 jacksongardner@google.com Disable flaky text_editing_integration tests temporarily. (flutter/flutter#145629)
2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from cc8f752b81e5 to 52142e428760 (4 revisions) (flutter/flutter#145625)
2024-03-22 katelovett@google.com Fix skipping golden comparator for CI environments (flutter/flutter#145619)
2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from 68301f268278 to cc8f752b81e5 (1 revision) (flutter/flutter#145621)
2024-03-22 engine-flutter-autoroll@skia.org Roll Packages from b7fbe68 to 611aea1 (4 revisions) (flutter/flutter#145615)
2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from 63ff0dedd8e6 to 68301f268278 (2 revisions) (flutter/flutter#145613)
2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from 09dadce76828 to 63ff0dedd8e6 (2 revisions) (flutter/flutter#145611)
2024-03-22 katelovett@google.com 2DScrollView - Fix drag when one axis does not have enough content (flutter/flutter#145566)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC dit@google.com,rmistry@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose
...
@andrewkolos andrewkolos deleted the asset-transformers-hot-reload branch April 29, 2024 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App tool Affects the "flutter" command-line tool. See also t: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants