Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: gnome-initial-se...@packages.debian.org
Control: affects -1 + src:gnome-initial-setup
Control: block -1 by 1029206

Please unblock package gnome-initial-setup. Note that this unblock
request is entangled with #1029206: in their current state, either they
will both migrate, or neither will.

[ Reason ]
* Fix the Privacy Policy link when asking whether to enable Mozilla
  Location Services (#1033228)
* Compatibility with a longer-term-supported WebKitGTK (see #1029206)

[ Impact ]
A minor code change in 43.2-5 is a blocker for #1029206.

Additionally, if not unblocked, the "privacy policy" hyperlink in
the Privacy tab will not do anything when gnome-initial-setup is run
automatically on a system that has no user accounts yet. This doesn't
normally happen on Debian systems, because d-i creates a user account,
but it can happen if d-i was not used or if the d-i-created user account
was deleted. (#1033228)

The "privacy policy" link not working seems like something that would
make us look bad.

[ Tests ]
Tested manually with the steps in #1033228. Briefly: deleted the user
account created by d-i, then rebooted and went through initial setup as
if for the first time, then re-ran initial setup as the logged-in user
to simulate what would normally happen after a d-i installation.

The upstream change for #1033228 includes a corresponding change for a
UI toggle for whether to enable automatic crash reporting (Fedora's abrt).
In practice this widget is not visible in Debian, because we don't have
abrt, so that part is untested - but it's very similar to the UI toggle
for location services.

[ Risks ]
The upstream changes to fix #1033228 are mostly declarative and I would
say they are low risk.

The upstream changes to fix FTBFS with the new WebKitGTK from #1029206 are
very simple.

If #1029206 can't happen for some reason, then this version will be unable
to migrate. A contingency plan is to revert the build-dependency change.
The patch applied for #1029206 is unnecessary but harmless if we revert to
the old WebKitGTK.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

unblock gnome-initial-setup/43.2-6
diffstat for gnome-initial-setup-43.2 gnome-initial-setup-43.2

 debian/changelog                                                 |   28 ++
 debian/control                                                   |    2 
 debian/control.in                                                |    2 
 debian/patches/Update-for-removal-of-WebKitGTK-sandbox-API.patch |   26 ++
 debian/patches/privacy-Move-subtitles-to-separate-labels.patch   |  121 ++++++++++
 debian/patches/series                                            |    2 
 gnome-initial-setup/gis-driver.c                                 |    2 
 gnome-initial-setup/pages/privacy/gis-privacy-page.c             |    6 
 gnome-initial-setup/pages/privacy/gis-privacy-page.ui            |   31 ++
 9 files changed, 214 insertions(+), 6 deletions(-)

diff -Nru gnome-initial-setup-43.2/debian/changelog gnome-initial-setup-43.2/debian/changelog
--- gnome-initial-setup-43.2/debian/changelog	2023-03-06 23:46:19.000000000 +0000
+++ gnome-initial-setup-43.2/debian/changelog	2023-03-20 15:27:27.000000000 +0000
@@ -1,3 +1,31 @@
+gnome-initial-setup (43.2-6) unstable; urgency=medium
+
+  * Team upload
+  * d/p/privacy-Move-subtitles-to-separate-labels.patch:
+    Fix Mozilla Location Services privacy policy link in kiosk mode.
+    The privacy policy links on the Privacy page are meant to be overridden
+    to open in an embedded (WebKitGTK-based) web browser widget instead of
+    an external web browser, but a regression in the port to GTK 4 between
+    GNOME 42 and 43 caused this behaviour to break.
+    In existing-user mode (run on the first GNOME login for a new user
+    account), the link would previously have opened in the default web
+    browser (normally Firefox), which is harmless but was not the
+    intended UX.
+    In new-user mode (when no user accounts exist), Initial Setup runs in a
+    captive "kiosk mode" to create the first user account. In this mode, the
+    link would previously not do anything. A mitigation is that this failure
+    mode is rarely seen in Debian, because the installer normally creates a
+    user account. (Closes: #1033228)
+
+ -- Simon McVittie <s...@debian.org>  Mon, 20 Mar 2023 15:27:27 +0000
+
+gnome-initial-setup (43.2-5) unstable; urgency=medium
+
+  * Build against webkitgtk 6.0 instead of 5.0
+  * Cherry-pick a build fix for latest webkitgtk
+
+ -- Jeremy Bicha <jbi...@ubuntu.com>  Wed, 15 Mar 2023 20:18:52 -0400
+
 gnome-initial-setup (43.2-4) unstable; urgency=medium
 
   * Team upload
diff -Nru gnome-initial-setup-43.2/debian/control gnome-initial-setup-43.2/debian/control
--- gnome-initial-setup-43.2/debian/control	2023-03-06 23:46:19.000000000 +0000
+++ gnome-initial-setup-43.2/debian/control	2023-03-20 15:27:27.000000000 +0000
@@ -36,7 +36,7 @@
                librest-dev (>= 0.9.1),
                libsecret-1-dev (>= 0.18.8),
                libsystemd-dev [linux-any],
-               libwebkit2gtk-5.0-dev,
+               libwebkitgtk-6.0-dev,
                libxml2-utils,
                meson (>= 0.50.0),
                systemd ( >= 242),
diff -Nru gnome-initial-setup-43.2/debian/control.in gnome-initial-setup-43.2/debian/control.in
--- gnome-initial-setup-43.2/debian/control.in	2023-03-06 23:46:19.000000000 +0000
+++ gnome-initial-setup-43.2/debian/control.in	2023-03-20 15:27:27.000000000 +0000
@@ -32,7 +32,7 @@
                librest-dev (>= 0.9.1),
                libsecret-1-dev (>= 0.18.8),
                libsystemd-dev [linux-any],
-               libwebkit2gtk-5.0-dev,
+               libwebkitgtk-6.0-dev,
                libxml2-utils,
                meson (>= 0.50.0),
                systemd ( >= 242),
diff -Nru gnome-initial-setup-43.2/debian/patches/privacy-Move-subtitles-to-separate-labels.patch gnome-initial-setup-43.2/debian/patches/privacy-Move-subtitles-to-separate-labels.patch
--- gnome-initial-setup-43.2/debian/patches/privacy-Move-subtitles-to-separate-labels.patch	1970-01-01 01:00:00.000000000 +0100
+++ gnome-initial-setup-43.2/debian/patches/privacy-Move-subtitles-to-separate-labels.patch	2023-03-20 15:27:27.000000000 +0000
@@ -0,0 +1,121 @@
+From: Georges Basile Stavracas Neto <georges.stavra...@gmail.com>
+Date: Tue, 14 Mar 2023 15:29:45 -0300
+Subject: privacy: Move subtitles to separate labels
+
+Prior to 71e3e2b4, the subtitles were contained into separate
+GtkLabels connected to the the 'activate-link' signal. That commit
+moved these labels to inside the corresponding AdwActionRows, but
+did not account for the 'activate-link' signal.
+
+To the best of my knowledgethere is currently no way to properly
+support this with libadwaita rows. In addition to that, the latest
+mockup [1] suggest placing these labels beneath the listbox anyway.
+
+Move the subtitle labels to outside the action row, into a separate
+labels beneath the listbox. Connect to the 'activate-link' signal
+again.
+
+[1] https://gitlab.gnome.org/Teams/Design/os-mockups/-/raw/master/initial-setup/initial-setup.png
+
+(cherry picked from commit d230f18dc50bc40977b613845c8d50d1327cacf4)
+
+Bug: https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/issues/181
+Bug-Debian: https://bugs.debian.org/1033228
+Forwarded: https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/merge_requests/196
+---
+ .../pages/privacy/gis-privacy-page.c               |  6 ++---
+ .../pages/privacy/gis-privacy-page.ui              | 31 +++++++++++++++++++++-
+ 2 files changed, 33 insertions(+), 4 deletions(-)
+
+diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.c b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
+index 3632142..21e5d48 100644
+--- a/gnome-initial-setup/pages/privacy/gis-privacy-page.c
++++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
+@@ -42,7 +42,7 @@ struct _GisPrivacyPagePrivate
+ {
+   GtkWidget *location_switch;
+   GtkWidget *reporting_group;
+-  GtkWidget *reporting_row;
++  GtkWidget *reporting_label;
+   GtkWidget *reporting_switch;
+   GSettings *location_settings;
+   GSettings *privacy_settings;
+@@ -82,7 +82,7 @@ update_os_data (GisPrivacyPage *page)
+       subtitle = g_strdup_printf (_("Sends technical reports that have personal information automatically "
+                                     "removed. Data is collected by %s."), name);
+     }
+-  adw_action_row_set_subtitle (ADW_ACTION_ROW (priv->reporting_row), subtitle);
++  gtk_label_set_markup (GTK_LABEL (priv->reporting_label), subtitle);
+ }
+ 
+ static void
+@@ -244,7 +244,7 @@ gis_privacy_page_class_init (GisPrivacyPageClass *klass)
+   gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/initial-setup/gis-privacy-page.ui");
+   gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, location_switch);
+   gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_group);
+-  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_row);
++  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_label);
+   gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_switch);
+   gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), activate_link);
+ 
+diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.ui b/gnome-initial-setup/pages/privacy/gis-privacy-page.ui
+index 84ea8e3..6c48d5f 100644
+--- a/gnome-initial-setup/pages/privacy/gis-privacy-page.ui
++++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.ui
+@@ -25,7 +25,6 @@
+               <object class="AdwActionRow">
+                 <property name="use-markup">True</property>
+                 <property name="title" translatable="yes">Location Services</property>
+-                <property name="subtitle" translatable="yes">Allows applications to determine your geographical location. Uses the Mozilla Location Service (&lt;a href='https://location.services.mozilla.com/privacy'&gt;privacy policy&lt;/a&gt;).</property>
+                 <property name="activatable-widget">location_switch</property>
+                 <child>
+                   <object class="GtkSwitch" id="location_switch">
+@@ -34,11 +33,27 @@
+                 </child>
+               </object>
+             </child>
++            <child>
++              <object class="GtkLabel">
++                <property name="margin-top">12</property>
++                <property name="wrap">True</property>
++                <property name="wrap-mode">word-char</property>
++                <property name="use-markup">True</property>
++                <property name="ellipsize">none</property>
++                <property name="xalign">0.0</property>
++                <property name="label" translatable="yes">Allows applications to determine your geographical location. Uses the Mozilla Location Service (&lt;a href='https://location.services.mozilla.com/privacy'&gt;privacy policy&lt;/a&gt;).</property>
++                <signal name="activate-link" handler="activate_link" object="GisPrivacyPage" swapped="no" />
++                <style>
++                  <class name="caption" />
++                </style>
++              </object>
++            </child>
+           </object>
+         </child>
+ 
+         <child>
+           <object class="AdwPreferencesGroup" id="reporting_group">
++            <property name="margin-top">12</property>
+             <child>
+               <object class="AdwActionRow" id="reporting_row">
+                 <property name="title" translatable="yes">Automatic Problem Reporting</property>
+@@ -50,6 +65,20 @@
+                 </child>
+               </object>
+             </child>
++            <child>
++              <object class="GtkLabel" id="reporting_label">
++                <property name="margin-top">12</property>
++                <property name="wrap">True</property>
++                <property name="wrap-mode">word-char</property>
++                <property name="use-markup">True</property>
++                <property name="ellipsize">none</property>
++                <property name="xalign">0.0</property>
++                <signal name="activate-link" handler="activate_link" object="GisPrivacyPage" swapped="no" />
++                <style>
++                  <class name="caption" />
++                </style>
++              </object>
++            </child>
+           </object>
+         </child>
+ 
diff -Nru gnome-initial-setup-43.2/debian/patches/series gnome-initial-setup-43.2/debian/patches/series
--- gnome-initial-setup-43.2/debian/patches/series	2023-03-06 23:46:19.000000000 +0000
+++ gnome-initial-setup-43.2/debian/patches/series	2023-03-20 15:27:27.000000000 +0000
@@ -4,3 +4,5 @@
 keyboard-Update-filter-and-sort-when-the-display-name-cha.patch
 driver-Set-a-non-trivial-window-title.patch
 reenable-existing-user-mode.patch
+Update-for-removal-of-WebKitGTK-sandbox-API.patch
+privacy-Move-subtitles-to-separate-labels.patch
diff -Nru gnome-initial-setup-43.2/debian/patches/Update-for-removal-of-WebKitGTK-sandbox-API.patch gnome-initial-setup-43.2/debian/patches/Update-for-removal-of-WebKitGTK-sandbox-API.patch
--- gnome-initial-setup-43.2/debian/patches/Update-for-removal-of-WebKitGTK-sandbox-API.patch	1970-01-01 01:00:00.000000000 +0100
+++ gnome-initial-setup-43.2/debian/patches/Update-for-removal-of-WebKitGTK-sandbox-API.patch	2023-03-20 15:27:27.000000000 +0000
@@ -0,0 +1,26 @@
+From: Michael Catanzaro <mcatanz...@redhat.com>
+Date: Thu, 19 Jan 2023 20:07:40 -0600
+Subject: Update for removal of WebKitGTK sandbox API
+
+WebKitGTK 2.39.5 contains an ABI break. The sandbox is now mandatory, so
+the API to enable/disable it is gone.
+
+(cherry picked from commit 1a8f9ecfceb2e3106910b7bf7987f0fc75886670)
+---
+ gnome-initial-setup/gis-driver.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/gnome-initial-setup/gis-driver.c b/gnome-initial-setup/gis-driver.c
+index 8459efa..574887c 100644
+--- a/gnome-initial-setup/gis-driver.c
++++ b/gnome-initial-setup/gis-driver.c
+@@ -788,7 +788,9 @@ gis_driver_startup (GApplication *app)
+ 
+   G_APPLICATION_CLASS (gis_driver_parent_class)->startup (app);
+ 
++#if !WEBKIT_CHECK_VERSION(2, 39, 5)
+   webkit_web_context_set_sandbox_enabled (context, TRUE);
++#endif
+ 
+   if (driver->mode == GIS_DRIVER_MODE_NEW_USER)
+     connect_to_gdm (driver);
diff -Nru gnome-initial-setup-43.2/gnome-initial-setup/gis-driver.c gnome-initial-setup-43.2/gnome-initial-setup/gis-driver.c
--- gnome-initial-setup-43.2/gnome-initial-setup/gis-driver.c	2023-03-20 16:33:29.000000000 +0000
+++ gnome-initial-setup-43.2/gnome-initial-setup/gis-driver.c	2023-03-20 16:33:29.000000000 +0000
@@ -788,7 +788,9 @@
 
   G_APPLICATION_CLASS (gis_driver_parent_class)->startup (app);
 
+#if !WEBKIT_CHECK_VERSION(2, 39, 5)
   webkit_web_context_set_sandbox_enabled (context, TRUE);
+#endif
 
   if (driver->mode == GIS_DRIVER_MODE_NEW_USER)
     connect_to_gdm (driver);
diff -Nru gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.c gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.c
--- gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.c	2022-12-02 15:11:34.000000000 +0000
+++ gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.c	2023-03-20 16:33:29.000000000 +0000
@@ -42,7 +42,7 @@
 {
   GtkWidget *location_switch;
   GtkWidget *reporting_group;
-  GtkWidget *reporting_row;
+  GtkWidget *reporting_label;
   GtkWidget *reporting_switch;
   GSettings *location_settings;
   GSettings *privacy_settings;
@@ -82,7 +82,7 @@
       subtitle = g_strdup_printf (_("Sends technical reports that have personal information automatically "
                                     "removed. Data is collected by %s."), name);
     }
-  adw_action_row_set_subtitle (ADW_ACTION_ROW (priv->reporting_row), subtitle);
+  gtk_label_set_markup (GTK_LABEL (priv->reporting_label), subtitle);
 }
 
 static void
@@ -244,7 +244,7 @@
   gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/initial-setup/gis-privacy-page.ui");
   gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, location_switch);
   gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_group);
-  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_row);
+  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_label);
   gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_switch);
   gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), activate_link);
 
diff -Nru gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.ui gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.ui
--- gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.ui	2022-12-02 15:11:34.000000000 +0000
+++ gnome-initial-setup-43.2/gnome-initial-setup/pages/privacy/gis-privacy-page.ui	2023-03-20 16:33:29.000000000 +0000
@@ -25,7 +25,6 @@
               <object class="AdwActionRow">
                 <property name="use-markup">True</property>
                 <property name="title" translatable="yes">Location Services</property>
-                <property name="subtitle" translatable="yes">Allows applications to determine your geographical location. Uses the Mozilla Location Service (&lt;a href='https://location.services.mozilla.com/privacy'&gt;privacy policy&lt;/a&gt;).</property>
                 <property name="activatable-widget">location_switch</property>
                 <child>
                   <object class="GtkSwitch" id="location_switch">
@@ -34,11 +33,27 @@
                 </child>
               </object>
             </child>
+            <child>
+              <object class="GtkLabel">
+                <property name="margin-top">12</property>
+                <property name="wrap">True</property>
+                <property name="wrap-mode">word-char</property>
+                <property name="use-markup">True</property>
+                <property name="ellipsize">none</property>
+                <property name="xalign">0.0</property>
+                <property name="label" translatable="yes">Allows applications to determine your geographical location. Uses the Mozilla Location Service (&lt;a href='https://location.services.mozilla.com/privacy'&gt;privacy policy&lt;/a&gt;).</property>
+                <signal name="activate-link" handler="activate_link" object="GisPrivacyPage" swapped="no" />
+                <style>
+                  <class name="caption" />
+                </style>
+              </object>
+            </child>
           </object>
         </child>
 
         <child>
           <object class="AdwPreferencesGroup" id="reporting_group">
+            <property name="margin-top">12</property>
             <child>
               <object class="AdwActionRow" id="reporting_row">
                 <property name="title" translatable="yes">Automatic Problem Reporting</property>
@@ -50,6 +65,20 @@
                 </child>
               </object>
             </child>
+            <child>
+              <object class="GtkLabel" id="reporting_label">
+                <property name="margin-top">12</property>
+                <property name="wrap">True</property>
+                <property name="wrap-mode">word-char</property>
+                <property name="use-markup">True</property>
+                <property name="ellipsize">none</property>
+                <property name="xalign">0.0</property>
+                <signal name="activate-link" handler="activate_link" object="GisPrivacyPage" swapped="no" />
+                <style>
+                  <class name="caption" />
+                </style>
+              </object>
+            </child>
           </object>
         </child>
 

Reply via email to