diff --git a/libfwupd/fwupd-deprecated.h b/libfwupd/fwupd-deprecated.h index da81bf0a2..5e0a0cf0c 100644 --- a/libfwupd/fwupd-deprecated.h +++ b/libfwupd/fwupd-deprecated.h @@ -242,4 +242,10 @@ G_DEPRECATED_FOR(fwupd_release_set_appstream_id) void fwupd_result_set_unique_id (FwupdResult *result, const gchar *unique_id); +G_DEPRECATED_FOR(fwupd_release_get_trust_flags) +FwupdTrustFlags fwupd_result_get_update_trust_flags (FwupdResult *result); +G_DEPRECATED_FOR(fwupd_release_set_trust_flags) +void fwupd_result_set_update_trust_flags (FwupdResult *result, + FwupdTrustFlags trust_flags); + #endif /* __FWUPD_DEPRECATED_H */ diff --git a/libfwupd/fwupd-release.c b/libfwupd/fwupd-release.c index 951a6bf02..c9489e061 100644 --- a/libfwupd/fwupd-release.c +++ b/libfwupd/fwupd-release.c @@ -46,6 +46,7 @@ typedef struct { gchar *version; gchar *remote_id; guint64 size; + FwupdTrustFlags trust_flags; } FwupdReleasePrivate; G_DEFINE_TYPE_WITH_PRIVATE (FwupdRelease, fwupd_release, G_TYPE_OBJECT) @@ -523,6 +524,41 @@ fwupd_release_set_name (FwupdRelease *release, const gchar *name) priv->name = g_strdup (name); } +/** + * fwupd_release_get_trust_flags: + * @release: A #FwupdRelease + * + * Gets the trust level of the release. + * + * Returns: the trust bitfield, e.g. #FWUPD_TRUST_FLAG_PAYLOAD + * + * Since: 0.9.8 + **/ +FwupdTrustFlags +fwupd_release_get_trust_flags (FwupdRelease *release) +{ + FwupdReleasePrivate *priv = GET_PRIVATE (release); + g_return_val_if_fail (FWUPD_IS_RELEASE (release), 0); + return priv->trust_flags; +} + +/** + * fwupd_release_set_trust_flags: + * @release: A #FwupdRelease + * @trust_flags: the bitfield, e.g. #FWUPD_TRUST_FLAG_PAYLOAD + * + * Sets the trust level of the release. + * + * Since: 0.9.8 + **/ +void +fwupd_release_set_trust_flags (FwupdRelease *release, FwupdTrustFlags trust_flags) +{ + FwupdReleasePrivate *priv = GET_PRIVATE (release); + g_return_if_fail (FWUPD_IS_RELEASE (release)); + priv->trust_flags = trust_flags; +} + void fwupd_release_to_variant_builder (FwupdRelease *release, GVariantBuilder *builder) { @@ -600,6 +636,11 @@ fwupd_release_to_variant_builder (FwupdRelease *release, GVariantBuilder *builde FWUPD_RESULT_KEY_UPDATE_VENDOR, g_variant_new_string (priv->vendor)); } + if (priv->trust_flags != 0) { + g_variant_builder_add (builder, "{sv}", + FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS, + g_variant_new_uint64 (priv->trust_flags)); + } } /** @@ -691,6 +732,10 @@ fwupd_release_from_key_value (FwupdRelease *release, const gchar *key, GVariant fwupd_release_set_vendor (release, g_variant_get_string (value, NULL)); return; } + if (g_strcmp0 (key, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS) == 0) { + fwupd_release_set_trust_flags (release, g_variant_get_uint64 (value)); + return; + } } static void @@ -717,6 +762,27 @@ fwupd_pad_kv_siz (GString *str, const gchar *key, guint64 value) fwupd_pad_kv_str (str, key, tmp); } +static void +fwupd_pad_kv_tfl (GString *str, const gchar *key, FwupdTrustFlags trust_flags) +{ + guint i; + g_autoptr(GString) tmp = NULL; + + tmp = g_string_new (""); + for (i = 1; i < FWUPD_TRUST_FLAG_LAST; i *= 2) { + if ((trust_flags & i) == 0) + continue; + g_string_append_printf (tmp, "%s|", + fwupd_trust_flag_to_string (i)); + } + if (tmp->len == 0) { + g_string_append (tmp, fwupd_trust_flag_to_string (0)); + } else { + g_string_truncate (tmp, tmp->len - 1); + } + fwupd_pad_kv_str (str, key, tmp->str); +} + /** * fwupd_release_to_string: * @release: A #FwupdRelease @@ -752,6 +818,7 @@ fwupd_release_to_string (FwupdRelease *release) fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_UPDATE_URI, priv->uri); fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_UPDATE_HOMEPAGE, priv->homepage); fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_UPDATE_VENDOR, priv->vendor); + fwupd_pad_kv_tfl (str, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS, priv->trust_flags); return g_string_free (str, FALSE); } diff --git a/libfwupd/fwupd-release.h b/libfwupd/fwupd-release.h index 7c9e7e251..86080afe0 100644 --- a/libfwupd/fwupd-release.h +++ b/libfwupd/fwupd-release.h @@ -87,6 +87,9 @@ void fwupd_release_set_size (FwupdRelease *release, const gchar *fwupd_release_get_license (FwupdRelease *release); void fwupd_release_set_license (FwupdRelease *release, const gchar *license); +FwupdTrustFlags fwupd_release_get_trust_flags (FwupdRelease *release); +void fwupd_release_set_trust_flags (FwupdRelease *release, + FwupdTrustFlags trust_flags); G_END_DECLS diff --git a/libfwupd/fwupd-result.c b/libfwupd/fwupd-result.c index 5670394b7..ae477f2e8 100644 --- a/libfwupd/fwupd-result.c +++ b/libfwupd/fwupd-result.c @@ -37,7 +37,6 @@ static void fwupd_result_finalize (GObject *object); typedef struct { gchar *unique_id; - FwupdTrustFlags update_trust_flags; FwupdDevice *device; FwupdRelease *release; } FwupdResultPrivate; @@ -1067,7 +1066,7 @@ fwupd_result_get_update_trust_flags (FwupdResult *result) { FwupdResultPrivate *priv = GET_PRIVATE (result); g_return_val_if_fail (FWUPD_IS_RESULT (result), 0); - return priv->update_trust_flags; + return fwupd_release_get_trust_flags (priv->release); } /** @@ -1084,7 +1083,7 @@ fwupd_result_set_update_trust_flags (FwupdResult *result, FwupdTrustFlags trust_ { FwupdResultPrivate *priv = GET_PRIVATE (result); g_return_if_fail (FWUPD_IS_RESULT (result)); - priv->update_trust_flags = trust_flags; + fwupd_release_set_trust_flags (priv->release, trust_flags); } /** @@ -1373,11 +1372,6 @@ fwupd_result_to_data (FwupdResult *result, const gchar *type_string) /* create an array with all the metadata in */ g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); - if (priv->update_trust_flags != 0) { - g_variant_builder_add (&builder, "{sv}", - FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS, - g_variant_new_uint64 (priv->update_trust_flags)); - } /* device and release objects */ fwupd_release_to_variant_builder (priv->release, &builder); @@ -1395,48 +1389,6 @@ fwupd_result_to_data (FwupdResult *result, const gchar *type_string) return NULL; } -static void -fwupd_result_from_key_value (FwupdResult *result, const gchar *key, GVariant *value) -{ - if (g_strcmp0 (key, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS) == 0) { - fwupd_result_set_update_trust_flags (result, g_variant_get_uint64 (value)); - return; - } -} - -static void -fwupd_pad_kv_str (GString *str, const gchar *key, const gchar *value) -{ - /* ignore */ - if (key == NULL || value == NULL) - return; - g_string_append_printf (str, " %s: ", key); - for (gsize i = strlen (key); i < 20; i++) - g_string_append (str, " "); - g_string_append_printf (str, "%s\n", value); -} - -static void -fwupd_pad_kv_tfl (GString *str, const gchar *key, FwupdTrustFlags trust_flags) -{ - guint i; - g_autoptr(GString) tmp = NULL; - - tmp = g_string_new (""); - for (i = 1; i < FWUPD_TRUST_FLAG_LAST; i *= 2) { - if ((trust_flags & i) == 0) - continue; - g_string_append_printf (tmp, "%s|", - fwupd_trust_flag_to_string (i)); - } - if (tmp->len == 0) { - g_string_append (tmp, fwupd_trust_flag_to_string (0)); - } else { - g_string_truncate (tmp, tmp->len - 1); - } - fwupd_pad_kv_str (str, key, tmp->str); -} - /** * fwupd_result_to_string: * @result: A #FwupdResult @@ -1464,8 +1416,6 @@ fwupd_result_to_string (FwupdResult *result) g_string_append (str, device_str); release_str = fwupd_release_to_string (priv->release); g_string_append (str, release_str); - if (fwupd_release_get_version (priv->release) != NULL) - fwupd_pad_kv_tfl (str, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS, priv->update_trust_flags); return g_string_free (str, FALSE); } @@ -1561,7 +1511,6 @@ fwupd_result_from_variant_iter (FwupdResult *result, GVariantIter *iter) GVariant *value; const gchar *key; while (g_variant_iter_next (iter, "{&sv}", &key, &value)) { - fwupd_result_from_key_value (result, key, value); fwupd_release_from_key_value (priv->release, key, value); fwupd_device_from_key_value (priv->device, key, value); g_variant_unref (value); diff --git a/libfwupd/fwupd-result.h b/libfwupd/fwupd-result.h index ebffa1c6f..7a2ea075b 100644 --- a/libfwupd/fwupd-result.h +++ b/libfwupd/fwupd-result.h @@ -51,10 +51,6 @@ FwupdResult *fwupd_result_new_from_data (GVariant *data); FwupdRelease *fwupd_result_get_release (FwupdResult *result); FwupdDevice *fwupd_result_get_device (FwupdResult *result); -FwupdTrustFlags fwupd_result_get_update_trust_flags (FwupdResult *result); -void fwupd_result_set_update_trust_flags (FwupdResult *result, - FwupdTrustFlags trust_flags); - GVariant *fwupd_result_to_data (FwupdResult *result, const gchar *type_string); gchar *fwupd_result_to_string (FwupdResult *result); diff --git a/libfwupd/fwupd-self-test.c b/libfwupd/fwupd-self-test.c index e876f2d4f..70eacd302 100644 --- a/libfwupd/fwupd-self-test.c +++ b/libfwupd/fwupd-self-test.c @@ -199,7 +199,8 @@ fwupd_result_func (void) fwupd_device_add_icon (dev, "input-gaming"); fwupd_device_add_icon (dev, "input-mouse"); fwupd_device_add_flag (dev, FWUPD_DEVICE_FLAG_REQUIRE_AC); - fwupd_result_set_update_trust_flags (result, FWUPD_TRUST_FLAG_PAYLOAD); + rel = fwupd_result_get_release (result); + fwupd_release_set_trust_flags (rel, FWUPD_TRUST_FLAG_PAYLOAD); rel = fwupd_result_get_release (result); fwupd_release_add_checksum (rel, "deadbeef"); diff --git a/src/fu-engine.c b/src/fu-engine.c index c0d2b0a3a..28dab1a88 100644 --- a/src/fu-engine.c +++ b/src/fu-engine.c @@ -1950,7 +1950,6 @@ fu_engine_get_result_from_app (FuEngine *self, AsApp *app, GError **error) release = as_app_get_release_default (app); if (!fu_engine_get_release_trust_flags (release, &trust_flags, error)) return NULL; - fwupd_result_set_update_trust_flags (res, trust_flags); /* possibly convert the version from 0x to dotted */ fu_engine_vendor_quirk_release_version (app); @@ -1961,6 +1960,7 @@ fu_engine_get_result_from_app (FuEngine *self, AsApp *app, GError **error) /* create a result with all the metadata in */ fwupd_device_set_description (dev, as_app_get_description (app, NULL)); rel = fwupd_result_get_release (res); + fwupd_release_set_trust_flags (rel, trust_flags); fwupd_release_set_homepage (rel, as_app_get_url_item (app, AS_URL_KIND_HOMEPAGE)); fwupd_release_set_license (rel, as_app_get_project_license (app)); fwupd_release_set_name (rel, as_app_get_name (app, NULL));