-
-
Notifications
You must be signed in to change notification settings - Fork 829
Fix multi-tab session lock on Firefox not being cleared #11800
Conversation
Signed-off-by: Manuel Huber <info@manuelhu.de>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your contribution!
Tested on both chrome & firefox
// only remove the ping if we still think we're the owner. Otherwise we could be removing someone else's claim! | ||
if (lockServicer !== null) { | ||
prefixedLogger.debug("page hide: clearing our claim"); | ||
window.clearInterval(lockServicer); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like this is new.
On balance, adding it is probably a good idea.
Previously I left the lockServicer in place, which would mean if the page came back to life, we would reclaim the lock. But that is racy: if we clear our claim, but the lockServicer fires again before the tab actually dies, we'll end up with a stuck claim.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this was my motivation - with the two handlers the risk to have a racy access might be higher. But I did not think about the page after being restored.
To close the bfache hole, couldn't we listen to pageshow
with event.persisted==true
and immediately re-start the lock servicer? But this might induce other problems, e.g.
- have one Element instance in bfcache
- open another instance in another tab (which works after the lock is expired)
- restore the first instance of the bfcache
Maybe listening for pageshow
with event.persisted==true
and somehow forcing the session to be re-initialized would be better (or just reloading the whole app?).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, there are no ideal solutions here. To be honest, my understanding is that the presence of an unload
handler prevents the app being eligible for the bfcache anyway, so it's probably fine in practice. Longer term, the "right" solution is to fix multi-tab loading so we don't need any of this locking business (element-hq/element-web#26231).
* Knock on a ask-to-join room if a module wants to join the room when navigating to a room ([\matrix-org#11787](matrix-org#11787)). Contributed by @dhenneke. * Element-R: Include crypto info in sentry ([\matrix-org#11798](matrix-org#11798)). Contributed by @florianduros. * Element-R: Include crypto info in rageshake ([\matrix-org#11797](matrix-org#11797)). Contributed by @florianduros. * Element-R: Add current version of the rust-sdk and vodozemac ([\matrix-org#11785](matrix-org#11785)). Contributed by @florianduros. * Fix unfederated invite dialog ([\matrix-org#9618](matrix-org#9618)). Fixes element-hq/element-meta#1466 and element-hq/element-web#22102. Contributed by @owi92. * New right panel visual language ([\matrix-org#11664](matrix-org#11664)). * OIDC: add friendly errors ([\matrix-org#11184](matrix-org#11184)). Fixes element-hq/element-web#25665. Contributed by @kerryarchibald. * Fix rightpanel hiding scrollbar ([\matrix-org#11831](matrix-org#11831)). Contributed by @kerryarchibald. * Fix multi-tab session lock on Firefox not being cleared ([\matrix-org#11800](matrix-org#11800)). Fixes element-hq/element-web#26165. Contributed by @ManuelHu. * Deserialise spoilers back into slash command form ([\matrix-org#11805](matrix-org#11805)). Fixes element-hq/element-web#26344. * Fix Incorrect message scaling for verification request ([\matrix-org#11793](matrix-org#11793)). Fixes element-hq/element-web#24304. Contributed by @capGoblin. * Fix: Unable to restore a soft-logged-out session established via SSO ([\matrix-org#11794](matrix-org#11794)). Fixes element-hq/element-web#25957. Contributed by @kerryarchibald. * Use configurable github issue links more consistently ([\matrix-org#11796](matrix-org#11796)). * Fix io.element.late_event received_ts vs received_at ([\matrix-org#11789](matrix-org#11789)). * Make invitation dialog scrollable when infos are too long ([\matrix-org#11753](matrix-org#11753)). Contributed by @nurjinjafar. * Fix spoiler text-align ([\matrix-org#11790](matrix-org#11790)). Contributed by @ajbura. * Fix: Right panel keeps showing chat when unmaximizing widget. ([\matrix-org#11697](matrix-org#11697)). Fixes element-hq/element-web#26265. Contributed by @manancodes. * Fix margin of invite to room button ([\matrix-org#11780](matrix-org#11780)). Fixes element-hq/element-web#26410. * Update base64 import ([\matrix-org#11784](matrix-org#11784)). * Set max size for Element logo in search warning ([\matrix-org#11779](matrix-org#11779)). Fixes element-hq/element-web#26408. * Fix: emoji size in room header topic, remove obsolete emoji style ([\matrix-org#11757](matrix-org#11757)). Fixes element-hq/element-web#26326. Contributed by @kerryarchibald. * Fix: Bubble layout design is broken ([\matrix-org#11763](matrix-org#11763)). Fixes element-hq/element-web#25818. Contributed by @manancodes.
Changes in [1.11.55](https://github.com/element-hq/element-web/releases/tag/v1.11.55) (2024-01-19) ================================================================================================== ## ✨ Features * Broaden support for matrix spec versions ([#12159](matrix-org/matrix-react-sdk#12159)). Contributed by @RiotRobot. ## 🐛 Bug Fixes * Fixed shield alignment on message Input ([#12155](matrix-org/matrix-react-sdk#12155)). Contributed by @RiotRobot. Changes in [1.11.54](https://github.com/element-hq/element-web/releases/tag/v1.11.54) (2024-01-16) ================================================================================================== ## 🐛 Bug Fixes * Fix CSS stacking context order determinism ([#26840](element-hq/element-web#26840)). Contributed by @t3chguy. ## ✨ Features * Accessibility improvements around aria-labels and tooltips ([#12062](matrix-org/matrix-react-sdk#12062)). Contributed by @t3chguy. * Add RoomKnocksBar to RoomHeader ([#12077](matrix-org/matrix-react-sdk#12077)). Contributed by @charlynguyen. * Adjust tooltip side for DecoratedRoomAvatar to not obscure room name ([#12079](matrix-org/matrix-react-sdk#12079)). Contributed by @t3chguy. * Iterate landmarks around the app in order to improve a11y ([#12064](matrix-org/matrix-react-sdk#12064)). Contributed by @t3chguy. * Update element call embedding UI ([#12056](matrix-org/matrix-react-sdk#12056)). Contributed by @toger5. * Use Compound tooltips instead of homegrown in TextWithTooltip \& InfoTooltip ([#12052](matrix-org/matrix-react-sdk#12052)). Contributed by @t3chguy. ## 🐛 Bug Fixes * Fix regression around CSS stacking contexts and PIP widgets ([#12094](matrix-org/matrix-react-sdk#12094)). Contributed by @t3chguy. * Fix Identity Server terms accepting not working as expected ([#12109](matrix-org/matrix-react-sdk#12109)). Contributed by @t3chguy. * fix: microphone and camera dropdown doesn't work In legacy call ([#12105](matrix-org/matrix-react-sdk#12105)). Contributed by @muratersin. * Revert "Set up key backup using non-deprecated APIs (#12005)" ([#12102](matrix-org/matrix-react-sdk#12102)). Contributed by @BillCarsonFr. * Fix regression around read receipt animation from refs changes ([#12100](matrix-org/matrix-react-sdk#12100)). Contributed by @t3chguy. * Added meaning full error message based on platform ([#12074](matrix-org/matrix-react-sdk#12074)). Contributed by @Pankaj-SinghR. * Fix editing event from search room view ([#11992](matrix-org/matrix-react-sdk#11992)). Contributed by @t3chguy. * Fix timeline position when moving to a room and coming back ([#12055](matrix-org/matrix-react-sdk#12055)). Contributed by @florianduros. * Fix threaded reply playwright tests ([#12070](matrix-org/matrix-react-sdk#12070)). Contributed by @dbkr. * Element-R: fix repeated requests to enter 4S key during cross-signing reset ([#12059](matrix-org/matrix-react-sdk#12059)). Contributed by @richvdh. * Fix position of thumbnail in room timeline ([#12016](matrix-org/matrix-react-sdk#12016)). Contributed by @anoopw3bdev. Changes in [1.11.53](https://github.com/element-hq/element-web/releases/tag/v1.11.53) (2024-01-04) ================================================================================================== ## 🐛 Bug Fixes * Fix a fresh login creating a new key backup ([#12106](matrix-org/matrix-react-sdk#12106)). Changes in [1.11.52](https://github.com/element-hq/element-web/releases/tag/v1.11.52) (2023-12-19) ================================================================================================== ## ✨ Features * Keep more recent rageshake logs ([#12003](matrix-org/matrix-react-sdk#12003)). Contributed by @richvdh. ## 🐛 Bug Fixes * Fix bug which prevented correct clean up of rageshake store ([#12002](matrix-org/matrix-react-sdk#12002)). Contributed by @richvdh. * Set up key backup using non-deprecated APIs ([#12005](matrix-org/matrix-react-sdk#12005)). Contributed by @andybalaam. * Fix notifications appearing for old events ([#3946](matrix-org/matrix-js-sdk#3946)). Contributed by @dbkr. * Prevent phantom notifications from events not in a room's timeline ([#3942](matrix-org/matrix-js-sdk#3942)). Contributed by @dbkr. Changes in [1.11.51](https://github.com/vector-im/element-web/releases/tag/v1.11.51) (2023-12-05) ================================================================================================= ## ✨ Features * Improve debian package and docs ([#26618](element-hq/element-web#26618)). Contributed by @t3chguy. ## 🦖 Deprecations * Remove Quote from MessageContextMenu as it is unsupported by WYSIWYG ([#11914](matrix-org/matrix-react-sdk#11914)). Contributed by @t3chguy. ## ✨ Features * Always allow call.member events on new rooms ([#11948](matrix-org/matrix-react-sdk#11948)). Contributed by @toger5. * Right panel: view third party invite info without clearing history ([#11934](matrix-org/matrix-react-sdk#11934)). Contributed by @kerryarchibald. * Allow switching to system emoji font ([#11925](matrix-org/matrix-react-sdk#11925)). Contributed by @t3chguy. * Update open in other tab message ([#11916](matrix-org/matrix-react-sdk#11916)). Contributed by @weeman1337. * Add menu for legacy and element call in 1:1 rooms ([#11910](matrix-org/matrix-react-sdk#11910)). Contributed by @toger5. * Add ringing for matrixRTC ([#11870](matrix-org/matrix-react-sdk#11870)). Contributed by @toger5. ## 🐛 Bug Fixes * Keep device language when it has been previosuly set, after a successful delegated authentication flow that clears localStorage ([#11902](matrix-org/matrix-react-sdk#11902)). Contributed by @mgcm. * Fix misunderstanding of functional members ([#11918](matrix-org/matrix-react-sdk#11918)). Contributed by @toger5. * Fix: Video Room Chat Header Button Removed ([#11911](matrix-org/matrix-react-sdk#11911)). Contributed by @kerryarchibald. * Fix "not attempting encryption" warning ([#11899](matrix-org/matrix-react-sdk#11899)). Contributed by @richvdh. Changes in [1.11.50](https://github.com/vector-im/element-web/releases/tag/v1.11.50) (2023-11-21) ================================================================================================= ## ✨ Features * Ship element-web as a debian package ([#26533](element-hq/element-web#26533)). Contributed by @t3chguy. * Update room summary card header ([#11823](matrix-org/matrix-react-sdk#11823)). Contributed by @germain-gg. * Add feature flag for disabling encryption in Element Call ([#11837](matrix-org/matrix-react-sdk#11837)). Contributed by @toger5. * Adapt the rendering of extra icons in the room header ([#11835](matrix-org/matrix-react-sdk#11835)). Contributed by @charlynguyen. * Implement new unreachable state and fix broken string ref ([#11748](matrix-org/matrix-react-sdk#11748)). Contributed by @MidhunSureshR. * Allow adding extra icons to the room header ([#11799](matrix-org/matrix-react-sdk#11799)). Contributed by @charlynguyen. ## 🐛 Bug Fixes * Room header: do not collapse avatar or facepile ([#11866](matrix-org/matrix-react-sdk#11866)). Contributed by @kerryarchibald. * New right panel: fix button alignment in memberlist ([#11861](matrix-org/matrix-react-sdk#11861)). Contributed by @kerryarchibald. * Use the correct video call icon variant ([#11859](matrix-org/matrix-react-sdk#11859)). Contributed by @robintown. * fix broken warning icon ([#11862](matrix-org/matrix-react-sdk#11862)). Contributed by @ara4n. * Fix rightpanel hiding scrollbar ([#11831](matrix-org/matrix-react-sdk#11831)). Contributed by @kerryarchibald. * Switch to updating presence via /sync calls instead of PUT /presence ([#11824](matrix-org/matrix-react-sdk#11824)). Contributed by @t3chguy. Changes in [1.11.49](https://github.com/vector-im/element-web/releases/tag/v1.11.49) (2023-11-13) ================================================================================================= ## ✨ Features * Ship element-web as a debian package ([\#26533](element-hq/element-web#26533)). Fixes #2777. ## 🐛 Bug Fixes * Ensure `setUserCreator` is called when a store is assigned ([\#3867](matrix-org/matrix-js-sdk#3867)). Fixes element-hq/element-web#26520. Contributed by @MidhunSureshR. Changes in [1.11.48](https://github.com/vector-im/element-web/releases/tag/v1.11.48) (2023-11-07) ================================================================================================= ## ✨ Features * Correctly fill window.matrixChat even when a Wrapper module is active ([\#26395](element-hq/element-web#26395)). Contributed by @dhenneke. * Knock on a ask-to-join room if a module wants to join the room when navigating to a room ([\#11787](matrix-org/matrix-react-sdk#11787)). Contributed by @dhenneke. * Element-R: Include crypto info in sentry ([\#11798](matrix-org/matrix-react-sdk#11798)). Contributed by @florianduros. * Element-R: Include crypto info in rageshake ([\#11797](matrix-org/matrix-react-sdk#11797)). Contributed by @florianduros. * Element-R: Add current version of the rust-sdk and vodozemac ([\#11785](matrix-org/matrix-react-sdk#11785)). Contributed by @florianduros. * Fix unfederated invite dialog ([\#9618](matrix-org/matrix-react-sdk#9618)). Fixes element-hq/element-meta#1466 and #22102. Contributed by @owi92. * New right panel visual language ([\#11664](matrix-org/matrix-react-sdk#11664)). * OIDC: add friendly errors ([\#11184](matrix-org/matrix-react-sdk#11184)). Fixes #25665. Contributed by @kerryarchibald. ## 🐛 Bug Fixes * Fix rightpanel hiding scrollbar ([\#11831](matrix-org/matrix-react-sdk#11831)). Contributed by @kerryarchibald. * Fix multi-tab session lock on Firefox not being cleared ([\#11800](matrix-org/matrix-react-sdk#11800)). Fixes #26165. Contributed by @ManuelHu. * Deserialise spoilers back into slash command form ([\#11805](matrix-org/matrix-react-sdk#11805)). Fixes #26344. * Fix Incorrect message scaling for verification request ([\#11793](matrix-org/matrix-react-sdk#11793)). Fixes #24304. Contributed by @capGoblin. * Fix: Unable to restore a soft-logged-out session established via SSO ([\#11794](matrix-org/matrix-react-sdk#11794)). Fixes #25957. Contributed by @kerryarchibald. * Use configurable github issue links more consistently ([\#11796](matrix-org/matrix-react-sdk#11796)). * Fix io.element.late_event received_ts vs received_at ([\#11789](matrix-org/matrix-react-sdk#11789)). * Make invitation dialog scrollable when infos are too long ([\#11753](matrix-org/matrix-react-sdk#11753)). Contributed by @nurjinjafar. * Fix spoiler text-align ([\#11790](matrix-org/matrix-react-sdk#11790)). Contributed by @ajbura. * Fix: Right panel keeps showing chat when unmaximizing widget. ([\#11697](matrix-org/matrix-react-sdk#11697)). Fixes #26265. Contributed by @manancodes. * Fix margin of invite to room button ([\#11780](matrix-org/matrix-react-sdk#11780)). Fixes #26410. * Update base64 import ([\#11784](matrix-org/matrix-react-sdk#11784)). * Set max size for Element logo in search warning ([\#11779](matrix-org/matrix-react-sdk#11779)). Fixes #26408. * Fix: emoji size in room header topic, remove obsolete emoji style ([\#11757](matrix-org/matrix-react-sdk#11757)). Fixes #26326. Contributed by @kerryarchibald. * Fix: Bubble layout design is broken ([\#11763](matrix-org/matrix-react-sdk#11763)). Fixes #25818. Contributed by @manancodes.
Fixes element-hq/element-web#26165
As described in the issue, the
pagehide
event is currently not reliably called in Firefox, which will lead to the session lock not being cleared. If Element was re-opened quickly after closing, this leads to confusing messages shown to the user and additional waiting time at startup.By my tests, the
unload
event is fired more reliably. Chrome docs discourage the usage of theunload
event, and MDN states that it might not be called at all by Chrome - so my change also keeps thepagehide
handler, and only adds theunload
handler.Checklist
Notes: Fix multi-tab session lock on Firefox not being cleared
Type: defect
Here's what your changelog entry will look like:
🐛 Bug Fixes