Skip to content

Commit

Permalink
Firefox privacy notice and legal terms for ToS (Fixes mozilla#15872)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexgibson committed Jan 23, 2025
1 parent f13a56d commit bb6dd6c
Show file tree
Hide file tree
Showing 14 changed files with 411 additions and 18 deletions.
33 changes: 33 additions & 0 deletions bedrock/legal/templates/legal/terms/firefox-tos.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{#
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 "legal/docs-base.html" %}

{% block page_title %}{{ ftl('legal-firefox-rights') }}{% endblock %}

{% block site_css %}
{% if switch('m24-website-refresh') %}
{{ css_bundle('m24-root') }}
{% endif %}
{{ css_bundle('protocol-firefox') }}
{% endblock %}

{% block page_css %}
{{ css_bundle('legal-terms-firefox-tos') }}
{% endblock %}

{% block site_header %}{% endblock %}

{% block side_nav %}{% endblock %}

{# disable GA on Fx Privacy Notice. Bug 1576673 #}
{% block google_analytics %}{% endblock %}
{% block glean %}{% endblock %}

{# Exclude stub attribution for in-product pages: issus 9620 #}
{% block stub_attribution %}{% endblock %}

{% block site_footer %}{% endblock %}
32 changes: 32 additions & 0 deletions bedrock/legal/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# 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 unittest.mock import patch

from django.http import HttpResponse
from django.test.client import RequestFactory

from bedrock.legal import views
from bedrock.legal_docs import views as legal_docs_views
from bedrock.mozorg.tests import TestCase


@patch("bedrock.firefox.views.l10n_utils.render", return_value=HttpResponse())
@patch.object(legal_docs_views, "load_legal_doc")
class TestFirefoxTermsOfServiceDocView(TestCase):
def test_default_template(self, render_mock, lld_mock):
req = RequestFactory().get("/about/legal/terms/firefox/")
req.locale = "en-US"
view = views.FirefoxTermsOfServiceDocView.as_view()
view(req)
template = lld_mock.call_args[0][1]
assert template == "legal/terms/firefox.html"

def test_tos_template(self, render_mock, lld_mock):
req = RequestFactory().get("/about/legal/terms/firefox/?v=product")
req.locale = "en-US"
view = views.FirefoxTermsOfServiceDocView.as_view()
view(req)
template = lld_mock.call_args[0][1]
assert template == "legal/terms/firefox-tos.html"
2 changes: 1 addition & 1 deletion bedrock/legal/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
page("terms/builders-challenge/", "legal/terms/builders-challenge.html"),
path(
"terms/firefox/",
LegalDocView.as_view(template_name="legal/terms/firefox.html", legal_doc_name="firefox_about_rights"),
views.FirefoxTermsOfServiceDocView.as_view(legal_doc_name="firefox_about_rights"),
name="legal.terms.firefox",
),
path(
Expand Down
12 changes: 12 additions & 0 deletions bedrock/legal/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,25 @@

from bedrock.base.urlresolvers import reverse
from bedrock.legal.forms import FraudReportForm
from bedrock.legal_docs.views import LegalDocView
from lib import l10n_utils

FRAUD_REPORT_EMAIL_FROM = settings.DEFAULT_FROM_EMAIL
FRAUD_REPORT_EMAIL_SUBJECT = "New trademark infringement report: %s; %s"
FRAUD_REPORT_EMAIL_TO = ["[email protected]"]


class FirefoxTermsOfServiceDocView(LegalDocView):
def get_template_names(self):
variant = self.request.GET.get("v", None)
template_name = "legal/terms/firefox.html"

if variant == "product":
template_name = "legal/terms/firefox-tos.html"

return [template_name]


def submit_form(request, form):
form_submitted = True

Expand Down
10 changes: 6 additions & 4 deletions bedrock/privacy/templates/privacy/base-protocol.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,12 @@ <h1 itemprop="name">{% block title %}{% endblock %}</h1>
{% endif %}
{% endblock %}
</main>
<aside class="mzp-l-sidebar">
{{ sidemenu_lists([navigation_bar], body_id) }}
{% block side_extra %}{% endblock %}
</aside>
{% block sidemenu %}
<aside class="mzp-l-sidebar">
{{ sidemenu_lists([navigation_bar], body_id) }}
{% block side_extra %}{% endblock %}
</aside>
{% endblock %}
</div>
{% endblock %}

Expand Down

This file was deleted.

40 changes: 40 additions & 0 deletions bedrock/privacy/templates/privacy/notices/firefox-tos.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{#
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 "privacy/notices/base-notice-headings.html" %}

{% block site_css %}
{% if switch('m24-website-refresh') %}
{{ css_bundle('m24-root') }}
{% endif %}
{{ css_bundle('protocol-firefox') }}
{% endblock %}

{% block page_css %}
{{ css_bundle('privacy_firefox_tos') }}
{% endblock %}

{% set body_id = "privacy_tos" %}

{% block site_header %}{% endblock %}

{% block sidemenu %}{% endblock %}

{% block article_header_logo %}{% endblock %}

{% block js %}
{{ super() }}
{{ js_bundle('privacy_firefox') }}
{% endblock %}

{# disable GA on Fx Privacy Notice. Bug 1576673 #}
{% block google_analytics %}{% endblock %}
{% block glean %}{% endblock %}

{# Exclude stub attribution for in-product pages: issus 9620 #}
{% block stub_attribution %}{% endblock %}

{% block site_footer %}{% endblock %}
1 change: 1 addition & 0 deletions bedrock/privacy/templates/privacy/notices/firefox.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

{# disable GA on Fx Privacy Notice. Bug 1576673 #}
{% block google_analytics %}{% endblock %}
{% block glean %}{% endblock %}

{# Exclude stub attribution for in-product pages: issus 9620 #}
{% block stub_attribution %}{% endblock %}
3 changes: 3 additions & 0 deletions bedrock/privacy/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 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/.
31 changes: 31 additions & 0 deletions bedrock/privacy/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# 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 unittest.mock import patch

from django.http import HttpResponse
from django.test.client import RequestFactory

from bedrock.mozorg.tests import TestCase
from bedrock.privacy import views


@patch("bedrock.firefox.views.l10n_utils.render", return_value=HttpResponse())
@patch.object(views.PrivacyDocView, "get_legal_doc")
class TestFirefoxTermsOfServiceDocView(TestCase):
def test_default_template(self, render_mock, lld_mock):
req = RequestFactory().get("/privacy/notices/firefox/")
req.locale = "en-US"
view = views.firefox_notices
view(req)
template = lld_mock.call_args[0][1]
assert template == "privacy/notices/firefox.html"

def test_tos_template(self, render_mock, lld_mock):
req = RequestFactory().get("/privacy/notices/firefox/?v=product")
req.locale = "en-US"
view = views.firefox_notices
view(req)
template = lld_mock.call_args[0][1]
assert template == "privacy/notices/firefox-tos.html"
9 changes: 6 additions & 3 deletions bedrock/privacy/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,13 @@ def get_legal_doc(self):
class FirefoxPrivacyDocView(PrivacyDocView):
def get_legal_doc(self):
doc = super().get_legal_doc()
if len(doc["content"].select(".privacy-header-firefox")) > 0:
self.template_name = "privacy/notices/firefox.html"
variant = self.request.GET.get("v", None)

if variant == "product":
self.template_name = "privacy/notices/firefox-tos.html"
else:
self.template_name = "privacy/notices/firefox-old-style-notice.html"
self.template_name = "privacy/notices/firefox.html"

return doc


Expand Down
48 changes: 48 additions & 0 deletions media/css/legal/legal-terms-firefox-tos.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// 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/.

@use '~@mozilla-protocol/core/protocol/css/includes/lib' as *;

// narrow top / bottom padding for modal display
#outer-wrapper > .mzp-l-content {
padding-bottom: $spacing-xl;
padding-top: $spacing-xl;
}

// narrow max-width for readability
@media #{$mq-lg} {
.mzp-l-main {
max-width: 640px;
margin: 0 auto;
}
}

// manual styling for markdown content.
.article-body {
h1 {
@include text-title-sm;
}

h2,
h3,
h4 {
@include text-title-xs;
}

blockquote {
@include text-body-lg;
}

ul {
list-style: disc;
}

ol {
list-style: decimal;
}

li {
margin: $spacing-sm $spacing-lg;
}
}
Loading

0 comments on commit bb6dd6c

Please sign in to comment.