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