Page MenuHomePhabricator

[Bug] All mobile options reverted when desktop preferences saved
Closed, ResolvedPublicBUG REPORT

Description

Steps to reproduce

  1. Login and visit https://en.m.wikipedia.beta.wmflabs.org/w/index.php?title=Special:MobileOptions on the MinervaNeue mobile site.
  2. Enable AMC.
  3. Visit https://en.m.wikipedia.beta.wmflabs.org/wiki/Special:Preferences.
  4. Toggle "Default to newcomer homepage from username link in personal tools" and save.

Expected results

  • Special:MobileOptions persist.

Actual results

  • All Special:MobileOptions are reverted.

Environments observed

  • Browser version: Chromium v75.0.3770.90
  • OS version: Ubuntu v19.04
  • Device model: Desktop
  • Device language: English

Questions

  • Does this affect the AMC opt-in and opt-out rates?

Developer notes

The problem is that the amc user preference registration is done incorrectly. It uses only UserGetDefaultOptions hook to set a default user option value, but it does not use register option via GetPreferences hook.
Most probably GetPreferences hook wasn't handled because we didn't want to show AMC mode on Special:Preferences page. But we need to register it with type=api so option is registered, but not visible on the Special:Preferences page.

What currently happens:
Everything starts in DefaultPreferencesFactory::saveFormData()

  • DefaultPreferencesFactory::saveFormData() calls user->resetOptions( 'unused', $form->getContext() );
  • User::resetOptions loads all user options and uses options definitions (loaded via GetPreferences hook)
  • if option definition does not exist it's marked as 'unused' and later removed

image.png (206×704 px, 42 KB)

Important note: AMC is not the only option that is removed on the Special:Preferences save. MediaWiki core also removes:

  • mobile-specialpages
  • mfMode -- Beta Mode works only because we set up the cookie. The beta-opt-out graph might be broken.

Please fix also those.

Event Timeline

Jdlrobson subscribed.

Needs some analysis from Piotr and then an estimation.

Change 526277 had a related patch set uploaded (by Pmiazga; owner: Pmiazga):
[mediawiki/extensions/MobileFrontend@master] Register mfMode and mf_amc_optin via GetPreferences hook

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

Jdlrobson triaged this task as Medium priority.Jul 29 2019, 11:27 PM

Change 526277 merged by Jdlrobson:
[mediawiki/extensions/MobileFrontend@master] Register mfMode and mf_amc_optin via GetPreferences hook

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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy