From: Pawel Andruszkiewicz Date: Mon, 21 Dec 2015 08:58:08 +0000 (+0100) Subject: [Time] Obtain default timezone using ICU library. X-Git-Tag: submit/tizen/20151221.115041^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4d9db43243d50517555a3599374cc9538fa36b12;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Time] Obtain default timezone using ICU library. [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 --- diff --git a/src/time/time_api.js b/src/time/time_api.js index 6fc9c791..a29071d6 100644 --- a/src/time/time_api.js +++ b/src/time/time_api.js @@ -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); } diff --git a/src/time/time_instance.cc b/src/time/time_instance.cc index 4282b1e8..c6e9cf20 100644 --- a/src/time/time_instance.cc +++ b/src/time/time_instance.cc @@ -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(); diff --git a/src/time/time_instance.h b/src/time/time_instance.h index 6666a211..6f4643c5 100644 --- a/src/time/time_instance.h +++ b/src/time/time_instance.h @@ -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); diff --git a/src/time/time_manager.cc b/src/time/time_manager.cc index 2dc7bff5..0fa00bfc 100644 --- a/src/time/time_manager.cc +++ b/src/time/time_manager.cc @@ -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 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(){