From a817d7c1377e422e43d28fc1d5ab4e2c5e77b9cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Tyrychtr?= Date: Mon, 17 Feb 2025 16:34:21 +0100 Subject: [PATCH] core: Add a debug control override to disable the a11y manager ACL This commit adds another way how to disable the a11y manager ACL in development. Setting the unsafe mode might not be as straightforward as setting an environment variable for the session, and you can control it invidually too. Part-of: --- .../org.gnome.Mutter.DebugControl.xml | 2 +- src/backends/meta-a11y-manager.c | 8 ++++++++ src/core/meta-debug-control-private.h | 2 ++ src/core/meta-debug-control.c | 15 +++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/data/dbus-interfaces/org.gnome.Mutter.DebugControl.xml b/data/dbus-interfaces/org.gnome.Mutter.DebugControl.xml index 34190744d..372e7be26 100644 --- a/data/dbus-interfaces/org.gnome.Mutter.DebugControl.xml +++ b/data/dbus-interfaces/org.gnome.Mutter.DebugControl.xml @@ -12,7 +12,7 @@ - + diff --git a/src/backends/meta-a11y-manager.c b/src/backends/meta-a11y-manager.c index c51e2f712..c30f7c391 100644 --- a/src/backends/meta-a11y-manager.c +++ b/src/backends/meta-a11y-manager.c @@ -22,6 +22,7 @@ #include "backends/meta-a11y-manager.h" #include "backends/meta-dbus-access-checker.h" +#include "core/meta-debug-control-private.h" #include "meta/meta-backend.h" #include "meta/meta-context.h" #include "meta/util.h" @@ -191,8 +192,15 @@ check_access (GDBusInterfaceSkeleton *skeleton, gpointer user_data) { MetaA11yManager *a11y_manager = META_A11Y_MANAGER (user_data); + MetaContext *context = + meta_backend_get_context (a11y_manager->backend); const char *sender = g_dbus_method_invocation_get_sender (invocation); + MetaDebugControl *debug_control = + meta_context_get_debug_control (context); + + if (meta_debug_control_is_a11y_manager_without_access_control (debug_control)) + return TRUE; if (!meta_dbus_access_checker_is_sender_allowed (a11y_manager->access_checker, sender)) diff --git a/src/core/meta-debug-control-private.h b/src/core/meta-debug-control-private.h index b4e7efe75..893074c40 100644 --- a/src/core/meta-debug-control-private.h +++ b/src/core/meta-debug-control-private.h @@ -33,3 +33,5 @@ gboolean meta_debug_control_is_session_management_protocol_enabled (MetaDebugCon gboolean meta_debug_control_is_hw_cursor_inhibited (MetaDebugControl *debug_control); gboolean meta_debug_control_is_cursor_shape_protocol_enabled (MetaDebugControl *debug_control); + +gboolean meta_debug_control_is_a11y_manager_without_access_control (MetaDebugControl *debug_control); diff --git a/src/core/meta-debug-control.c b/src/core/meta-debug-control.c index e2b92baa8..cd6b2b2e5 100644 --- a/src/core/meta-debug-control.c +++ b/src/core/meta-debug-control.c @@ -173,6 +173,7 @@ meta_debug_control_init (MetaDebugControl *debug_control) gboolean session_management_protocol; gboolean cursor_shape_protocol; gboolean inhibit_hw_cursor; + gboolean a11y_manager_without_access_control; color_management_protocol = g_strcmp0 (getenv ("MUTTER_DEBUG_COLOR_MANAGEMENT_PROTOCOL"), "1") == 0; @@ -203,6 +204,11 @@ meta_debug_control_init (MetaDebugControl *debug_control) g_strcmp0 (getenv ("MUTTER_DEBUG_CURSOR_SHAPE_PROTOCOL"), "1") == 0; meta_dbus_debug_control_set_cursor_shape_protocol (dbus_debug_control, cursor_shape_protocol); + + a11y_manager_without_access_control = + g_strcmp0 (getenv ("MUTTER_DEBUG_A11Y_MANAGER_WITHOUT_ACCESS_CONTROL"), "1") == 0; + meta_dbus_debug_control_set_a11y_manager_without_access_control (dbus_debug_control, + a11y_manager_without_access_control); } gboolean @@ -295,3 +301,12 @@ meta_debug_control_is_cursor_shape_protocol_enabled (MetaDebugControl *debug_con return meta_dbus_debug_control_get_cursor_shape_protocol (dbus_debug_control); } + +gboolean +meta_debug_control_is_a11y_manager_without_access_control (MetaDebugControl *debug_control) +{ + MetaDBusDebugControl *dbus_debug_control = + META_DBUS_DEBUG_CONTROL (debug_control); + + return meta_dbus_debug_control_get_a11y_manager_without_access_control (dbus_debug_control); +}