aboutsummaryrefslogtreecommitdiffstats
path: root/lib/caldav
diff options
context:
space:
mode:
authorGareth Aye <gaye@mozilla.com>2014-04-08 20:39:18 -0400
committerGareth Aye <gaye@mozilla.com>2014-04-08 20:55:13 -0400
commitb15fe723595219e0e31ec84af246446668d297c8 (patch)
tree77d5299e63ae923a20457eae50ac1353990d5752 /lib/caldav
parentc197deab25d8425bdfa8d8d2feccedbb2776a48e (diff)
downloadjsCalDAV-b15fe723595219e0e31ec84af246446668d297c8.tar.gz
Bug 974554 - CalDAV parser should accept ical inside xml comments nested in <calendar-data> elements
Diffstat (limited to 'lib/caldav')
-rw-r--r--lib/caldav/sax.js5
-rw-r--r--lib/caldav/sax/calendar_data_handler.js17
2 files changed, 18 insertions, 4 deletions
diff --git a/lib/caldav/sax.js b/lib/caldav/sax.js
index e0c0a1b..c861eee 100644
--- a/lib/caldav/sax.js
+++ b/lib/caldav/sax.js
@@ -18,6 +18,7 @@
var events = [
'ontext',
+ 'oncdata',
'onopentag',
'onclosetag',
'onerror',
@@ -198,6 +199,10 @@
this._fireHandler('ontext', data);
},
+ oncdata: function(data) {
+ this._fireHandler('oncdata', data);
+ },
+
onerror: function(data) {
//TODO: XXX implement handling of parsing errors.
//unlikely but possible if server goes down
diff --git a/lib/caldav/sax/calendar_data_handler.js b/lib/caldav/sax/calendar_data_handler.js
index d24bfb0..ac55c78 100644
--- a/lib/caldav/sax/calendar_data_handler.js
+++ b/lib/caldav/sax/calendar_data_handler.js
@@ -14,12 +14,21 @@
//value where key is local tag name
//and value is the text.
ontext: function(data) {
- var handler = this.handler;
- this.current[this.currentTag[handler.tagField]] =
- CalendarDataHandler.parseICAL(data);
- }
+ return CalendarDataHandler.ondata.call(this, data);
+ },
+
+ // Servers can also stash ical data inside of an xml cdata.
+ oncdata: function(data) {
+ return CalendarDataHandler.ondata.call(this, data);
+ },
});
+ CalendarDataHandler.ondata = function(data) {
+ var handler = this.handler;
+ this.current[this.currentTag[handler.tagField]] =
+ CalendarDataHandler.parseICAL(data);
+ };
+
/**
* Default ical parser handler.
*