Keep dirty manipulations private to Element base class#109401
Merged
goderbauer merged 3 commits intoflutter:masterfrom Aug 12, 2022
Merged
Keep dirty manipulations private to Element base class#109401goderbauer merged 3 commits intoflutter:masterfrom
dirty manipulations private to Element base class#109401goderbauer merged 3 commits intoflutter:masterfrom
Conversation
dirty manipulations private to Element base class
caf3b6c to
e5f7399
Compare
Member
Author
|
@Hixie Curious to hear what you think about this or whether you have another suggestion for addressing this. |
e5f7399 to
7746c21
Compare
Member
Author
|
Global presubmit in google (with that one fix mentioned in the PR description) came back green, g3fix for that fix is posted in cl/467248749. |
Contributor
|
I think this broke the build by causing an integration test to time out. The test that hangs is here: I'm assuming that this is causing the hang because of some change in the rebuild code that the integration test is testing. I'm going to revert this to green the build. (I'm gardener this week) |
gspencergoog
added a commit
to gspencergoog/flutter
that referenced
this pull request
Aug 13, 2022
…lutter#109401)" This reverts commit a624cb7 because it appears to have broken the build.
This was referenced Aug 13, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 13, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 13, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 13, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 13, 2022
This was referenced Aug 14, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 14, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 14, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 14, 2022
This was referenced Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 15, 2022
This was referenced Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 15, 2022
This was referenced Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 15, 2022
This was referenced Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 15, 2022
This was referenced Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/packages
that referenced
this pull request
Aug 15, 2022
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/plugins
that referenced
this pull request
Aug 15, 2022
goderbauer
added a commit
to goderbauer/flutter
that referenced
this pull request
Aug 15, 2022
…lutter#109401)" This reverts commit 7887ca5.
stuartmorgan-g
pushed a commit
to flutter/plugins
that referenced
this pull request
Aug 16, 2022
* 7d1323c Updating expiring cirrus key. (flutter/flutter#109461) * a85902a Roll Flutter Engine from de118a55ade0 to c354e0e04cea (2 revisions) (flutter/flutter#109462) * 28de3d4 Roll Flutter Engine from c354e0e04cea to d1b18b5d6811 (1 revision) (flutter/flutter#109466) * a624cb7 Keep `dirty` manipulations private to `Element` base class (flutter/flutter#109401) * dce82f7 Remove deprecated Ruby File.exists? in helper script (flutter/flutter#109428) * 7887ca5 Revert "Keep `dirty` manipulations private to `Element` base class (#109401)" (flutter/flutter#109481) * 237a298 Roll Flutter Engine from d1b18b5d6811 to a2f3bd58ce73 (1 revision) (flutter/flutter#109472) * fe2fc8d Single tap on the previous selection should toggle the toolbar on iOS… (flutter/flutter#108913) * 696c6fb Roll Flutter Engine from a2f3bd58ce73 to fb19700742c3 (6 revisions) (flutter/flutter#109482) * 17bc0ce Roll Flutter Engine from fb19700742c3 to 2180e62f6c7e (1 revision) (flutter/flutter#109483) * 4265015 Roll Flutter Engine from 2180e62f6c7e to cd1a1cb757f5 (1 revision) (flutter/flutter#109488) * c142dd3 Roll Flutter Engine from cd1a1cb757f5 to 5cc5c5f04f0a (1 revision) (flutter/flutter#109490) * 8a55c36 Roll Flutter Engine from 5cc5c5f04f0a to 18dca3de7496 (2 revisions) (flutter/flutter#109493) * d50c5b1 Roll Flutter Engine from 18dca3de7496 to 83771593cb55 (1 revision) (flutter/flutter#109505) * 97901da Cleaner test.dart output. (flutter/flutter#109206) * fb3c8ea Roll Flutter Engine from 83771593cb55 to f49a617535af (1 revision) (flutter/flutter#109509) * 5fcd9c2 Update README.md (flutter/flutter#109506) * 4dd7065 Add onOpened callback to PopupMenuButton (flutter/flutter#103753) * ed3238e Roll Flutter Engine from f49a617535af to cc9f4c63b7e5 (1 revision) (flutter/flutter#109518) * 8b1ca3f Roll Flutter Engine from cc9f4c63b7e5 to 4656c2f46cad (1 revision) (flutter/flutter#109524) * 20ffb32 Roll Flutter Engine from 4656c2f46cad to 16fb19e72f88 (1 revision) (flutter/flutter#109526) * 087750f Roll Flutter Engine from 16fb19e72f88 to 9c3c233e2639 (1 revision) (flutter/flutter#109532) * 4aba124 Roll Flutter Engine from 9c3c233e2639 to f0c3829e90ce (1 revision) (flutter/flutter#109536) * 2bce108 Roll Plugins from 9fb7654 to 094f1c3 (7 revisions) (flutter/flutter#109543) * 97d9a2f Roll Flutter Engine from f0c3829e90ce to 8c019cdd446f (2 revisions) (flutter/flutter#109548) * 458d618 Roll Flutter Engine from 8c019cdd446f to 198b0051a5a2 (1 revision) (flutter/flutter#109552) * c873c21 Roll Flutter Engine from 198b0051a5a2 to 33fccf564973 (1 revision) (flutter/flutter#109557)
goderbauer
added a commit
to goderbauer/flutter
that referenced
this pull request
Aug 17, 2022
camsim99
pushed a commit
to camsim99/plugins
that referenced
this pull request
Aug 23, 2022
* 7d1323c Updating expiring cirrus key. (flutter/flutter#109461) * a85902a Roll Flutter Engine from de118a55ade0 to c354e0e04cea (2 revisions) (flutter/flutter#109462) * 28de3d4 Roll Flutter Engine from c354e0e04cea to d1b18b5d6811 (1 revision) (flutter/flutter#109466) * a624cb7 Keep `dirty` manipulations private to `Element` base class (flutter/flutter#109401) * dce82f7 Remove deprecated Ruby File.exists? in helper script (flutter/flutter#109428) * 7887ca5 Revert "Keep `dirty` manipulations private to `Element` base class (#109401)" (flutter/flutter#109481) * 237a298 Roll Flutter Engine from d1b18b5d6811 to a2f3bd58ce73 (1 revision) (flutter/flutter#109472) * fe2fc8d Single tap on the previous selection should toggle the toolbar on iOS… (flutter/flutter#108913) * 696c6fb Roll Flutter Engine from a2f3bd58ce73 to fb19700742c3 (6 revisions) (flutter/flutter#109482) * 17bc0ce Roll Flutter Engine from fb19700742c3 to 2180e62f6c7e (1 revision) (flutter/flutter#109483) * 4265015 Roll Flutter Engine from 2180e62f6c7e to cd1a1cb757f5 (1 revision) (flutter/flutter#109488) * c142dd3 Roll Flutter Engine from cd1a1cb757f5 to 5cc5c5f04f0a (1 revision) (flutter/flutter#109490) * 8a55c36 Roll Flutter Engine from 5cc5c5f04f0a to 18dca3de7496 (2 revisions) (flutter/flutter#109493) * d50c5b1 Roll Flutter Engine from 18dca3de7496 to 83771593cb55 (1 revision) (flutter/flutter#109505) * 97901da Cleaner test.dart output. (flutter/flutter#109206) * fb3c8ea Roll Flutter Engine from 83771593cb55 to f49a617535af (1 revision) (flutter/flutter#109509) * 5fcd9c2 Update README.md (flutter/flutter#109506) * 4dd7065 Add onOpened callback to PopupMenuButton (flutter/flutter#103753) * ed3238e Roll Flutter Engine from f49a617535af to cc9f4c63b7e5 (1 revision) (flutter/flutter#109518) * 8b1ca3f Roll Flutter Engine from cc9f4c63b7e5 to 4656c2f46cad (1 revision) (flutter/flutter#109524) * 20ffb32 Roll Flutter Engine from 4656c2f46cad to 16fb19e72f88 (1 revision) (flutter/flutter#109526) * 087750f Roll Flutter Engine from 16fb19e72f88 to 9c3c233e2639 (1 revision) (flutter/flutter#109532) * 4aba124 Roll Flutter Engine from 9c3c233e2639 to f0c3829e90ce (1 revision) (flutter/flutter#109536) * 2bce108 Roll Plugins from 9fb7654 to 094f1c3 (7 revisions) (flutter/flutter#109543) * 97d9a2f Roll Flutter Engine from f0c3829e90ce to 8c019cdd446f (2 revisions) (flutter/flutter#109548) * 458d618 Roll Flutter Engine from 8c019cdd446f to 198b0051a5a2 (1 revision) (flutter/flutter#109552) * c873c21 Roll Flutter Engine from 198b0051a5a2 to 33fccf564973 (1 revision) (flutter/flutter#109557)
moisefeelin
pushed a commit
to feelinproject/plugins
that referenced
this pull request
Aug 26, 2022
* 7d1323c Updating expiring cirrus key. (flutter/flutter#109461) * a85902a Roll Flutter Engine from de118a55ade0 to c354e0e04cea (2 revisions) (flutter/flutter#109462) * 28de3d4 Roll Flutter Engine from c354e0e04cea to d1b18b5d6811 (1 revision) (flutter/flutter#109466) * a624cb7 Keep `dirty` manipulations private to `Element` base class (flutter/flutter#109401) * dce82f7 Remove deprecated Ruby File.exists? in helper script (flutter/flutter#109428) * 7887ca5 Revert "Keep `dirty` manipulations private to `Element` base class (#109401)" (flutter/flutter#109481) * 237a298 Roll Flutter Engine from d1b18b5d6811 to a2f3bd58ce73 (1 revision) (flutter/flutter#109472) * fe2fc8d Single tap on the previous selection should toggle the toolbar on iOS… (flutter/flutter#108913) * 696c6fb Roll Flutter Engine from a2f3bd58ce73 to fb19700742c3 (6 revisions) (flutter/flutter#109482) * 17bc0ce Roll Flutter Engine from fb19700742c3 to 2180e62f6c7e (1 revision) (flutter/flutter#109483) * 4265015 Roll Flutter Engine from 2180e62f6c7e to cd1a1cb757f5 (1 revision) (flutter/flutter#109488) * c142dd3 Roll Flutter Engine from cd1a1cb757f5 to 5cc5c5f04f0a (1 revision) (flutter/flutter#109490) * 8a55c36 Roll Flutter Engine from 5cc5c5f04f0a to 18dca3de7496 (2 revisions) (flutter/flutter#109493) * d50c5b1 Roll Flutter Engine from 18dca3de7496 to 83771593cb55 (1 revision) (flutter/flutter#109505) * 97901da Cleaner test.dart output. (flutter/flutter#109206) * fb3c8ea Roll Flutter Engine from 83771593cb55 to f49a617535af (1 revision) (flutter/flutter#109509) * 5fcd9c2 Update README.md (flutter/flutter#109506) * 4dd7065 Add onOpened callback to PopupMenuButton (flutter/flutter#103753) * ed3238e Roll Flutter Engine from f49a617535af to cc9f4c63b7e5 (1 revision) (flutter/flutter#109518) * 8b1ca3f Roll Flutter Engine from cc9f4c63b7e5 to 4656c2f46cad (1 revision) (flutter/flutter#109524) * 20ffb32 Roll Flutter Engine from 4656c2f46cad to 16fb19e72f88 (1 revision) (flutter/flutter#109526) * 087750f Roll Flutter Engine from 16fb19e72f88 to 9c3c233e2639 (1 revision) (flutter/flutter#109532) * 4aba124 Roll Flutter Engine from 9c3c233e2639 to f0c3829e90ce (1 revision) (flutter/flutter#109536) * 2bce108 Roll Plugins from 9fb7654 to 094f1c3 (7 revisions) (flutter/flutter#109543) * 97d9a2f Roll Flutter Engine from f0c3829e90ce to 8c019cdd446f (2 revisions) (flutter/flutter#109548) * 458d618 Roll Flutter Engine from 8c019cdd446f to 198b0051a5a2 (1 revision) (flutter/flutter#109552) * c873c21 Roll Flutter Engine from 198b0051a5a2 to 33fccf564973 (1 revision) (flutter/flutter#109557)
mauricioluz
pushed a commit
to mauricioluz/plugins
that referenced
this pull request
Jan 26, 2023
* 7d1323c Updating expiring cirrus key. (flutter/flutter#109461) * a85902a Roll Flutter Engine from de118a55ade0 to c354e0e04cea (2 revisions) (flutter/flutter#109462) * 28de3d4 Roll Flutter Engine from c354e0e04cea to d1b18b5d6811 (1 revision) (flutter/flutter#109466) * a624cb7 Keep `dirty` manipulations private to `Element` base class (flutter/flutter#109401) * dce82f7 Remove deprecated Ruby File.exists? in helper script (flutter/flutter#109428) * 7887ca5 Revert "Keep `dirty` manipulations private to `Element` base class (#109401)" (flutter/flutter#109481) * 237a298 Roll Flutter Engine from d1b18b5d6811 to a2f3bd58ce73 (1 revision) (flutter/flutter#109472) * fe2fc8d Single tap on the previous selection should toggle the toolbar on iOS… (flutter/flutter#108913) * 696c6fb Roll Flutter Engine from a2f3bd58ce73 to fb19700742c3 (6 revisions) (flutter/flutter#109482) * 17bc0ce Roll Flutter Engine from fb19700742c3 to 2180e62f6c7e (1 revision) (flutter/flutter#109483) * 4265015 Roll Flutter Engine from 2180e62f6c7e to cd1a1cb757f5 (1 revision) (flutter/flutter#109488) * c142dd3 Roll Flutter Engine from cd1a1cb757f5 to 5cc5c5f04f0a (1 revision) (flutter/flutter#109490) * 8a55c36 Roll Flutter Engine from 5cc5c5f04f0a to 18dca3de7496 (2 revisions) (flutter/flutter#109493) * d50c5b1 Roll Flutter Engine from 18dca3de7496 to 83771593cb55 (1 revision) (flutter/flutter#109505) * 97901da Cleaner test.dart output. (flutter/flutter#109206) * fb3c8ea Roll Flutter Engine from 83771593cb55 to f49a617535af (1 revision) (flutter/flutter#109509) * 5fcd9c2 Update README.md (flutter/flutter#109506) * 4dd7065 Add onOpened callback to PopupMenuButton (flutter/flutter#103753) * ed3238e Roll Flutter Engine from f49a617535af to cc9f4c63b7e5 (1 revision) (flutter/flutter#109518) * 8b1ca3f Roll Flutter Engine from cc9f4c63b7e5 to 4656c2f46cad (1 revision) (flutter/flutter#109524) * 20ffb32 Roll Flutter Engine from 4656c2f46cad to 16fb19e72f88 (1 revision) (flutter/flutter#109526) * 087750f Roll Flutter Engine from 16fb19e72f88 to 9c3c233e2639 (1 revision) (flutter/flutter#109532) * 4aba124 Roll Flutter Engine from 9c3c233e2639 to f0c3829e90ce (1 revision) (flutter/flutter#109536) * 2bce108 Roll Plugins from 9fb7654 to 094f1c3 (7 revisions) (flutter/flutter#109543) * 97d9a2f Roll Flutter Engine from f0c3829e90ce to 8c019cdd446f (2 revisions) (flutter/flutter#109548) * 458d618 Roll Flutter Engine from 8c019cdd446f to 198b0051a5a2 (1 revision) (flutter/flutter#109552) * c873c21 Roll Flutter Engine from 198b0051a5a2 to 33fccf564973 (1 revision) (flutter/flutter#109557)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I tried to create a custom Element that was a direct subclass of
Elementoutside of the framework and it was impossible to implement this right because I couldn't properly set/unset thedirtyflag when necessary. Element subclasses in the framework directly manipulate the privateElement._dirtyfield, but subclasses outside offramework.dartdon't have this option. This change keeps settingElement._dirtyprivate to theElementclass to give subclasses outside of the framework a fair chance. This is archived by:_dirtyin the default implementation ofElement.performRebuild. Subclasses are now expected to call this super implementation to reset the flag.forceparameter to theElement.rebuildmethod to force rebuilding even if theElementisn't dirty. This is convenient to call from implementations ofupdatein subclasses.I don't expect this to be a breaking change. Elements implemented outside the framework, who are not calling
super.performRebuildalready, are essentially broken because they can't reset thedirtyflag properly. Therefore, I am not expecting any implementations out there that overrideperformRebuildwithout already calling super. Furthermore, the addition of a new parameter torebuildshouldn't break any subclasses since subclasses should be overridingperformRebuildinstead and that signature is unchanged. (However, I did find one class in google3 that overridesrebuilddirectly and that override needs to be updated to include the newly addedforceparameter.)Alternatives considered:
forceas a parameter torebuild, add a newforceRebuildmethod. While this would be non-breaking in google3, it would deepen the call stack if we want to call intoforceRebuildfromrebuildto re-use code.Element.updateset the dirty flag to true so subclasses can call the regularrebuildmethod in theirupdatemethod (since the element is now dirty, rebuild will actually do the rebuilding work). While this would work for all Element subclasses implemented in the framework, this would force every Element to always rebuild inupdateto clear the dirty flag. Conceptually, this seems incorrect as there could in theory be updates that don't require a rebuild because the update is essentially a no-op.Element.performRebuildreset the dirty flag, provide a specific API to mark an Element as clean again (i.e.Element.markAsClean()). I am a little hesitant to give Element more API surface and adding that extra API feels easier to miss-use then havingperformRebuildclear the flag.