[libgdata/gxml] * manually add missing changes and remove trailing spaces



commit 70c799f4c26d9b1c6e2fec180b9f18d5457f2809
Author: Richard Schwarting <aquarichy gmail com>
Date:   Sat Sep 24 02:18:24 2011 -0400

    * manually add missing changes and remove trailing spaces

 gdata/atom/gdata-link.c                          |    1 +
 gdata/exif/gdata-exif-tags.c                     |   14 ++--
 gdata/gcontact/gdata-gcontact-jot.c              |    2 +-
 gdata/gcontact/gdata-gcontact-website.c          |   21 ++-----
 gdata/gd/gdata-gd-phone-number.c                 |    2 +-
 gdata/gd/gdata-gd-postal-address.c               |    2 +-
 gdata/gdata-access-rule.c                        |    6 +-
 gdata/gdata-batch-feed.c                         |    4 +-
 gdata/gdata-entry.c                              |    4 +-
 gdata/gdata-feed.c                               |    2 +-
 gdata/gdata-parser.c                             |   32 +++++++++-
 gdata/gdata-parser.h                             |    3 +
 gdata/georss/gdata-georss-where.c                |    2 +-
 gdata/media/gdata-media-category.c               |    6 +-
 gdata/media/gdata-media-content.c                |   16 +++---
 gdata/media/gdata-media-credit.c                 |    6 +-
 gdata/media/gdata-media-group.c                  |   69 +++++++++++++++++-----
 gdata/media/gdata-media-thumbnail.c              |    8 +-
 gdata/services/calendar/gdata-calendar-event.c   |    2 +-
 gdata/services/contacts/gdata-contacts-contact.c |    6 +-
 gdata/services/contacts/gdata-contacts-group.c   |    2 +-
 gdata/services/documents/gdata-documents-entry.c |    2 +-
 gdata/services/picasaweb/gdata-picasaweb-album.c |   14 ++--
 gdata/services/picasaweb/gdata-picasaweb-file.c  |   14 ++--
 gdata/services/picasaweb/gdata-picasaweb-user.c  |    6 +-
 gdata/services/youtube/gdata-youtube-control.c   |    2 +-
 gdata/services/youtube/gdata-youtube-service.c   |    8 +-
 gdata/services/youtube/gdata-youtube-state.c     |    2 +-
 gdata/services/youtube/gdata-youtube-video.c     |    2 +-
 gdata/tests/common.c                             |   12 ++--
 gdata/tests/picasaweb.c                          |    5 +-
 31 files changed, 169 insertions(+), 108 deletions(-)
---
diff --git a/gdata/atom/gdata-link.c b/gdata/atom/gdata-link.c
index 8f6ba46..3c7cb91 100644
--- a/gdata/atom/gdata-link.c
+++ b/gdata/atom/gdata-link.c
@@ -318,6 +318,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	language = gxml_dom_element_get_attribute (root_elem, "hreflang");
 	if (gxml_dom_element_get_attribute_node (root_elem, "hreflang") != NULL && *language == '\0') {
 		g_free (language);
+
 		return gdata_parser_error_required_property_missing (root_node, "hreflang", error);
 	}
 	self->priv->language = language;
diff --git a/gdata/exif/gdata-exif-tags.c b/gdata/exif/gdata-exif-tags.c
index bb49f19..3279a17 100644
--- a/gdata/exif/gdata-exif-tags.c
+++ b/gdata/exif/gdata-exif-tags.c
@@ -116,12 +116,12 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 
 	if (g_strcmp0 (node_name, "distance") == 0 ) {
 		/* exif:distance */
-		gchar *distance = gxml_dom_element_get_content (elem);
+		gchar *distance = gdata_parser_element_get_content (elem);
 		self->priv->distance = g_ascii_strtod (distance, NULL);
 		g_free (distance);
 	} else if (g_strcmp0 (node_name, "fstop") == 0) {
 		/* exif:fstop */
-		gchar *fstop = gxml_dom_element_get_content (elem);
+		gchar *fstop = gdata_parser_element_get_content (elem);
 		self->priv->fstop = g_ascii_strtod (fstop, NULL);
 		g_free (fstop);
 	} else if (gdata_parser_string_from_element (node, "make", P_NONE, &(self->priv->make), &success, error) == TRUE ||
@@ -130,24 +130,24 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		return success;
 	} else if (g_strcmp0 (node_name, "exposure") == 0) {
 		/* exif:exposure */
-		gchar *exposure = gxml_dom_element_get_content (elem);
+		gchar *exposure = gdata_parser_element_get_content (elem);
 		self->priv->exposure = g_ascii_strtod (exposure, NULL);
 		g_free (exposure);
 	} else if (g_strcmp0 (node_name, "flash") == 0) {
 		/* exif:flash */
-		gchar *flash = gxml_dom_element_get_content (elem);
+		gchar *flash = gdata_parser_element_get_content (elem);
 		if (flash == NULL)
 			return gdata_parser_error_required_content_missing (node, error);
 		self->priv->flash = (g_strcmp0 (flash, "true") == 0 ? TRUE : FALSE);
 		g_free (flash);
 	} else if (g_strcmp0 (node_name, "focallength") == 0) {
 		/* exif:focal-length */
-		gchar *focal_length = gxml_dom_element_get_content (elem);
+		gchar *focal_length = gdata_parser_element_get_content (elem);
 		self->priv->focal_length = g_ascii_strtod (focal_length, NULL);
 		g_free (focal_length);
 	} else if (g_strcmp0 (node_name, "iso") == 0) {
 		/* exif:iso */
-		gchar *iso = gxml_dom_element_get_content (elem);
+		gchar *iso = gdata_parser_element_get_content (elem);
 		self->priv->iso = strtol (iso, NULL, 10);
 		g_free (iso);
 	} else if (g_strcmp0 (node_name, "time") == 0) {
@@ -155,7 +155,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		gchar *time_str;
 		guint64 milliseconds;
 
-		time_str = gxml_dom_element_get_content (elem);
+		time_str = gdata_parser_element_get_content (elem);
 		milliseconds = g_ascii_strtoull (time_str, NULL, 10);
 		g_free (time_str);
 
diff --git a/gdata/gcontact/gdata-gcontact-jot.c b/gdata/gcontact/gdata-gcontact-jot.c
index 4a8d69d..018b775 100644
--- a/gdata/gcontact/gdata-gcontact-jot.c
+++ b/gdata/gcontact/gdata-gcontact-jot.c
@@ -179,7 +179,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 		return gdata_parser_error_required_property_missing (root_node, "rel", error);
 	}
 
-	priv->content = gxml_dom_element_get_content (root_elem);
+	priv->content = gdata_parser_element_get_content (root_elem);
 	priv->relation_type = (gchar*) rel;
 
 	return TRUE;
diff --git a/gdata/gcontact/gdata-gcontact-website.c b/gdata/gcontact/gdata-gcontact-website.c
index aac505d..e84f9a7 100644
--- a/gdata/gcontact/gdata-gcontact-website.c
+++ b/gdata/gcontact/gdata-gcontact-website.c
@@ -235,7 +235,7 @@ gdata_gcontact_website_set_property (GObject *object, guint property_id, const G
 static gboolean
 pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root_node, gpointer user_data, GError **error)
 {
-	gchar *uri, *rel;
+	gchar *uri, *rel, *label;
 	gboolean primary_bool;
 	GDataGContactWebsitePrivate *priv = GDATA_GCONTACT_WEBSITE (parsable)->priv;
 	GXmlDomElement *root_elem = GXML_DOM_ELEMENT (root_node);
@@ -252,27 +252,18 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 
 	/* NOTE: We allow both rel and label to be present when we should probably be asserting that they're mutually exclusive. See the comment in
 	 * pre_get_xml() for details. */
-	rel = xmlGetProp (root_node, (xmlChar*) "rel");
-	label = xmlGetProp (root_node, (xmlChar*) "label");
-	if ((rel == NULL || *rel == '\0') && (label == NULL || *label == '\0')) {
-		xmlFree (rel);
-		xmlFree (label);
-		return gdata_parser_error_required_property_missing (root_node, "rel", error);
-	}
-
-	priv->relation_type = (gchar*) rel;
-	priv->label = (gchar*) label;
-	priv->uri = (gchar*) uri;
 	rel = gxml_dom_element_get_attribute (root_elem, "rel");
-	if (rel == NULL || *rel == '\0') {
+	label = gxml_dom_element_get_attribute (root_elem, "label");
+	if ((rel == NULL || *rel == '\0') && (label == NULL || *label == '\0')) {
 		g_free (uri);
 		g_free (rel);
+		g_free (label);
 		return gdata_parser_error_required_property_missing (root_node, "rel", error);
 	}
 
-	priv->uri = uri;
 	priv->relation_type = rel;
-	priv->label = gxml_dom_element_get_attribute (root_elem, "label");
+	priv->label = label;
+	priv->uri = uri;
 	priv->is_primary = primary_bool;
 
 	return TRUE;
diff --git a/gdata/gd/gdata-gd-phone-number.c b/gdata/gd/gdata-gd-phone-number.c
index 62a850f..d1acd7f 100644
--- a/gdata/gd/gdata-gd-phone-number.c
+++ b/gdata/gd/gdata-gd-phone-number.c
@@ -268,7 +268,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	if (gdata_parser_boolean_from_property (root_node, "primary", &primary_bool, 0, error) == FALSE)
 		return FALSE;
 
-	number = gxml_dom_element_get_content (root_elem);
+	number = gdata_parser_element_get_content (root_elem);
 	if (number == NULL || *number == '\0') {
 		g_free (number);
 		return gdata_parser_error_required_content_missing (root_node, error);
diff --git a/gdata/gd/gdata-gd-postal-address.c b/gdata/gd/gdata-gd-postal-address.c
index 4f73d4f..28de561 100644
--- a/gdata/gd/gdata-gd-postal-address.c
+++ b/gdata/gd/gdata-gd-postal-address.c
@@ -611,7 +611,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		} else if (g_strcmp0 (gxml_dom_xnode_get_node_name (node), "country") == 0) {
 			/* gd:country */
 			priv->country_code = gxml_dom_element_get_attribute (elem, "code");
-			priv->country = gxml_dom_element_get_content (elem);
+			priv->country = gdata_parser_element_get_content (elem);
 
 			return TRUE;
 		}
diff --git a/gdata/gdata-access-rule.c b/gdata/gdata-access-rule.c
index 999e0fe..9f9f90a 100644
--- a/gdata/gdata-access-rule.c
+++ b/gdata/gdata-access-rule.c
@@ -293,7 +293,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		node_name = gxml_dom_xnode_get_node_name (node);
 		if (g_strcmp0 (node_name, "role") == 0) {
 			/* gAcl:role */
-			gchar *role = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (node), "value");
+			gchar *role = gdata_parser_get_attribute (GXML_DOM_ELEMENT (node), "value");
 			if (role == NULL)
 				return gdata_parser_error_required_property_missing (node, "value", error);
 			self->priv->role = role;
@@ -301,11 +301,11 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			/* gAcl:scope */
 			gchar *scope_type, *scope_value;
 
-			scope_type = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (node), "type");
+			scope_type = gdata_parser_get_attribute (GXML_DOM_ELEMENT (node), "type");
 			if (scope_type == NULL)
 				return gdata_parser_error_required_property_missing (node, "type", error);
 
-			scope_value = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (node), "value");
+			scope_value = gdata_parser_get_attribute (GXML_DOM_ELEMENT (node), "value");
 
 			if (g_strcmp0 (scope_type, GDATA_ACCESS_SCOPE_DEFAULT) == 0 && scope_value == NULL) {
 				g_free (scope_type); // TODO:GXML: should scope_type be dealloc'd from get_attribute? should not scope_value be as well?
diff --git a/gdata/gdata-batch-feed.c b/gdata/gdata-batch-feed.c
index d29c41d..4566002 100644
--- a/gdata/gdata-batch-feed.c
+++ b/gdata/gdata-batch-feed.c
@@ -90,11 +90,11 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 				gchar *status_code_string;
 				GXmlDomXNode *child_node;
 
-				status_code_string = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (entry_node), "code");
+				status_code_string = gdata_parser_get_attribute (GXML_DOM_ELEMENT (entry_node), "code");
 				status_code = strtoul ((char*) status_code_string, NULL, 10);
 				g_free (status_code_string); // TODO:GXML: do we want to free this?
 
-				status_reason = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (entry_node), "reason");
+				status_reason = gdata_parser_get_attribute (GXML_DOM_ELEMENT (entry_node), "reason");
 
 				/* Dump the content of the status node, since it's service-specific, and could be anything from plain text to XML */
 
diff --git a/gdata/gdata-entry.c b/gdata/gdata-entry.c
index 96957da..1235a3f 100644
--- a/gdata/gdata-entry.c
+++ b/gdata/gdata-entry.c
@@ -415,7 +415,7 @@ static gboolean
 pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root_node, gpointer user_data, GError **error)
 {
 	/* Extract the ETag */
-	GDATA_ENTRY (parsable)->priv->etag = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (root_node), "etag");
+	GDATA_ENTRY (parsable)->priv->etag = gdata_parser_get_attribute (GXML_DOM_ELEMENT (root_node), "etag");
 
 	return TRUE;
 }
@@ -444,7 +444,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			return success;
 		} else if (g_strcmp0 (gxml_dom_xnode_get_node_name (node), "content") == 0) {
 			/* atom:content */
-			priv->content = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (node), "src");
+			priv->content = gdata_parser_get_attribute (GXML_DOM_ELEMENT (node), "src");
 			priv->content_is_uri = TRUE;
 
 			if (priv->content == NULL) {
diff --git a/gdata/gdata-feed.c b/gdata/gdata-feed.c
index e1b8e5f..035eed2 100644
--- a/gdata/gdata-feed.c
+++ b/gdata/gdata-feed.c
@@ -413,7 +413,7 @@ static gboolean
 pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root_node, gpointer user_data, GError **error)
 {
 	/* Extract the ETag */
-	GDATA_FEED (parsable)->priv->etag = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (root_node), "etag");
+	GDATA_FEED (parsable)->priv->etag = gdata_parser_get_attribute (GXML_DOM_ELEMENT (root_node), "etag");
 	return TRUE;
 }
 
diff --git a/gdata/gdata-parser.c b/gdata/gdata-parser.c
index 4cd8070..7bdab8e 100644
--- a/gdata/gdata-parser.c
+++ b/gdata/gdata-parser.c
@@ -287,7 +287,7 @@ gdata_parser_int64_from_iso8601 (const gchar *date, gint64 *_time)
 gboolean
 gdata_parser_boolean_from_property (GXmlDomXNode *element, const gchar *property_name, gboolean *output, gint default_output, GError **error)
 {
-	gchar *value = gxml_dom_element_get_attribute (GXML_DOM_ELEMENT (element), property_name);
+	gchar *value = gdata_parser_get_attribute (GXML_DOM_ELEMENT (element), property_name);
 
 	if (value == NULL) {
 		/* Missing property */
@@ -388,8 +388,10 @@ gdata_parser_string_from_element (GXmlDomXNode *element, const gchar *element_na
 	}
 
 	/* Success! */
-	g_free (*output);
-	*output = (gchar*) text;
+	if (g_strcmp0 (text, "") != 0) { // Added because historically, libgdata would get a NULL if an element had no content, but GXml returns "" then
+		g_free (*output);
+		*output = text;
+	}
 	*success = TRUE;
 	// TODO:GXML: is gdata failing to free text now?  I think so
 
@@ -694,3 +696,27 @@ gdata_parser_utf8_trim_whitespace (const gchar *s)
 
 	return g_strndup (s, _s - s);
 }
+
+/* DOM Level 1 API wants us to return "" when not set, but libxml2
+   used to return NULL, so libgdata expects NULL all over the place. */
+gchar *gdata_parser_get_attribute (GXmlDomElement *element, const gchar *attr_name)
+{
+	GXmlDomAttr *attr = gxml_dom_element_get_attribute_node (element, attr_name);
+
+	if (attr == NULL) {
+		return NULL;
+	} else {
+		// We duplicate it, because attribute values are const gchar*s, since their memory life cycle is supposed to be managed by GXml, and not by its users.  However, libgdata assumes it needs to since libxml2
+		return g_strdup (gxml_dom_attr_get_value (attr));
+	}
+}
+
+gchar *gdata_parser_element_get_content (GXmlDomElement *elem) {
+	gchar *text = gxml_dom_element_get_content (elem);
+
+	if (g_strcmp0 (text, "") == 0) {
+		return NULL;
+	} else {
+		return text;
+	}
+}
diff --git a/gdata/gdata-parser.h b/gdata/gdata-parser.h
index 2cf8d3f..084a142 100644
--- a/gdata/gdata-parser.h
+++ b/gdata/gdata-parser.h
@@ -82,6 +82,9 @@ gboolean gdata_parser_object_from_element (GXmlDomXNode *element, const gchar *e
 void gdata_parser_string_append_escaped (GString *xml_string, const gchar *pre, const gchar *element_content, const gchar *post);
 gchar *gdata_parser_utf8_trim_whitespace (const gchar *s) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
+gchar *gdata_parser_get_attribute (GXmlDomElement *element, const gchar *attr_name);
+gchar *gdata_parser_element_get_content (GXmlDomElement *elem);
+
 G_END_DECLS
 
 #endif /* !GDATA_PARSER_H */
diff --git a/gdata/georss/gdata-georss-where.c b/gdata/georss/gdata-georss-where.c
index d8708df..cd6d106 100644
--- a/gdata/georss/gdata-georss-where.c
+++ b/gdata/georss/gdata-georss-where.c
@@ -93,7 +93,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 
 		for (child = gxml_dom_xnode_get_first_child (node); child != NULL; child = gxml_dom_xnode_get_next_sibling (child)) {
 			if (g_strcmp0 (gxml_dom_xnode_get_node_name (child), "pos") == 0) {
-				gchar *pos = gxml_dom_element_get_content (GXML_DOM_ELEMENT (child));
+				gchar *pos = gdata_parser_element_get_content (GXML_DOM_ELEMENT (child));
 				gchar *endptr;
 
 				self->priv->latitude = g_ascii_strtod (pos, &endptr);
diff --git a/gdata/media/gdata-media-category.c b/gdata/media/gdata-media-category.c
index 8826d7e..9df2cce 100644
--- a/gdata/media/gdata-media-category.c
+++ b/gdata/media/gdata-media-category.c
@@ -196,13 +196,13 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	gchar *category, *scheme;
 	GXmlDomElement *root_elem = GXML_DOM_ELEMENT (root_node);
 
-	category = gxml_dom_element_get_content (root_elem);
+	category = gdata_parser_element_get_content (root_elem);
 	if (category == NULL || *category == '\0') {
 		g_free (category);
 		return gdata_parser_error_required_content_missing (root_node, error);
 	}
 
-	scheme = gxml_dom_element_get_attribute (root_elem, "scheme");
+	scheme = gdata_parser_get_attribute (root_elem, "scheme");
 	if (scheme != NULL && *scheme == '\0') {
 		g_free (scheme);
 		g_free (category);
@@ -214,7 +214,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 
 	priv->category = category;
 	priv->scheme = scheme;
-	priv->label = gxml_dom_element_get_attribute (root_elem, "label");
+	priv->label = gdata_parser_get_attribute (root_elem, "label");
 
 	return TRUE;
 }
diff --git a/gdata/media/gdata-media-content.c b/gdata/media/gdata-media-content.c
index 719925b..040e027 100644
--- a/gdata/media/gdata-media-content.c
+++ b/gdata/media/gdata-media-content.c
@@ -302,7 +302,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 		return FALSE;
 
 	/* Parse expression */
-	expression = gxml_dom_element_get_attribute (root_elem, "expression");
+	expression = gdata_parser_get_attribute (root_elem, "expression");
 	if (expression == NULL || g_strcmp0 (expression, "full") == 0) {
 		expression_enum = GDATA_MEDIA_EXPRESSION_FULL;
 	} else if (g_strcmp0 (expression, "sample") == 0) {
@@ -317,7 +317,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	g_free (expression);
 
 	/* Parse medium */
-	medium = gxml_dom_element_get_attribute (root_elem, "medium");
+	medium = gdata_parser_get_attribute (root_elem, "medium");
 	if (medium == NULL) {
 		medium_enum = GDATA_MEDIA_UNKNOWN;
 	} else if (g_strcmp0 (medium, "image") == 0) {
@@ -338,26 +338,26 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	g_free (medium);
 
 	/* Parse duration */
-	duration = gxml_dom_element_get_attribute (root_elem, "duration");
+	duration = gdata_parser_get_attribute (root_elem, "duration");
 	duration_int64 = (duration == NULL) ? 0 : strtol (duration, NULL, 10);
 	g_free (duration);
 
 	/* Parse filesize */
-	filesize = gxml_dom_element_get_attribute (root_elem, "fileSize");
+	filesize = gdata_parser_get_attribute (root_elem, "fileSize");
 	filesize_ulong = (filesize == NULL) ? 0 : strtoul (filesize, NULL, 10);
 	g_free (filesize);
 
 	/* Parse height and width */
-	height = gxml_dom_element_get_attribute (root_elem, "height");
+	height = gdata_parser_get_attribute (root_elem, "height");
 	height_uint = (height == NULL) ? 0 : strtoul (height, NULL, 10);
 	g_free (height);
 
-	width = gxml_dom_element_get_attribute (root_elem, "width");
+	width = gdata_parser_get_attribute (root_elem, "width");
 	width_uint = (width == NULL) ? 0 : strtoul (width, NULL, 10);
 	g_free (width);
 
 	/* Other properties */
-	uri = gxml_dom_element_get_attribute (root_elem, "url");
+	uri = gdata_parser_get_attribute (root_elem, "url");
 	if (uri != NULL && *uri == '\0') {
 		g_free (uri);
 		return gdata_parser_error_required_property_missing (root_node, "url", error);
@@ -365,7 +365,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 
 	priv->uri = uri;
 	priv->filesize = filesize_ulong;
-	priv->content_type = gxml_dom_element_get_attribute (root_elem, "type");
+	priv->content_type = gdata_parser_get_attribute (root_elem, "type");
 	priv->medium = medium_enum;
 	priv->is_default = is_default_bool;
 	priv->expression = expression_enum;
diff --git a/gdata/media/gdata-media-credit.c b/gdata/media/gdata-media-credit.c
index 1f08b08..f00e63e 100644
--- a/gdata/media/gdata-media-credit.c
+++ b/gdata/media/gdata-media-credit.c
@@ -172,13 +172,13 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	guint i;
 	GXmlDomElement *root_elem = GXML_DOM_ELEMENT (root_node);
 
-	credit = gxml_dom_element_get_content (root_elem);
+	credit = gdata_parser_element_get_content (root_elem);
 	if (credit == NULL || *credit == '\0') {
 		g_free (credit);
 		return gdata_parser_error_required_content_missing (root_node, error);
 	}
 
-	scheme = gxml_dom_element_get_attribute (root_elem, "scheme");
+	scheme = gdata_parser_get_attribute (root_elem, "scheme");
 	if (scheme != NULL && *scheme == '\0') {
 		g_free (scheme);
 		g_free (credit);
@@ -190,7 +190,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 
 	priv->credit = credit;
 	priv->scheme = scheme;
-	priv->role = gxml_dom_element_get_attribute (root_elem, "role");
+	priv->role = gdata_parser_get_attribute (root_elem, "role");
 
 	/* Convert the role to lower case */
 	if (priv->role != NULL) {
diff --git a/gdata/media/gdata-media-group.c b/gdata/media/gdata-media-group.c
index 4c0f0fd..11489df 100644
--- a/gdata/media/gdata-media-group.c
+++ b/gdata/media/gdata-media-group.c
@@ -163,7 +163,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		} else if (g_strcmp0 (node_name, "keywords") == 0) {
 			/* media:keywords */
 			guint i;
-			gchar *text = gxml_dom_element_get_content (elem);
+			gchar *text = gdata_parser_element_get_content (elem);
 
 			g_strfreev (self->priv->keywords);
 			if (text == NULL) {
@@ -197,21 +197,56 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			}
 		} else if (g_strcmp0 (node_name, "player") == 0) {
 			/* media:player */
-			gchar *player_uri = gxml_dom_element_get_attribute (elem, "url");
+			gchar *player_uri = gdata_parser_get_attribute (elem, "url");
 			g_free (self->priv->player_uri);
 			self->priv->player_uri = player_uri;
 		} else if (g_strcmp0 (node_name, "rating") == 0) {
 			/* media:rating */
-			gchar *countries;
-
-			countries = gxml_dom_element_get_attribute (elem, "country");
-
-			if (countries != NULL) {
-				gchar **country_list, **country;
-
-				/* It's either a comma-separated list of countries, or the value "all" */
-				country_list = g_strsplit (countries, ",", -1);
-				g_free (countries);
+			gchar *scheme;
+
+			/* The possible schemes are defined here:
+			 *  â http://video.search.yahoo.com/mrss
+			 *  â http://code.google.com/apis/youtube/2.0/reference.html#youtube_data_api_tag_media:rating
+			 */
+			scheme = gdata_parser_get_attribute (elem, "scheme");
+
+			if (scheme == NULL || g_strcmp0 (scheme, "urn:simple") == 0) {
+				/* Options: adult, nonadult */
+				gdata_parser_string_from_element (node, "rating", P_REQUIRED | P_NON_EMPTY, &(self->priv->simple_rating),
+				                                  &success, error);
+			} else if (g_strcmp0 (scheme, "urn:mpaa") == 0) {
+				/* Options: g, pg, pg-13, r, nc-17 */
+				gdata_parser_string_from_element (node, "rating", P_REQUIRED | P_NON_EMPTY, &(self->priv->mpaa_rating),
+				                                  &success, error);
+			} else if (g_strcmp0 (scheme, "urn:v-chip") == 0) {
+				/* Options: tv-y, tv-y7, tv-y7-fv, tv-g, tv-pg, tv-14, tv-ma */
+				gdata_parser_string_from_element (node, "rating", P_REQUIRED | P_NON_EMPTY, &(self->priv->v_chip_rating),
+				                                  &success, error);
+			} else if (g_strcmp0 (scheme, "http://gdata.youtube.com/schemas/2007#mediarating";) == 0) {
+				/* No content, but we do get a list of countries. There's nothing like overloading the semantics of XML elements
+				 * to brighten up one's day. */
+
+				gchar *countries;
+
+				countries = gdata_parser_get_attribute (elem, "country");
+
+				if (countries != NULL) {
+					gchar **country_list, **country;
+
+					/* It's either a comma-separated list of countries, or the value "all" */
+					country_list = g_strsplit (countries, ",", -1);
+					g_free (countries);
+
+					/* Add all the listed countries to the restricted countries table */
+					for (country = country_list; *country != NULL; country++) {
+						g_hash_table_insert (self->priv->restricted_countries, *country, GUINT_TO_POINTER (TRUE));
+					}
+
+					g_free (country_list);
+				} else {
+					/* Assume it's restricted in all countries */
+					g_hash_table_insert (self->priv->restricted_countries, g_strdup ("all"), GUINT_TO_POINTER (TRUE));
+				}
 
 				success = TRUE;
 			} else {
@@ -219,6 +254,10 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 				gdata_parser_error_unknown_property_value (node, "scheme", (gchar*) scheme, error);
 				success = FALSE;
 			}
+
+			g_free (scheme); // TODO:GXML: make sure that get_attribute and friend return de-allocatable memory
+
+			return success;
 		} else if (g_strcmp0 (node_name, "restriction") == 0) {
 			/* media:restriction */
 			gchar *type, *countries, *relationship;
@@ -226,7 +265,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			gboolean relationship_bool;
 
 			/* Check the type property is "country" */
-			type = gxml_dom_element_get_attribute (elem, "type");
+			type = gdata_parser_get_attribute (elem, "type");
 			if (g_strcmp0 (type, "country") != 0) {
 				gdata_parser_error_unknown_property_value (node, "type", type, error);
 				g_free (type);
@@ -234,7 +273,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			}
 			g_free (type);
 
-			relationship = gxml_dom_element_get_attribute (elem, "relationship");
+			relationship = gdata_parser_get_attribute (elem, "relationship");
 			if (g_strcmp0 (relationship, "allow") == 0) {
 				relationship_bool = FALSE; /* it's *not* a restricted country */
 			} else if (g_strcmp0 (relationship, "deny") == 0) {
@@ -246,7 +285,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			}
 			g_free (relationship);
 
-			countries = gxml_dom_element_get_content (elem);
+			countries = gdata_parser_element_get_content (elem);
 			country_list = g_strsplit (countries, " ", -1);
 			g_free (countries);
 
diff --git a/gdata/media/gdata-media-thumbnail.c b/gdata/media/gdata-media-thumbnail.c
index 0956432..363823b 100644
--- a/gdata/media/gdata-media-thumbnail.c
+++ b/gdata/media/gdata-media-thumbnail.c
@@ -251,16 +251,16 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	GXmlDomElement *root_elem = GXML_DOM_ELEMENT (root_node);
 
 	/* Get the width and height */
-	width = gxml_dom_element_get_attribute (root_elem, "width");
+	width = gdata_parser_get_attribute (root_elem, "width");
 	width_uint = (width == NULL) ? 0 : strtoul (width, NULL, 10);
 	g_free (width);
 
-	height = gxml_dom_element_get_attribute (root_elem, "height");
+	height = gdata_parser_get_attribute (root_elem, "height");
 	height_uint = (height == NULL) ? 0 : strtoul (height, NULL, 10);
 	g_free (height);
 
 	/* Get and parse the time */
-	_time = gxml_dom_element_get_attribute (root_elem, "time");
+	_time = gdata_parser_get_attribute (root_elem, "time");
 	if (_time == NULL) {
 		time_int64 = -1;
 	} else {
@@ -274,7 +274,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	}
 
 	/* Get the URI */
-	uri = gxml_dom_element_get_attribute (root_elem, "url");
+	uri = gdata_parser_get_attribute (root_elem, "url");
 	if (uri == NULL || *uri == '\0') {
 		g_free (uri);
 		return gdata_parser_error_required_property_missing (root_node, "url", error);
diff --git a/gdata/services/calendar/gdata-calendar-event.c b/gdata/services/calendar/gdata-calendar-event.c
index 4d1a80c..90f1584 100644
--- a/gdata/services/calendar/gdata-calendar-event.c
+++ b/gdata/services/calendar/gdata-calendar-event.c
@@ -548,7 +548,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			self->priv->transparency = value;
 		} else if (g_strcmp0 (node_name, "recurrence") == 0) {
 			/* gd:recurrence */
-			self->priv->recurrence = gxml_dom_element_get_content (elem);
+			self->priv->recurrence = gdata_parser_element_get_content (elem);
 		} else if (g_strcmp0 (node_name, "originalEvent") == 0) {
 			/* gd:originalEvent */
 			self->priv->original_event_id = gxml_dom_element_get_attribute (elem, "id");
diff --git a/gdata/services/contacts/gdata-contacts-contact.c b/gdata/services/contacts/gdata-contacts-contact.c
index 6e02f93..337357f 100644
--- a/gdata/services/contacts/gdata-contacts-contact.c
+++ b/gdata/services/contacts/gdata-contacts-contact.c
@@ -778,7 +778,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		 * the changes. This fixes bugs caused by referring to contacts by the base projection, rather than the full projection;
 		 * such as http://code.google.com/p/gdata-issues/issues/detail?id=2129. */
 		gchar *base;
-		gchar *id = gxml_dom_element_get_content (elem);
+		gchar *id = gdata_parser_element_get_content (elem);
 
 		if (id != NULL) {
 			base = strstr (id, "/base/");
@@ -817,7 +817,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			value = gxml_dom_element_get_attribute (elem, "value");
 			if (value == NULL) {
 				GXmlDomXNode *child_node;
-				
+
 				/* Use the element's content instead (arbitrary XML) */
 				for (child_node = gxml_dom_xnode_get_first_child (node); child_node != NULL; child_node = gxml_dom_xnode_get_next_sibling (child_node)) {
 					value_new = g_strconcat (value, gxml_dom_xnode_to_string (child_node, 0, 0), NULL);
@@ -884,7 +884,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			/* gContact:hobby */
 			gchar *hobby;
 
-			hobby = gxml_dom_element_get_content (elem);
+			hobby = gdata_parser_element_get_content (elem);
 			if (hobby == NULL || *hobby == '\0') {
 				g_free (hobby);
 				return gdata_parser_error_required_content_missing (node, error);
diff --git a/gdata/services/contacts/gdata-contacts-group.c b/gdata/services/contacts/gdata-contacts-group.c
index aeb4d72..e5caba7 100644
--- a/gdata/services/contacts/gdata-contacts-group.c
+++ b/gdata/services/contacts/gdata-contacts-group.c
@@ -329,7 +329,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		 * changes. This fixes bugs caused by referring to contacts by the base projection, rather than the full projection; such as
 		 * http://code.google.com/p/gdata-issues/issues/detail?id=2129. */
 		gchar *base;
-		gchar *id = gxml_dom_element_get_content (elem);
+		gchar *id = gdata_parser_element_get_content (elem);
 
 		if (id != NULL) {
 			base = strstr (id, "/base/");
diff --git a/gdata/services/documents/gdata-documents-entry.c b/gdata/services/documents/gdata-documents-entry.c
index b5dd602..642e32b 100644
--- a/gdata/services/documents/gdata-documents-entry.c
+++ b/gdata/services/documents/gdata-documents-entry.c
@@ -433,7 +433,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			if (self->priv->document_id != NULL)
 				return gdata_parser_error_duplicate_element (node, error);
 
-			resource_id = gxml_dom_element_get_content (elem);
+			resource_id = gdata_parser_element_get_content (elem);
 			if (resource_id == NULL || *resource_id == '\0') {
 				g_free (resource_id);
 				return gdata_parser_error_required_content_missing (node, error);
diff --git a/gdata/services/picasaweb/gdata-picasaweb-album.c b/gdata/services/picasaweb/gdata-picasaweb-album.c
index 8970f51..55be1a6 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-album.c
+++ b/gdata/services/picasaweb/gdata-picasaweb-album.c
@@ -681,7 +681,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			return success;
 		} else if (g_strcmp0 (node_name, "access") == 0) {
 			/* gphoto:access */
-			gchar *access_level = gxml_dom_element_get_content (elem);
+			gchar *access_level = gdata_parser_element_get_content (elem);
 			if (g_strcmp0 (access_level, "public") == 0) {
 				gdata_picasaweb_album_set_visibility (self, GDATA_PICASAWEB_PUBLIC);
 			} else if (g_strcmp0 (access_level, "private") == 0) {
@@ -697,14 +697,14 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			gchar *timestamp_str;
 			guint64 milliseconds;
 
-			timestamp_str = gxml_dom_element_get_content (elem);
+			timestamp_str = gdata_parser_element_get_content (elem);
 			milliseconds = g_ascii_strtoull (timestamp_str, NULL, 10);
 			g_free (timestamp_str);
 
 			gdata_picasaweb_album_set_timestamp (self, (gint64) milliseconds);
 		} else if (g_strcmp0 (node_name, "numphotos") == 0) {
 			/* gphoto:numphotos */
-			gchar *num_photos = gxml_dom_element_get_content (elem);
+			gchar *num_photos = gdata_parser_element_get_content (elem);
 			if (num_photos == NULL || *num_photos == '\0') {
 				g_free (num_photos);
 				return gdata_parser_error_required_content_missing (node, error);
@@ -714,7 +714,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			g_free (num_photos);
 		} else if (g_strcmp0 (node_name, "numphotosremaining") == 0) {
 			/* gphoto:numphotosremaining */
-			gchar *num_photos_remaining = gxml_dom_element_get_content (elem);
+			gchar *num_photos_remaining = gdata_parser_element_get_content (elem);
 			if (num_photos_remaining == NULL || *num_photos_remaining == '\0') {
 				g_free (num_photos_remaining);
 				return gdata_parser_error_required_content_missing (node, error);
@@ -724,7 +724,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			g_free (num_photos_remaining);
 		} else if (g_strcmp0 (node_name, "bytesUsed") == 0) {
 			/* gphoto:bytesUsed */
-			gchar *bytes_used = gxml_dom_element_get_content (elem);
+			gchar *bytes_used = gdata_parser_element_get_content (elem);
 			if (bytes_used == NULL || *bytes_used == '\0') {
 				g_free (bytes_used);
 				return gdata_parser_error_required_content_missing (node, error);
@@ -734,7 +734,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			g_free (bytes_used);
 		} else if (g_strcmp0 (node_name, "commentingEnabled") == 0) {
 			/* gphoto:commentingEnabled */
-			gchar *commenting_enabled = gxml_dom_element_get_content (elem);
+			gchar *commenting_enabled = gdata_parser_element_get_content (elem);
 			if (commenting_enabled == NULL || *commenting_enabled == '\0') {
 				g_free (commenting_enabled);
 				return gdata_parser_error_required_content_missing (node, error);
@@ -745,7 +745,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			g_free (commenting_enabled);
 		} else if (g_strcmp0 (node_name, "commentCount") == 0) {
 			/* gphoto:commentCount */
-			gchar *comment_count = gxml_dom_element_get_content (elem);
+			gchar *comment_count = gdata_parser_element_get_content (elem);
 			if (comment_count == NULL || *comment_count == '\0') {
 				g_free (comment_count);
 				return gdata_parser_error_required_content_missing (node, error);
diff --git a/gdata/services/picasaweb/gdata-picasaweb-file.c b/gdata/services/picasaweb/gdata-picasaweb-file.c
index 32bb487..df96b22 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-file.c
+++ b/gdata/services/picasaweb/gdata-picasaweb-file.c
@@ -922,17 +922,17 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			return success;
 		} else if (g_strcmp0 (node_name, "width") == 0) {
 			/* gphoto:width */
-			gchar *width = gxml_dom_element_get_content (elem);
+			gchar *width = gdata_parser_element_get_content (elem);
 			self->priv->width = strtoul ((gchar*) width, NULL, 10);
 			g_free (width);
 		} else if (g_strcmp0 (node_name, "height") == 0) {
 			/* gphoto:height */
-			gchar *height = gxml_dom_element_get_content (elem);
+			gchar *height = gdata_parser_element_get_content (elem);
 			self->priv->height = strtoul ((gchar*) height, NULL, 10);
 			g_free (height);
 		} else if (g_strcmp0 (node_name, "size") == 0) {
 			/* gphoto:size */
-			gchar *size = gxml_dom_element_get_content (elem);
+			gchar *size = gdata_parser_element_get_content (elem);
 			self->priv->size = strtoul ((gchar*) size, NULL, 10);
 			g_free (size);
 		} else if (g_strcmp0 (node_name, "timestamp") == 0) {
@@ -940,21 +940,21 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			gchar *timestamp_str;
 			guint64 milliseconds;
 
-			timestamp_str = gxml_dom_element_get_content (elem);
+			timestamp_str = gdata_parser_element_get_content (elem);
 			milliseconds = g_ascii_strtoull ((gchar*) timestamp_str, NULL, 10);
 			g_free (timestamp_str);
 
 			gdata_picasaweb_file_set_timestamp (self, (gint64) milliseconds);
 		} else if (g_strcmp0 (node_name, "commentingEnabled") == 0) {
 			/* gphoto:commentingEnabled */
-			gchar *is_commenting_enabled = gxml_dom_element_get_content (elem);
+			gchar *is_commenting_enabled = gdata_parser_element_get_content (elem);
 			if (is_commenting_enabled == NULL)
 				return gdata_parser_error_required_content_missing (node, error);
 			self->priv->is_commenting_enabled = (g_strcmp0 (is_commenting_enabled, "true") == 0 ? TRUE : FALSE);
 			g_free (is_commenting_enabled);
 		} else if (g_strcmp0 (node_name, "commentCount") == 0) {
 			/* gphoto:commentCount */
-			gchar *comment_count = gxml_dom_element_get_content (elem);
+			gchar *comment_count = gdata_parser_element_get_content (elem);
 			self->priv->comment_count = strtoul ((gchar*) comment_count, NULL, 10);
 			g_free (comment_count);
 		} else if (g_strcmp0 (node_name, "access") == 0) {
@@ -964,7 +964,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			 * See https://bugzilla.gnome.org/show_bug.cgi?id=589858 */
 		} else if (g_strcmp0 (node_name, "rotation") == 0) {
 			/* gphoto:rotation */
-			gchar *rotation = gxml_dom_element_get_content (elem);
+			gchar *rotation = gdata_parser_element_get_content (elem);
 			gdata_picasaweb_file_set_rotation (self, strtoul ((gchar*) rotation, NULL, 10));
 			g_free (rotation);
 		} else {
diff --git a/gdata/services/picasaweb/gdata-picasaweb-user.c b/gdata/services/picasaweb/gdata-picasaweb-user.c
index b06e3be..98d886e 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-user.c
+++ b/gdata/services/picasaweb/gdata-picasaweb-user.c
@@ -240,17 +240,17 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 		return success;
 	} else if (g_strcmp0 (node_name, "quotacurrent") == 0) {
 		/* gphoto:quota-current */
-		gchar *quota_current = gxml_dom_element_get_content (elem);
+		gchar *quota_current = gdata_parser_element_get_content (elem);
 		self->priv->quota_current = g_ascii_strtoll ((const gchar*) quota_current, NULL, 10);
 		g_free (quota_current);
 	} else if (g_strcmp0 (node_name, "quotalimit") == 0) {
 		/* gphoto:quota-limit */
-		gchar *quota_limit = gxml_dom_element_get_content (elem);
+		gchar *quota_limit = gdata_parser_element_get_content (elem);
 		self->priv->quota_limit = g_ascii_strtoll ((const gchar*) quota_limit, NULL, 10);
 		g_free (quota_limit);
 	} else if (g_strcmp0 (node_name, "maxPhotosPerAlbum") == 0) {
 		/* gphoto:max-photos-per-album */
-		gchar *max_photos_per_album = gxml_dom_element_get_content (elem);
+		gchar *max_photos_per_album = gdata_parser_element_get_content (elem);
 		self->priv->max_photos_per_album = strtol ((char*) max_photos_per_album, NULL, 10);
 		g_free (max_photos_per_album);
 	} else if (g_strcmp0 (node_name, "x-allowDownloads") == 0) { /* RHSTODO: see if this comes with the user */
diff --git a/gdata/services/youtube/gdata-youtube-control.c b/gdata/services/youtube/gdata-youtube-control.c
index 1997656..d6109eb 100644
--- a/gdata/services/youtube/gdata-youtube-control.c
+++ b/gdata/services/youtube/gdata-youtube-control.c
@@ -102,7 +102,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 	if (gdata_parser_is_namespace (node, "http://www.w3.org/2007/app";) == TRUE &&
 	    g_strcmp0 (node_name, "draft") == 0) {
 		/* app:draft */
-		gchar *draft = gxml_dom_element_get_content (GXML_DOM_ELEMENT (gxml_dom_xnode_get_parent_node (node)));
+		gchar *draft = gdata_parser_element_get_content (GXML_DOM_ELEMENT (gxml_dom_xnode_get_parent_node (node)));
 		if (g_strcmp0 (draft, "no") == 0)
 			self->priv->is_draft = FALSE;
 		else
diff --git a/gdata/services/youtube/gdata-youtube-service.c b/gdata/services/youtube/gdata-youtube-service.c
index 4bf5342..adfa390 100644
--- a/gdata/services/youtube/gdata-youtube-service.c
+++ b/gdata/services/youtube/gdata-youtube-service.c
@@ -342,7 +342,7 @@ parse_error_response (GDataService *self, GDataOperationType operation_type, gui
 {
 	GXmlDomDocument *doc;
 	GXmlDomXNode *node;
-	const gchar *node_name; 
+	const gchar *node_name;
 
 	if (response_body == NULL)
 		goto parent;
@@ -396,11 +396,11 @@ parse_error_response (GDataService *self, GDataOperationType operation_type, gui
 			GXmlDomElement *child_elem = GXML_DOM_ELEMENT (child_node);
 
 			if (g_strcmp0 (child_node_name, "domain") == 0)
-				domain = gxml_dom_element_get_content (child_elem);
+				domain = gdata_parser_element_get_content (child_elem);
 			else if (g_strcmp0 (child_node_name, "code") == 0)
-				code = gxml_dom_element_get_content (child_elem);
+				code = gdata_parser_element_get_content (child_elem);
 			else if (g_strcmp0 (child_node_name, "location") == 0)
-				location = gxml_dom_element_get_content (child_elem);
+				location = gdata_parser_element_get_content (child_elem);
 			else if (g_strcmp0 (child_node_name, "internalReason") != 0) {
 				/* Unknown element (ignore internalReason) */
 				g_message ("Unhandled <error/%s> element.", child_node_name);
diff --git a/gdata/services/youtube/gdata-youtube-state.c b/gdata/services/youtube/gdata-youtube-state.c
index 9c66e7b..fde5d1c 100644
--- a/gdata/services/youtube/gdata-youtube-state.c
+++ b/gdata/services/youtube/gdata-youtube-state.c
@@ -202,7 +202,7 @@ pre_parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *root
 	priv->name = (gchar*) name;
 	priv->reason_code = (gchar*) gxml_dom_element_get_attribute (root_elem, "reasonCode");
 	priv->help_uri = (gchar*) gxml_dom_element_get_attribute (root_elem, "helpUrl");
-	priv->message = gxml_dom_element_get_content (root_elem);
+	priv->message = gdata_parser_element_get_content (root_elem);
 
 	return TRUE;
 }
diff --git a/gdata/services/youtube/gdata-youtube-video.c b/gdata/services/youtube/gdata-youtube-video.c
index e9db6b0..d8b791b 100644
--- a/gdata/services/youtube/gdata-youtube-video.c
+++ b/gdata/services/youtube/gdata-youtube-video.c
@@ -791,7 +791,7 @@ parse_xml (GDataParsable *parsable, GXmlDomDocument *doc, GXmlDomXNode *node, gp
 			gchar *recorded;
 			gint64 recorded_int64;
 
-			recorded = gxml_dom_element_get_content (elem);
+			recorded = gdata_parser_element_get_content (elem);
 			if (gdata_parser_int64_from_date ((gchar*) recorded, &recorded_int64) == FALSE) {
 				/* Error */
 				gdata_parser_error_not_iso8601_format (node, (gchar*) recorded, error);
diff --git a/gdata/tests/common.c b/gdata/tests/common.c
index 90c119c..f92193f 100644
--- a/gdata/tests/common.c
+++ b/gdata/tests/common.c
@@ -475,7 +475,7 @@ compare_xml_nodes (GXmlDomXNode *node1, GXmlDomXNode *node2)
 		       gxml_dom_element_get_content (GXML_DOM_ELEMENT (node2))) != 0) {
 		return FALSE;
 	}
-	
+
 	/* Compare their attributes. This is done in document order,
 	 * which isn't strictly correct, since XML specifically does
 	 * not apply an ordering over attributes. However, it suffices
@@ -513,18 +513,18 @@ compare_xml_nodes (GXmlDomXNode *node1, GXmlDomXNode *node2)
 		if (attr1 == NULL || attr2 == NULL) {
 			return FALSE;
 		}
-		
+
 		if (g_strcmp0 (gxml_dom_xnode_get_node_name (attr1),
 			       gxml_dom_xnode_get_node_name (attr2)) != 0
 		    || compare_xml_namespaces (attr1, attr2) == FALSE) {
 			return FALSE;
 		}
-		
+
 		if (compare_xml_node_lists (gxml_dom_xnode_get_child_nodes (attr1),
 					    gxml_dom_xnode_get_child_nodes (attr2)) == FALSE)
 			return FALSE;
 	}
-	
+
 	// no straglers like we once had, since we now check list size
 
 	/* /\* Compare their namespace definitions regardless of order. Do this by inserting all the definitions from node1 into a hash table, then running */
@@ -534,7 +534,7 @@ compare_xml_nodes (GXmlDomXNode *node1, GXmlDomXNode *node2)
 	/* The above doesn't reply for now, because, because we only
 	   have one namespace per node right now, while the code here
 	   used to iterate over a list of namespaces.  Here is what we
-	   used to do: 
+	   used to do:
   	     made sure all the prefixes used by node1 were unique
 	     remembered them all
 	     went through all the prefixes for node2
@@ -572,7 +572,7 @@ gdata_test_compare_xml (GDataParsable *parsable, const gchar *expected_xml, gboo
 
 	/* Parse both the XML strings */
 	parsable_doc = gxml_dom_document_new_from_string (parsable_xml, &error);
-	expected_doc = gxml_dom_document_new_from_string (expected_xml, &error); // TODO:GXML; grep for 'gxml.*_new_' and make sure we g_object_unref () everything! 
+	expected_doc = gxml_dom_document_new_from_string (expected_xml, &error); // TODO:GXML; grep for 'gxml.*_new_' and make sure we g_object_unref () everything!
 
 	g_assert (parsable_doc != NULL && expected_doc != NULL);
 
diff --git a/gdata/tests/picasaweb.c b/gdata/tests/picasaweb.c
index f1ef39b..2fe3eab 100644
--- a/gdata/tests/picasaweb.c
+++ b/gdata/tests/picasaweb.c
@@ -837,13 +837,14 @@ static void
 set_up_query_all_albums (QueryAllAlbumsData *data, gconstpointer service)
 {
 	GDataPicasaWebAlbum *album;
+	GError *error = NULL;
 
 	/* First album */
 	album = gdata_picasaweb_album_new (NULL);
 	gdata_entry_set_title (GDATA_ENTRY (album), "Test album 1 for QueryAllAlbums");
 
-	data->album1 = gdata_picasaweb_service_insert_album (GDATA_PICASAWEB_SERVICE (service), album, NULL, NULL);
-	g_assert (data->album1 != NULL);
+	data->album1 = gdata_picasaweb_service_insert_album (GDATA_PICASAWEB_SERVICE (service), album, NULL, &error);
+	g_assert (data->album1 != NULL && error == NULL);
 
 	g_object_unref (album);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]