@@ -370,6 +370,28 @@ sandbox_flag_callback (G_GNUC_UNUSED const gchar *option_name,
370
370
return FALSE;
371
371
}
372
372
373
+ static GPtrArray * sandbox_a11y_own_names = NULL ;
374
+
375
+ static gboolean
376
+ sandbox_a11y_own_name_callback (G_GNUC_UNUSED const gchar * option_name ,
377
+ const gchar * value ,
378
+ G_GNUC_UNUSED gpointer data ,
379
+ GError * * error )
380
+ {
381
+ if (sandbox_a11y_own_names == NULL )
382
+ sandbox_a11y_own_names = g_ptr_array_new ();
383
+
384
+ if (!g_dbus_is_name (value ) || g_dbus_is_unique_name (value ))
385
+ {
386
+ g_set_error (error , G_OPTION_ERROR , G_OPTION_ERROR_FAILED ,
387
+ "Invalid bus name" );
388
+ return FALSE;
389
+ }
390
+
391
+ g_ptr_array_add (sandbox_a11y_own_names , g_strdup (value ));
392
+ return TRUE;
393
+ }
394
+
373
395
static guint32
374
396
get_portal_version (void )
375
397
{
@@ -809,6 +831,7 @@ main (int argc,
809
831
{ "sandbox-expose-path-try" , 0 , 0 , G_OPTION_ARG_FILENAME_ARRAY , & opt_sandbox_expose_path_try , "Expose access to path if it exists" , "PATH" },
810
832
{ "sandbox-expose-path-ro-try" , 0 , 0 , G_OPTION_ARG_FILENAME_ARRAY , & opt_sandbox_expose_path_ro_try , "Expose readonly access to path if it exists" , "PATH" },
811
833
{ "sandbox-flag" , 0 , 0 , G_OPTION_ARG_CALLBACK , sandbox_flag_callback , "Enable sandbox flag" , "FLAG" },
834
+ { "sandbox-a11y-own-name" , 0 , 0 , G_OPTION_ARG_CALLBACK , sandbox_a11y_own_name_callback , "Allow owning the name on the a11y bus" , "DBUS_NAME" },
812
835
{ "host" , 0 , 0 , G_OPTION_ARG_NONE , & opt_host , "Start the command on the host" , NULL },
813
836
{ "directory" , 0 , 0 , G_OPTION_ARG_FILENAME , & opt_directory , "Working directory in which to run the command" , "DIR" },
814
837
{ "app-path" , 0 , 0 , G_OPTION_ARG_FILENAME , & opt_app_path , "Replace runtime's /app with DIR or empty" , "DIR|\"\"" },
@@ -1167,6 +1190,19 @@ main (int argc,
1167
1190
g_variant_new_variant (g_variant_builder_end (g_steal_pointer (& expose_fd_builder ))));
1168
1191
}
1169
1192
1193
+ if (sandbox_a11y_own_names != NULL )
1194
+ {
1195
+ g_autoptr (GVariantBuilder ) sandbox_a11y_own_names_builder = g_variant_builder_new (G_VARIANT_TYPE ("as" ));
1196
+
1197
+ check_portal_version ("sandbox-a11y-own-names" , 7 );
1198
+
1199
+ for (size_t i = 0 ; i < sandbox_a11y_own_names -> len ; i ++ )
1200
+ g_variant_builder_add (sandbox_a11y_own_names_builder , "s" , g_ptr_array_index (sandbox_a11y_own_names , i ));
1201
+
1202
+ g_variant_builder_add (& options_builder , "{s@v}" , "sandbox-a11y-own-names" ,
1203
+ g_variant_new_variant (g_variant_builder_end (g_steal_pointer (& sandbox_a11y_own_names_builder ))));
1204
+ }
1205
+
1170
1206
if (opt_app_path != NULL )
1171
1207
{
1172
1208
gint32 handle ;
0 commit comments