summaryrefslogtreecommitdiff
path: root/libsoup/soup-session-feature.c
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2010-06-07 16:45:22 -0400
committerDan Winship <danw@gnome.org>2010-12-09 12:04:51 +0100
commit65d5f29c527ab6da5991696026d6bdbef903d169 (patch)
tree0d7eeb16b8f63688b757ecb2323d653e8a40c053 /libsoup/soup-session-feature.c
parentf5a0053364adfa24014f0c595c3a2890d10e437c (diff)
downloadlibsoup-65d5f29c527ab6da5991696026d6bdbef903d169.tar.gz
SoupSession: allow features to implement "subfeatures"
Let soup_session_add_feature_by_type() (and remove()) add and remove "features" from existing features. Eg, to add/remove auth types or Content-Encodings.
Diffstat (limited to 'libsoup/soup-session-feature.c')
-rw-r--r--libsoup/soup-session-feature.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/libsoup/soup-session-feature.c b/libsoup/soup-session-feature.c
index f5d12393..1db9c204 100644
--- a/libsoup/soup-session-feature.c
+++ b/libsoup/soup-session-feature.c
@@ -164,3 +164,42 @@ soup_session_feature_detach (SoupSessionFeature *feature,
{
SOUP_SESSION_FEATURE_GET_CLASS (feature)->detach (feature, session);
}
+
+gboolean
+soup_session_feature_add_feature (SoupSessionFeature *feature,
+ GType type)
+{
+ SoupSessionFeatureInterface *feature_iface =
+ SOUP_SESSION_FEATURE_GET_CLASS (feature);
+
+ if (feature_iface->add_feature)
+ return feature_iface->add_feature (feature, type);
+ else
+ return FALSE;
+}
+
+gboolean
+soup_session_feature_remove_feature (SoupSessionFeature *feature,
+ GType type)
+{
+ SoupSessionFeatureInterface *feature_iface =
+ SOUP_SESSION_FEATURE_GET_CLASS (feature);
+
+ if (feature_iface->remove_feature)
+ return feature_iface->remove_feature (feature, type);
+ else
+ return FALSE;
+}
+
+gboolean
+soup_session_feature_has_feature (SoupSessionFeature *feature,
+ GType type)
+{
+ SoupSessionFeatureInterface *feature_iface =
+ SOUP_SESSION_FEATURE_GET_CLASS (feature);
+
+ if (feature_iface->has_feature)
+ return feature_iface->has_feature (feature, type);
+ else
+ return FALSE;
+}