add process for uninstalled callback routine 36/104336/1
authorIckhee Woo <ickhee.woo@samsung.com>
Tue, 13 Dec 2016 06:24:28 +0000 (15:24 +0900)
committerIckhee Woo <ickhee.woo@samsung.com>
Tue, 13 Dec 2016 06:24:28 +0000 (15:24 +0900)
Change-Id: I92f4afb891dd9926a34c9839ed5dde3a7cd5f802
Signed-off-by: Ickhee Woo <ickhee.woo@samsung.com>
packaging/sync-manager.spec
src/sync-service/SyncManager_RepositoryEngine.cpp
src/sync-service/SyncManager_RepositoryEngine.h
src/sync-service/SyncManager_SyncManager.cpp

index 704e0dd372e6a1c5430f69e77078048b49a3683d..529b60b474e81a1b637a5e9c6b55cc66d7c0ea3b 100644 (file)
@@ -1,5 +1,5 @@
 Name:      sync-service
-Version:   0.1.13
+Version:   0.1.14
 Release:   1
 License:   Apache-2.0
 Summary:   Sync manager daemon
index ff985b06dce4416d42184703cb1872786f02cd34..28c6c399e1be609c2ce82bb8c8635c01a662037c 100644 (file)
@@ -168,6 +168,54 @@ bndl_iterator_test(const char* pKey, const char* pVal, void* pData)
 */
 
 
+void
+RepositoryEngine::CheckSyncJobsData(void) {
+       LOG_LOGD("Verifying Sync jobs");
+
+       //Parse the Xml file
+       const char* pDocName;
+       xmlDocPtr doc = NULL;
+       xmlNodePtr cur = NULL;
+
+       pDocName = PATH_SYNCJOBS;
+       doc = xmlParseFile(pDocName);
+
+       if (doc == NULL) {
+               /* LCOV_EXCL_START */
+               LOG_LOGD("Failed to parse syncjobs.xml");
+               doc = xmlParseFile(pDocName);
+               /* LCOV_EXCL_STOP */
+       }
+
+       cur = xmlDocGetRootElement(doc);
+       if (cur == NULL) {
+               /* LCOV_EXCL_START */
+               LOG_LOGD("Found empty document while parsing syncjobs.xml");
+               xmlFreeDoc(doc);
+               return;
+               /* LCOV_EXCL_STOP */
+       }
+
+       //Parse sync jobs
+       if (xmlStrcmp(cur->name, XML_NODE_JOBS)) {
+               /* LCOV_EXCL_START */
+               LOG_LOGD("Found empty document while parsing syncjobs.xml");
+               xmlFreeDoc(doc);
+               return;
+               /* LCOV_EXCL_STOP */
+       } else {
+               xmlChar* pTotalJobsCount = xmlGetProp(cur, XML_ATTR_JOBS_COUNT);
+               int totalcount = (pTotalJobsCount == NULL) ? 0 : atoi((char*)pTotalJobsCount);
+               LOG_LOGD("Remained Total Sync jobs [%d]", totalcount);
+
+               if (totalcount == 0) {
+                       ManageIdleState* pManageIdleState = SyncManager::GetInstance()->GetManageIdleState();
+                       pManageIdleState->SetTermTimer();
+               }
+       }
+}
+
+
 void
 RepositoryEngine::ReadSyncJobsData(void) {
        LOG_LOGD("Reading Sync jobs");
@@ -324,7 +372,7 @@ RepositoryEngine::ReadSyncAdapters(void) {
                                        pAggregator->AddSyncAdapter((char*)pPackageId, (char*)pServiceAppId);
                                        pkgmgrinfo_appinfo_destroy_appinfo(handle_appinfo);
                                } else {
-                                       SyncManager::GetInstance()->GetSyncAdapterAggregator()->HandlePackageUninstalled((char*)pPackageId);
+                                       pAggregator->HandlePackageUninstalled((char*)pPackageId);
                                }
                                WriteSyncAdapters();
                        }
index f37efc2295808808d0343ebd0bcde0b06d21f1de..d926d192e4763e3912a08b3d1f642494fac69bfd 100644 (file)
@@ -65,6 +65,8 @@ public:
 
        void SaveCurrentSyncJob(void);
 
+       void CheckSyncJobsData(void);
+
 public:
        static const long NOT_IN_BACKOFF_MODE;
 
index 2a1ca2c1d1ced6a8b31ec817fe32e40ae8ca4f9e..1ed97cb7d50c1e1ad6a88ddb9948193e46f8d3f8 100644 (file)
@@ -364,6 +364,9 @@ OnPackageUninstalled(unsigned int userId, int reqId, const char* pPkgType, const
                SyncManager::GetInstance()->GetSyncJobsAggregator()->HandlePackageUninstalled(pPkgId);
        }
 
+       SyncManager::GetInstance()->GetSyncRepositoryEngine()->SaveCurrentState();
+       SyncManager::GetInstance()->GetSyncRepositoryEngine()->CheckSyncJobsData();
+
        return 0;
 }
 /* LCOV_EXCL_STOP */