fix(browser): only fire browserFinished when the Custom Tab actually terminates#2561
Open
OS-ruimoreiramendes wants to merge 3 commits into
Open
fix(browser): only fire browserFinished when the Custom Tab actually terminates#2561OS-ruimoreiramendes wants to merge 3 commits into
OS-ruimoreiramendes wants to merge 3 commits into
Conversation
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.
Description
Refactor the Android browser plugin to use
ActivityResultLauncherfor detecting when the Custom Tab has actually terminated, instead of inferring closure from lifecycle events via the previousEventGroupcounter.The
EventGrouphelper is removed. Browser now exposessetCustomTabLauncherandBrowserControllerActivityregisters a launcher viaregisterForActivityResult, thebrowserFinishedevent is only fired when the launched Custom Tab activity ends.Fixes #2554.
Change Type
Rationale / Problems Fixed
When the user minimizes the Chrome Custom Tab to Picture-in-Picture (or backgrounds the app), the previous heuristic counted TAB_HIDDEN + unbindService and inferred the tab had closed firing
browserFinishedeven though the tab was still open. After that, subsequent minimize/maximize/close events wouldn't fire the event again.ActivityResultLauncherprovides a single, deterministic callback only when the Custom Tab activitytruly finishes, so
browserFinishednow reflects the actual closed state.Tests or Reproductions
Reproduced with the repo:
https://github.com/Prinzhorn/capacitor-android-browser-close-event
Manually tested on a physical Android device:
only on close
Platforms Affected