diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx131-eu.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx131-eu.html new file mode 100644 index 00000000000..cac92ad9365 --- /dev/null +++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx131-eu.html @@ -0,0 +1,107 @@ +{# + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. +#} + +{% from "macros-protocol.html" import split with context %} + +{% extends "firefox/whatsnew/base.html" %} + +{% block page_title %}{{ ftl('whatsnew-page-title-v2') }}{% endblock %} + +{#- This will appear as which can be used for social share -#} +{% block page_og_desc %}{{ ftl('whatsnew-page-description') }}{% endblock %} + +{% block body_id %}firefox-whatsnew{% endblock %} + +{% block page_css %} + {{ css_bundle('protocol-split') }} + {{ css_bundle('firefox_whatsnew_131_eu') }} +{% endblock %} + +{% block site_header %}{% endblock %} + +{% if nimbus_variant == 'v4' %} + {% if LANG == 'de' %} + {% set main_title = 'Firefox blockt Tracker automatisch' %} + {% set main_tagline = 'Firefox schützt dich während du browst. Weißt du, wie viele Tracker er allein letzte Woche für dich geblockt hat?' %} + {% set main_cta = 'Zu meiner Schutzmaßnahmen-Übersicht' %} + {% elif LANG == 'fr' %} + {% set main_title = 'Firefox bloque les traqueurs par défaut' %} + {% set main_tagline = 'Firefox vous protège en arrière-plan pendant que vous naviguez. Savez-vous combien de traqueurs ont été bloqués rien que la semaine dernière ?' %} + {% set main_cta = 'Voir mon tableau de bord des protections' %} + {% else %} + {% set main_title = 'Firefox blocks trackers by default' %} + {% set main_tagline = 'Firefox protects you in the background while you browse. Do you know how many trackers were blocked just last week?' %} + {% set main_cta = 'See my protections dashboard' %} + {% endif %} +{% else %} + {% if LANG == 'de' %} + {% set main_title = 'Cookies bleiben da, wo sie hingehören' %} + {% set main_tagline = 'Wusstest du, dass Cookies dir von Seite zu Seite folgen? Unser vollständiger Cookie-Schutz hält sie davon ab, damit das, was du auf einer Website machst, auf dieser Website bleibt.' %} + {% set main_cta = 'Mehr erfahren' %} + {% elif LANG == 'fr' %} + {% set main_title = 'Gardez les cookies à leur place' %} + {% set main_tagline = 'Saviez-vous que les cookies vous suivaient de site en site ? Notre protection totale contre les cookies les contient, pour que ce que vous fassiez sur un site web reste sur ce site web.' %} + {% set main_cta = 'En savoir plus' %} + {% else %} + {% set main_title = 'Keep cookies in their place' %} + {% set main_tagline = 'Did you know cookies follow you from site to site? Our total cookie protection contains them, so what you do on one website stays on that website.' %} + {% set main_cta = 'Learn more' %} + {% endif %} +{% endif %} + +{% block wnp_content %} +
+ {% call split( + block_class='mzp-l-split-center-on-sm-md', + image=resp_img( + url='img/firefox/whatsnew/whatsnew131-eu/main-image-500.png', + srcset={ + 'img/firefox/whatsnew/whatsnew131-eu/main-image-500.png': '500w', + 'img/firefox/whatsnew/whatsnew131-eu/main-image-700.png': '700w', + 'img/firefox/whatsnew/whatsnew131-eu/main-image-900.png': '900w', + 'img/firefox/whatsnew/whatsnew131-eu/main-image-1100.png': '1100w', + }, + sizes={ + '(min-width: 1400px)': '550px', + '(min-width: 768px)': '50vw', + 'default': '100vw' + }, + optional_attributes={ + 'height': '500', + 'width': '550', + 'class': 'c-banner-media mzp-c-split-media-asset' + } + ), + media_after=False + ) %} + +

{{ main_title }}

+

{{ main_tagline }}

+ + {% if nimbus_variant == 'v3' %} + + {{ main_cta }} + + {% else %} + + {{ main_cta }} + + {% endif %} + {% endcall %} +
+ + +{% endblock %} + +{% block js %} + {% if nimbus_variant == 'v4' %} + {{ js_bundle('firefox_whatsnew_131_protections_dashboard') }} + {% endif %} + {{ js_bundle('firefox_whatsnew_131') }} +{% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx131-na.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx131-na.html new file mode 100644 index 00000000000..0b49f8badf9 --- /dev/null +++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx131-na.html @@ -0,0 +1,47 @@ +{# + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + #} + +{% extends "firefox/whatsnew/base.html" %} + +{% block page_title %}{{ ftl('whatsnew-page-title-v2') }}{% endblock %} + +{#- This will appear as which can be used for social share -#} +{% block page_og_desc %}{{ ftl('whatsnew-page-description') }}{% endblock %} + +{% block body_id %}firefox-whatsnew{% endblock %} + +{% block page_css %} + {{ css_bundle('firefox_whatsnew_131_na') }} +{% endblock %} + +{% block site_header %}{% endblock %} + +{% block wnp_content %} +
+
+ + +

Hop around the web without
being followed

+ +

Firefox makes it hard for companies to track you, so you can
keep your browsing activity to yourself.

+ +

+ + Tell me more + +

+
+
+ + +{% endblock %} + +{% block js %} + {{ js_bundle('firefox_whatsnew_131') }} +{% endblock %} diff --git a/bedrock/firefox/tests/test_base.py b/bedrock/firefox/tests/test_base.py index 15f768ba216..fcaa887c937 100644 --- a/bedrock/firefox/tests/test_base.py +++ b/bedrock/firefox/tests/test_base.py @@ -946,6 +946,181 @@ def test_fx_130_0_0_en_us_v1(self, render_mock): # end 130.0 whatsnew tests + # begin 131.0 whatsnew tests + + @override_settings(DEV=True) + def test_fx_131_0_0_en_us_no_experiment(self, render_mock): + """Should use default WNP template for en-US when no experiment params are present""" + req = self.rf.get("/firefox/whatsnew/") + req.locale = "en-US" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_us_v1(self, render_mock): + """Should use default WNP template for en-US locale when branch=experiment-wnp-131-tabs and variant=v1""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v1") + req.locale = "en-US" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_us_v2(self, render_mock): + """Should use whatsnew-fx131-na.html template for en-US locale when branch=experiment-wnp-131-tabs and variant=v2""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v2") + req.locale = "en-US" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-na.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_ca_no_experiment(self, render_mock): + """Should use default WNP template for en-CA when no experiment params are present""" + req = self.rf.get("/firefox/whatsnew/") + req.locale = "en-US" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_ca_v1(self, render_mock): + """Should use default WNP template for en-CA locale when branch=experiment-wnp-131-tabs and variant=v1""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v1") + req.locale = "en-CA" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_ca_v2(self, render_mock): + """Should use whatsnew-fx131-na.html template for en-CA locale when branch=experiment-wnp-131-tabs and variant=v2""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v2") + req.locale = "en-CA" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-na.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_gb_no_experiment(self, render_mock): + """Should use default WNP template for en-GB when no experiment params are present""" + req = self.rf.get("/firefox/whatsnew/") + req.locale = "en-GB" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_gb_v1(self, render_mock): + """Should use default WNP template for en-GB locale when branch=experiment-wnp-131-tabs and variant=v1""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v1") + req.locale = "en-GB" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_gb_v3(self, render_mock): + """Should use whatsnew-fx131-eu.html template for en-GB locale when branch=experiment-wnp-131-tabs and variant=v3""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v3") + req.locale = "en-GB" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-eu.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_en_gb_v4(self, render_mock): + """Should use whatsnew-fx131-eu.html template for en-GB locale when branch=experiment-wnp-131-tabs and variant=v4""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v4") + req.locale = "en-GB" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-eu.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_de_no_experiment(self, render_mock): + """Should use default WNP template for de when no experiment params are present""" + req = self.rf.get("/firefox/whatsnew/") + req.locale = "de" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_de_v1(self, render_mock): + """Should use default WNP template for de locale when branch=experiment-wnp-131-tabs and variant=v1""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v1") + req.locale = "de" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_de_v3(self, render_mock): + """Should use whatsnew-fx131-eu.html template for de locale when branch=experiment-wnp-131-tabs and variant=v3""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v3") + req.locale = "de" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-eu.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_de_v4(self, render_mock): + """Should use whatsnew-fx131-eu.html template for de locale when branch=experiment-wnp-131-tabs and variant=v4""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v4") + req.locale = "de" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-eu.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_fr_no_experiment(self, render_mock): + """Should use default WNP template for fr when no experiment params are present""" + req = self.rf.get("/firefox/whatsnew/") + req.locale = "fr" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_fr_v1(self, render_mock): + """Should use default WNP template for de locale when branch=experiment-wnp-131-tabs and variant=v1""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v1") + req.locale = "fr" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_fr_v3(self, render_mock): + """Should use whatsnew-fx131-eu.html template for de locale when branch=experiment-wnp-131-tabs and variant=v3""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v3") + req.locale = "fr" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-eu.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_fr_v4(self, render_mock): + """Should use whatsnew-fx131-eu.html template for de locale when branch=experiment-wnp-131-tabs and variant=v4""" + req = self.rf.get("/firefox/whatsnew/?branch=experiment-wnp-131-tabs&variant=v4") + req.locale = "fr" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/whatsnew-fx131-eu.html"] + + @override_settings(DEV=True) + def test_fx_131_0_0_other_locales(self, render_mock): + """Should use default WNP template for locales that are not part of the experiment""" + req = self.rf.get("/firefox/whatsnew/") + req.locale = "es-ES" + self.view(req, version="131.0") + template = render_mock.call_args[0][1] + assert template == ["firefox/whatsnew/index.html"] + + # begin 131.0 whatsnew tests + @patch("bedrock.firefox.views.l10n_utils.render", return_value=HttpResponse()) class TestFirstRun(TestCase): diff --git a/bedrock/firefox/views.py b/bedrock/firefox/views.py index 722de867b57..cb442fecd06 100644 --- a/bedrock/firefox/views.py +++ b/bedrock/firefox/views.py @@ -488,6 +488,8 @@ class WhatsnewView(L10nTemplateView): "firefox/whatsnew/whatsnew-fx129-na.html": ["firefox/whatsnew/whatsnew"], "firefox/whatsnew/whatsnew-fx129-eu.html": ["firefox/whatsnew/whatsnew"], "firefox/whatsnew/whatsnew-fx130.html": ["firefox/whatsnew/whatsnew"], + "firefox/whatsnew/whatsnew-fx131-na.html": ["firefox/whatsnew/whatsnew"], + "firefox/whatsnew/whatsnew-fx131-eu.html": ["firefox/whatsnew/whatsnew"], } # specific templates that should not be rendered in @@ -497,6 +499,9 @@ class WhatsnewView(L10nTemplateView): # place expected ?v= values in this list variations = ["1", "2", "3", "4"] + # Nimbus experiment variation expected values + nimbus_variations = ["v1", "v2", "v3", "v4"] + def get_context_data(self, **kwargs): ctx = super().get_context_data(**kwargs) version = self.kwargs.get("version") or "" @@ -522,12 +527,18 @@ def get_context_data(self, **kwargs): ctx["utm_params"] = f"utm_source={entrypoint}&utm_medium=referral&utm_campaign={campaign}&entrypoint={entrypoint}" variant = self.request.GET.get("v", None) + nimbus_variant = self.request.GET.get("variant", None) # ensure variant matches pre-defined value if variant not in self.variations: variant = None + # ensure nimbus_variant matches pre-defined value + if nimbus_variant not in self.nimbus_variations: + nimbus_variant = None + ctx["variant"] = variant + ctx["nimbus_variant"] = nimbus_variant return ctx @@ -579,6 +590,18 @@ def get_template_names(self): template = "firefox/whatsnew/index.html" else: template = "firefox/whatsnew/index.html" + elif version.startswith("131."): + if nimbus_branch == "experiment-wnp-131-tabs": + if nimbus_variant == "v1": + template = "firefox/whatsnew/index.html" + elif locale in ["en-US", "en-CA"] and nimbus_variant == "v2": + template = "firefox/whatsnew/whatsnew-fx131-na.html" + elif locale in ["en-GB", "de", "fr"] and nimbus_variant in ["v3", "v4"]: + template = "firefox/whatsnew/whatsnew-fx131-eu.html" + else: + template = "firefox/whatsnew/index.html" + else: + template = "firefox/whatsnew/index.html" elif version.startswith("130."): if locale in ["en-US", "en-GB", "en-CA", "de", "fr", "es-ES", "it", "pl"]: if nimbus_branch == "experiment-wnp-130-tabs": diff --git a/media/css/firefox/whatsnew/includes/_mofo-donate-cta.scss b/media/css/firefox/whatsnew/includes/_mofo-donate-cta.scss index 6f6d625a91e..ae445e8679f 100644 --- a/media/css/firefox/whatsnew/includes/_mofo-donate-cta.scss +++ b/media/css/firefox/whatsnew/includes/_mofo-donate-cta.scss @@ -13,11 +13,20 @@ color: $color-white !important; border-color: $color-white !important; + .mzp-c-button-icon-start > svg > path { + fill: $color-white !important; + } + &:hover, &:focus, &:active { color: $color-black !important; + + .mzp-c-button-icon-start > svg > path { + fill: $color-black !important; + } } + } } } diff --git a/media/css/firefox/whatsnew/whatsnew-131-eu.scss b/media/css/firefox/whatsnew/whatsnew-131-eu.scss new file mode 100644 index 00000000000..9b63fb29f0f --- /dev/null +++ b/media/css/firefox/whatsnew/whatsnew-131-eu.scss @@ -0,0 +1,45 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +@import 'includes/base'; +@import '~@mozilla-protocol/core/protocol/css/includes/lib'; +@import '~@mozilla-protocol/core/protocol/css/components/notification-bar'; +@import 'includes/dark-mode'; +@import 'includes/mofo-donate-cta'; + +.wnp-content-main { + text-align: center; + + .mzp-l-content { + padding-top: $spacing-lg; + padding-bottom: $layout-xl; + } +} + +.wnp-main-title { + @include text-title-md; + margin-top: $spacing-sm; +} + +.wnp-main-tagline { + margin: 0 auto $spacing-lg; +} + +@media (min-height: 700px) { + .wnp-main-tagline { + margin-bottom: $spacing-xl; + } + + .wnp-main-title { + margin-top: $spacing-xl; + } +} + +// Dark mode support +@media (prefers-color-scheme: dark) { + .wnp-main-title, + .wnp-main-tagline { + color: $color-white; + } +} diff --git a/media/css/firefox/whatsnew/whatsnew-131-na.scss b/media/css/firefox/whatsnew/whatsnew-131-na.scss new file mode 100644 index 00000000000..9f36c47a5f4 --- /dev/null +++ b/media/css/firefox/whatsnew/whatsnew-131-na.scss @@ -0,0 +1,53 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +@import 'includes/base'; +@import '~@mozilla-protocol/core/protocol/css/includes/lib'; +@import '~@mozilla-protocol/core/protocol/css/components/notification-bar'; + +.wnp-content-main { + text-align: center; + + .mzp-l-content { + padding-top: $spacing-lg; + padding-bottom: $layout-xl; + } +} + +.wnp-main-title { + @include text-title-md; + margin-top: $spacing-sm; + + br { + display: none; + } +} + +.wnp-main-tagline { + margin: 0 auto $spacing-lg; + + br { + display: none; + } +} + +@media #{$mq-md} { + .wnp-main-title br { + display: block; + } + + .wnp-main-tagline br { + display: block; + } +} + +@media (min-height: 700px) { + .wnp-main-tagline { + margin-bottom: $spacing-xl; + } + + .wnp-main-title { + margin-top: $spacing-xl; + } +} diff --git a/media/img/firefox/whatsnew/whatsnew131-eu/main-image-1100.png b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-1100.png new file mode 100644 index 00000000000..6623aecc278 Binary files /dev/null and b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-1100.png differ diff --git a/media/img/firefox/whatsnew/whatsnew131-eu/main-image-500.png b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-500.png new file mode 100644 index 00000000000..a8597431b6d Binary files /dev/null and b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-500.png differ diff --git a/media/img/firefox/whatsnew/whatsnew131-eu/main-image-700.png b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-700.png new file mode 100644 index 00000000000..ccad69014ff Binary files /dev/null and b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-700.png differ diff --git a/media/img/firefox/whatsnew/whatsnew131-eu/main-image-900.png b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-900.png new file mode 100644 index 00000000000..3390ca08396 Binary files /dev/null and b/media/img/firefox/whatsnew/whatsnew131-eu/main-image-900.png differ diff --git a/media/img/firefox/whatsnew/whatsnew131-na/main-image.svg b/media/img/firefox/whatsnew/whatsnew131-na/main-image.svg new file mode 100644 index 00000000000..36b01e35f14 --- /dev/null +++ b/media/img/firefox/whatsnew/whatsnew131-na/main-image.svg @@ -0,0 +1 @@ + diff --git a/media/js/firefox/whatsnew/whatsnew-131-protections-dashboard.js b/media/js/firefox/whatsnew/whatsnew-131-protections-dashboard.js new file mode 100644 index 00000000000..3e91cab33de --- /dev/null +++ b/media/js/firefox/whatsnew/whatsnew-131-protections-dashboard.js @@ -0,0 +1,29 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +function handleOpenProtectionReport(e) { + 'use strict'; + + e.preventDefault(); + + window.dataLayer.push({ + event: 'widget_action', + type: 'protection report', + action: 'open', + label: 'See my protections dashboard' + }); + + Mozilla.UITour.showProtectionReport(); +} + +// Intercept link clicks to open about:protections page using UITour. +Mozilla.UITour.ping(() => { + 'use strict'; + + document + .getElementById('protections-dashboard') + .addEventListener('click', handleOpenProtectionReport, false); +}); diff --git a/media/js/firefox/whatsnew/whatsnew-131.js b/media/js/firefox/whatsnew/whatsnew-131.js new file mode 100644 index 00000000000..f0123341397 --- /dev/null +++ b/media/js/firefox/whatsnew/whatsnew-131.js @@ -0,0 +1,43 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +// Log account status +Mozilla.Client.getFxaDetails((details) => { + 'use strict'; + + if (details.setup) { + // GA4 + window.dataLayer.push({ + event: 'dimension_set', + firefox_is_signed_in: true + }); + } else { + // GA4 + window.dataLayer.push({ + event: 'dimension_set', + firefox_is_signed_in: false + }); + } +}); + +// Log default status +Mozilla.UITour.getConfiguration('appinfo', (details) => { + 'use strict'; + + if (details.defaultBrowser) { + // GA4 + window.dataLayer.push({ + event: 'dimension_set', + firefox_is_default: true + }); + } else { + // GA4 + window.dataLayer.push({ + event: 'dimension_set', + firefox_is_default: false + }); + } +}); diff --git a/media/static-bundles.json b/media/static-bundles.json index e1456e334c0..124976501b1 100644 --- a/media/static-bundles.json +++ b/media/static-bundles.json @@ -435,6 +435,18 @@ ], "name": "firefox_whatsnew_130" }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-131-na.scss" + ], + "name": "firefox_whatsnew_131_na" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-131-eu.scss" + ], + "name": "firefox_whatsnew_131_eu" + }, { "files": [ "css/privacy/privacy-email.scss" @@ -1549,6 +1561,18 @@ ], "name": "firefox_whatsnew_130" }, + { + "files": [ + "js/firefox/whatsnew/whatsnew-131.js" + ], + "name": "firefox_whatsnew_131" + }, + { + "files": [ + "js/firefox/whatsnew/whatsnew-131-protections-dashboard.js" + ], + "name": "firefox_whatsnew_131_protections_dashboard" + }, { "files": [ "js/mozorg/manifesto.js"