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

fix(dev-middleware): create custom message handler for synthetic page #43559

Conversation

byCedric
Copy link
Contributor

@byCedric byCedric commented Mar 19, 2024

Summary:

This is a follow-up bugfix for expo/expo#27425, related to:

The middleware API works as intended and can run our extended CDP events. Unfortunately, this only applies to an actual Page from the device, not for the React Native Experimental (Improved Chrome Reloads) synthetic / virtual page.

That's because the middleware instantiation gets aborted when the page can't be found in this.#pages.get(pageId), which always returns null for this synthetic page.

Changelog:

[GENERAL] [FIXED] Create custom message handler for synthetic page

Test Plan:

See added test case.

@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. labels Mar 19, 2024
@byCedric byCedric force-pushed the @bycedric/dev-middleware/use-virtual-page-in-message-handlers branch from b248a5a to d69180f Compare March 19, 2024 17:07
@byCedric byCedric requested a review from motiz88 March 19, 2024 17:33
byCedric added a commit to expo/expo that referenced this pull request Mar 19, 2024
# Why

This is the implementation side of facebook/react-native#43291, and
facebook/react-native#43310.

~~PR is back in draft state due to
facebook/react-native#43559
Going to merge it as is, to fix CI.

# How

- Drop `InspectorProxy` and `Device` override classes
- Rename `InspectorHandlers` to `MessageMiddleware`
- ~~Temporarily polyfill required types until
`@react-native/dev-middleware` is published with this new API~~
_We now use all types from this package, derived from the
`CustomMessageHandlerConnection` and `CreateCustomMessageHandlerFn`
types._
- ~~Drop the `VscodeDebuggerScriptParsed` middleware as that mutates the
`Device` instance~~
_This was added to optimize the source map loading. It should still work
without this handler. There is work going on from Meta's side to make
source map loading follow web behavior more, but that's still in
progress._

# Test Plan

See updated tests, need to test this when `@react-native/dev-middleware`
is updated.

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->

- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
@byCedric byCedric changed the title fix(dev-middleware): create inspector message middleware for synthetic page fix(dev-middleware): create inspector custom message handler for synthetic page Mar 19, 2024
@byCedric byCedric changed the title fix(dev-middleware): create inspector custom message handler for synthetic page fix(dev-middleware): create custom message handler for synthetic page Mar 19, 2024
Copy link
Member

@huntie huntie left a comment

Choose a reason for hiding this comment

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

LGTM :) Thanks @byCedric!

@facebook-github-bot
Copy link
Contributor

@huntie has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Mar 20, 2024
@facebook-github-bot
Copy link
Contributor

@huntie merged this pull request in 652c741.

huntie pushed a commit that referenced this pull request Mar 21, 2024
…#43559)

Summary:
This is a follow-up bugfix for expo/expo#27425, related to:
 - #43291
 - #43307
 - #43310
 - #43364

The middleware API works as intended and can run our extended CDP events. Unfortunately, this only applies to an actual `Page` from the device, not for the `React Native Experimental (Improved Chrome Reloads)` synthetic / virtual page.

That's because the middleware instantiation gets aborted when the page can't be found in `this.#pages.get(pageId)`, which always returns `null` for this synthetic page.

## Changelog:

[GENERAL] [FIXED] Create custom message handler for synthetic page

Pull Request resolved: #43559

Test Plan: See added test case.

Reviewed By: motiz88

Differential Revision: D55129412

Pulled By: huntie

fbshipit-source-id: 9679d8fe68f3cb4104f4a042f93612b995baddc9
This was referenced Jun 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged This PR has been merged. p: Expo Partner: Expo Partner Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants