return Arguments10<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
}
+template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> struct Arguments11 : Arguments10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
+ typedef Arguments11<typename WTF::RemoveConst<typename WTF::RemoveReference<T1>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T2>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T3>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T4>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T5>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T6>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T7>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T8>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T9>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T10>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T11>::Type>::Type> ValueType;
+
+ Arguments11() { }
+
+ Arguments11(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11)
+ : Arguments10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)
+ , argument11(t11)
+ {
+ }
+
+ void encode(ArgumentEncoder* encoder) const
+ {
+ Arguments10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::encode(encoder);
+ encoder->encode(argument11);
+ }
+
+ static bool decode(ArgumentDecoder* decoder, Arguments11& result)
+ {
+ if (!Arguments10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::decode(decoder, result))
+ return false;
+
+ return decoder->decode(result.argument11);
+ }
+
+ T11 argument11;
+};
+
+template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> Arguments11<const T1&, const T2&, const T3&, const T4&, const T5&, const T6&, const T7&, const T8&, const T9&, const T10&, const T11&> In(const T1& t1, const T2& t2, const T3 &t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11)
+{
+ return Arguments11<const T1&, const T2&, const T3&, const T4&, const T5&, const T6&, const T7&, const T8&, const T9&, const T10&, const T11&>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
+}
+
+template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11> Arguments11<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&, T11&> Out(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8, T9& t9, T10& t10, T11& t11)
+{
+ return Arguments11<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&, T11&>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
+}
+
+template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> struct Arguments12 : Arguments11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
+ typedef Arguments12<typename WTF::RemoveConst<typename WTF::RemoveReference<T1>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T2>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T3>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T4>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T5>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T6>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T7>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T8>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T9>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T10>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T11>::Type>::Type,
+ typename WTF::RemoveConst<typename WTF::RemoveReference<T12>::Type>::Type> ValueType;
+
+ Arguments12() { }
+
+ Arguments12(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12)
+ : Arguments11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)
+ , argument12(t12)
+ {
+ }
+
+ void encode(ArgumentEncoder* encoder) const
+ {
+ Arguments11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::encode(encoder);
+ encoder->encode(argument12);
+ }
+
+ static bool decode(ArgumentDecoder* decoder, Arguments12& result)
+ {
+ if (!Arguments11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::decode(decoder, result))
+ return false;
+
+ return decoder->decode(result.argument12);
+ }
+
+ T12 argument12;
+};
+
+template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> Arguments12<const T1&, const T2&, const T3&, const T4&, const T5&, const T6&, const T7&, const T8&, const T9&, const T10&, const T11&, const T12&> In(const T1& t1, const T2& t2, const T3 &t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12)
+{
+ return Arguments12<const T1&, const T2&, const T3&, const T4&, const T5&, const T6&, const T7&, const T8&, const T9&, const T10&, const T11&, const T12&>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
+}
+
+template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12> Arguments12<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&, T11&, T12&> Out(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8, T9& t9, T10& t10, T11& t11, T12& t12)
+{
+ return Arguments12<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&, T11&, T12&>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
+}
+
} // namespace CoreIPC
#endif // Arguments_h
namespace WebKit {
+#if ENABLE(TIZEN_GEOLOCATION)
+WebGeolocationPosition::WebGeolocationPosition(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
+#else
WebGeolocationPosition::WebGeolocationPosition(double timestamp, double latitude, double longitude, double accuracy)
+#endif
{
m_data.timestamp = timestamp;
m_data.latitude = latitude;
m_data.longitude = longitude;
m_data.accuracy = accuracy;
+
+#if ENABLE(TIZEN_GEOLOCATION)
+ m_data.canProvideAltitude = providesAltitude;
+ m_data.altitude = altitude;
+ m_data.canProvideAltitudeAccuracy = providesAltitudeAccuracy;
+ m_data.altitudeAccuracy = altitudeAccuracy;
+ m_data.canProvideHeading = providesHeading;
+ m_data.heading = heading;
+ m_data.canProvideSpeed = providesSpeed;
+ m_data.speed = speed;
+#endif
}
WebGeolocationPosition::~WebGeolocationPosition()
void WebGeolocationPosition::Data::encode(CoreIPC::ArgumentEncoder* encoder) const
{
+#if ENABLE(TIZEN_GEOLOCATION)
+ encoder->encode(CoreIPC::In(timestamp, latitude, longitude, accuracy, canProvideAltitude, altitude, canProvideAltitudeAccuracy, altitudeAccuracy, canProvideHeading, heading, canProvideSpeed, speed));
+#else
encoder->encode(CoreIPC::In(timestamp, latitude, longitude, accuracy));
+#endif
}
bool WebGeolocationPosition::Data::decode(CoreIPC::ArgumentDecoder* decoder, Data& data)
{
+#if ENABLE(TIZEN_GEOLOCATION)
+ return decoder->decode(CoreIPC::Out(data.timestamp, data.latitude, data.longitude, data.accuracy, data.canProvideAltitude, data.altitude, data.canProvideAltitudeAccuracy, data.altitudeAccuracy, data.canProvideHeading, data.heading, data.canProvideSpeed, data.speed));
+#else
return decoder->decode(CoreIPC::Out(data.timestamp, data.latitude, data.longitude, data.accuracy));
+#endif
}
} // namespace WebKit
return;
location_accuracy_level_e level;
- double horizontal;
- double vertical;
-
- location_manager_get_last_accuracy(ewkGeolocationProvider->locationManager(), &level, &horizontal, &vertical);
-
- WKRetainPtr<WKGeolocationPositionRef> position(AdoptWK, WKGeolocationPositionCreate(timestamp, latitude, longitude, horizontal));
+ double horizontal = 0;
+ double vertical = 0;
+ double climb = 0;
+ double direction = std::numeric_limits<double>::quiet_NaN();
+ double speed = 0;
+ time_t velocityTimestamp;
+
+ location_error_e ret = static_cast<location_error_e>(location_manager_get_last_accuracy(ewkGeolocationProvider->locationManager(), &level, &horizontal, &vertical));
+ if (ret != LOCATIONS_ERROR_NONE)
+ TIZEN_LOGE("location_manager_get_last_accuracy error(0x%08x)", ret);
+ ret = static_cast<location_error_e>(location_manager_get_velocity(ewkGeolocationProvider->locationManager(), &climb, &direction, &speed, &velocityTimestamp));
+ if (ret != LOCATIONS_ERROR_NONE)
+ TIZEN_LOGE("location_manager_get_velocity error(0x%08x)", ret);
+ if (speed)
+ speed = speed * 5.0 / 18.0;
+ else
+ direction = std::numeric_limits<double>::quiet_NaN();
+
+ WKRetainPtr<WKGeolocationPositionRef> position(AdoptWK, WKGeolocationPositionCreate_b(timestamp, latitude, longitude, horizontal, true, altitude, true, vertical, true, direction, true, speed));
WKGeolocationManagerProviderDidChangePosition(ewkGeolocationProvider->wkGeolocationManager(), position.get());
}
location_error_e ret = static_cast<location_error_e>(location_manager_create(LOCATIONS_METHOD_HYBRID, &ewkGeolocationProvider->m_locationManager));
if (ret != LOCATIONS_ERROR_NONE) {
- TIZEN_LOGE("location_manager_create error (%d)", ret);
+ TIZEN_LOGE("location_manager_create error (0x%08x)", ret);
WKGeolocationManagerProviderDidFailToDeterminePosition(ewkGeolocationProvider->wkGeolocationManager());
return;
}
ret = static_cast<location_error_e>(location_manager_set_position_updated_cb(ewkGeolocationProvider->m_locationManager, ewkGeolocationProviderPositionChangedCallback, 1, const_cast<Ewk_Geolocation_Provider*>(ewkGeolocationProvider)));
if (ret != LOCATIONS_ERROR_NONE){
- TIZEN_LOGE("location_manager_set_position_updated_cb error(%d)", ret);
+ TIZEN_LOGE("location_manager_set_position_updated_cb error(0x%08x)", ret);
location_manager_destroy(ewkGeolocationProvider->m_locationManager);
WKGeolocationManagerProviderDidFailToDeterminePosition(ewkGeolocationProvider->wkGeolocationManager());
return;
ret = static_cast<location_error_e>(location_manager_start(ewkGeolocationProvider->m_locationManager));
if (ret != LOCATIONS_ERROR_NONE) {
- TIZEN_LOGE("location_manager_start error(%d)", ret);
+ TIZEN_LOGE("location_manager_start error(0x%08x)", ret);
location_manager_unset_position_updated_cb(ewkGeolocationProvider->m_locationManager);
location_manager_destroy(ewkGeolocationProvider->m_locationManager);
WKGeolocationManagerProviderDidFailToDeterminePosition(ewkGeolocationProvider->wkGeolocationManager());
location_error_e ret = static_cast<location_error_e>(location_manager_stop(ewkGeolocationProvider->m_locationManager));
if (ret != LOCATIONS_ERROR_NONE) {
- TIZEN_LOGE("location_manager_stop error(%d)", ret);
+ TIZEN_LOGE("location_manager_stop error(0x%08x)", ret);
location_manager_destroy(ewkGeolocationProvider->m_locationManager);
}
ret = static_cast<location_error_e>(location_manager_unset_position_updated_cb(ewkGeolocationProvider->m_locationManager));
if (ret != LOCATIONS_ERROR_NONE) {
- TIZEN_LOGE("location_manager_unset_position_updated_cb error(%d)", ret);
+ TIZEN_LOGE("location_manager_unset_position_updated_cb error(0x%08x)", ret);
return;
}
ret = static_cast<location_error_e>(location_manager_destroy(ewkGeolocationProvider->m_locationManager));
if (ret != LOCATIONS_ERROR_NONE) {
- TIZEN_LOGE("location_manager_destroy error(%d)", ret);
+ TIZEN_LOGE("location_manager_destroy error(0x%08x)", ret);
return;
}