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); +}