From 200dad5e1c0d0d902ecdf2ce4045fbe542bd21c9 Mon Sep 17 00:00:00 2001
From: Pawel Andruszkiewicz
Date: Fri, 4 Sep 2015 10:11:48 +0200
Subject: [PATCH] [Calendar] Constructor of CalendarAlarm should not throw an
exception.
Fixes: XWALK-769
[Verification] TCT pass rate (r38): 100% (354/354/0/0/0)
Change-Id: I55b2f30d9c6b1ce4cd961b13ac752bf807d0b7f0
Signed-off-by: Pawel Andruszkiewicz
---
src/calendar/calendar_item.cc | 10 ++++++++--
src/calendar/js/calendar_alarm.js | 9 ++++++++-
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/calendar/calendar_item.cc b/src/calendar/calendar_item.cc
index 5f59ab0f..9bdaeab8 100755
--- a/src/calendar/calendar_item.cc
+++ b/src/calendar/calendar_item.cc
@@ -1092,9 +1092,15 @@ PlatformResult CalendarItem::AlarmsFromJson(int type, calendar_record_h rec,
}
}
+ const auto it_method = obj.find("method");
+ std::string method = "unknown";
+
+ if (obj.end() != it_method && it_method->second.is()) {
+ method = it_method->second.get();
+ }
+
PlatformResult status =
- SetEnum(alarm, _calendar_alarm.action, kAlarmMethod,
- common::FromJson(obj, "method"));
+ SetEnum(alarm, _calendar_alarm.action, kAlarmMethod, method);
if (status.IsError()) {
LoggerE("Error: %s", status.message().c_str());
return status;
diff --git a/src/calendar/js/calendar_alarm.js b/src/calendar/js/calendar_alarm.js
index 4f7c1272..08c26386 100755
--- a/src/calendar/js/calendar_alarm.js
+++ b/src/calendar/js/calendar_alarm.js
@@ -24,8 +24,15 @@ var CalendarAlarm = function(time, method, description) {
var _absoluteDate = time instanceof tizen.TZDate && !this.before ? time : null;
var _before = time instanceof tizen.TimeDuration && !this.absoluteDate ? time : null;
- var _method = converter_.toEnum(method, Object.keys(AlarmMethod), false);
var _description = (description) ? converter_.toString(description, true) : '';
+ var _method;
+
+ try {
+ _method = converter_.toEnum(method, Object.keys(AlarmMethod), false);
+ } catch (e) {
+ console.warn('Failed to convert method: "' + method + '" to enum AlarmMethod.');
+ _method = method;
+ }
Object.defineProperties(this, {
absoluteDate: {
--
2.34.1