mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-09 00:11:44 +00:00
handle some kindsof invalid ics files a bit more graceful. bug 285892, patch by gekacheka, r=pavlov
This commit is contained in:
parent
defd76652e
commit
b4e424580e
@ -750,6 +750,7 @@ CalendarView.prototype.getViewLimits = function calView_getViewLimits( dayDispla
|
|||||||
var dateEnd = tmpDate.valueOf();
|
var dateEnd = tmpDate.valueOf();
|
||||||
|
|
||||||
for ( var i = 0; i < dayDisplayEventList.length; i++ ) {
|
for ( var i = 0; i < dayDisplayEventList.length; i++ ) {
|
||||||
|
this.checkDisplayDatesInvariant(dayDisplayEventList[i]);
|
||||||
if( dayDisplayEventList[i].event.startDate.isDate != true ) {
|
if( dayDisplayEventList[i].event.startDate.isDate != true ) {
|
||||||
|
|
||||||
if( dayDisplayEventList[i].displayDate < dateStart ) {
|
if( dayDisplayEventList[i].displayDate < dateStart ) {
|
||||||
@ -796,11 +797,14 @@ CalendarView.prototype.setDrawProperties = function calView_setDrawProperties( d
|
|||||||
var currEventSlotsIsEmpty
|
var currEventSlotsIsEmpty
|
||||||
var done = false;
|
var done = false;
|
||||||
|
|
||||||
|
// Add non-allday events to dayEventStartList and dayEventEndList.
|
||||||
var i;
|
var i;
|
||||||
for( i = 0; i < dayEventList.length; i++ ) {
|
for (i = 0; i < dayEventList.length; i++) {
|
||||||
if (!dayEventList[i].event.startDate.isDate) {
|
var displayEvent = dayEventList[i];
|
||||||
dayEventStartList.push(dayEventList[i]);
|
if (!displayEvent.event.startDate.isDate) {
|
||||||
dayEventEndList.push(dayEventList[i]);
|
this.checkDisplayDatesInvariant(displayEvent);
|
||||||
|
dayEventStartList.push(displayEvent);
|
||||||
|
dayEventEndList.push(displayEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -890,6 +894,30 @@ CalendarView.prototype.setDrawProperties = function calView_setDrawProperties( d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** PRIVATE
|
||||||
|
|
||||||
|
Check for error displayEvent.displayDateEnd < displayEvent.displayDate,
|
||||||
|
caused by rare end < start error in input. Graceful workaround swaps
|
||||||
|
display times to avoid later error that aborts rest of display
|
||||||
|
(bug 285892).
|
||||||
|
**/
|
||||||
|
CalendarView.prototype.checkDisplayDatesInvariant = function calView_checkDisplayDatesInvariant(displayEvent) {
|
||||||
|
if (displayEvent.displayEndDate < displayEvent.displayDate) {
|
||||||
|
var JSCONSOLE = Components.classes["@mozilla.org/consoleservice;1"]
|
||||||
|
.getService(Components.interfaces.nsIConsoleService);
|
||||||
|
JSCONSOLE.logStringMessage
|
||||||
|
("Warning: event end < start, will swap display times"+
|
||||||
|
"\n title: "+displayEvent.event.title+
|
||||||
|
"\n end: "+displayEvent.event.end+
|
||||||
|
"\n start: "+displayEvent.event.start+
|
||||||
|
"\n displayEndDate: "+new Date(displayEvent.displayEndDate)+
|
||||||
|
"\n displayStartDate: "+new Date(displayEvent.displayDate));
|
||||||
|
var swapDate = displayEvent.displayEndDate;
|
||||||
|
displayEvent.displayEndDate = displayEvent.displayDate;
|
||||||
|
displayEvent.displayDate = swapDate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** PRIVATE
|
/** PRIVATE
|
||||||
*
|
*
|
||||||
* Sets the following all-day event draw order properties.
|
* Sets the following all-day event draw order properties.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user