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(){