Page MenuHomePhabricator

Refactor mediawiki.confirmCloseWindow (2021)
Closed, ResolvedPublic

Description

There is a ton of unused, broken, or otherwise questionable logic in this module. This is a tracking task for the various related patches I'll be submitting shortly to thin it down a bit.

Mainly these three things:

Remove unused savedUnloadHandler logic

This hasn't worked or otherwise done anything since 2013 (ref T35566), when we switched the code from using window.onbeforeunload, to using window.addEventListener (via jQuery), but kept this "Firefox 3 bug fix" using the old method, and thus didn't do anything since then.

It seems plausible that the Firefox bug relating to the "beforeunload" event handler would happen via either registration mechanism. But, if that were the case, we would have presumably had a bug report by now about something having regressed.

More likely, the bug was either fixed at some point since Firefox 3, or perhaps it really was limited to the legacy window.onbeforeunload property.

Remove jQuery-event-namespace option

I have no idea why this exists. I suspect maybe the patch author in 2013 didn't know that event handlers can be removed by passingn the function reference, and perhaps the namespace was a way to be able to unregister just our handler (instead of also unregistering handlers from other unrelated features).

Defer or remove interface message processing

All major browsers have removed support for displaying a custom message upon tab-closing. As such, I suggest we remove the code for this instead of shipping, translating, parsing, and returning a string that is never displayed.

https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event

FirefoxEdgeSafariChrome
firefox.png (662×1 px, 102 KB)
edge.png (417×1 px, 223 KB)
Screenshot 2021-05-19 at 18.38.17.png (582×1 px, 194 KB)
chrome.png (681×1 px, 220 KB)

Event Timeline

Change 692957 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] mediawiki.confirmCloseWindow: Remove unused `savedUnloadHandler` logic

https://gerrit.wikimedia.org/r/692957

Change 692966 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] mediawiki.confirmCloseWindow: Unbind event by function reference

https://gerrit.wikimedia.org/r/692966

Change 692967 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/extensions/MobileFrontend@master] mobile.editor.overlay: Remove unused `mfeditorwarning` code

https://gerrit.wikimedia.org/r/692967

Change 693018 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/extensions/Translate@master] ext.translate.base: Remove redundant 'pageshow' handler

https://gerrit.wikimedia.org/r/693018

Change 693018 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] ext.translate.base: Remove redundant 'pageshow' handler

https://gerrit.wikimedia.org/r/693018

Change 692967 merged by jenkins-bot:

[mediawiki/extensions/MobileFrontend@master] mobile.editor.overlay: Remove unused `mfeditorwarning` code

https://gerrit.wikimedia.org/r/692967

Change 692957 merged by jenkins-bot:

[mediawiki/core@master] mediawiki.confirmCloseWindow: Remove unused `savedUnloadHandler` logic

https://gerrit.wikimedia.org/r/692957

Change 692966 merged by jenkins-bot:

[mediawiki/core@master] mediawiki.confirmCloseWindow: Unbind event by function reference

https://gerrit.wikimedia.org/r/692966

To do: Remove wasted message text processing code, and remove related interface message(s).

Change 719156 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] mediawiki.confirmCloseWindow: Remove support for custom 'message'

https://gerrit.wikimedia.org/r/719156

Change 719156 merged by jenkins-bot:

[mediawiki/core@master] mediawiki.confirmCloseWindow: Remove support for custom 'message'

https://gerrit.wikimedia.org/r/719156