Skip to content

Add VirtualDom::remount_render_target for a renderer that lost its nodes - #5886

Open
LucaCappelletti94 wants to merge 1 commit into
DioxusLabs:mainfrom
LucaCappelletti94:upstream/android-remount-portal-safety
Open

LucaCappelletti94 wants to merge 1 commit into
DioxusLabs:mainfrom
LucaCappelletti94:upstream/android-remount-portal-safety

Conversation

@LucaCappelletti94

Copy link
Copy Markdown

VirtualDom::remount_render_target rewrites a render target's whole mounted tree into a fresh writer without re-running any component, for a renderer that lost that target's nodes, such as a webview that reloads its page after an Android activity gets recreated. Component state survives since nothing re-renders, only the DOM gets rebuilt against the new writer.

A Portal nested inside the content being recovered can point at a completely different, still-live render target. Both the removal and the creation walk this primitive runs are scoped to the target actually being recovered, so a sibling target reached that way is never touched, its scope, mount and DOM stay exactly as they were before the call.

Missing that boundary would leave a live sibling window or modal with a second, permanently untracked copy of its own content, since the renderer's own element-id bookkeeping for that mount would get overwritten to point at newly created nodes while the originals lose their only reference.

Part of #5885, first step of the Android fix.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant