[rygel/wip/didl-s: 25/35] renderer: Fix triple-escaping
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/wip/didl-s: 25/35] renderer: Fix triple-escaping
- Date: Wed, 21 Nov 2012 16:57:22 +0000 (UTC)
commit d559ec164d9f8116edab47384ad95e5cde92f58d
Author: Jens Georg <jensg openismus com>
Date: Tue Nov 20 16:26:18 2012 +0100
renderer: Fix triple-escaping
src/librygel-renderer/rygel-av-transport.vala | 42 ++++++++++++++++--------
1 files changed, 28 insertions(+), 14 deletions(-)
---
diff --git a/src/librygel-renderer/rygel-av-transport.vala b/src/librygel-renderer/rygel-av-transport.vala
index 06029b5..6b68f26 100644
--- a/src/librygel-renderer/rygel-av-transport.vala
+++ b/src/librygel-renderer/rygel-av-transport.vala
@@ -68,35 +68,36 @@ internal class Rygel.AVTransport : Service {
public string metadata {
owned get {
if (this._metadata != null) {
- if (this._metadata.has_prefix ("<")) {
- return this._metadata;
- }
- return Markup.escape_text (this._metadata);
+ return this._metadata;
} else {
return "";
}
}
set {
- this._metadata = value;
+ if (value.has_prefix ("<")) {
+ this._metadata = this.unescape (value);
+ } else {
+ this._metadata = value;
+ }
}
}
public string track_metadata {
owned get {
if (this.player.metadata != null) {
- if (this.player.metadata.has_prefix ("<")) {
- return this.player.metadata;
- }
-
- return Markup.escape_text (this.player.metadata);
+ return this.player.metadata;
} else {
return "";
}
}
set {
- this.player.metadata = value;
+ if (value.has_prefix ("<")) {
+ this.player.metadata = this.unescape (value);
+ } else {
+ this.player.metadata = value;
+ }
}
}
@@ -232,8 +233,10 @@ internal class Rygel.AVTransport : Service {
log.log ("CurrentTrack", this.track.to_string ());
log.log ("CurrentTrackDuration", this.player.duration_as_str);
log.log ("CurrentMediaDuration", this.player.duration_as_str);
- log.log ("CurrentTrackMetaData", this.track_metadata);
- log.log ("AVTransportURIMetaData", this.metadata);
+ log.log ("CurrentTrackMetaData",
+ Markup.escape_text (this.track_metadata));
+ log.log ("AVTransportURIMetaData",
+ Markup.escape_text (this.metadata));
log.log ("CurrentTrackURI", this.track_uri);
log.log ("AVTransportURI", this.uri);
log.log ("NextAVTransportURI", "NOT_IMPLEMENTED");
@@ -686,7 +689,8 @@ internal class Rygel.AVTransport : Service {
private void notify_meta_data_cb (Object player, ParamSpec p) {
this._metadata = this.player.metadata;
- this.changelog.log ("CurrentTrackMetadata", this.metadata);
+ this.changelog.log ("CurrentTrackMetadata",
+ Markup.escape_text (this.metadata));
}
private async void handle_playlist (ServiceAction action) {
@@ -722,4 +726,14 @@ internal class Rygel.AVTransport : Service {
action.return ();
}
+
+ private string unescape (string input) {
+ var result = input.replace (""", "\"");
+ result = result.replace ("<", "<");
+ result = result.replace (">", ">");
+ result = result.replace ("'", "'");
+ result = result.replace ("&", "&");
+
+ return result;
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]