Received: by 2002:a89:48b:0:b0:1f5:f2ab:c469 with SMTP id a11csp83208lqd; Tue, 23 Apr 2024 15:46:15 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXqDp+eG4hd+q7Vrcgh3BKIYtTXSh2c10uaaWWYH8cA2cMqQmc0ZbKITXtPbKBCtdm4/U7NAXdboFuIkffbuygdNB8AHS3JNAMEw/jLXA== X-Google-Smtp-Source: AGHT+IGnOim7D0/YYRVABOpK1VR6ieuBe9CVyUAXCJDpUbNN0iEUB+Jvg1+1/ZMQ64q3BC7MvKtL X-Received: by 2002:a05:6a00:2406:b0:6eb:4:3f26 with SMTP id z6-20020a056a00240600b006eb00043f26mr1009649pfh.18.1713912375709; Tue, 23 Apr 2024 15:46:15 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713912375; cv=pass; d=google.com; s=arc-20160816; b=TYWY0kXsmwn2DIGkt8nxPAmhp7Klcjv3KPqeD7jKv8Cpo8h5Npxo5dphvMYtku8hGk QddhZEN/8LXZIXeSlSjfFPJI5UgD11n1nc469y74E6yVPn0NI/kcpUiXdTn5IwumwjGo gKFrVwPc+xCyu7YRqB2PAFOITsBHYc4uksqrz2MPlduucW9B3aUk/6ePPT4SLF39G6+p 9QK2UeqHPlmMwrV+m0To262AHvlCWISz46HLlqPBoxjGPqNQ1ajlyYWiCFDF8ZEibJQh G+hTzHWDUYdM4K9jRz14jiaBNMKHkCq7nLFDAnSkZO0JjiLyYGQPsi/mPiIOyqa2jpmv TA/g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:to:from :dkim-signature; bh=aJBFb5PmsKrQZkqLRjnvOTfrso1ZVWn55h9+2y2Dxrc=; fh=4lGQI6056MBa4/oovMyIYaKLn+Wz/24RGvUivMmQP8E=; b=yDQotw9PO5tuddf9tn9T2bk/Rp84r7Hp+iZcWfWab7h9VPnFCVYweZAILrOiZ59KCb rLi3ASwKkj4n2Izz9QaxtG9GPjt4fDV3lMGTyF4WYiXAhelyJ+DaDK9Au56MrDRaKc9j QN52L8rAeqTCnIhtGgxZtPIRg/MiWtDBvclJf0suGFpWV/OF8h93DopTJVH3YbE6H/7P NJEKHJp0S+TlXUyl6Rh4yil53Jft9BD59N9hYj0TlhTJ7tooecQpKa4gqq3Tp7A8r3bM Z8Y+5l8UldAEcxN0ssdSBubAHCrOfIQq7cW0obKYkDyYkyKZOsb30zQmLpxZTTaDCX3W 7ISA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=OeP2oxEV; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-bluetooth+bounces-3912-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-3912-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id r20-20020aa78b94000000b006e650049479si10223197pfd.96.2024.04.23.15.46.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 15:46:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth+bounces-3912-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=OeP2oxEV; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-bluetooth+bounces-3912-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-3912-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id B0156281B24 for ; Tue, 23 Apr 2024 22:46:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 719142C6AF; Tue, 23 Apr 2024 22:46:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OeP2oxEV" X-Original-To: linux-bluetooth@vger.kernel.org Received: from mail-ua1-f49.google.com (mail-ua1-f49.google.com [209.85.222.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 543D81C6BE for ; Tue, 23 Apr 2024 22:46:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713912369; cv=none; b=li3ubQ7oGus+IW4xxx0UMj4oa1SmPjcfrzyYp0zv1MfFGrhfQ8elici2WDVce9QpsL5INbQPI53UY5k/VXrAywnCdNciHfPgX83if0WmfF/TDfh7n6xF3auI60CnlyUf1IeirPvjKtTA0axPYW809gXYtMCL9sjyZrQrgkhdSqo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713912369; c=relaxed/simple; bh=8zzL+YorLdTupfWty8DAlRNEvHb92NK+t3Md+ROTeiA=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=j8D4qEfi3JwPZzqQVB35phJTN8zvQc2i18S+4pIsMLadt62Fh4Cr29sainftE0oAZsl2DwecFLjC3+4gCe4pAEo0TArRegjhTn/7E03IdtWnfgIOhtsmL67YPekmMk/TerbgWR4pr7ExlM4kvacFfcEtBq0Pa2pMo9Jf9DxzlY0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OeP2oxEV; arc=none smtp.client-ip=209.85.222.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ua1-f49.google.com with SMTP id a1e0cc1a2514c-7e978e12390so1622826241.3 for ; Tue, 23 Apr 2024 15:46:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713912366; x=1714517166; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=aJBFb5PmsKrQZkqLRjnvOTfrso1ZVWn55h9+2y2Dxrc=; b=OeP2oxEVCCJxa+MrkvO8bLB23BBilZUv+qklN/UOzwsAdrMybvMSeiuDZ9yXwKDvsc uNq6IRATS8dIIoHbqyM3u7PlfGb/4q8X12XcB9JyTaYNY5WSsLrNQge2OXMFTC3LNqSt xugGhtS3v82163DACUNMWp+gKesH6s575dVDBiW2GlgwXeXdwqChK3XeKFTdGjYEFIGk D10M6PtSVHhVF84jDZFBNNXqfiswrpnq1Djjufs2tLTF7QTmR4cku+MfzeIuJNF+5hvD Lo1l5pUyLrttAxbUYDDhPMgkdjYUMdTqq3FAjqdSosN4q4UhyJfzy5CEcLRpjuMKCmZI yMkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713912366; x=1714517166; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=aJBFb5PmsKrQZkqLRjnvOTfrso1ZVWn55h9+2y2Dxrc=; b=tb9wWjvtDsR9NGvOVuR3tHlwyBgLk0C9kJIVtEZPo6bXTt8eXdqC+tq0RoWousr1JU zrHIpNmTKnQxwHKDHysedaRgq9UyqCeUptSY7vGhjfdlsfVaCSveOtGY4fFrSAniCdIK yFMsEqXrqtDFMC6mnf7wQRg6EQaXtPWCMBqSus9/Byxh5B7Eu7CQrcNq8o/4jGiV6t6O E0N6xvYeaxdSx0PBHu1OBrHZ9YBSIhNJomqlYzmV6azgUakOixF9BPG/wlvF+MUzZr3C H6fEI0jj09aORf12CukcSJcg8RzDjH6YEi4F7Yb1J2Xne281nMb123BGacvjf0WtsD/6 B/bQ== X-Gm-Message-State: AOJu0Yzz/wUsAYh5QOe3ZH0t3t6y0hG0j0uCkP4J0rjD5x546FU8sZir UohVl1sOEXIr8m8n5ipFZYuHArHa7lL8Hcll7Q3zdyW9sFfT/oxtgsgvDA== X-Received: by 2002:a05:6102:44e:b0:47a:71fc:bf78 with SMTP id e14-20020a056102044e00b0047a71fcbf78mr896952vsq.16.1713912366416; Tue, 23 Apr 2024 15:46:06 -0700 (PDT) Received: from lvondent-mobl4.. ([107.146.107.67]) by smtp.gmail.com with ESMTPSA id g20-20020a05610209d400b0047b8ee9674dsm2196056vsi.1.2024.04.23.15.46.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 15:46:05 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v1 1/3] gdbus: Add testing flags Date: Tue, 23 Apr 2024 18:46:01 -0400 Message-ID: <20240423224603.2124790-1-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.44.0 Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Luiz Augusto von Dentz This adds testing flags which are similar to experimental but are only available for testing. --- gdbus/gdbus.h | 23 +++++++++++++++++++++++ gdbus/object.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/gdbus/gdbus.h b/gdbus/gdbus.h index 28b80229646c..6fe09b743221 100644 --- a/gdbus/gdbus.h +++ b/gdbus/gdbus.h @@ -72,6 +72,7 @@ typedef void (* GDBusSecurityFunction) (DBusConnection *connection, enum GDBusFlags { G_DBUS_FLAG_ENABLE_EXPERIMENTAL = (1 << 0), + G_DBUS_FLAG_ENABLE_TESTING = (1 << 1), }; enum GDBusMethodFlags { @@ -79,16 +80,19 @@ enum GDBusMethodFlags { G_DBUS_METHOD_FLAG_NOREPLY = (1 << 1), G_DBUS_METHOD_FLAG_ASYNC = (1 << 2), G_DBUS_METHOD_FLAG_EXPERIMENTAL = (1 << 3), + G_DBUS_METHOD_FLAG_TESTING = (1 << 4), }; enum GDBusSignalFlags { G_DBUS_SIGNAL_FLAG_DEPRECATED = (1 << 0), G_DBUS_SIGNAL_FLAG_EXPERIMENTAL = (1 << 1), + G_DBUS_SIGNAL_FLAG_TESTING = (1 << 2), }; enum GDBusPropertyFlags { G_DBUS_PROPERTY_FLAG_DEPRECATED = (1 << 0), G_DBUS_PROPERTY_FLAG_EXPERIMENTAL = (1 << 1), + G_DBUS_PROPERTY_FLAG_TESTING = (1 << 2), }; enum GDBusSecurityFlags { @@ -186,6 +190,20 @@ struct GDBusSecurityTable { .function = _function, \ .flags = G_DBUS_METHOD_FLAG_ASYNC | G_DBUS_METHOD_FLAG_EXPERIMENTAL +#define GDBUS_TESTING_METHOD(_name, _in_args, _out_args, _function) \ + .name = _name, \ + .in_args = _in_args, \ + .out_args = _out_args, \ + .function = _function, \ + .flags = G_DBUS_METHOD_FLAG_TESTING + +#define GDBUS_TESTING_ASYNC_METHOD(_name, _in_args, _out_args, _function) \ + .name = _name, \ + .in_args = _in_args, \ + .out_args = _out_args, \ + .function = _function, \ + .flags = G_DBUS_METHOD_FLAG_ASYNC | G_DBUS_METHOD_FLAG_TESTING + #define GDBUS_NOREPLY_METHOD(_name, _in_args, _out_args, _function) \ .name = _name, \ .in_args = _in_args, \ @@ -207,6 +225,11 @@ struct GDBusSecurityTable { .args = _args, \ .flags = G_DBUS_SIGNAL_FLAG_EXPERIMENTAL +#define GDBUS_TESTING_SIGNAL(_name, _args) \ + .name = _name, \ + .args = _args, \ + .flags = G_DBUS_SIGNAL_FLAG_EXPERIMENTAL + void g_dbus_set_flags(int flags); int g_dbus_get_flags(void); diff --git a/gdbus/object.c b/gdbus/object.c index f7c8c2be5d87..72d2d46e30ef 100644 --- a/gdbus/object.c +++ b/gdbus/object.c @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -115,6 +116,14 @@ static gboolean check_experimental(int flags, int flag) return !(global_flags & G_DBUS_FLAG_ENABLE_EXPERIMENTAL); } +static bool check_testing(int flags, int flag) +{ + if (!(flags & flag)) + return false; + + return !(global_flags & G_DBUS_FLAG_ENABLE_TESTING); +} + static void generate_interface_xml(GString *gstr, struct interface_data *iface) { const GDBusMethodTable *method; @@ -126,6 +135,9 @@ static void generate_interface_xml(GString *gstr, struct interface_data *iface) G_DBUS_METHOD_FLAG_EXPERIMENTAL)) continue; + if (check_testing(method->flags, G_DBUS_METHOD_FLAG_TESTING)) + continue; + g_string_append_printf(gstr, "", method->name); print_arguments(gstr, method->in_args, "in"); @@ -146,6 +158,9 @@ static void generate_interface_xml(GString *gstr, struct interface_data *iface) G_DBUS_SIGNAL_FLAG_EXPERIMENTAL)) continue; + if (check_testing(signal->flags, G_DBUS_SIGNAL_FLAG_TESTING)) + continue; + g_string_append_printf(gstr, "", signal->name); print_arguments(gstr, signal->args, NULL); @@ -163,6 +178,10 @@ static void generate_interface_xml(GString *gstr, struct interface_data *iface) G_DBUS_PROPERTY_FLAG_EXPERIMENTAL)) continue; + if (check_testing(property->flags, + G_DBUS_PROPERTY_FLAG_TESTING)) + continue; + g_string_append_printf(gstr, "", property->name, property->type, @@ -518,6 +537,9 @@ static void append_properties(struct interface_data *data, G_DBUS_PROPERTY_FLAG_EXPERIMENTAL)) continue; + if (check_testing(p->flags, G_DBUS_PROPERTY_FLAG_TESTING)) + continue; + if (p->get == NULL) continue; @@ -749,6 +771,9 @@ static inline const GDBusPropertyTable *find_property(const GDBusPropertyTable * G_DBUS_PROPERTY_FLAG_EXPERIMENTAL)) break; + if (check_testing(p->flags, G_DBUS_PROPERTY_FLAG_TESTING)) + break; + return p; } @@ -1061,6 +1086,9 @@ static DBusHandlerResult generic_message(DBusConnection *connection, G_DBUS_METHOD_FLAG_EXPERIMENTAL)) return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + if (check_testing(method->flags, G_DBUS_METHOD_FLAG_TESTING)) + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + if (g_dbus_args_have_signature(method->in_args, message) == FALSE) continue; @@ -1190,18 +1218,26 @@ static gboolean add_interface(struct generic_data *data, if (!check_experimental(method->flags, G_DBUS_METHOD_FLAG_EXPERIMENTAL)) goto done; + + if (!check_testing(method->flags, G_DBUS_METHOD_FLAG_TESTING)) + goto done; } for (signal = signals; signal && signal->name; signal++) { if (!check_experimental(signal->flags, G_DBUS_SIGNAL_FLAG_EXPERIMENTAL)) goto done; + if (!check_testing(signal->flags, G_DBUS_SIGNAL_FLAG_TESTING)) + goto done; } for (property = properties; property && property->name; property++) { if (!check_experimental(property->flags, G_DBUS_PROPERTY_FLAG_EXPERIMENTAL)) goto done; + if (!check_testing(property->flags, + G_DBUS_PROPERTY_FLAG_TESTING)) + goto done; } /* Nothing to register */ -- 2.44.0