Remove unnecessary sender validation check 89/194189/2
authorhyunho <hhstark.kang@samsung.com>
Fri, 30 Nov 2018 02:06:50 +0000 (11:06 +0900)
committerhyunho <hhstark.kang@samsung.com>
Fri, 30 Nov 2018 02:09:29 +0000 (11:09 +0900)
Change-Id: I1a983fa40fa56b0adcae01c2397b046667450385
Signed-off-by: hyunho <hhstark.kang@samsung.com>
watchface-complication-provider/complication-provider-implementation.h
watchface-complication-provider/complication-provider.cc

index 97e6da3..8f96ede 100644 (file)
@@ -68,7 +68,8 @@ class ComplicationProvider::Impl : IGDBus::IGDBusEvent {
     std::list<std::string> sender_privileges_;
     cynara_result privilege_result_;
   };
-  SenderInfo* GetSenderInfo(std::string sender_name, std::string sender_app_id);
+  SenderInfo* GetSenderInfo(std::string sender_name,
+      GDBusConnection* connection, GVariant* parameters);
 
  private:
   ComplicationProvider* parent_;
index 1b3ea43..77f41fa 100644 (file)
@@ -133,15 +133,18 @@ std::list<std::string>& ComplicationProvider::Impl::GetRequiredPrivileges() {
   return required_privileges_;
 }
 
-void ComplicationProvider::Impl::OnVanish(const std::string& name) {
-  LOGW("OnVanish %s", name.c_str());
-  auto sender_info = sender_info_.find(name);
-  if (sender_info != sender_info_.end()) {
-    auto si = sender_info->second;
-    gdbus_.get()->UnWatch(si->GetWatcherID());
-    sender_info_.erase(name);
-    delete si;
-    LOGW("delete sender info done");
+void ComplicationProvider::Impl::OnVanish(const std::string& watch_name) {
+  LOGW("OnVanish %s", watch_name.c_str());
+  auto iter = sender_info_.begin();
+  for (; iter != sender_info_.end(); iter++) {
+    SenderInfo* si = iter->second;
+    if (watch_name.compare(si->GetWatchName()) == 0) {
+      gdbus_.get()->UnWatch(si->GetWatcherID());
+      sender_info_.erase(iter);
+      delete si;
+      LOGW("delete sender info done");
+      return;
+    }
   }
 }
 
@@ -150,16 +153,19 @@ void ComplicationProvider::Impl::OnAppear(const std::string& name,
 }
 
 ComplicationProvider::Impl::SenderInfo* ComplicationProvider::Impl::GetSenderInfo(
-      std::string sender_name, std::string sender_app_id) {
-  std::string watch_name = util::EncodeStr(util::EncodeType::Name, sender_app_id);
-  if (watch_name.empty()) {
-    LOGE("fail to get watch name");
-    return NULL;
-  }
+      std::string sender_name, GDBusConnection* connection, GVariant* parameters) {
 
-  auto iter = sender_info_.find(watch_name);
+  auto iter = sender_info_.find(sender_name);
   SenderInfo* si;
   if (iter == sender_info_.end()) {
+    char* sender_app_id = NULL;
+    g_variant_get_child(parameters, 0, "&s", &sender_app_id);
+    if (sender_app_id == NULL  ||
+        !util::CheckSender(sender_app_id, sender_name, connection)) {
+      LOGE("invalid sender_app_id %s", sender_app_id);
+      return NULL;
+    }
+
     int watcher_id = 0;
     watcher_id = gdbus_.get()->Watch(std::string(sender_app_id), this);
     try {
@@ -167,8 +173,13 @@ ComplicationProvider::Impl::SenderInfo* ComplicationProvider::Impl::GetSenderInf
         LOGE("Permission denied");
         return NULL;
       }
-      si = new SenderInfo(sender_name, sender_app_id.c_str(), watcher_id, watch_name);
-      sender_info_[watch_name] = si;
+      std::string watch_name = util::EncodeStr(util::EncodeType::Name, sender_app_id);
+      if (watch_name.empty()) {
+        LOGE("fail to get watch name");
+        return NULL;
+      }
+      si = new SenderInfo(sender_name, sender_app_id, watcher_id, watch_name);
+      sender_info_[sender_name] = si;
       LOGI("sender_info added (%s) ", watch_name.c_str());
     } catch (const std::bad_alloc &ba) {
       LOGE("SenderInfo::Exception bad_alloc");
@@ -199,14 +210,7 @@ void ComplicationProvider::Impl::OnSignal(GDBusConnection* connection,
   char* shared_data_type;
   char* sender_app_id = NULL;
 
-  g_variant_get_child(parameters, 0, "&s", &sender_app_id);
-  if (sender_app_id == NULL  ||
-      !util::CheckSender(sender_app_id, sender_name, connection)) {
-    LOGE("invalid sender_app_id %s", sender_app_id);
-    return;
-  }
-
-  SenderInfo* si = GetSenderInfo(sender_name, std::string(sender_app_id));
+  SenderInfo* si = GetSenderInfo(sender_name, connection, parameters);
   if (si == NULL)
     return;