[Time] Obtain default timezone using ICU library.
authorPawel Andruszkiewicz <p.andruszkie@samsung.com>
Mon, 21 Dec 2015 08:58:08 +0000 (09:58 +0100)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Mon, 21 Dec 2015 08:58:08 +0000 (09:58 +0100)
[Verification] TCT pass rate (r20):
               Time - 100% (470/470/0/0/0)
               Calendar - 100% (354/354/0/0/0)

Change-Id: Ibf0fbd1bdc78a3b5028b46a288c86f2bccfa0a76
Signed-off-by: Pawel Andruszkiewicz <p.andruszkie@samsung.com>
src/time/time_api.js
src/time/time_instance.cc
src/time/time_instance.h
src/time/time_manager.cc

index 6fc9c791a09a120caada46d678ee84a7be67b400..a29071d6b15a3bc463b68ff12256bd76535c6b63 100644 (file)
@@ -776,7 +776,7 @@ exports.getCurrentDateTime = function() {
 
 exports.getLocalTimezone = function() {
   console.log('Entered TimeUtil.getLocalTimezone');
-  var result = native_.callSync('TZDate_getTimezone', {});
+  var result = native_.callSync('TZDate_getLocalTimezone', {});
   if (native_.isFailure(result)) {
     throw native_.getErrorObject(result);
   }
index 4282b1e89864f5e835c2484ffce4c33d1ce21ee0..c6e9cf2021a549accdca3e74f88f43bcb09c7149 100644 (file)
@@ -31,7 +31,7 @@ TimeInstance::TimeInstance()  : manager_(this) {
   REGISTER_SYNC("TimeUtil_unsetDateTimeChangeListener", TimeUtil_unsetDateTimeChangeListener);
   REGISTER_SYNC("TimeUtil_setTimezoneChangeListener", TimeUtil_setTimezoneChangeListener);
   REGISTER_SYNC("TimeUtil_unsetTimezoneChangeListener", TimeUtil_unsetTimezoneChangeListener);
-  REGISTER_SYNC("TZDate_getTimezone", TZDate_getTimezone);
+  REGISTER_SYNC("TZDate_getLocalTimezone", TZDate_getLocalTimezone);
   REGISTER_SYNC("TZDate_getTimezoneOffset", TZDate_GetTimezoneOffset);
   REGISTER_SYNC("TZDate_toLocaleDateString", TZDate_toLocaleDateString);
   REGISTER_SYNC("TZDate_toLocaleTimeString", TZDate_toLocaleTimeString);
@@ -149,7 +149,7 @@ void TimeInstance::TimeUtil_unsetTimezoneChangeListener(const picojson::value& /
   ReportSuccess(out);
 }
 
-void TimeInstance::TZDate_getTimezone(const picojson::value& /*args*/, picojson::object& out) {
+void TimeInstance::TZDate_getLocalTimezone(const picojson::value& /*args*/, picojson::object& out) {
   LoggerD("Entered");
 
   std::string local_timezone = TimeManager::GetDefaultTimezone();
index 6666a211cd1e7cb10de35cebb3b8873d5ac1764e..6f4643c55c68ab0633aec9c88b4609b44d10c45f 100644 (file)
@@ -30,7 +30,7 @@ class TimeInstance : public common::ParsedInstance {
   void TimeUtil_unsetDateTimeChangeListener(const picojson::value& args, picojson::object& out);
   void TimeUtil_setTimezoneChangeListener(const picojson::value& args, picojson::object& out);
   void TimeUtil_unsetTimezoneChangeListener(const picojson::value& args, picojson::object& out);
-  void TZDate_getTimezone(const picojson::value& args, picojson::object& out);
+  void TZDate_getLocalTimezone(const picojson::value& args, picojson::object& out);
   void TZDate_GetTimezoneOffset(const picojson::value& args, picojson::object& out);
   void ToStringTemplate(const picojson::value& args, bool use_locale_fmt,
                         TimeUtilTools::DateTimeFormatType type, picojson::object* out);
index 2dc7bff54f536a368bb1de0237858d1dea2e5a24..0fa00bfc77280970f1896486a7d59a60d0bbe6bd 100644 (file)
@@ -170,19 +170,23 @@ void TimeManager::OnTimeChangedCallback(keynode_t* /*node*/, void* event_ptr) {
 
 std::string TimeManager::GetDefaultTimezone() {
   LoggerD("Entered");
-  char buf[1024];
-  std::string result;
-  ssize_t len = readlink("/etc/localtime", buf, sizeof(buf)-1);
-  if (len != -1) {
-    buf[len] = '\0';
+
+  std::unique_ptr<TimeZone> tz(TimeZone::createDefault());
+
+  if (tz) {
+    UnicodeString us;
+    tz->getID(us);
+
+    std::string s;
+    us.toUTF8String(s);
+
+    SLoggerD("Default time zone: %s", s.c_str());
+
+    return s;
   } else {
-    /* handle error condition */
-    return result;
+    LoggerE("Unable to obtain default time zone");
+    return "Unknown/Unknown";
   }
-  result = std::string(buf+strlen("/usr/share/zoneinfo/"));
-
-  LoggerD("tzpath = %s", result.c_str());
-  return result;
 }
 
 std::string TimeManager::GetCurrentTimezone(){