From: Piotr Czaja
Date: Wed, 20 May 2015 09:25:52 +0000 (+0200)
Subject: [Filesystem] Fix addStorageStateChangeListener method
X-Git-Tag: submit/tizen_tv/20150603.064601^2~12
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1685fad079bf35ff87a9fd1638f3cab5c4893e6d;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Filesystem] Fix addStorageStateChangeListener method
[Verification] Following TCT are fixed:
- FileSystemManager_addStorageStateChangeListener
- FileSystemManager_addStorageStateChangeListener_with_onerror
- FileSystemManager_removeStorageStateChangeListener
Change-Id: I799686ee07c0481cb2d93f12fc90de67aa104494
Signed-off-by: Piotr Czaja
---
diff --git a/src/filesystem/filesystem_instance.cc b/src/filesystem/filesystem_instance.cc
index d2154598..5e4d10b9 100755
--- a/src/filesystem/filesystem_instance.cc
+++ b/src/filesystem/filesystem_instance.cc
@@ -75,6 +75,8 @@ FilesystemInstance::FilesystemInstance() {
FilesystemInstance::~FilesystemInstance() {
LoggerD("enter");
+ FilesystemManager::GetInstance().StopListening();
+ FilesystemManager::GetInstance().RemoveListener();
}
#define CHECK_EXIST(args, name, out) \
diff --git a/src/filesystem/filesystem_manager.cc b/src/filesystem/filesystem_manager.cc
index a9cdf9cc..17fb2252 100755
--- a/src/filesystem/filesystem_manager.cc
+++ b/src/filesystem/filesystem_manager.cc
@@ -204,17 +204,23 @@ FilesystemError make_directory_worker(const std::string& path) {
}
} // namespace
+std::vector FilesystemManager::FillStorages() {
+ LoggerD("entered");
+ auto virtualStorages = common::VirtualFs::GetInstance().GetStorages();
+ if (ids_.empty()) {
+ for (auto storage : virtualStorages) {
+ if (storage.id_ >= 0) {
+ ids_.insert(storage.id_);
+ }
+ }
+ }
+ return virtualStorages;
+}
+
void FilesystemManager::FetchStorages(
const std::function&)>& success_cb,
const std::function& error_cb) {
- auto result = common::VirtualFs::GetInstance().GetStorages();
-
- for (auto storage : result) {
- if (storage.id_ >= 0) {
- ids_.insert(storage.id_);
- }
- }
-
+ auto result = FillStorages();
success_cb(result);
}
@@ -420,6 +426,7 @@ void FilesystemManager::FileWrite(
void FilesystemManager::StartListening() {
LoggerD("enter");
+ FillStorages();
if (!is_listener_registered_ && !ids_.empty()) {
int result = STORAGE_ERROR_NONE;
@@ -475,5 +482,10 @@ void FilesystemManager::AddListener(FilesystemStateChangeListener* listener) {
LoggerD("enter");
listener_ = listener;
}
+
+void FilesystemManager::RemoveListener() {
+ LoggerD("enter");
+ listener_ = NULL;
+}
} // namespace filesystem
} // namespace extension
diff --git a/src/filesystem/filesystem_manager.h b/src/filesystem/filesystem_manager.h
index 474d7407..0492d345 100755
--- a/src/filesystem/filesystem_manager.h
+++ b/src/filesystem/filesystem_manager.h
@@ -59,6 +59,7 @@ class FilesystemManager {
const std::function& success_cb,
const std::function& error_cb);
+ std::vector FillStorages();
void FetchStorages(
const std::function&)>& success_cb,
const std::function& error_cb);
@@ -110,6 +111,7 @@ void CopyTo(const std::string& originFilePath,
void StartListening();
void StopListening();
void AddListener(FilesystemStateChangeListener* listener);
+ void RemoveListener();
};
} // namespace filesystem
} // namespace extension