Fix for Geolocation webTCT failures 99/308199/10 accepted/tizen/unified/20240321.142342 accepted/tizen/unified/20240321.155942 submit/tizen/20240320.160012
authorsidpaswan <s.paswan@samsung.com>
Tue, 19 Mar 2024 12:08:24 +0000 (17:38 +0530)
committerDae-Hyun Ko <dhyuna.ko@samsung.com>
Wed, 20 Mar 2024 10:20:36 +0000 (10:20 +0000)
In m120 with the addition of GeopositionResult class the Geoposition
object are now referenced via the GeopositionResult. This added layer
separates position and error occured instances from Geoposition object.
This patch implements this change for the geolocation calls.

Change-Id: I75e7e2a27e2793f60b6b93e13c4aea231cf8ead7
Signed-off-by: sidpaswan <s.paswan@samsung.com>
tizen_src/ewk/efl_integration/browser/geolocation/location_provider_efl.cc
tizen_src/ewk/efl_integration/browser/geolocation/location_provider_efl.h

index bd928f3..ac21bf1 100644 (file)
@@ -16,13 +16,8 @@ static double KilometerPerHourToMeterPerSecond(double kilometer_per_hour) {
 }
 
 LocationProviderEfl::LocationProviderEfl()
-    : location_manager_(nullptr)
-#if !defined(EWK_BRINGUP)
-      ,
-      task_runner_(base::SingleThreadTaskRunner::GetCurrentDefault())
-#endif
-{
-}
+    : location_manager_(nullptr),
+      task_runner_(base::SingleThreadTaskRunner::GetCurrentDefault()) {}
 
 LocationProviderEfl::~LocationProviderEfl() {
   StopProvider();
@@ -50,11 +45,10 @@ void LocationProviderEfl::GeoPositionChangedCb(double latitude,
                                            direction, horizontal_accuracy,
                                            timestamp);
 }
-void LocationProviderEfl::NotifyCallback(const mojom::Geoposition& position) {
-#if !defined(EWK_BRINGUP)
+void LocationProviderEfl::NotifyCallback(mojom::GeopositionResultPtr position) {
+  last_position_ = std::move(position);
   if (!callback_.is_null())
-    callback_.Run(this, position);
-#endif
+    callback_.Run(this, last_position_.Clone());
 }
 
 void LocationProviderEfl::SetUpdateCallback(
@@ -69,26 +63,28 @@ void LocationProviderEfl::NotifyPositionChanged(double latitude,
                                                 double direction,
                                                 double horizontal_accuracy,
                                                 time_t timestamp) {
-#if !defined(EWK_BRINGUP)
   DCHECK(location_manager_);
   DCHECK(task_runner_);
 
-  last_position_.latitude = latitude;
-  last_position_.longitude = longitude;
-  last_position_.altitude = altitude;
-  last_position_.timestamp = base::Time::FromTimeT(timestamp);
-  last_position_.speed = KilometerPerHourToMeterPerSecond(speed);
-  last_position_.heading = direction;
+  auto position = mojom::Geoposition::New();
+  position->latitude = latitude;
+  position->longitude = longitude;
+  position->altitude = altitude;
+  position->timestamp = base::Time::FromTimeT(timestamp);
+  position->speed = KilometerPerHourToMeterPerSecond(speed);
+  position->heading = direction;
 
-  location_accuracy_level_e level;
-  location_manager_get_last_accuracy(location_manager_,
-      &level, &last_position_.accuracy, &last_position_.altitude_accuracy);
+  auto position_ptr =
+      mojom::GeopositionResult::NewPosition(std::move(position));
 
+  location_accuracy_level_e level;
+  location_manager_get_last_accuracy(
+      location_manager_, &level, &(position_ptr->get_position()->accuracy),
+      &(position_ptr->get_position()->altitude_accuracy));
   base::OnceClosure task =
       base::BindOnce(&LocationProviderEfl::NotifyCallback,
-                     base::Unretained(this), last_position_);
+                     base::Unretained(this), std::move(position_ptr));
   task_runner_->PostTask(FROM_HERE, std::move(task));
-#endif
 }
 
 void LocationProviderEfl::StartProvider(bool high_accuracy) {
@@ -135,7 +131,7 @@ void LocationProviderEfl::StopProvider() {
 }
 
 const mojom::GeopositionResult* LocationProviderEfl::GetPosition() {
-  return last_position_;
+  return last_position_.get();
 }
 
 void LocationProviderEfl::OnPermissionGranted() {
index 67c9e94..f424c66 100644 (file)
@@ -44,13 +44,11 @@ class LocationProviderEfl : public LocationProvider {
                                    void*);
   void
   NotifyPositionChanged(double, double, double, double, double, double, time_t);
-  void NotifyCallback(const mojom::Geoposition&);
+  void NotifyCallback(mojom::GeopositionResultPtr);
 
-  mojom::GeopositionResult* last_position_;
+  mojom::GeopositionResultPtr last_position_;
   location_manager_h location_manager_;
-#if !defined(EWK_BRINGUP)
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-#endif
   LocationProviderUpdateCallback callback_;
 };