Create tmp/ and cache/ directories in widget package 61/47161/5
authorTomasz Iwanek <t.iwanek@samsung.com>
Mon, 31 Aug 2015 09:48:21 +0000 (11:48 +0200)
committerPawel Sikorski <p.sikorski@samsung.com>
Tue, 1 Sep 2015 12:16:11 +0000 (05:16 -0700)
Wgt package installation should contain directory "tmp"
for temporary widget directory which is accessible as
one of fs roots by tizen API.

"cache" directory should be present for web engine cache.

Change-Id: I910a89ca3fa83e5e598bea0bbaf3a9e878cd71ba

src/unit_tests/smoke_test.cc
src/wgt/step/step_wgt_copy_storage_directories.cc
src/wgt/step/step_wgt_copy_storage_directories.h
src/wgt/step/step_wgt_create_storage_directories.cc
src/wgt/step/step_wgt_create_storage_directories.h

index b682421..bd82b38 100644 (file)
@@ -138,6 +138,11 @@ void ValidatePackageFS(const std::string& pkgid, const std::string& appid,
     bf::path config_path = widget_root_path / "config.xml";
     ASSERT_TRUE(bf::exists(widget_root_path));
     ASSERT_TRUE(bf::exists(config_path));
+
+    bf::path private_tmp_path = package_path / "tmp";
+    bf::path cache_path = package_path / "cache";
+    ASSERT_TRUE(bf::exists(private_tmp_path));
+    ASSERT_TRUE(bf::exists(cache_path));
   }
 
   // backups should not exist
index b8211f6..25b4000 100644 (file)
@@ -20,6 +20,8 @@ const char kSharedLocation[] = "shared";
 const char kSharedDataLocation[] = "shared/data";
 const char kSharedTrustedLocation[] = "shared/trusted";
 const char kResWgtSubPath[] = "res/wgt";
+const char kTemporaryData[] = "tmp";
+const char kCacheDir[] = "cache";
 
 }  // namespace
 
@@ -27,6 +29,13 @@ namespace wgt {
 namespace filesystem {
 
 common_installer::Step::Status StepWgtCopyStorageDirectories::process() {
+  Status status = CreatePrivateTmpDir();
+  if (status != Status::OK)
+    return status;
+  status = CreateCacheDir();
+  if (status != Status::OK)
+    return status;
+
   int version = context_->manifest_data.get()->api_version[0] - '0';
   if (version < 3) {
     LOG(DEBUG) << "Shared directory coping for tizen 2.x";
@@ -34,7 +43,7 @@ common_installer::Step::Status StepWgtCopyStorageDirectories::process() {
   }
 
   LOG(DEBUG) << "Shared directory coping for tizen 3.x";
-  Status status = CopySharedDirectory();
+  status = CopySharedDirectory();
   if (status != Status::OK)
     return status;
 
@@ -149,6 +158,30 @@ StepWgtCopyStorageDirectories::CopyDataDirectory() {
   return Status::OK;
 }
 
+common_installer::Step::Status
+StepWgtCopyStorageDirectories::CreatePrivateTmpDir() {
+  bs::error_code error_code;
+  bf::path tmp_path = context_->pkg_path.get() / kTemporaryData;
+  bf::create_directory(tmp_path, error_code);
+  if (error_code) {
+    LOG(ERROR) << "Failed to create private temporary directory for package";
+    return Status::ERROR;
+  }
+  return Status::OK;
+}
+
+common_installer::Step::Status
+StepWgtCopyStorageDirectories::CreateCacheDir() {
+  bs::error_code error_code;
+  bf::path cache_path = context_->pkg_path.get() / kCacheDir;
+  bf::create_directory(cache_path, error_code);
+  if (error_code) {
+    LOG(ERROR) << "Failed to create cache directory for package";
+    return Status::ERROR;
+  }
+  return Status::OK;
+}
+
 }  // namespace filesystem
 }  // namespace wgt
 
index 6c603cf..f74446b 100644 (file)
@@ -31,6 +31,8 @@ class StepWgtCopyStorageDirectories
   Status HandleWgtSharedDirectory();
   void UndoSharedDirectory();
   void UndoDataDirectory();
+  Status CreatePrivateTmpDir();
+  Status CreateCacheDir();
 
   SCOPE_LOG_TAG(CopyWgtStorageDirectories)
 };
index 358c4ed..8376b57 100644 (file)
@@ -17,6 +17,8 @@ namespace {
 
 const char kSharedLocation[] = "shared";
 const char kResWgtSubPath[] = "res/wgt";
+const char kTemporaryData[] = "tmp";
+const char kCacheDir[] = "cache";
 
 }  // namespace
 
@@ -42,6 +44,12 @@ common_installer::Step::Status StepWgtCreateStorageDirectories::process() {
   if (!SubShareDir())
     return Status::ERROR;
 
+  if (!CreatePrivateTmpDir())
+    return Status::ERROR;
+
+  if (!CreateCacheDir())
+    return Status::ERROR;
+
   return Status::OK;
 }
 
@@ -80,5 +88,27 @@ bool StepWgtCreateStorageDirectories::ShareDirFor3x() {
   return true;
 }
 
+bool StepWgtCreateStorageDirectories::CreatePrivateTmpDir() {
+  bs::error_code error_code;
+  bf::path tmp_path = context_->pkg_path.get() / kTemporaryData;
+  bf::create_directory(tmp_path, error_code);
+  if (error_code) {
+    LOG(ERROR) << "Failed to create private temporary directory for package";
+    return false;
+  }
+  return true;
+}
+
+bool StepWgtCreateStorageDirectories::CreateCacheDir() {
+  bs::error_code error_code;
+  bf::path cache_path = context_->pkg_path.get() / kCacheDir;
+  bf::create_directory(cache_path, error_code);
+  if (error_code) {
+    LOG(ERROR) << "Failed to create cache directory for package";
+    return false;
+  }
+  return true;
+}
+
 }  // namespace filesystem
 }  // namespace wgt
index 7c14890..7ef1660 100644 (file)
@@ -40,6 +40,9 @@ class StepWgtCreateStorageDirectories :
   bool ShareDirFor2x();
   bool ShareDirFor3x();
 
+  bool CreatePrivateTmpDir();
+  bool CreateCacheDir();
+
   SCOPE_LOG_TAG(CreateWgtStorageDirectories)
 };