[neon/backports-focal/xdg-desktop-portal/Neon/unstable] debian/patches: Update patches
Simon McVittie
null at kde.org
Wed Jan 13 06:32:43 GMT 2021
Git commit b0946c0679dce19660e9288bb980a1b4953a05c6 by Simon McVittie.
Committed on 07/09/2020 at 18:37.
Pushed by ash into branch 'Neon/unstable'.
Update patches
This includes upstream 1.7.2-37-g089e72b plus merge request
<https://github.com/flatpak/xdg-desktop-portal/pull/521>.
A +115 -0 debian/patches/FileChooser-Add-a-current_filter-return-value.patch
A +24 -0 debian/patches/Fix-typos-in-FileChooser-doc.patch
M +3 -2 debian/patches/Install-session.conf.in-to-expected-path-for-installed-te.patch
A +30 -0 debian/patches/Revert-Add-the-directory-option-to-the-file-chooser-impl-.patch
A +62 -0 debian/patches/Screencast-document-source_type-property-in-the-response.patch
A +35 -0 debian/patches/camera-make-client-node-as-visible.patch
A +66 -0 debian/patches/doc-Include-secret-portal-documentation.patch
A +41 -0 debian/patches/open-uri-Allow-skipping-chooser-for-more-URL-types.patch
A +71 -0 debian/patches/open-uri-Always-open-URIs-in-default-app.patch
A +25 -0 debian/patches/open-uri-Assert-that-find_recommended_choices-yields-non-.patch
A +53 -0 debian/patches/open-uri-Don-t-crash-if-there-is-no-default-or-latest-app.patch
A +46 -0 debian/patches/open-uri-Print-debug-information-when-OpenFile-URI-fails.patch
A +28 -0 debian/patches/open-uri-Reject-more-mismatched-open-requests.patch
A +73 -0 debian/patches/open-uri-Return-errors-from-launch_application_with_uri.patch
A +71 -0 debian/patches/open-uri-Show-app-chooser-when-default-app-does-not-exist.patch
A +34 -0 debian/patches/open-uri-Use-correct-app-ID-to-determine-whether-it-exist.patch
A +32 -0 debian/patches/open-uri-avoid-criticals-when-app-to-open-does-not-exist.patch
A +24 -0 debian/patches/pipewire-clean-up-the-registry-proxy.patch
A +24 -0 debian/patches/screen-cast-fix-array-element-size-for-permissions.patch
M +31 -5 debian/patches/series
A +87 -0 debian/patches/test-document-fuse-Quote-more-defensively.patch
D +0 -42 debian/patches/tests-Always-produce-verbose-output-from-subprocesses.patch
M +8 -7 debian/patches/tests-Divert-service-stdout-to-stderr.patch
A +63 -0 debian/patches/tests-Don-t-rely-on-PATH-to-launch-uninstalled.patch
A +65 -0 debian/patches/tests-Ensure-XDG_DATA_DIRS-is-well-formed.patch
A +60 -0 debian/patches/tests-Increase-timeouts-when-running-in-CI.patch
A +32 -0 debian/patches/tests-Make-app-chooser-backend-more-debuggable.patch
A +95 -0 debian/patches/tests-Make-sure-http2-test-always-runs.patch
M +1 -0 debian/patches/tests-Only-run-xdg-document-portal-in-foreground-when-uni.patch
A +34 -0 debian/patches/tests-Print-the-full-paths-of-what-we-re-trying-to-run.patch
A +27 -0 debian/patches/tests-Send-SIGTERM-to-dbus-daemon.patch
M +2 -0 debian/patches/tests-call-test-document-fuse.py-directly.patch
M +2 -0 debian/patches/tests-use-kill-from-PATH.patch
A +34 -0 debian/patches/xdp-Send-messages-to-stderr-not-stdout.patch
https://invent.kde.org/neon/backports-focal/xdg-desktop-portal/commit/b0946c0679dce19660e9288bb980a1b4953a05c6
diff --git a/debian/patches/FileChooser-Add-a-current_filter-return-value.patch b/debian/patches/FileChooser-Add-a-current_filter-return-value.patch
new file mode 100644
index 0000000..46f38c1
--- /dev/null
+++ b/debian/patches/FileChooser-Add-a-current_filter-return-value.patch
@@ -0,0 +1,115 @@
+From: Michael Weghorn <m.weghorn at posteo.de>
+Date: Sat, 23 May 2020 14:23:38 +0200
+Subject: FileChooser: Add a 'current_filter' return value
+
+Add a 'current_filter' element for the FileChooser
+response which is used to specify which filter
+was selected in the file chooser.
+
+This will allow making Gtk's
+'gtk_file_chooser_get_filter' work for the
+portal native file chooser.
+
+Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/1820
+Origin: upstream, 1.7.3, commit:35fca7fae881bdaba1bebccf7775eba84407a488
+---
+ data/org.freedesktop.impl.portal.FileChooser.xml | 18 ++++++++++++++++++
+ data/org.freedesktop.portal.FileChooser.xml | 18 ++++++++++++++++++
+ src/file-chooser.c | 5 +++++
+ 3 files changed, 41 insertions(+)
+
+diff --git a/data/org.freedesktop.impl.portal.FileChooser.xml b/data/org.freedesktop.impl.portal.FileChooser.xml
+index 873b2dd..8c684b0 100644
+--- a/data/org.freedesktop.impl.portal.FileChooser.xml
++++ b/data/org.freedesktop.impl.portal.FileChooser.xml
+@@ -109,6 +109,15 @@
+ See org.freedesktop.portal.FileChooser.OpenFile() for details.
+ </para></listitem>
+ </varlistentry>
++ <varlistentry>
++ <term>current_filter (sa(us))</term>
++ <listitem>
++ <para>
++ The filter that was selected.
++ See org.freedesktop.portal.FileChooser.OpenFile() for details.
++ </para>
++ </listitem>
++ </varlistentry>
+ <varlistentry>
+ <term>writable b</term>
+ <listitem><para>
+@@ -216,6 +225,15 @@
+ See org.freedesktop.portal.FileChooser.OpenFile() for details.
+ </para></listitem>
+ </varlistentry>
++ <varlistentry>
++ <term>current_filter (sa(us))</term>
++ <listitem>
++ <para>
++ The filter that was selected.
++ See org.freedesktop.portal.FileChooser.OpenFile() for details.
++ </para>
++ </listitem>
++ </varlistentry>
+ </variablelist>
+ -->
+ <method name="SaveFile">
+diff --git a/data/org.freedesktop.portal.FileChooser.xml b/data/org.freedesktop.portal.FileChooser.xml
+index f0c7408..8582abc 100644
+--- a/data/org.freedesktop.portal.FileChooser.xml
++++ b/data/org.freedesktop.portal.FileChooser.xml
+@@ -151,6 +151,15 @@
+ </para>
+ </listitem>
+ </varlistentry>
++ <varlistentry>
++ <term>current_filter (sa(us))</term>
++ <listitem>
++ <para>
++ The filter that was selected. This may match a filter in the
++ filter list or another filter that was applied unconditionally.
++ </para>
++ </listitem>
++ </varlistentry>
+ </variablelist>
+ -->
+ <method name="OpenFile">
+@@ -248,6 +257,15 @@
+ See org.freedesktop.portal.FileChooser.OpenFile() for details.
+ </para></listitem>
+ </varlistentry>
++ <varlistentry>
++ <term>current_filter (sa(us))</term>
++ <listitem>
++ <para>
++ The filter that was selected.
++ See org.freedesktop.portal.FileChooser.OpenFile() for details.
++ </para>
++ </listitem>
++ </varlistentry>
+ </variablelist>
+ -->
+ <method name="SaveFile">
+diff --git a/src/file-chooser.c b/src/file-chooser.c
+index 2e83821..166ae9a 100644
+--- a/src/file-chooser.c
++++ b/src/file-chooser.c
+@@ -79,6 +79,7 @@ send_response_in_thread_func (GTask *task,
+ const char **uris;
+ GVariant *choices;
+ gboolean for_save;
++ GVariant *current_filter;
+
+ g_variant_builder_init (&results, G_VARIANT_TYPE_VARDICT);
+ g_variant_builder_init (&ruris, G_VARIANT_TYPE_STRING_ARRAY);
+@@ -100,6 +101,10 @@ send_response_in_thread_func (GTask *task,
+ if (choices)
+ g_variant_builder_add (&results, "{sv}", "choices", choices);
+
++ current_filter = g_variant_lookup_value (options, "current_filter", G_VARIANT_TYPE ("(sa(us))"));
++ if (current_filter)
++ g_variant_builder_add (&results, "{sv}", "current_filter", current_filter);
++
+ if (g_variant_lookup (options, "uris", "^a&s", &uris))
+ {
+ int i;
diff --git a/debian/patches/Fix-typos-in-FileChooser-doc.patch b/debian/patches/Fix-typos-in-FileChooser-doc.patch
new file mode 100644
index 0000000..04bb3f6
--- /dev/null
+++ b/debian/patches/Fix-typos-in-FileChooser-doc.patch
@@ -0,0 +1,24 @@
+From: Michael Weghorn <m.weghorn at posteo.de>
+Date: Thu, 4 Jun 2020 21:04:10 +0200
+Subject: Fix typos in FileChooser doc
+
+Origin: upstream, 1.7.3, commit:b907d57fd6e45bebb4aca71f50b7017dbea7fc5a
+---
+ data/org.freedesktop.portal.FileChooser.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/data/org.freedesktop.portal.FileChooser.xml b/data/org.freedesktop.portal.FileChooser.xml
+index 8582abc..3120103 100644
+--- a/data/org.freedesktop.portal.FileChooser.xml
++++ b/data/org.freedesktop.portal.FileChooser.xml
+@@ -112,8 +112,8 @@
+ </para>
+ <para>
+ For each element, the first string is an ID that will be returned
+- with the response, te second string is a user-visible label. The
+- a(ss) is the list of choices, each being a is an ID and a
++ with the response, the second string is a user-visible label. The
++ a(ss) is the list of choices, each being an ID and a
+ user-visible label. The final string is the initial selection,
+ or "", to let the portal decide which choice will be initially selected.
+ None of the strings, except for the initial selection, should be empty.
diff --git a/debian/patches/Install-session.conf.in-to-expected-path-for-installed-te.patch b/debian/patches/Install-session.conf.in-to-expected-path-for-installed-te.patch
index c91c14d..740b55b 100644
--- a/debian/patches/Install-session.conf.in-to-expected-path-for-installed-te.patch
+++ b/debian/patches/Install-session.conf.in-to-expected-path-for-installed-te.patch
@@ -3,15 +3,16 @@ Date: Wed, 5 Aug 2020 11:00:01 +0100
Subject: Install session.conf.in to expected path for installed-tests
Signed-off-by: Simon McVittie <smcv at debian.org>
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
---
tests/Makefile.am.inc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Makefile.am.inc b/tests/Makefile.am.inc
-index 981c8d5..e873bae 100644
+index e4ea3de..9aed3f1 100644
--- a/tests/Makefile.am.inc
+++ b/tests/Makefile.am.inc
-@@ -108,7 +108,7 @@ dist_installed_test_dbs_DATA = tests/dbs/no_tables
+@@ -109,7 +109,7 @@ dist_installed_test_dbs_DATA = tests/dbs/no_tables
dist_installed_test_portals_DATA = tests/portals/test.portal
endif
diff --git a/debian/patches/Revert-Add-the-directory-option-to-the-file-chooser-impl-.patch b/debian/patches/Revert-Add-the-directory-option-to-the-file-chooser-impl-.patch
new file mode 100644
index 0000000..ac60f79
--- /dev/null
+++ b/debian/patches/Revert-Add-the-directory-option-to-the-file-chooser-impl-.patch
@@ -0,0 +1,30 @@
+From: Will Thompson <wjt at endlessm.com>
+Date: Fri, 10 Jul 2020 16:05:41 +0100
+Subject: Revert "Add the directory option to the file chooser impl interface"
+
+This reverts commit ee041ae8c8c8b0534bdd300953f131f1c93434cd.
+Documentation for this parameter was already added in c616b491 so this
+just duplicates it.
+
+Origin: upstream, 1.7.3, commit:b6baf10ab84e3c1227abc714a66fe327b111a9c2
+---
+ data/org.freedesktop.impl.portal.FileChooser.xml | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/data/org.freedesktop.impl.portal.FileChooser.xml b/data/org.freedesktop.impl.portal.FileChooser.xml
+index 8c684b0..3a7174d 100644
+--- a/data/org.freedesktop.impl.portal.FileChooser.xml
++++ b/data/org.freedesktop.impl.portal.FileChooser.xml
+@@ -65,12 +65,6 @@
+ Whether to select for folders instead of files. Default is to select files.
+ </para></listitem>
+ </varlistentry>
+- <varlistentry>
+- <term>directory b</term>
+- <listitem><para>
+- Whether to select for folders instead of files. Default is to select files.
+- </para></listitem>
+- </varlistentry>
+ <varlistentry>
+ <term>filters a(sa(us))</term>
+ <listitem><para>
diff --git a/debian/patches/Screencast-document-source_type-property-in-the-response.patch b/debian/patches/Screencast-document-source_type-property-in-the-response.patch
new file mode 100644
index 0000000..998b411
--- /dev/null
+++ b/debian/patches/Screencast-document-source_type-property-in-the-response.patch
@@ -0,0 +1,62 @@
+From: Jan Grulich <jgrulich at redhat.com>
+Date: Thu, 21 May 2020 13:56:21 +0200
+Subject: Screencast: document source_type property in the response
+
+Origin: upstream, 1.7.3, commit:aae1152533b4843ff0f8c0a7d8c8c2ae39a2a758
+---
+ data/org.freedesktop.impl.portal.ScreenCast.xml | 8 ++++++++
+ data/org.freedesktop.portal.ScreenCast.xml | 8 ++++++++
+ src/screen-cast.c | 2 +-
+ 3 files changed, 17 insertions(+), 1 deletion(-)
+
+diff --git a/data/org.freedesktop.impl.portal.ScreenCast.xml b/data/org.freedesktop.impl.portal.ScreenCast.xml
+index 72c981c..78f2b1c 100644
+--- a/data/org.freedesktop.impl.portal.ScreenCast.xml
++++ b/data/org.freedesktop.impl.portal.ScreenCast.xml
+@@ -146,6 +146,14 @@
+ stream.
+ </para></listitem>
+ </varlistentry>
++ <varlistentry>
++ <term>source_type u</term>
++ <listitem><para>
++ The type of the content which is being screen casted.
++ For available source types, see the AvailableSourceTypes property.
++ This property was added in version 3 of this interface.
++ </para></listitem>
++ </varlistentry>
+ </variablelist>
+ -->
+ <method name="Start">
+diff --git a/data/org.freedesktop.portal.ScreenCast.xml b/data/org.freedesktop.portal.ScreenCast.xml
+index 3735a66..a2a158c 100644
+--- a/data/org.freedesktop.portal.ScreenCast.xml
++++ b/data/org.freedesktop.portal.ScreenCast.xml
+@@ -192,6 +192,14 @@
+ stream.
+ </para></listitem>
+ </varlistentry>
++ <varlistentry>
++ <term>source_type u</term>
++ <listitem><para>
++ The type of the content which is being screen casted.
++ For available source types, see the AvailableSourceTypes property.
++ This property was added in version 3 of this interface.
++ </para></listitem>
++ </varlistentry>
+ </variablelist>
+ -->
+ <method name="Start">
+diff --git a/src/screen-cast.c b/src/screen-cast.c
+index 1677050..1f036b6 100644
+--- a/src/screen-cast.c
++++ b/src/screen-cast.c
+@@ -947,7 +947,7 @@ on_supported_cursor_modes_changed (GObject *gobject,
+ static void
+ screen_cast_init (ScreenCast *screen_cast)
+ {
+- xdp_screen_cast_set_version (XDP_SCREEN_CAST (screen_cast), 2);
++ xdp_screen_cast_set_version (XDP_SCREEN_CAST (screen_cast), 3);
+
+ g_signal_connect (impl, "notify::supported-source-types",
+ G_CALLBACK (on_supported_source_types_changed),
diff --git a/debian/patches/camera-make-client-node-as-visible.patch b/debian/patches/camera-make-client-node-as-visible.patch
new file mode 100644
index 0000000..8e3087d
--- /dev/null
+++ b/debian/patches/camera-make-client-node-as-visible.patch
@@ -0,0 +1,35 @@
+From: Wim Taymans <wtaymans at redhat.com>
+Date: Fri, 17 Jul 2020 12:31:04 +0200
+Subject: camera: make client-node as visible
+
+Or else clients won't be able to make a node to consume the camera
+data.
+
+Origin: upstream, 1.7.3, commit:14c11652d16d2be10f741a90561b6ccd20f90229
+---
+ src/camera.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/camera.c b/src/camera.c
+index 20fe3aa..efd38b4 100644
+--- a/src/camera.c
++++ b/src/camera.c
+@@ -141,7 +141,7 @@ open_pipewire_camera_remote (const char *app_id,
+ GError **error)
+ {
+ PipeWireRemote *remote;
+- struct pw_permission permission_items[2];
++ struct pw_permission permission_items[3];
+ struct pw_properties *pipewire_properties;
+
+ pipewire_properties =
+@@ -159,7 +159,8 @@ open_pipewire_camera_remote (const char *app_id,
+ * permission store to set up permissions.
+ */
+ permission_items[0] = PW_PERMISSION_INIT (PW_ID_CORE, PW_PERM_RWX);
+- permission_items[1] = PW_PERMISSION_INIT (PW_ID_ANY, 0);
++ permission_items[1] = PW_PERMISSION_INIT (remote->node_factory_id, PW_PERM_R);
++ permission_items[2] = PW_PERMISSION_INIT (PW_ID_ANY, 0);
+
+ pw_client_update_permissions (pw_core_get_client(remote->core),
+ G_N_ELEMENTS (permission_items),
diff --git a/debian/patches/doc-Include-secret-portal-documentation.patch b/debian/patches/doc-Include-secret-portal-documentation.patch
new file mode 100644
index 0000000..ccac1f6
--- /dev/null
+++ b/debian/patches/doc-Include-secret-portal-documentation.patch
@@ -0,0 +1,66 @@
+From: Daiki Ueno <dueno at redhat.com>
+Date: Mon, 18 May 2020 18:28:21 +0200
+Subject: doc: Include secret portal documentation
+
+Origin: upstream, 1.7.3, commit:e8db1c3cf20306c5e4c94549359cf2e28de382dd
+---
+ doc/Makefile.am | 4 ++++
+ doc/portal-docs.xml.in | 2 ++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 0c63701..3b5b3ce 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -22,6 +22,7 @@ portal_files = \
+ $(top_srcdir)/data/org.freedesktop.portal.Device.xml \
+ $(top_srcdir)/data/org.freedesktop.portal.Location.xml \
+ $(top_srcdir)/data/org.freedesktop.portal.Settings.xml \
++ $(top_srcdir)/data/org.freedesktop.portal.Secret.xml \
+ $(top_srcdir)/data/org.freedesktop.portal.Background.xml \
+ $(top_srcdir)/data/org.freedesktop.portal.GameMode.xml \
+ $(top_srcdir)/data/org.freedesktop.portal.Camera.xml \
+@@ -41,6 +42,7 @@ portal_files = \
+ $(top_srcdir)/data/org.freedesktop.impl.portal.Inhibit.xml \
+ $(top_srcdir)/data/org.freedesktop.impl.portal.Access.xml \
+ $(top_srcdir)/data/org.freedesktop.impl.portal.Settings.xml \
++ $(top_srcdir)/data/org.freedesktop.impl.portal.Secret.xml \
+ $(top_srcdir)/data/org.freedesktop.impl.portal.Lockdown.xml \
+ $(top_srcdir)/data/org.freedesktop.portal.Documents.xml \
+ $(top_srcdir)/data/org.freedesktop.impl.portal.PermissionStore.xml \
+@@ -69,6 +71,7 @@ xml_files = \
+ portal-org.freedesktop.portal.Device.xml \
+ portal-org.freedesktop.portal.Location.xml \
+ portal-org.freedesktop.portal.Settings.xml \
++ portal-org.freedesktop.portal.Secret.xml \
+ portal-org.freedesktop.portal.Wallpaper.xml \
+ portal-org.freedesktop.portal.Background.xml \
+ portal-org.freedesktop.portal.GameMode.xml \
+@@ -89,6 +92,7 @@ xml_files = \
+ portal-org.freedesktop.impl.portal.Inhibit.xml \
+ portal-org.freedesktop.impl.portal.Access.xml \
+ portal-org.freedesktop.impl.portal.Settings.xml \
++ portal-org.freedesktop.impl.portal.Secret.xml \
+ portal-org.freedesktop.impl.portal.Wallpaper.xml \
+ portal-org.freedesktop.impl.portal.Lockdown.xml \
+ portal-org.freedesktop.impl.portal.PermissionStore.xml \
+diff --git a/doc/portal-docs.xml.in b/doc/portal-docs.xml.in
+index 5b6435f..1647bae 100644
+--- a/doc/portal-docs.xml.in
++++ b/doc/portal-docs.xml.in
+@@ -107,6 +107,7 @@
+ <xi:include href="portal-org.freedesktop.portal.NetworkMonitor.xml"/>
+ <xi:include href="portal-org.freedesktop.portal.ProxyResolver.xml"/>
+ <xi:include href="portal-org.freedesktop.portal.Settings.xml"/>
++ <xi:include href="portal-org.freedesktop.portal.Secret.xml"/>
+ <xi:include href="portal-org.freedesktop.portal.Background.xml"/>
+ <xi:include href="portal-org.freedesktop.portal.GameMode.xml"/>
+ <xi:include href="portal-org.freedesktop.portal.Camera.xml"/>
+@@ -151,6 +152,7 @@
+ <xi:include href="portal-org.freedesktop.impl.portal.Inhibit.xml"/>
+ <xi:include href="portal-org.freedesktop.impl.portal.Access.xml"/>
+ <xi:include href="portal-org.freedesktop.impl.portal.Settings.xml"/>
++ <xi:include href="portal-org.freedesktop.impl.portal.Secret.xml"/>
+ <xi:include href="portal-org.freedesktop.impl.portal.Lockdown.xml"/>
+ <xi:include href="portal-org.freedesktop.impl.portal.Background.xml"/>
+ <xi:include href="portal-org.freedesktop.impl.portal.PermissionStore.xml"/>
diff --git a/debian/patches/open-uri-Allow-skipping-chooser-for-more-URL-types.patch b/debian/patches/open-uri-Allow-skipping-chooser-for-more-URL-types.patch
new file mode 100644
index 0000000..837fc22
--- /dev/null
+++ b/debian/patches/open-uri-Allow-skipping-chooser-for-more-URL-types.patch
@@ -0,0 +1,41 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Thu, 16 Apr 2020 16:31:32 +0200
+Subject: open-uri: Allow skipping chooser for more URL types
+
+Also allow skipping the chooser to send mails, open FTP sites, or
+calendar items.
+
+Origin: upstream, 1.7.3, commit:73928756aeaf1d10fed3486adbce92ba83ff9a6b
+---
+ src/open-uri.c | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index cbdf351..55cad2b 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -448,10 +448,20 @@ static gboolean
+ can_skip_app_chooser (const char *scheme,
+ const char *content_type)
+ {
+- /* We skip the app chooser for Internet URIs, to be open in the browser */
+- /* Skipping the chooser for directories is useful too (e.g. opening in Nautilus) */
+- if (g_strcmp0 (scheme, "http") == 0 ||
+- g_strcmp0 (scheme, "https") == 0 ||
++ const char *skipped_schemes[] = {
++ "http",
++ "https",
++ "ftp",
++ "mailto",
++ "webcal",
++ "calendar",
++ NULL
++ };
++
++ /* We skip the app chooser for Internet URIs, to be open in the browser,
++ * mail client, or calendar, as well as for directories to be opened in
++ * the file manager */
++ if (g_strv_contains (skipped_schemes, scheme) ||
+ g_strcmp0 (content_type, "inode/directory") == 0)
+ {
+ g_debug ("Can skip app chooser for %s", content_type);
diff --git a/debian/patches/open-uri-Always-open-URIs-in-default-app.patch b/debian/patches/open-uri-Always-open-URIs-in-default-app.patch
new file mode 100644
index 0000000..3058bd1
--- /dev/null
+++ b/debian/patches/open-uri-Always-open-URIs-in-default-app.patch
@@ -0,0 +1,71 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Thu, 16 Apr 2020 16:38:47 +0200
+Subject: open-uri: Always open URIs in default app
+
+Always open URIs and directories in the default application, as both
+GNOME and KDE have Settings allowing those to be changed easily.
+
+Origin: upstream, 1.7.3, commit:1dbdd31a8f4d4bb5808e85e46bf8fe8443290159
+---
+ src/open-uri.c | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index 55cad2b..ee8f629 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -445,8 +445,8 @@ get_content_type_for_file (const char *path,
+ }
+
+ static gboolean
+-can_skip_app_chooser (const char *scheme,
+- const char *content_type)
++should_use_default_app (const char *scheme,
++ const char *content_type)
+ {
+ const char *skipped_schemes[] = {
+ "http",
+@@ -570,7 +570,7 @@ handle_open_in_thread_func (GTask *task,
+ gboolean writable = FALSE;
+ gboolean ask = FALSE;
+ gboolean open_dir = FALSE;
+- gboolean can_skip = FALSE;
++ gboolean use_default_app = FALSE;
+ const char *reason;
+
+ parent_window = (const char *)g_object_get_data (G_OBJECT (request), "parent-window");
+@@ -651,7 +651,7 @@ handle_open_in_thread_func (GTask *task,
+
+ /* collect all the information */
+ find_recommended_choices (scheme, content_type, &default_app, &choices, &n_choices);
+- can_skip = can_skip_app_chooser (scheme, content_type);
++ use_default_app = should_use_default_app (scheme, content_type);
+ get_latest_choice_info (app_id, content_type,
+ &latest_id, &latest_count, &latest_threshold,
+ &ask_for_content_type);
+@@ -659,11 +659,10 @@ handle_open_in_thread_func (GTask *task,
+ skip_app_chooser = FALSE;
+ reason = NULL;
+
+- /* apply default handling: skip if the we have a default handler and its http or inode/directory */
+- if (default_app != NULL && can_skip)
++ /* apply default handling: skip if the we have a default handler */
++ if (default_app != NULL && use_default_app)
+ {
+- if (!skip_app_chooser)
+- reason = "Allowing to skip app chooser: can use default";
++ reason = "Allowing to skip app chooser: can use default";
+ skip_app_chooser = TRUE;
+ }
+
+@@ -704,7 +703,9 @@ handle_open_in_thread_func (GTask *task,
+ {
+ const char *app;
+
+- if (latest_id != NULL)
++ if (default_app != NULL && use_default_app)
++ app = default_app;
++ else if (latest_id != NULL)
+ app = latest_id;
+ else if (default_app != NULL)
+ app = default_app;
diff --git a/debian/patches/open-uri-Assert-that-find_recommended_choices-yields-non-.patch b/debian/patches/open-uri-Assert-that-find_recommended_choices-yields-non-.patch
new file mode 100644
index 0000000..3d6aa19
--- /dev/null
+++ b/debian/patches/open-uri-Assert-that-find_recommended_choices-yields-non-.patch
@@ -0,0 +1,25 @@
+From: Simon McVittie <smcv at collabora.com>
+Date: Mon, 7 Sep 2020 14:16:59 +0100
+Subject: open-uri: Assert that find_recommended_choices yields non-NULL
+
+choices is never NULL, but might be an array containing only NULL.
+
+Signed-off-by: Simon McVittie <smcv at collabora.com>
+Applied-upstream: 1.7.3
+---
+ src/open-uri.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index f746e64..c5b8705 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -669,6 +669,8 @@ handle_open_in_thread_func (GTask *task,
+
+ /* collect all the information */
+ find_recommended_choices (scheme, content_type, &default_app, &choices, &n_choices);
++ /* it's never NULL, but might be empty (only contain the NULL terminator) */
++ g_assert (choices != NULL);
+ if (default_app != NULL && !app_exists (default_app))
+ g_clear_pointer (&default_app, g_free);
+ use_default_app = should_use_default_app (scheme, content_type);
diff --git a/debian/patches/open-uri-Don-t-crash-if-there-is-no-default-or-latest-app.patch b/debian/patches/open-uri-Don-t-crash-if-there-is-no-default-or-latest-app.patch
new file mode 100644
index 0000000..90dd9dc
--- /dev/null
+++ b/debian/patches/open-uri-Don-t-crash-if-there-is-no-default-or-latest-app.patch
@@ -0,0 +1,53 @@
+From: Simon McVittie <smcv at collabora.com>
+Date: Sun, 6 Sep 2020 15:32:14 +0100
+Subject: open-uri: Don't crash if there is no default or latest app
+
+g_desktop_app_info_new() requires a non-NULL argument.
+
+Partially addresses #524.
+
+Fixes: 69205f12 "open-uri: Show app chooser when default app does not exist"
+Signed-off-by: Simon McVittie <smcv at collabora.com>
+Applied-upstream: 1.7.3
+---
+ src/open-uri.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index bb63478..f746e64 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -555,6 +555,8 @@ app_exists (const char *app_id)
+ {
+ g_autoptr(GDesktopAppInfo) info = NULL;
+
++ g_return_val_if_fail (app_id != NULL, FALSE);
++
+ info = g_desktop_app_info_new (app_id);
+ return (info != NULL);
+ }
+@@ -667,13 +669,13 @@ handle_open_in_thread_func (GTask *task,
+
+ /* collect all the information */
+ find_recommended_choices (scheme, content_type, &default_app, &choices, &n_choices);
+- if (!app_exists (default_app))
++ if (default_app != NULL && !app_exists (default_app))
+ g_clear_pointer (&default_app, g_free);
+ use_default_app = should_use_default_app (scheme, content_type);
+ get_latest_choice_info (app_id, content_type,
+ &latest_id, &latest_count, &latest_threshold,
+ &ask_for_content_type);
+- if (!app_exists (latest_id))
++ if (latest_id != NULL && !app_exists (latest_id))
+ g_clear_pointer (&latest_id, g_free);
+
+ skip_app_chooser = FALSE;
+@@ -729,7 +731,7 @@ handle_open_in_thread_func (GTask *task,
+ app = latest_id;
+ else if (default_app != NULL)
+ app = default_app;
+- else if (choices && app_exists (choices[0]))
++ else if (n_choices > 0 && app_exists (choices[0]))
+ app = choices[0];
+
+ if (app)
diff --git a/debian/patches/open-uri-Print-debug-information-when-OpenFile-URI-fails.patch b/debian/patches/open-uri-Print-debug-information-when-OpenFile-URI-fails.patch
new file mode 100644
index 0000000..85a3f60
--- /dev/null
+++ b/debian/patches/open-uri-Print-debug-information-when-OpenFile-URI-fails.patch
@@ -0,0 +1,46 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Fri, 17 Apr 2020 17:48:05 +0200
+Subject: open-uri: Print debug information when OpenFile/URI fails
+
+Origin: upstream, 1.7.3, commit:b4ac5b8045f070891dcca3d11a8e5c97c5ca9f0c
+---
+ src/open-uri.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index 21d3954..cbdf351 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -580,6 +580,7 @@ handle_open_in_thread_func (GTask *task,
+ /* Reject the request */
+ if (request->exported)
+ {
++ g_debug ("Rejecting open request as content-type couldn't be fetched for '%s'", uri);
+ g_variant_builder_init (&opts_builder, G_VARIANT_TYPE_VARDICT);
+ xdp_request_emit_response (XDP_REQUEST (request),
+ XDG_DESKTOP_PORTAL_RESPONSE_OTHER,
+@@ -602,6 +603,15 @@ handle_open_in_thread_func (GTask *task,
+ /* Reject the request */
+ if (request->exported)
+ {
++ if (path == NULL)
++ {
++ g_debug ("Rejecting open request as fd has no path associated to it");
++ }
++ else
++ {
++ g_debug ("Rejecting open request for %s as opening %swritable but fd is %swritable",
++ path, writable ? "" : "not ", fd_is_writable ? "" : "not ");
++ }
+ g_variant_builder_init (&opts_builder, G_VARIANT_TYPE_VARDICT);
+ xdp_request_emit_response (XDP_REQUEST (request),
+ XDG_DESKTOP_PORTAL_RESPONSE_OTHER,
+@@ -701,6 +711,8 @@ handle_open_in_thread_func (GTask *task,
+ gboolean result = launch_application_with_uri (app, uri, parent_window, writable, &error);
+ if (request->exported)
+ {
++ if (!result)
++ g_debug ("Open request for '%s' failed: %s", uri, error->message);
+ g_variant_builder_init (&opts_builder, G_VARIANT_TYPE_VARDICT);
+ xdp_request_emit_response (XDP_REQUEST (request),
+ result ? XDG_DESKTOP_PORTAL_RESPONSE_SUCCESS : XDG_DESKTOP_PORTAL_RESPONSE_OTHER,
diff --git a/debian/patches/open-uri-Reject-more-mismatched-open-requests.patch b/debian/patches/open-uri-Reject-more-mismatched-open-requests.patch
new file mode 100644
index 0000000..04a4da7
--- /dev/null
+++ b/debian/patches/open-uri-Reject-more-mismatched-open-requests.patch
@@ -0,0 +1,28 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Fri, 17 Apr 2020 17:47:07 +0200
+Subject: open-uri: Reject more mismatched open requests
+
+Also reject non-writable requests that come with writable file
+descriptors.
+
+See https://github.com/flatpak/libportal/pull/26
+
+Origin: upstream, 1.7.3, commit:7f11163236c02ef7ad0f3b48c705ad893c2b9f9b
+---
+ src/open-uri.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index a8326ed..21d3954 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -596,7 +596,8 @@ handle_open_in_thread_func (GTask *task,
+
+ path = xdp_app_info_get_path_for_fd (request->app_info, fd, 0, NULL, &fd_is_writable);
+ if (path == NULL ||
+- (writable && !fd_is_writable))
++ (writable && !fd_is_writable) ||
++ (!xdp_app_info_is_host (request->app_info) && !writable && fd_is_writable))
+ {
+ /* Reject the request */
+ if (request->exported)
diff --git a/debian/patches/open-uri-Return-errors-from-launch_application_with_uri.patch b/debian/patches/open-uri-Return-errors-from-launch_application_with_uri.patch
new file mode 100644
index 0000000..06ee640
--- /dev/null
+++ b/debian/patches/open-uri-Return-errors-from-launch_application_with_uri.patch
@@ -0,0 +1,73 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Fri, 17 Apr 2020 17:44:42 +0200
+Subject: open-uri: Return errors from launch_application_with_uri()
+
+Origin: upstream, 1.7.3, commit:56d94fe99fc73ea681becb0b959e31e2be5f9db8
+---
+ src/open-uri.c | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index 57214db..a8326ed 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -226,7 +226,8 @@ static gboolean
+ launch_application_with_uri (const char *choice_id,
+ const char *uri,
+ const char *parent_window,
+- gboolean writable)
++ gboolean writable,
++ GError **error)
+ {
+ g_autofree char *desktop_id = g_strconcat (choice_id, ".desktop", NULL);
+ g_autoptr(GDesktopAppInfo) info = g_desktop_app_info_new (desktop_id);
+@@ -238,14 +239,15 @@ launch_application_with_uri (const char *choice_id,
+
+ if (is_sandboxed (info) && is_file_uri (uri))
+ {
+- g_autoptr(GError) error = NULL;
++ g_autoptr(GError) local_error = NULL;
+
+ g_debug ("Registering %s for %s", uri, choice_id);
+
+- ruri = register_document (uri, choice_id, FALSE, writable, FALSE, &error);
++ ruri = register_document (uri, choice_id, FALSE, writable, FALSE, &local_error);
+ if (ruri == NULL)
+ {
+- g_warning ("Error registering %s for %s: %s", uri, choice_id, error->message);
++ g_warning ("Error registering %s for %s: %s", uri, choice_id, local_error->message);
++ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+ }
+@@ -257,7 +259,7 @@ launch_application_with_uri (const char *choice_id,
+ uris.data = (gpointer)ruri;
+ uris.next = NULL;
+
+- g_app_info_launch_uris (G_APP_INFO (info), &uris, context, NULL);
++ g_app_info_launch_uris (G_APP_INFO (info), &uris, context, error);
+
+ return TRUE;
+ }
+@@ -354,7 +356,7 @@ send_response_in_thread_func (GTask *task,
+ writable = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (request), "writable"));
+ content_type = (const char *)g_object_get_data (G_OBJECT (request), "content-type");
+
+- if (launch_application_with_uri (choice, uri, parent_window, writable))
++ if (launch_application_with_uri (choice, uri, parent_window, writable, NULL))
+ update_permissions_store (xdp_app_info_get_id (request->app_info), content_type, choice);
+ }
+
+@@ -691,10 +693,11 @@ handle_open_in_thread_func (GTask *task,
+ if (app)
+ {
+ /* Launch the app directly */
++ g_autoptr(GError) error = NULL;
+
+ g_debug ("Skipping app chooser");
+
+- gboolean result = launch_application_with_uri (app, uri, parent_window, writable);
++ gboolean result = launch_application_with_uri (app, uri, parent_window, writable, &error);
+ if (request->exported)
+ {
+ g_variant_builder_init (&opts_builder, G_VARIANT_TYPE_VARDICT);
diff --git a/debian/patches/open-uri-Show-app-chooser-when-default-app-does-not-exist.patch b/debian/patches/open-uri-Show-app-chooser-when-default-app-does-not-exist.patch
new file mode 100644
index 0000000..ac8293e
--- /dev/null
+++ b/debian/patches/open-uri-Show-app-chooser-when-default-app-does-not-exist.patch
@@ -0,0 +1,71 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Thu, 7 May 2020 11:39:27 +0200
+Subject: open-uri: Show app chooser when default app does not exist
+
+Fix a possible crash when the application that would be selected to
+avoid the app chooser is not available (anymore).
+
+This would have happened when eog.desktop got renamed to
+org.gnome.eog.desktop but was launched enough times as eog.desktop to
+make it the default.
+
+Based on https://github.com/flatpak/xdg-desktop-portal/pull/481
+
+Origin: upstream, 1.7.3, commit:69205f12cc57542a7c38c1b631fa8a8d9529f5d6
+---
+ src/open-uri.c | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index ee8f629..c081a6b 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -543,6 +543,15 @@ app_info_changed (GAppInfoMonitor *monitor,
+ NULL);
+ }
+
++static gboolean
++app_exists (const char *app_id)
++{
++ g_autoptr(GDesktopAppInfo) info = NULL;
++
++ info = g_desktop_app_info_new (app_id);
++ return (info != NULL);
++}
++
+ static void
+ handle_open_in_thread_func (GTask *task,
+ gpointer source_object,
+@@ -651,10 +660,14 @@ handle_open_in_thread_func (GTask *task,
+
+ /* collect all the information */
+ find_recommended_choices (scheme, content_type, &default_app, &choices, &n_choices);
++ if (!app_exists (default_app))
++ g_clear_pointer (&default_app, g_free);
+ use_default_app = should_use_default_app (scheme, content_type);
+ get_latest_choice_info (app_id, content_type,
+ &latest_id, &latest_count, &latest_threshold,
+ &ask_for_content_type);
++ if (!app_exists (latest_id))
++ g_clear_pointer (&latest_id, g_free);
+
+ skip_app_chooser = FALSE;
+ reason = NULL;
+@@ -701,7 +714,7 @@ handle_open_in_thread_func (GTask *task,
+
+ if (skip_app_chooser)
+ {
+- const char *app;
++ const char *app = NULL;
+
+ if (default_app != NULL && use_default_app)
+ app = default_app;
+@@ -709,7 +722,7 @@ handle_open_in_thread_func (GTask *task,
+ app = latest_id;
+ else if (default_app != NULL)
+ app = default_app;
+- else
++ else if (choices && app_exists (choices[0]))
+ app = choices[0];
+
+ if (app)
diff --git a/debian/patches/open-uri-Use-correct-app-ID-to-determine-whether-it-exist.patch b/debian/patches/open-uri-Use-correct-app-ID-to-determine-whether-it-exist.patch
new file mode 100644
index 0000000..652a175
--- /dev/null
+++ b/debian/patches/open-uri-Use-correct-app-ID-to-determine-whether-it-exist.patch
@@ -0,0 +1,34 @@
+From: Simon McVittie <smcv at collabora.com>
+Date: Sun, 6 Sep 2020 17:49:33 +0100
+Subject: open-uri: Use correct app ID to determine whether it exists
+
+x-d-p represents apps by their app ID *without* the .desktop suffix,
+but GDesktopAppInfo represents them by the app ID *with* the .desktop
+suffix.
+
+Fixes: 69205f12 "open-uri: Show app chooser when default app does not exist"
+Resolves: #524
+Signed-off-by: Simon McVittie <smcv at collabora.com>
+Applied-upstream: 1.7.3
+---
+ src/open-uri.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index c5b8705..7eb7804 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -554,10 +554,12 @@ static gboolean
+ app_exists (const char *app_id)
+ {
+ g_autoptr(GDesktopAppInfo) info = NULL;
++ g_autofree gchar *with_desktop = NULL;
+
+ g_return_val_if_fail (app_id != NULL, FALSE);
+
+- info = g_desktop_app_info_new (app_id);
++ with_desktop = g_strconcat (app_id, ".desktop", NULL);
++ info = g_desktop_app_info_new (with_desktop);
+ return (info != NULL);
+ }
+
diff --git a/debian/patches/open-uri-avoid-criticals-when-app-to-open-does-not-exist.patch b/debian/patches/open-uri-avoid-criticals-when-app-to-open-does-not-exist.patch
new file mode 100644
index 0000000..a992fe6
--- /dev/null
+++ b/debian/patches/open-uri-avoid-criticals-when-app-to-open-does-not-exist.patch
@@ -0,0 +1,32 @@
+From: Michael Catanzaro <mcatanzaro at gnome.org>
+Date: Fri, 1 May 2020 17:26:54 -0500
+Subject: open-uri: avoid criticals when app to open does not exist
+
+If g_desktop_app_info_new() returns NULL, then the desired desktop file
+does not exist. Simply return FALSE in this case instead of trying to
+use it.
+
+See: #480
+Origin: upstream, 1.7.3, commit:c41efbe598918fedf01d69f65b581cfbf107b00b
+---
+ src/open-uri.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/open-uri.c b/src/open-uri.c
+index c081a6b..bb63478 100644
+--- a/src/open-uri.c
++++ b/src/open-uri.c
+@@ -235,6 +235,13 @@ launch_application_with_uri (const char *choice_id,
+ g_autofree char *ruri = NULL;
+ GList uris;
+
++ if (info == NULL)
++ {
++ g_debug ("Cannot launch %s because desktop file does not exist", desktop_id);
++ g_set_error (error, XDG_DESKTOP_PORTAL_ERROR, XDG_DESKTOP_PORTAL_ERROR_NOT_FOUND, "Desktop file %s does not exist", desktop_id);
++ return FALSE;
++ }
++
+ g_debug ("Launching %s %s", choice_id, uri);
+
+ if (is_sandboxed (info) && is_file_uri (uri))
diff --git a/debian/patches/pipewire-clean-up-the-registry-proxy.patch b/debian/patches/pipewire-clean-up-the-registry-proxy.patch
new file mode 100644
index 0000000..778420b
--- /dev/null
+++ b/debian/patches/pipewire-clean-up-the-registry-proxy.patch
@@ -0,0 +1,24 @@
+From: Wim Taymans <wtaymans at redhat.com>
+Date: Fri, 17 Jul 2020 15:32:53 +0200
+Subject: pipewire: clean up the registry proxy
+
+destroy the registry proxy after use or else we leak it.
+
+Origin: upstream, 1.7.3, commit:4e1bdb4c81c427f12ade9e28e6d947d3148cb0d9
+---
+ src/pipewire.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/pipewire.c b/src/pipewire.c
+index 162cd55..9430339 100644
+--- a/src/pipewire.c
++++ b/src/pipewire.c
+@@ -107,6 +107,8 @@ discover_node_factory_sync (PipeWireRemote *remote,
+
+ pipewire_remote_roundtrip (remote);
+
++ pw_proxy_destroy((struct pw_proxy*)registry);
++
+ if (remote->node_factory_id == 0)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
diff --git a/debian/patches/screen-cast-fix-array-element-size-for-permissions.patch b/debian/patches/screen-cast-fix-array-element-size-for-permissions.patch
new file mode 100644
index 0000000..07a9378
--- /dev/null
+++ b/debian/patches/screen-cast-fix-array-element-size-for-permissions.patch
@@ -0,0 +1,24 @@
+From: Wim Taymans <wtaymans at redhat.com>
+Date: Fri, 17 Jul 2020 12:31:47 +0200
+Subject: screen-cast: fix array element size for permissions
+
+The array should contain struct pw_permission elements.
+
+Origin: upstream, 1.7.3, commit:0b19cc3fcf9a39c65d523704bc23a6907554c406
+---
+ src/screen-cast.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/screen-cast.c b/src/screen-cast.c
+index 1f036b6..235cbd1 100644
+--- a/src/screen-cast.c
++++ b/src/screen-cast.c
+@@ -554,7 +554,7 @@ open_pipewire_screen_cast_remote (const char *app_id,
+ if (!remote)
+ return FALSE;
+
+- permission_items = g_array_new (FALSE, TRUE, sizeof (struct spa_dict_item));
++ permission_items = g_array_new (FALSE, TRUE, sizeof (struct pw_permission));
+
+ /*
+ * PipeWire:Interface:Core
diff --git a/debian/patches/series b/debian/patches/series
index 9f515ad..9159615 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,9 +1,35 @@
+open-uri-Return-errors-from-launch_application_with_uri.patch
+open-uri-Reject-more-mismatched-open-requests.patch
+open-uri-Print-debug-information-when-OpenFile-URI-fails.patch
+tests-Don-t-rely-on-PATH-to-launch-uninstalled.patch
+tests-Print-the-full-paths-of-what-we-re-trying-to-run.patch
+tests-Ensure-XDG_DATA_DIRS-is-well-formed.patch
+tests-Make-sure-http2-test-always-runs.patch
+tests-Increase-timeouts-when-running-in-CI.patch
+open-uri-Allow-skipping-chooser-for-more-URL-types.patch
+open-uri-Always-open-URIs-in-default-app.patch
+open-uri-Show-app-chooser-when-default-app-does-not-exist.patch
+open-uri-avoid-criticals-when-app-to-open-does-not-exist.patch
+doc-Include-secret-portal-documentation.patch
+FileChooser-Add-a-current_filter-return-value.patch
+Screencast-document-source_type-property-in-the-response.patch
+Fix-typos-in-FileChooser-doc.patch
+Revert-Add-the-directory-option-to-the-file-chooser-impl-.patch
+camera-make-client-node-as-visible.patch
+screen-cast-fix-array-element-size-for-permissions.patch
+pipewire-clean-up-the-registry-proxy.patch
+open-uri-Don-t-crash-if-there-is-no-default-or-latest-app.patch
+open-uri-Assert-that-find_recommended_choices-yields-non-.patch
+tests-Make-app-chooser-backend-more-debuggable.patch
+open-uri-Use-correct-app-ID-to-determine-whether-it-exist.patch
+xdp-Send-messages-to-stderr-not-stdout.patch
tests-Divert-service-stdout-to-stderr.patch
-tests-Always-produce-verbose-output-from-subprocesses.patch
-Revert-Stop-building-the-icon-validator.patch
-validate-icon-Add-a-define-for-bwrap.patch
-Replace-the-icon-validator-with-the-one-from-Flatpak-1.8..patch
tests-use-kill-from-PATH.patch
+Install-session.conf.in-to-expected-path-for-installed-te.patch
tests-call-test-document-fuse.py-directly.patch
tests-Only-run-xdg-document-portal-in-foreground-when-uni.patch
-Install-session.conf.in-to-expected-path-for-installed-te.patch
+test-document-fuse-Quote-more-defensively.patch
+tests-Send-SIGTERM-to-dbus-daemon.patch
+Revert-Stop-building-the-icon-validator.patch
+validate-icon-Add-a-define-for-bwrap.patch
+Replace-the-icon-validator-with-the-one-from-Flatpak-1.8..patch
diff --git a/debian/patches/test-document-fuse-Quote-more-defensively.patch b/debian/patches/test-document-fuse-Quote-more-defensively.patch
new file mode 100644
index 0000000..e60c3bf
--- /dev/null
+++ b/debian/patches/test-document-fuse-Quote-more-defensively.patch
@@ -0,0 +1,87 @@
+From: Simon McVittie <smcv at debian.org>
+Date: Wed, 5 Aug 2020 11:16:35 +0100
+Subject: test-document-fuse: Quote more defensively
+
+Signed-off-by: Simon McVittie <smcv at debian.org>
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
+---
+ tests/test-document-fuse.sh | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/tests/test-document-fuse.sh b/tests/test-document-fuse.sh
+index da0aa47..f0013d4 100755
+--- a/tests/test-document-fuse.sh
++++ b/tests/test-document-fuse.sh
+@@ -25,20 +25,20 @@ set -e
+ if [ -n "${G_TEST_SRCDIR:-}" ]; then
+ test_srcdir="${G_TEST_SRCDIR}"
+ else
+- test_srcdir=$(realpath $(dirname $0))
++ test_srcdir=$(realpath "$(dirname $0)")
+ fi
+
+ if [ -n "${G_TEST_BUILDDIR:-}" ]; then
+ test_builddir="${G_TEST_BUILDDIR}"
+ else
+- test_builddir=$(realpath $(dirname $0))
++ test_builddir=$(realpath "$(dirname $0)")
+ fi
+
+ export TEST_DATA_DIR=`mktemp -d /tmp/xdp-XXXXXX`
+-mkdir -p ${TEST_DATA_DIR}/home
+-mkdir -p ${TEST_DATA_DIR}/runtime
+-mkdir -p ${TEST_DATA_DIR}/system
+-mkdir -p ${TEST_DATA_DIR}/config
++mkdir -p "${TEST_DATA_DIR}/home"
++mkdir -p "${TEST_DATA_DIR}/runtime"
++mkdir -p "${TEST_DATA_DIR}/system"
++mkdir -p "${TEST_DATA_DIR}/config"
+
+ export HOME=${TEST_DATA_DIR}/home
+ export XDG_CACHE_HOME=${TEST_DATA_DIR}/home/cache
+@@ -47,15 +47,15 @@ export XDG_DATA_HOME=${TEST_DATA_DIR}/home/share
+ export XDG_RUNTIME_DIR=${TEST_DATA_DIR}/runtime
+
+ cleanup () {
+- fusermount -u $XDG_RUNTIME_DIR/doc || :
++ fusermount -u "$XDG_RUNTIME_DIR/doc" || :
+ sleep 0.1
+- kill -9 $DBUS_SESSION_BUS_PID
++ kill -9 "$DBUS_SESSION_BUS_PID"
+ kill $(jobs -p) &> /dev/null || true
+- rm -rf $TEST_DATA_DIR
++ rm -rf "$TEST_DATA_DIR"
+ }
+ trap cleanup EXIT
+
+-sed s#@testdir@#${test_builddir}# ${test_srcdir}/session.conf.in > session.conf
++sed "s#@testdir@#${test_builddir}#" "${test_srcdir}/session.conf.in" > session.conf
+
+ dbus-daemon --fork --config-file=session.conf --print-address=3 --print-pid=4 \
+ 3> dbus-session-bus-address 4> dbus-session-bus-pid
+@@ -76,20 +76,20 @@ fi
+
+ # First run a basic single-thread test
+ echo Testing single-threaded
+-${test_srcdir}/test-document-fuse.py --iterations 3 -v
++"${test_srcdir}/test-document-fuse.py" --iterations 3 -v
+ echo "ok single-threaded"
+
+ # Then a bunch of copies in parallel to stress-test
+ echo Testing in parallel
+ PIDS=()
+ for i in $(seq 20); do
+- ${test_srcdir}/test-document-fuse.py --iterations 10 --prefix $i &
++ "${test_srcdir}/test-document-fuse.py" --iterations 10 --prefix "$i" &
+ PID="$!"
+ PIDS+=( "$PID" )
+ done
+
+-for PID in ${PIDS[@]}; do
+- echo waiting for pid ${PID}
+- wait ${PID}
++for PID in "${PIDS[@]}"; do
++ echo waiting for pid "${PID}"
++ wait "${PID}"
+ done
+ echo "ok load-test"
diff --git a/debian/patches/tests-Always-produce-verbose-output-from-subprocesses.patch b/debian/patches/tests-Always-produce-verbose-output-from-subprocesses.patch
deleted file mode 100644
index de8aef0..0000000
--- a/debian/patches/tests-Always-produce-verbose-output-from-subprocesses.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From: Simon McVittie <smcv at debian.org>
-Date: Sun, 22 Dec 2019 21:20:48 +0000
-Subject: tests: Always produce verbose output from subprocesses
-
-This helps to debug what is going on if a test fails.
-
-Signed-off-by: Simon McVittie <smcv at debian.org>
----
- tests/test-portals.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/tests/test-portals.c b/tests/test-portals.c
-index fac569a..5e6a81c 100644
---- a/tests/test-portals.c
-+++ b/tests/test-portals.c
-@@ -133,7 +133,7 @@ global_setup (void)
-
- backends_executable = g_test_build_filename (G_TEST_BUILT, "test-backends", NULL);
- argv[0] = backends_executable;
-- argv[1] = g_test_verbose () ? "--verbose" : NULL;
-+ argv[1] = "--verbose";
- argv[2] = NULL;
-
- g_print ("launching test-backend\n");
-@@ -176,7 +176,7 @@ global_setup (void)
- else
- argv[0] = LIBEXECDIR "/xdg-desktop-portal";
-
-- argv[1] = g_test_verbose () ? "--verbose" : NULL;
-+ argv[1] = "--verbose";
- argv[2] = NULL;
-
- g_print ("launching xdg-desktop-portal\n");
-@@ -217,7 +217,7 @@ global_setup (void)
- argv[0] = LIBEXECDIR "/xdg-permission-store";
-
- argv[1] = "--replace";
-- argv[2] = g_test_verbose () ? "--verbose" : NULL;
-+ argv[2] = "--verbose";
- argv[3] = NULL;
-
- g_print ("launching xdg-permission-store");
diff --git a/debian/patches/tests-Divert-service-stdout-to-stderr.patch b/debian/patches/tests-Divert-service-stdout-to-stderr.patch
index e7296b8..439d289 100644
--- a/debian/patches/tests-Divert-service-stdout-to-stderr.patch
+++ b/debian/patches/tests-Divert-service-stdout-to-stderr.patch
@@ -5,16 +5,17 @@ Subject: tests: Divert service stdout to stderr
These tests produce structured TAP output on stdout, so we cannot run
any subprocesses that would produce unstructured stdout. Unfortunately,
by default g_debug() writes to stdout, so running with G_MESSAGES_DEBUG
-to get better logging from the various subprocesses breaks the test.
+to get better logging from the various subprocesses can break the test.
Use stderr instead.
Signed-off-by: Simon McVittie <smcv at debian.org>
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
---
tests/test-portals.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/tests/test-portals.c b/tests/test-portals.c
-index 8bfb25d..fac569a 100644
+index bfa5645..2cd5ba5 100644
--- a/tests/test-portals.c
+++ b/tests/test-portals.c
@@ -39,6 +39,17 @@ static GSubprocess *backends;
@@ -35,7 +36,7 @@ index 8bfb25d..fac569a 100644
static void
name_appeared_cb (GDBusConnection *bus,
const char *name,
-@@ -118,7 +129,8 @@ global_setup (void)
+@@ -158,7 +169,8 @@ global_setup (void)
g_subprocess_launcher_setenv (launcher, "DBUS_SESSION_BUS_ADDRESS", g_test_dbus_get_bus_address (dbus), TRUE);
g_subprocess_launcher_setenv (launcher, "XDG_DATA_HOME", outdir, TRUE);
g_subprocess_launcher_setenv (launcher, "PATH", g_getenv ("PATH"), TRUE);
@@ -45,19 +46,19 @@ index 8bfb25d..fac569a 100644
backends_executable = g_test_build_filename (G_TEST_BUILT, "test-backends", NULL);
argv[0] = backends_executable;
argv[1] = g_test_verbose () ? "--verbose" : NULL;
-@@ -156,6 +168,7 @@ global_setup (void)
+@@ -196,6 +208,7 @@ global_setup (void)
g_subprocess_launcher_setenv (launcher, "XDG_DESKTOP_PORTAL_DIR", portal_dir, TRUE);
g_subprocess_launcher_setenv (launcher, "XDG_DATA_HOME", outdir, TRUE);
g_subprocess_launcher_setenv (launcher, "PATH", g_getenv ("PATH"), TRUE);
+ g_subprocess_launcher_take_stdout_fd (launcher, xdup (STDERR_FILENO));
- /* When running uninstalled we rely on this being added to PATH */
if (g_getenv ("XDP_UNINSTALLED") != NULL)
-@@ -195,6 +208,7 @@ global_setup (void)
+ argv0 = g_test_build_filename (G_TEST_BUILT, "..", "xdg-desktop-portal", NULL);
+@@ -236,6 +249,7 @@ global_setup (void)
g_subprocess_launcher_setenv (launcher, "DBUS_SESSION_BUS_ADDRESS", g_test_dbus_get_bus_address (dbus), TRUE);
g_subprocess_launcher_setenv (launcher, "XDG_DATA_HOME", outdir, TRUE);
g_subprocess_launcher_setenv (launcher, "PATH", g_getenv ("PATH"), TRUE);
+ g_subprocess_launcher_take_stdout_fd (launcher, xdup (STDERR_FILENO));
- /* When running uninstalled we rely on this being added to PATH */
if (g_getenv ("XDP_UNINSTALLED") != NULL)
+ argv0 = g_test_build_filename (G_TEST_BUILT, "..", "xdg-permission-store", NULL);
diff --git a/debian/patches/tests-Don-t-rely-on-PATH-to-launch-uninstalled.patch b/debian/patches/tests-Don-t-rely-on-PATH-to-launch-uninstalled.patch
new file mode 100644
index 0000000..2c1a1b0
--- /dev/null
+++ b/debian/patches/tests-Don-t-rely-on-PATH-to-launch-uninstalled.patch
@@ -0,0 +1,63 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Fri, 17 Apr 2020 21:50:49 +0200
+Subject: tests: Don't rely on PATH to launch uninstalled
+
+Use the build directories instead.
+
+Origin: upstream, 1.7.3, commit:22d666dd7e7fe3f2c3769288e0baa76a507298d8
+---
+ tests/test-portals.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/tests/test-portals.c b/tests/test-portals.c
+index 8bfb25d..f0601e7 100644
+--- a/tests/test-portals.c
++++ b/tests/test-portals.c
+@@ -79,6 +79,7 @@ global_setup (void)
+ g_autofree gchar *backends_executable = NULL;
+ g_autofree gchar *services = NULL;
+ g_autofree gchar *portal_dir = NULL;
++ g_autofree gchar *argv0 = NULL;
+ g_autoptr(GSubprocessLauncher) launcher = NULL;
+ guint name_timeout;
+ const char *argv[4];
+@@ -157,12 +158,12 @@ global_setup (void)
+ g_subprocess_launcher_setenv (launcher, "XDG_DATA_HOME", outdir, TRUE);
+ g_subprocess_launcher_setenv (launcher, "PATH", g_getenv ("PATH"), TRUE);
+
+- /* When running uninstalled we rely on this being added to PATH */
+ if (g_getenv ("XDP_UNINSTALLED") != NULL)
+- argv[0] = "xdg-desktop-portal";
++ argv0 = g_test_build_filename (G_TEST_BUILT, "..", "xdg-desktop-portal", NULL);
+ else
+- argv[0] = LIBEXECDIR "/xdg-desktop-portal";
++ argv0 = g_strdup (LIBEXECDIR "/xdg-desktop-portal");
+
++ argv[0] = argv0;
+ argv[1] = g_test_verbose () ? "--verbose" : NULL;
+ argv[2] = NULL;
+
+@@ -170,6 +171,7 @@ global_setup (void)
+
+ portals = g_subprocess_launcher_spawnv (launcher, argv, &error);
+ g_assert_no_error (error);
++ g_clear_pointer (&argv0, g_free);
+
+ name_timeout = g_timeout_add (1000, timeout_cb, "Failed to launch xdg-desktop-portal");
+
+@@ -196,12 +198,12 @@ global_setup (void)
+ g_subprocess_launcher_setenv (launcher, "XDG_DATA_HOME", outdir, TRUE);
+ g_subprocess_launcher_setenv (launcher, "PATH", g_getenv ("PATH"), TRUE);
+
+- /* When running uninstalled we rely on this being added to PATH */
+ if (g_getenv ("XDP_UNINSTALLED") != NULL)
+- argv[0] = "xdg-permission-store";
++ argv0 = g_test_build_filename (G_TEST_BUILT, "..", "xdg-permission-store", NULL);
+ else
+- argv[0] = LIBEXECDIR "/xdg-permission-store";
++ argv0 = g_strdup (LIBEXECDIR "/xdg-permission-store");
+
++ argv[0] = argv0;
+ argv[1] = "--replace";
+ argv[2] = g_test_verbose () ? "--verbose" : NULL;
+ argv[3] = NULL;
diff --git a/debian/patches/tests-Ensure-XDG_DATA_DIRS-is-well-formed.patch b/debian/patches/tests-Ensure-XDG_DATA_DIRS-is-well-formed.patch
new file mode 100644
index 0000000..53d5bac
--- /dev/null
+++ b/debian/patches/tests-Ensure-XDG_DATA_DIRS-is-well-formed.patch
@@ -0,0 +1,65 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Sat, 18 Apr 2020 16:49:32 +0200
+Subject: tests: Ensure XDG_DATA_DIRS is well-formed
+
+Make sure XDG_DATA_DIRS includes /usr/share/ to pick up on the system
+schemas.
+
+Origin: upstream, 1.7.3, commit:8076a1665077ce705af17e90b90324962e2e609a
+---
+ tests/test-portals.c | 35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+diff --git a/tests/test-portals.c b/tests/test-portals.c
+index 092c5b1..d76f4ef 100644
+--- a/tests/test-portals.c
++++ b/tests/test-portals.c
+@@ -72,6 +72,39 @@ timeout_cb (gpointer data)
+ return G_SOURCE_REMOVE;
+ }
+
++static void
++update_data_dirs (void)
++{
++ const char *data_dirs;
++ gssize len = 0;
++ GString *str;
++ char *new_val;
++
++ data_dirs = g_getenv ("XDG_DATA_DIRS");
++ if (data_dirs != NULL &&
++ strstr (data_dirs, "/usr/share") != NULL)
++ {
++ return;
++ }
++
++ if (data_dirs != NULL)
++ {
++ len = strlen (data_dirs);
++ if (data_dirs[len] == ':')
++ len--;
++ }
++
++ str = g_string_new_len (data_dirs, len);
++ if (str->len > 0)
++ g_string_append_c (str, ':');
++ g_string_append (str, "/usr/local/share/:/usr/share/");
++ new_val = g_string_free (str, FALSE);
++
++ g_debug ("Setting XDG_DATA_DIRS to %s", new_val);
++ g_setenv ("XDG_DATA_DIRS", new_val, TRUE);
++ /* new_val is leaked */
++}
++
+ static void
+ global_setup (void)
+ {
+@@ -87,6 +120,8 @@ global_setup (void)
+ static gboolean name_appeared;
+ guint watch;
+
++ update_data_dirs ();
++
+ g_mkdtemp (outdir);
+ g_print ("outdir: %s\n", outdir);
+
diff --git a/debian/patches/tests-Increase-timeouts-when-running-in-CI.patch b/debian/patches/tests-Increase-timeouts-when-running-in-CI.patch
new file mode 100644
index 0000000..f4b7bde
--- /dev/null
+++ b/debian/patches/tests-Increase-timeouts-when-running-in-CI.patch
@@ -0,0 +1,60 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Sat, 18 Apr 2020 12:36:49 +0200
+Subject: tests: Increase timeouts when running in CI
+
+1 second isn't very much to wait for a D-Bus service in a loaded CI.
+
+Origin: upstream, 1.7.3, commit:cbb95e4d643bab5698700892b0d016a43ca2b2d0
+---
+ tests/test-portals.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/tests/test-portals.c b/tests/test-portals.c
+index d76f4ef..bfa5645 100644
+--- a/tests/test-portals.c
++++ b/tests/test-portals.c
+@@ -119,6 +119,7 @@ global_setup (void)
+ GQuark portal_errors G_GNUC_UNUSED;
+ static gboolean name_appeared;
+ guint watch;
++ guint timeout_mult = 1;
+
+ update_data_dirs ();
+
+@@ -133,6 +134,9 @@ global_setup (void)
+ g_test_dbus_add_service_dir (dbus, services);
+ g_test_dbus_up (dbus);
+
++ if (g_getenv ("TEST_IN_CI"))
++ timeout_mult = 10;
++
+ /* g_test_dbus_up unsets this, so re-set */
+ g_setenv ("XDG_RUNTIME_DIR", outdir, TRUE);
+
+@@ -165,7 +169,7 @@ global_setup (void)
+ backends = g_subprocess_launcher_spawnv (launcher, argv, &error);
+ g_assert_no_error (error);
+
+- name_timeout = g_timeout_add (1000, timeout_cb, "Failed to launch test-backends");
++ name_timeout = g_timeout_add (1000 * timeout_mult, timeout_cb, "Failed to launch test-backends");
+
+ while (!name_appeared)
+ g_main_context_iteration (NULL, TRUE);
+@@ -208,7 +212,7 @@ global_setup (void)
+ g_assert_no_error (error);
+ g_clear_pointer (&argv0, g_free);
+
+- name_timeout = g_timeout_add (1000, timeout_cb, "Failed to launch xdg-desktop-portal");
++ name_timeout = g_timeout_add (1000 * timeout_mult, timeout_cb, "Failed to launch xdg-desktop-portal");
+
+ while (!name_appeared)
+ g_main_context_iteration (NULL, TRUE);
+@@ -248,7 +252,7 @@ global_setup (void)
+ portals = g_subprocess_launcher_spawnv (launcher, argv, &error);
+ g_assert_no_error (error);
+
+- name_timeout = g_timeout_add (1000, timeout_cb, "Failed to launch xdg-permission-store");
++ name_timeout = g_timeout_add (1000 * timeout_mult, timeout_cb, "Failed to launch xdg-permission-store");
+
+ while (!name_appeared)
+ g_main_context_iteration (NULL, TRUE);
diff --git a/debian/patches/tests-Make-app-chooser-backend-more-debuggable.patch b/debian/patches/tests-Make-app-chooser-backend-more-debuggable.patch
new file mode 100644
index 0000000..aedac2b
--- /dev/null
+++ b/debian/patches/tests-Make-app-chooser-backend-more-debuggable.patch
@@ -0,0 +1,32 @@
+From: Simon McVittie <smcv at collabora.com>
+Date: Sun, 6 Sep 2020 17:32:26 +0100
+Subject: tests: Make app chooser backend more debuggable
+
+Instead of crashing out when our expectations are not met, return an
+error that other components can log.
+
+Signed-off-by: Simon McVittie <smcv at collabora.com>
+Applied-upstream: 1.7.3
+---
+ tests/backend/appchooser.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/tests/backend/appchooser.c b/tests/backend/appchooser.c
+index d8d3f7e..e7bf0f8 100644
+--- a/tests/backend/appchooser.c
++++ b/tests/backend/appchooser.c
+@@ -122,7 +122,13 @@ handle_choose_application (XdpImplAppChooser *object,
+ g_assert_no_error (error);
+
+ if (g_key_file_has_key (keyfile, "backend", "expect-no-call", NULL))
+- g_assert_not_reached ();
++ {
++ g_dbus_method_invocation_return_error (invocation,
++ G_IO_ERROR,
++ G_IO_ERROR_FAILED,
++ "Did not expect ChooseApplication to be called here");
++ return TRUE; /* handled */
++ }
+
+ request = request_new (sender, arg_app_id, arg_handle);
+
diff --git a/debian/patches/tests-Make-sure-http2-test-always-runs.patch b/debian/patches/tests-Make-sure-http2-test-always-runs.patch
new file mode 100644
index 0000000..e1a9028
--- /dev/null
+++ b/debian/patches/tests-Make-sure-http2-test-always-runs.patch
@@ -0,0 +1,95 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Fri, 17 Apr 2020 23:11:45 +0200
+Subject: tests: Make sure http2 test always runs
+
+By installing our own handler for the http scheme.
+
+Origin: upstream, 1.7.3, commit:a41a189f3290b6a03ce98f844697e45a327852d0
+---
+ tests/Makefile.am.inc | 6 ++++++
+ tests/openuri.c | 10 +++-------
+ tests/share/applications/furrfix.desktop | 13 +++++++++++++
+ tests/share/applications/mimeinfo.cache | 9 +++++++++
+ 4 files changed, 31 insertions(+), 7 deletions(-)
+ create mode 100644 tests/share/applications/furrfix.desktop
+ create mode 100644 tests/share/applications/mimeinfo.cache
+
+diff --git a/tests/Makefile.am.inc b/tests/Makefile.am.inc
+index 981c8d5..e4ea3de 100644
+--- a/tests/Makefile.am.inc
++++ b/tests/Makefile.am.inc
+@@ -2,6 +2,7 @@ test_programs =
+
+ TESTS_ENVIRONMENT = \
+ PATH=$$(cd $(top_builddir) && pwd):$${PATH} \
++ XDG_DATA_DIRS=$(top_srcdir)/tests/share/:$${XDG_DATA_DIRS} \
+ XDP_UNINSTALLED=1 \
+ $(NULL)
+
+@@ -120,6 +121,11 @@ dist_test_scripts = \
+ tests/test-document-fuse.sh \
+ $(NULL)
+
++dist_test_apps = \
++ tests/share/applications/furrfix.desktop \
++ tests/share/applications/mimeinfo.cache \
++ $(NULL)
++
+ test_programs += \
+ testdb \
+ test-doc-portal \
+diff --git a/tests/openuri.c b/tests/openuri.c
+index df3a754..88ae738 100644
+--- a/tests/openuri.c
++++ b/tests/openuri.c
+@@ -157,13 +157,9 @@ test_open_uri_http2 (void)
+ g_autoptr(GAppInfo) app = NULL;
+ g_autofree char *app_id = NULL;
+
+- app = g_app_info_get_default_for_type ("x-scheme-handler/http", FALSE);
+-
+- if (app == NULL)
+- {
+- g_test_skip ("No default handler for x-scheme-handler/http set");
+- return;
+- }
++ /* get furrfix.desktop as an app */
++ app = g_app_info_get_default_for_type ("x-scheme-handler/xdg-desktop-portal-test", FALSE);
++ g_assert_nonnull (app);
+
+ app_id = g_strndup (g_app_info_get_id (app), strlen (g_app_info_get_id (app)) - strlen (".desktop"));
+
+diff --git a/tests/share/applications/furrfix.desktop b/tests/share/applications/furrfix.desktop
+new file mode 100644
+index 0000000..f35caf0
+--- /dev/null
++++ b/tests/share/applications/furrfix.desktop
+@@ -0,0 +1,13 @@
++[Desktop Entry]
++Version=1.0
++Name=Furrfix
++GenericName=Not a Web Browser
++Comment=Don't Browse the Web
++Exec=true %u
++Icon=furrfix
++Terminal=false
++Type=Application
++MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/xdg-desktop-portal-test;
++StartupNotify=true
++Categories=Network;WebBrowser;
++Keywords=web;browser;internet;
+diff --git a/tests/share/applications/mimeinfo.cache b/tests/share/applications/mimeinfo.cache
+new file mode 100644
+index 0000000..7881f39
+--- /dev/null
++++ b/tests/share/applications/mimeinfo.cache
+@@ -0,0 +1,9 @@
++[MIME Cache]
++application/vnd.mozilla.xul+xml=furrfix.desktop;
++application/xhtml+xml=furrfix.desktop;
++text/html=furrfix.desktop;
++text/mml=furrfix.desktop;
++text/xml=furrfix.desktop;
++x-scheme-handler/http=furrfix.desktop;
++x-scheme-handler/https=furrfix.desktop;
++x-scheme-handler/xdg-desktop-portal-test=furrfix.desktop;
diff --git a/debian/patches/tests-Only-run-xdg-document-portal-in-foreground-when-uni.patch b/debian/patches/tests-Only-run-xdg-document-portal-in-foreground-when-uni.patch
index e7ff6ef..0c8226c 100644
--- a/debian/patches/tests-Only-run-xdg-document-portal-in-foreground-when-uni.patch
+++ b/debian/patches/tests-Only-run-xdg-document-portal-in-foreground-when-uni.patch
@@ -9,6 +9,7 @@ particular that D-Bus .service file was installed correctly to make it
activatable.
Signed-off-by: Simon McVittie <smcv at debian.org>
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
---
tests/test-document-fuse.sh | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/debian/patches/tests-Print-the-full-paths-of-what-we-re-trying-to-run.patch b/debian/patches/tests-Print-the-full-paths-of-what-we-re-trying-to-run.patch
new file mode 100644
index 0000000..e2c3c2c
--- /dev/null
+++ b/debian/patches/tests-Print-the-full-paths-of-what-we-re-trying-to-run.patch
@@ -0,0 +1,34 @@
+From: Bastien Nocera <hadess at hadess.net>
+Date: Fri, 17 Apr 2020 21:51:31 +0200
+Subject: tests: Print the full paths of what we're trying to run
+
+Instead of simply the name, so that we can double-check the paths just
+in case we fail.
+
+Origin: upstream, 1.7.3, commit:98551b45f77eac1538786f9843bf9c93fd2cd631
+---
+ tests/test-portals.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/test-portals.c b/tests/test-portals.c
+index f0601e7..092c5b1 100644
+--- a/tests/test-portals.c
++++ b/tests/test-portals.c
+@@ -167,7 +167,7 @@ global_setup (void)
+ argv[1] = g_test_verbose () ? "--verbose" : NULL;
+ argv[2] = NULL;
+
+- g_print ("launching xdg-desktop-portal\n");
++ g_print ("launching %s\n", argv0);
+
+ portals = g_subprocess_launcher_spawnv (launcher, argv, &error);
+ g_assert_no_error (error);
+@@ -208,7 +208,7 @@ global_setup (void)
+ argv[2] = g_test_verbose () ? "--verbose" : NULL;
+ argv[3] = NULL;
+
+- g_print ("launching xdg-permission-store");
++ g_print ("launching %s\n", argv0);
+
+ portals = g_subprocess_launcher_spawnv (launcher, argv, &error);
+ g_assert_no_error (error);
diff --git a/debian/patches/tests-Send-SIGTERM-to-dbus-daemon.patch b/debian/patches/tests-Send-SIGTERM-to-dbus-daemon.patch
new file mode 100644
index 0000000..c0bf041
--- /dev/null
+++ b/debian/patches/tests-Send-SIGTERM-to-dbus-daemon.patch
@@ -0,0 +1,27 @@
+From: Simon McVittie <smcv at debian.org>
+Date: Wed, 5 Aug 2020 11:17:26 +0100
+Subject: tests: Send SIGTERM to dbus-daemon
+
+There's no real need to kill it with SIGKILL, and in some configurations
+there is cleanup that is only performed when allowed to shut down
+gracefully.
+
+Signed-off-by: Simon McVittie <smcv at debian.org>
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
+---
+ tests/test-document-fuse.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/test-document-fuse.sh b/tests/test-document-fuse.sh
+index f0013d4..b889cfc 100755
+--- a/tests/test-document-fuse.sh
++++ b/tests/test-document-fuse.sh
+@@ -49,7 +49,7 @@ export XDG_RUNTIME_DIR=${TEST_DATA_DIR}/runtime
+ cleanup () {
+ fusermount -u "$XDG_RUNTIME_DIR/doc" || :
+ sleep 0.1
+- kill -9 "$DBUS_SESSION_BUS_PID"
++ kill "$DBUS_SESSION_BUS_PID"
+ kill $(jobs -p) &> /dev/null || true
+ rm -rf "$TEST_DATA_DIR"
+ }
diff --git a/debian/patches/tests-call-test-document-fuse.py-directly.patch b/debian/patches/tests-call-test-document-fuse.py-directly.patch
index ebe4648..232e879 100644
--- a/debian/patches/tests-call-test-document-fuse.py-directly.patch
+++ b/debian/patches/tests-call-test-document-fuse.py-directly.patch
@@ -7,6 +7,8 @@ It has a shebang so no need to pass it to python3 in the tests.
It also makes it easier for downstreams to wrap the python file for setting extra environment variables.
[smcv: chmod the script +x]
+
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
---
tests/test-document-fuse.py | 0
tests/test-document-fuse.sh | 4 ++--
diff --git a/debian/patches/tests-use-kill-from-PATH.patch b/debian/patches/tests-use-kill-from-PATH.patch
index c8a6cec..8124afe 100644
--- a/debian/patches/tests-use-kill-from-PATH.patch
+++ b/debian/patches/tests-use-kill-from-PATH.patch
@@ -3,6 +3,8 @@ Date: Sun, 21 Jun 2020 17:02:56 +0200
Subject: tests: use kill from PATH
It is not guaranteed that /bin/kill exists and we are already using the bash builtin elsewhere in the script.
+
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
---
tests/test-document-fuse.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/debian/patches/xdp-Send-messages-to-stderr-not-stdout.patch b/debian/patches/xdp-Send-messages-to-stderr-not-stdout.patch
new file mode 100644
index 0000000..d29ef03
--- /dev/null
+++ b/debian/patches/xdp-Send-messages-to-stderr-not-stdout.patch
@@ -0,0 +1,34 @@
+From: Simon McVittie <smcv at collabora.com>
+Date: Sun, 6 Sep 2020 17:45:04 +0100
+Subject: xdp: Send messages to stderr, not stdout
+
+This is done for two reasons:
+
+1. Logging on stdout can interfere with machine-readable protocols.
+
+2. stdout is normally fully buffered, whereas stderr is normally
+ line-buffered. It's a lot easier to debug the service when messages
+ don't lag behind.
+
+Signed-off-by: Simon McVittie <smcv at collabora.com>
+Forwarded: https://github.com/flatpak/xdg-desktop-portal/pull/521
+---
+ src/xdg-desktop-portal.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/xdg-desktop-portal.c b/src/xdg-desktop-portal.c
+index f049d19..88a6c5e 100644
+--- a/src/xdg-desktop-portal.c
++++ b/src/xdg-desktop-portal.c
+@@ -79,9 +79,9 @@ message_handler (const gchar *log_domain,
+ {
+ /* Make this look like normal console output */
+ if (log_level & G_LOG_LEVEL_DEBUG)
+- printf ("XDP: %s\n", message);
++ fprintf (stderr, "XDP: %s\n", message);
+ else
+- printf ("%s: %s\n", g_get_prgname (), message);
++ fprintf (stderr, "%s: %s\n", g_get_prgname (), message);
+ }
+
+ static void
More information about the Neon-commits
mailing list