Bug_43229: Disable opening links before torbrowser is bootstrapped, preventing the app from entering a bad state and add functionality for what to do instead
Merge Info
Related Issues
Backporting
Timeline
-
Immediate: patchset needed as soon as possible -
Next Minor Stable Release: patchset that needs to be verified in nightly before backport -
Eventually: patchset that needs to be verified in alpha before backport -
No Backport (preferred): patchset for the next major stable
(Optional) Justification
-
Emergency security update: patchset fixes CVEs, 0-days, etc -
Censorship event: patchset enables censorship circumvention -
Critical bug-fix: patchset fixes a bug in core-functionality -
Consistency: patchset which would make development easier if it were in both the alpha and release branches; developer tools, build system changes, etc -
Sponsor required: patchset required for sponsor -
Localization: typos and other localization changes that should be also in the release branch -
Other: please explain
Merging
-
Merge to tor-browser
-!fixups
totor-browser
-specific commits, new features, security backports -
Merge to base-browser
-!fixups
tobase-browser
-specific commits, new features to be shared withmullvad-browser
, and security backports-
NOTE: if your changeset includes patches to both
base-browser
andtor-browser
please clearly label in the change description which commits should be cherry-picked tobase-browser
after merging
-
NOTE: if your changeset includes patches to both
Issue Tracking
-
Link resolved issues with appropriate Release Prep issue for changelog generation
Review
Request Reviewer
-
Request review from an applications developer depending on modified system: -
NOTE: if the MR modifies multiple areas, please
/cc
all the relevant reviewers (since gitlab only allows 1 reviewer) - accessibility : henry
- android : clairehurst, dan
- build system : boklm
- extensions : ma1
- firefox internals (XUL/JS/XPCOM) : jwilde, ma1
- fonts : pierov
- frontend (implementation) : henry
- frontend (review) : donuts, richard
- localization : henry, pierov
- macOS : clairehurst, dan
- nightly builds : boklm
- rebases/release-prep : dan, ma1, pierov, richard
- security : jwilde, ma1
- signing : boklm, richard
- updater : pierov
- windows : jwilde, richard
- misc/other : pierov, richard
-
NOTE: if the MR modifies multiple areas, please
Change Description
Added check to ensure the app is bootstrapped before opening links, preventing the app from entering a bad state (specifically a browser with the internet disabled that also can't be bootstraped without an app restart). Instead it opens a Snackbar that prompts the user to connect. If the user taps "Connect", the app will show the bootstrap screen and automatically attempt to connect (so far this is the same behavior as if the user navigated back and tapped connect manually). If the connection finishes after starting from this new entry point, the webpage that would have loaded earlier now automatically loads.
How I fixed this also partly fixes #42651 (closed) as the user is no longer forced out of the settings page once the bootstrap finishes. However, there still isn't any feedback to the user that the bootstrap finished. For future work I'm debating between a toast notification (easy) and making the progress bar visible on all screens of the app (harder).
I also partly helped set up for future connection assist work, specifically dealing with some TODO's written by @henry
I also edited the base FenixSnackbar xml to match the figma designs and also what @felicia put in a comment below
How Tested
Launch the app, but don't bootstrap. Go to settings and test that every button that would normally open a webpage, instead shows a Snackbar (as shown above). Known examples are "Donate to The Tor Project" (at the bottom of the normal settings page), the top 2 buttons in "About Tor Browser" (What's new in Tor Browser, Support, the other two are about: pages and load without internet), and "Find more extensions" in the Extensions page. Make sure that the connect button on the Snackbar properly navigates back to the bootstrap screen and properly loads the requested webpage.