Closed Bug 2051431 Opened 9 days ago Closed 6 days ago

[Homepage Sports Widget] Disable WorldCup Widget after a particular date

Categories

(Firefox for Android :: Homepage, task)

All
Android
task

Tracking

()

VERIFIED FIXED
154 Branch
Tracking Status
firefox152 --- verified
firefox153 + verified
firefox154 --- verified

People

(Reporter: nfurlan, Assigned: skhan)

References

(Blocks 1 open bug)

Details

(Whiteboard: [fxdroid] [group3])

Attachments

(3 files, 1 obsolete file)

Disable widget for all users after 2026-07-20T08:00:00Z UTC

Flags: qe-verify+

The bug is marked as tracked for firefox153 (beta). However, the bug still isn't assigned.

:gl, could you please find an assignee for this tracked bug? If you disagree with the tracking decision, please talk with the release managers.

For more information, please visit BugBot documentation.

Flags: needinfo?(gl)

Hide the widget once the World Cup is over, regardless of channel, experiment, or
the homepage-sports-widget feature flag. Add a fixed UTC cut-off instant
WORLD_CUP_END (2026-07-20T08:00:00Z, the day after the final) and hasWorldCupEnded(),
and gate SportsWidgetState.isShown on it so the homepage stops rendering the widget
at that instant for everyone.

A fixed UTC instant (not a local date) so the shutoff happens at the same moment
worldwide. Covered by CountdownCalculatorTest.

Assignee: nobody → skhan
Status: NEW → ASSIGNED

Hide the widget once the World Cup is over, regardless of channel, experiment, or
the homepage-sports-widget feature flag. Add a fixed UTC cut-off instant
WORLD_CUP_END (2026-07-20T08:00:00Z, the day after the final) and hasWorldCupEnded(),
a fixed UTC instant (not a local date) so the shutoff happens at the same moment
worldwide.

Gate everything user-facing on it:

  • SportsWidgetState.isShown -> the homepage stops rendering the widget, and because
    the HomeFragment.onResume fetch is guarded on isShown, no Merino fetch is made either.
  • The wordmark reverts to the plain Firefox logo with no tap target (shouldDisplaySportsLogo
    in Homepage), so the soccer logo / country-selector entry point is gone.
  • The Home settings "Show World Cup widget" toggle is forced off and hidden.
  • The Secret Settings "enable homepage sports widget" toggle is hidden.

Covered by CountdownCalculatorTest (hasWorldCupEnded boundaries).

Attachment #9603456 - Attachment is obsolete: true
Blocks: 2031450
Status: ASSIGNED → RESOLVED
Closed: 6 days ago
Resolution: --- → FIXED
Target Milestone: --- → 154 Branch

Are we going to want to ship this in a 152 dot release also?

Flags: needinfo?(gl) → needinfo?(skhan)

(In reply to Ryan VanderMeulen [:RyanVM] from comment #6)

Are we going to want to ship this in a 152 dot release also?

Yes we are. Sarah will create the uplifts today

Verified as fixed on the latest Nightly build (154.0a1 from 2026-07-02T21:20:26)

If the date set to July 19th, all the details mentioned in comment 3 are still available.

Once the date is set to 20th July (tested a few dates beyond it as well), all the above mentioned details are no longer shown.

Tested devices:

  • Motorola Nexus 6 (Android 8);
  • Samsung Note 10 (Android 12);
  • Samsung Galaxy S25 Ultra (Android 16);
  • Google Pixel 9 Pro XL (Android 17).

Marking the ticket as verified on 154.

Flags: qe-verify+

Hide the widget once the World Cup is over, regardless of channel, experiment, or
the homepage-sports-widget feature flag. Add a fixed UTC cut-off instant
WORLD_CUP_END (2026-07-20T08:00:00Z, the day after the final) and hasWorldCupEnded(),
a fixed UTC instant (not a local date) so the shutoff happens at the same moment
worldwide.

Gate everything user-facing on it:

  • SportsWidgetState.isShown -> the homepage stops rendering the widget, and because
    the HomeFragment.onResume fetch is guarded on isShown, no Merino fetch is made either.
  • The wordmark reverts to the plain Firefox logo with no tap target (shouldDisplaySportsLogo
    in Homepage), so the soccer logo / country-selector entry point is gone.
  • The Home settings "Show World Cup widget" toggle is hidden (the widget itself is hidden by the date gate; the saved preference is left untouched).
  • The Secret Settings "enable homepage sports widget" toggle is hidden.
  • Both toggles are also excluded from Settings search (main + secret) so they cannot be
    surfaced by search once the widget is retired.

Covered by CountdownCalculatorTest (hasWorldCupEnded boundaries).

Original Revision: https://phabricator.services.mozilla.com/D309644

(cherry picked from commit 20b1d9c966c604a40174df1082527f0641230f75)

Attachment #9604355 - Flags: approval-mozilla-beta?

Hide the widget once the World Cup is over, regardless of channel, experiment, or
the homepage-sports-widget feature flag. Add a fixed UTC cut-off instant
WORLD_CUP_END (2026-07-20T08:00:00Z, the day after the final) and hasWorldCupEnded(),
a fixed UTC instant (not a local date) so the shutoff happens at the same moment
worldwide.

Gate everything user-facing on it:

  • SportsWidgetState.isShown -> the homepage stops rendering the widget, and because
    the HomeFragment.onResume fetch is guarded on isShown, no Merino fetch is made either.
  • The wordmark reverts to the plain Firefox logo with no tap target (shouldDisplaySportsLogo
    in Homepage), so the soccer logo / country-selector entry point is gone.
  • The Home settings "Show World Cup widget" toggle is hidden (the widget itself is hidden by the date gate; the saved preference is left untouched).
  • The Secret Settings "enable homepage sports widget" toggle is hidden.
  • Both toggles are also excluded from Settings search (main + secret) so they cannot be
    surfaced by search once the widget is retired.

Covered by CountdownCalculatorTest (hasWorldCupEnded boundaries).

Original Revision: https://phabricator.services.mozilla.com/D309644

(cherry picked from commit 20b1d9c966c604a40174df1082527f0641230f75)

Attachment #9604358 - Flags: approval-mozilla-release?

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: After the World Cup final (2026-07-19), the homescreen World Cup widget, its soccer wordmark logo, and its Home-settings and Secret-settings toggles (including their Settings-search entries) remain visible indefinitely on the shipped channel. The widget would keep showing a finished/stale bracket with no automatic retirement. There is no server-side kill switch that removes the logo and the settings entry points — only this date-gated change retires them cleanly for all users at a fixed instant. Declining leaves dead World Cup UI in users' hands through the summer until a manual follow-up ships.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: yes
  • Steps to reproduce for manual QE testing: 1. Enable the widget (Nimbus rollout or the Secret Settings toggle) so it renders on the homescreen.
  1. With the device clock before 2026-07-20 08:00 UTC: confirm the widget shows, the soccer wordmark logo is tappable, and the Home ("Show World Cup widget") + Secret ("Enable Homepage Sports Widget") toggles are present and appear in Settings search.
  2. Set the device clock to 2026-07-20 08:00 UTC or later and restart the app: confirm the widget no longer renders (and makes no Merino fetch), the wordmark reverts to the plain Firefox logo with no tap target, both toggles are hidden, and neither appears in Home-settings search nor Secret-settings search.
  3. Move the clock back before the cutoff: the widget, logo, and toggles return (the saved preference was never mutated).
  • Risk associated with taking this patch: low
  • Explanation of risk level: Not risky. Small, self-contained change gated behind a single time check (hasWorldCupEnded()) that only flips at a fixed future instant (2026-07-20T08:00:00Z UTC); before that moment behavior is unchanged. No new strings, no data/schema migration, no network or protocol changes — it only hides existing UI and skips a fetch that was already conditional. The feature is default-off on Release. The search-exclusion reuses an existing, purpose-built excludedPreferenceKeys hook.
  • String changes made/needed?: no
  • Is Android affected?: yes
Flags: qe-verify+

firefox-release Uplift Approval Request

  • User impact if declined/Reason for urgency: After the World Cup final (2026-07-19), the homescreen World Cup widget, its soccer wordmark logo, and its Home-settings and Secret-settings toggles (including their Settings-search entries) remain visible indefinitely on the shipped channel. The widget would keep showing a finished/stale bracket with no automatic retirement. There is no server-side kill switch that removes the logo and the settings entry points — only this date-gated change retires them cleanly for all users at a fixed instant. Declining leaves dead World Cup UI in users' hands through the summer until a manual follow-up ships.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: yes
  • Steps to reproduce for manual QE testing: 1. Enable the widget (Nimbus rollout or the Secret Settings toggle) so it renders on the homescreen.
  1. With the device clock before 2026-07-20 08:00 UTC: confirm the widget shows, the soccer wordmark logo is tappable, and the Home ("Show World Cup widget") + Secret ("Enable Homepage Sports Widget") toggles are present and appear in Settings search.
  2. Set the device clock to 2026-07-20 08:00 UTC or later and restart the app: confirm the widget no longer renders (and makes no Merino fetch), the wordmark reverts to the plain Firefox logo with no tap target, both toggles are hidden, and neither appears in Home-settings search nor Secret-settings search.
  3. Move the clock back before the cutoff: the widget, logo, and toggles return (the saved preference was never mutated).
  • Risk associated with taking this patch: low
  • Explanation of risk level: Not risky. Small, self-contained change gated behind a single time check (hasWorldCupEnded()) that only flips at a fixed future instant (2026-07-20T08:00:00Z UTC); before that moment behavior is unchanged. No new strings, no data/schema migration, no network or protocol changes — it only hides existing UI and skips a fetch that was already conditional. The feature is default-off on Release. The search-exclusion reuses an existing, purpose-built excludedPreferenceKeys hook.
  • String changes made/needed?: no
  • Is Android affected?: yes
Attachment #9604355 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9604358 - Flags: approval-mozilla-release? → approval-mozilla-release+
Flags: needinfo?(skhan)

Verified as fixed on the latest Beta build (153.0b9) and latest RC build (152.0.5).

If the date set to July 20th, 7:30AM GMT time , all the details mentioned in comment 3 are still available.

Once the date is set to 21st July 7:30AM GMT time (tested a few dates beyond it as well), all the above mentioned details are no longer shown.

Tested devices:

  • Motorola Nexus 6 (Android 8);
  • Samsung Galaxy S25 Ultra (Android 16);
  • Google Pixel 9 Pro XL (Android 17).

Marking the ticket as verified on 152 and 153 as well.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: