Skip to content

Conversation

@stuartmorgan-g
Copy link
Collaborator

The current code passes MethodCall objects across multiple layers of code, and retains them to store state during the intent process, which makes adopting Pigeon very difficult. This refactors the code to extract all relevant MethodCall information at the initial call site, and passes/stores specific data objects instead. This improves type safety at other layers, and lays the foundation for a later PR that switches to Pigeon.

The new data classes added here will likely be replaced by Pigeon-generated classes during that conversion, but doing this refactoring as a separate step should make reviewing each part much easier, so adding a couple of trivial temporary classes seemed like a reasonable tradeoff.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use dart format.)
  • I signed the CLA.
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I listed at least one issue that this PR fixes in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
  • I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

@stuartmorgan-g stuartmorgan-g force-pushed the image-picker-android-pigeon-prep branch from 02706ab to 889e0bd Compare March 10, 2023 17:19
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The previous code treated quality at a nullable value until the very bottom layer where it was used, at which point null and 100 were actually handled the same, so I moved that logic into this layer to simplify things.

@Test
public void ImageCache_ShouldBeAbleToSetAndGetQuality() {
when(mockMethodCall.argument(MAP_KEY_IMAGE_QUALITY)).thenReturn(IMAGE_QUALITY);
public void imageCache_shouldBeAbleToSetAndGetQuality() {
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Since I was touching most of the tests anyway, I fixed their names to follow Google Java style.

@stuartmorgan-g stuartmorgan-g removed the request for review from camsim99 March 10, 2023 17:20
Copy link
Contributor

@tarrinneal tarrinneal left a comment

Choose a reason for hiding this comment

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

This is going to be a solid improvement in design for sure!

@tarrinneal tarrinneal added the autosubmit Merge PR when tree becomes green via auto submit App label Mar 11, 2023
@auto-submit auto-submit bot merged commit ce87f28 into flutter:main Mar 11, 2023
jackyshan added a commit to jackyshan/packages that referenced this pull request Mar 11, 2023
* origin/main:
  [image_picker] Remove MethodCall from most Android code (flutter#3438)
  add missing_enum_constant_in_switch (flutter#3435)
  [go_router_builder] Generate the enum map for enum used in iterable (flutter#3415)
  [pigeon] finish kotlin and swift safe cast removal (flutter#3360)
  [tool] Include examples when pathifying deps (flutter#3393)
  url change for platform interface (flutter#3323)

# Conflicts:
#	packages/pigeon/CHANGELOG.md
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 13, 2023
nploi pushed a commit to nploi/packages that referenced this pull request Jul 16, 2023
[image_picker] Remove MethodCall from most Android code
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 p: image_picker platform-android

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants