From b217fd3f8d69401c7cd5a4b1279c37ffb12e7002 Mon Sep 17 00:00:00 2001 From: Piotr Dabrowski Date: Thu, 1 Sep 2016 15:37:33 +0200 Subject: [PATCH 01/16] Fixes after cppcheck > [wgt-backend/src/wgt/step/encryption/step_encrypt_resources.cc:175]: (error) Resource leak: input > [wgt-backend/src/wgt/step/encryption/step_encrypt_resources.cc:251]: (error) Deallocating a deallocated pointer: output > [wgt-backend/src/wgt/extension_config_parser.cc:27]: (performance) Variable 'config_xml_' is assigned in constructor body. Consider performing initialization in initialization list. Change-Id: I4386dd4b5923566cc2e7ce941144496200fe139b --- src/wgt/extension_config_parser.cc | 5 ++--- src/wgt/step/encryption/step_encrypt_resources.cc | 23 +++++++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/wgt/extension_config_parser.cc b/src/wgt/extension_config_parser.cc index 4813d72..1a1258d 100755 --- a/src/wgt/extension_config_parser.cc +++ b/src/wgt/extension_config_parser.cc @@ -23,9 +23,8 @@ const char kExtensionPath[] = "extension.privilege"; const char kExtensionNameKey[] = "@name"; } // namespace -ExtensionConfigParser::ExtensionConfigParser(std::string config_xml) { - config_xml_ = config_xml; -} +ExtensionConfigParser::ExtensionConfigParser(std::string config_xml) + : config_xml_(config_xml) {} std::unique_ptr ExtensionConfigParser::LoadExtensionConfig(const std::string& config_xml) { diff --git a/src/wgt/step/encryption/step_encrypt_resources.cc b/src/wgt/step/encryption/step_encrypt_resources.cc index 4d5fb91..b2ec518 100644 --- a/src/wgt/step/encryption/step_encrypt_resources.cc +++ b/src/wgt/step/encryption/step_encrypt_resources.cc @@ -52,20 +52,22 @@ std::size_t ReadBytes(unsigned char* buffer, std::size_t count, FILE* stream) { void WriteBytes(unsigned char* buffer, std::size_t count, FILE* stream) { // original file is treated as destination! + if (count <= 0) { + return; + } std::size_t bytes_written = 0; - std::size_t bytes_to_write = 0; do { - bytes_to_write = count - bytes_written; - bytes_written = std::fwrite(buffer + bytes_written, - sizeof(unsigned char), - count - bytes_written, - stream); - if ((bytes_written != bytes_to_write)) { + std::size_t bytes_appended = std::fwrite( + buffer + bytes_written, + sizeof(unsigned char), + count - bytes_written, + stream); + if ((bytes_appended == 0)) { LOG(ERROR) << "Error while writing data"; - free(buffer); - fclose(stream); + return; } - } while ((bytes_written != bytes_to_write)); + bytes_written += bytes_appended; + } while ((bytes_written < count)); } } // namespace @@ -172,6 +174,7 @@ bool StepEncryptResources::EncryptFile(const bf::path &src) { FILE *output = OpenFile(encFile.string().c_str(), "wb"); if (output == nullptr) { LOG(ERROR) << "Cannot create encrypted file: " << encFile.string(); + fclose(input); return false; } -- 2.7.4 From cc95a56f9b634aec29c42b7924cbe4c887b9a53e Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Mon, 5 Sep 2016 15:29:49 +0200 Subject: [PATCH 02/16] Fix double parsing of config.xml in delta wgt mode Fixed by add a optional delay in checking existence of start files and adding new step Requires: - https://review.tizen.org/gerrit/#/c/86941/ Change-Id: I9efed825d5f04af28493a6bd0003e3b9d6efb3c8 --- src/wgt/CMakeLists.txt | 1 + .../step/configuration/step_check_start_files.cc | 48 ++++++++++++++++++++++ .../step/configuration/step_check_start_files.h | 48 ++++++++++++++++++++++ src/wgt/step/configuration/step_parse.cc | 24 ++++++++--- src/wgt/wgt_backend_data.h | 4 ++ src/wgt/wgt_installer.cc | 6 +-- 6 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 src/wgt/step/configuration/step_check_start_files.cc create mode 100644 src/wgt/step/configuration/step_check_start_files.h diff --git a/src/wgt/CMakeLists.txt b/src/wgt/CMakeLists.txt index fece9b1..3124963 100755 --- a/src/wgt/CMakeLists.txt +++ b/src/wgt/CMakeLists.txt @@ -1,5 +1,6 @@ # Target - sources SET(SRCS + step/configuration/step_check_start_files.cc step/configuration/step_parse.cc step/encryption/step_encrypt_resources.cc step/encryption/step_remove_encryption_data.cc diff --git a/src/wgt/step/configuration/step_check_start_files.cc b/src/wgt/step/configuration/step_check_start_files.cc new file mode 100644 index 0000000..7bf3ad6 --- /dev/null +++ b/src/wgt/step/configuration/step_check_start_files.cc @@ -0,0 +1,48 @@ +// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved +// Use of this source code is governed by a apache 2.0 license that can be +// found in the LICENSE file. + +#include "wgt/step/configuration/step_check_start_files.h" + +#include + +#include +#include +#include + +#include + +#include +#include + +namespace bf = boost::filesystem; + +namespace wgt { +namespace configuration { + +common_installer::Step::Status StepCheckStartFiles::process() { + bool flag = false; // it's not important in this step to use this flag + std::string error; + bool result_check = CheckStartFile(static_cast + (context_->backend_data.get())->content.get(), + context_->unpacked_dir_path.get(), + &flag); + if (!result_check) { + LOG(ERROR) << "Could not find valid start file"; + return common_installer::Step::Status::PARSE_ERROR; + } + + result_check = CheckServicesStartFiles(static_cast( + context_->backend_data.get())->service_list.get(), + context_->unpacked_dir_path.get(), + &error); + if (!result_check) { + LOG(ERROR) << error; + return common_installer::Step::Status::PARSE_ERROR; + } + + return common_installer::Step::Status::OK; +} + +} // namespace configuration +} // namespace wgt diff --git a/src/wgt/step/configuration/step_check_start_files.h b/src/wgt/step/configuration/step_check_start_files.h new file mode 100644 index 0000000..7fc7025 --- /dev/null +++ b/src/wgt/step/configuration/step_check_start_files.h @@ -0,0 +1,48 @@ +// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved +// Use of this source code is governed by a apache 2.0 license that can be +// found in the LICENSE file. +#ifndef WGT_STEP_CONFIGURATION_STEP_CHECK_START_FILES_H_ +#define WGT_STEP_CONFIGURATION_STEP_CHECK_START_FILES_H_ + +#include + +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +namespace wgt { +namespace configuration { + +/** + * \brief The StepCheckStartFiles class + * Checks if valid start files exists. + * It needs content info from wgt_backend_data. + * + * Step is used in delta mode. + */ +class StepCheckStartFiles : public common_installer::Step { + public: + using Step::Step; + + Status process() override; + Status clean() override { return Status::OK; } + Status undo() override { return Status::OK; } + Status precheck() override { return Status::OK; } + + STEP_NAME(CheckStartFiles) +}; + +} // namespace configuration +} // namespace wgt + +#endif // WGT_STEP_CONFIGURATION_STEP_CHECK_START_FILES_H_ diff --git a/src/wgt/step/configuration/step_parse.cc b/src/wgt/step/configuration/step_parse.cc index b2a12bf..0218240 100644 --- a/src/wgt/step/configuration/step_parse.cc +++ b/src/wgt/step/configuration/step_parse.cc @@ -650,15 +650,31 @@ common_installer::Step::Status StepParse::process() { LOG(ERROR) << "[Parse] Parse failed. " << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } + + WgtBackendData* backend_data = + static_cast(context_->backend_data.get()); + if (check_start_file_) { - if (!parser_->HasValidStartFile()) { + if (!parser_->CheckValidStartFile()) { LOG(ERROR) << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } - if (!parser_->HasValidServicesStartFiles()) { + if (!parser_->CheckValidServicesStartFiles()) { LOG(ERROR) << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } + } else { + // making backup of content data and services content data + auto content_info = + GetManifestDataForKey( + wgt::application_widget_keys::kTizenContentKey); + auto service_list = + GetManifestDataForKey( + wgt::application_widget_keys::kTizenServiceKey); + if (content_info) + backend_data->content.set(*content_info); + if (service_list) + backend_data->service_list.set(*service_list); } manifest_x* manifest = @@ -711,9 +727,6 @@ common_installer::Step::Status StepParse::process() { if (perm_info) permissions = perm_info->GetAPIPermissions(); - WgtBackendData* backend_data = - static_cast(context_->backend_data.get()); - auto settings_info = GetManifestDataForKey( wgt::application_widget_keys::kTizenSettingKey); @@ -736,7 +749,6 @@ common_installer::Step::Status StepParse::process() { LOG(DEBUG) << " ]-"; LOG(DEBUG) << "]-"; - // TODO(t.iwanek): In delta mode this step is running two times if (context_->manifest_data.get()) pkgmgr_parser_free_manifest_xml(context_->manifest_data.get()); diff --git a/src/wgt/wgt_backend_data.h b/src/wgt/wgt_backend_data.h index 3d2791d..c36cbad 100644 --- a/src/wgt/wgt_backend_data.h +++ b/src/wgt/wgt_backend_data.h @@ -9,6 +9,8 @@ #include #include +#include +#include #include #include @@ -28,6 +30,8 @@ class WgtBackendData : public common_installer::BackendData { Property settings; Property appwidgets; + Property content; + Property service_list; }; } // namespace wgt diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index b728742..282b3c0 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -72,6 +72,7 @@ #include #include +#include "wgt/step/configuration/step_check_start_files.h" #include "wgt/step/configuration/step_parse.h" #include "wgt/step/encryption/step_encrypt_resources.h" #include "wgt/step/encryption/step_remove_encryption_data.h" @@ -233,10 +234,8 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) case ci::RequestType::Delta: { AddStep(pkgmgr_); AddStep(); - // TODO(t.iwanek): manifest is parsed twice... AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, false); - // start file may not have changed AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::BACKUP); @@ -244,8 +243,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep("res/wgt/"); AddStep(); - AddStep( - wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); + AddStep(); AddStep(); AddStep(); AddStep(); -- 2.7.4 From afcad01824f508a6c1b0e0f16f0eaded38d7157b Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Wed, 31 Aug 2016 11:48:58 +0200 Subject: [PATCH 03/16] Set correct exec label for smoke tests Otherwise, running from shell gives "System::Privileged" instead of "System". To verify run: $ usermod -s /bin/bash app_fw $ chsmack -a _ /etc/passwd $ su - app_fw $ /usr/bin/wgt-backend-ut/smoke-test Change-Id: If2f314f77daeb28b4af4cd3568cc3ac52bbd1354 --- packaging/wgt-backend-tests.manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/wgt-backend-tests.manifest b/packaging/wgt-backend-tests.manifest index 0d58b09..17bba51 100644 --- a/packaging/wgt-backend-tests.manifest +++ b/packaging/wgt-backend-tests.manifest @@ -3,7 +3,7 @@ - - + + -- 2.7.4 From e261fce0c47da98af1c2812c25e1810ebf3a422a Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Thu, 1 Sep 2016 13:54:40 +0200 Subject: [PATCH 04/16] Recovery mode for mount install and mount update To verify, run new smoke tests. Recovery mode requires mounting zip package. Signature files which needs to be read in next step are within zip package. Requires: - https://review.tizen.org/gerrit/86739 Change-Id: I857ecea3dae3836cf9a0af2c11766481a016847e --- src/hybrid/hybrid_installer.cc | 2 + src/unit_tests/smoke_test.cc | 57 ++++++++++++++++++++- .../test_samples/smoke/RecoveryMode_ForDelta.delta | Bin .../smoke/RecoveryMode_ForInstallation.wgt | Bin 37654 -> 37578 bytes .../smoke/RecoveryMode_ForMountInstall.wgt | Bin 0 -> 38679 bytes .../smoke/RecoveryMode_ForMountUpdate.wgt | Bin 0 -> 38923 bytes .../smoke/RecoveryMode_ForMountUpdate_2.wgt | Bin 0 -> 38921 bytes src/wgt/wgt_installer.cc | 2 + 8 files changed, 59 insertions(+), 2 deletions(-) mode change 100755 => 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForMountInstall.wgt create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate.wgt create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate_2.wgt diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index ea2cc76..6760416 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -273,6 +274,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 75c0fa3..49905e2 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -61,17 +61,26 @@ class ScopedTzipInterface { explicit ScopedTzipInterface(const std::string& pkgid) : pkg_path_(bf::path(ci::GetRootAppPath(false, kTestUserId)) / pkgid), - interface_(ci::GetMountLocation(pkg_path_)) { + interface_(ci::GetMountLocation(pkg_path_)), + mounted_(true) { interface_.MountZip(ci::GetZipPackageLocation(pkg_path_, pkgid)); } + void Release() { + if (mounted_) { + interface_.UnmountZip(); + mounted_ = false; + } + } + ~ScopedTzipInterface() { - interface_.UnmountZip(); + Release(); } private: bf::path pkg_path_; ci::TzipInterface interface_; + bool mounted_; }; class TestPkgmgrInstaller : public ci::PkgmgrInstallerInterface { @@ -618,6 +627,50 @@ TEST_F(SmokeTest, RecoveryMode_ForDelta) { ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "1\n")); } +TEST_F(SmokeTest, RecoveryMode_ForMountInstall) { + bf::path path = kSmokePackagesDirectory / "RecoveryMode_ForMountInstall.wgt"; + RemoveAllRecoveryFiles(); + Subprocess backend_crash("/usr/bin/wgt-backend-ut/smoke-test-helper"); + backend_crash.Run("-w", path.string(), "-u", kTestUserIdStr.c_str()); + ASSERT_NE(backend_crash.Wait(), 0); + + std::string pkgid = "smokeapp31"; + std::string appid = "smokeapp31.RecoveryModeForMountInstall"; + bf::path recovery_file = FindRecoveryFile(); + ASSERT_FALSE(recovery_file.empty()); + ASSERT_EQ(Recover(recovery_file, PackageType::WGT), + ci::AppInstaller::Result::OK); + CheckPackageNonExistance(pkgid, {appid}); +} + +TEST_F(SmokeTest, RecoveryMode_ForMountUpdate) { + bf::path path_old = + kSmokePackagesDirectory / "RecoveryMode_ForMountUpdate.wgt"; + bf::path path_new = + kSmokePackagesDirectory / "RecoveryMode_ForMountUpdate_2.wgt"; + std::string pkgid = "smokeapp32"; + std::string appid = "smokeapp32.RecoveryModeForMountUpdate"; + RemoveAllRecoveryFiles(); + ASSERT_EQ(MountInstall(path_old, PackageType::WGT), + ci::AppInstaller::Result::OK); + Subprocess backend_crash("/usr/bin/wgt-backend-ut/smoke-test-helper"); + backend_crash.Run("-w", path_new.string(), "-u", kTestUserIdStr.c_str()); + ASSERT_NE(backend_crash.Wait(), 0); + + // Filesystem may be mounted after crash + ScopedTzipInterface poweroff_unmount_interface(pkgid); + poweroff_unmount_interface.Release(); + + bf::path recovery_file = FindRecoveryFile(); + ASSERT_FALSE(recovery_file.empty()); + ASSERT_EQ(Recover(recovery_file, PackageType::WGT), + ci::AppInstaller::Result::OK); + + ScopedTzipInterface interface(pkgid); + ValidatePackage(pkgid, {appid}); + ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "1\n")); +} + TEST_F(SmokeTest, InstallationMode_GoodSignature) { bf::path path = kSmokePackagesDirectory / "InstallationMode_GoodSignature.wgt"; // NOLINT ASSERT_EQ(Install(path, PackageType::WGT), ci::AppInstaller::Result::OK); diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta b/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta old mode 100755 new mode 100644 diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForInstallation.wgt b/src/unit_tests/test_samples/smoke/RecoveryMode_ForInstallation.wgt index 3990f8069dc8be2e79f5820e13ec6fde4dfeb9ac..7f9dc0e6f11dd8ab6ad1c429283afcce5e43283f 100644 GIT binary patch delta 453 zcmbQXjOo-;CiVbtW)=|!hRKE##W%`vaXNu{92^WA@)SJ-Sk$XT85tOU0x=hZ3`25$ zURq|lUPW$BXb2|*^KP*d;oE??w1S&~k>v$50|S`Y9LFinC&rXzJWSIPHqN1oH4+BFcFx>PC^3oBi zWF{#x%1ySLBnMO#3uL!UuAc-9=*d$jDT<$HV_?WC*3V7M%+t#%M(8;^Ns;ML$K(%_ OWVk*6-F9RG$dLe&mT#E= delta 634 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 bJ+ys)yCm$ZCnNv}&<7lyUWB554*>iN$NrNB literal 0 HcmV?d00001 diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate.wgt b/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate.wgt new file mode 100644 index 0000000000000000000000000000000000000000..17ab974a98a26ca6b4be39d531189d43f718e833 GIT binary patch literal 38923 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

}u>wPY) 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 B-QfTL literal 0 HcmV?d00001 diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate_2.wgt b/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate_2.wgt new file mode 100644 index 0000000000000000000000000000000000000000..374b66dbfc05782a23986bd78da5e877dbb79ed6 GIT binary patch literal 38921 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 #include #include +#include #include #include #include @@ -289,6 +290,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); -- 2.7.4 From 2ea4a43278a47cac72cdce96997f46be958deb5c Mon Sep 17 00:00:00 2001 From: Piotr Dabrowski Date: Wed, 7 Sep 2016 14:31:12 +0200 Subject: [PATCH 05/16] Fix installation of icons for hybrid applications Change-Id: I41ce7308a6e7abb7f55b3fb002639fad580a4c57 --- src/wgt/step/configuration/step_parse.cc | 14 +++++++------- src/wgt/step/configuration/step_parse.h | 2 +- src/wgt/step/filesystem/step_wgt_patch_icons.cc | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/wgt/step/configuration/step_parse.cc b/src/wgt/step/configuration/step_parse.cc index 0218240..b2b4822 100644 --- a/src/wgt/step/configuration/step_parse.cc +++ b/src/wgt/step/configuration/step_parse.cc @@ -55,6 +55,7 @@ const char kTizenPackageXmlNamespace[] = "http://tizen.org/ns/packages"; const char kImeCategoryName[] = "http://tizen.org/category/ime"; const char kResWgt[] = "res/wgt"; +const char kConfigFileName[] = "config.xml"; GList* GenerateMetadataListX(const wgt::parse::MetaDataInfo& meta_info) { GList* list = nullptr; @@ -161,8 +162,7 @@ bool StepParse::FillIconPaths(manifest_x* manifest) { icons_info.reset(new wgt::parse::ApplicationIconsInfo()); } wgt::parse::LocalizedApplicationIconsInfo localized_list = - wgt::parse::GetLocalizedIconList(*icons_info, - context_->unpacked_dir_path.get()); + wgt::parse::GetLocalizedIconList(*icons_info, widget_path_); // We need to generate icon for each locale and icons are already set into // lookup order. There isn't said that all icons should be received from // one tag position so we iterate utils we run out of icons creating @@ -646,7 +646,7 @@ common_installer::Step::Status StepParse::process() { } parser_.reset(new wgt::parse::WidgetConfigParser()); - if (!parser_->ParseManifest(config_)) { + if (!parser_->ParseManifest(widget_path_ / kConfigFileName)) { LOG(ERROR) << "[Parse] Parse failed. " << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } @@ -757,14 +757,14 @@ common_installer::Step::Status StepParse::process() { } bool StepParse::Check(const boost::filesystem::path& widget_path) { - boost::filesystem::path config = widget_path / "config.xml"; + LOG(DEBUG) << "unpacked widget path: " << widget_path; - LOG(DEBUG) << "config.xml path: " << config; + widget_path_ = widget_path; + boost::filesystem::path config = widget_path / kConfigFileName; + LOG(DEBUG) << "config.xml path: " << config; if (!boost::filesystem::exists(config)) return false; - - config_ = config; return true; } diff --git a/src/wgt/step/configuration/step_parse.h b/src/wgt/step/configuration/step_parse.h index 0effc8f..d2a42dc 100644 --- a/src/wgt/step/configuration/step_parse.h +++ b/src/wgt/step/configuration/step_parse.h @@ -47,7 +47,7 @@ class StepParse : public common_installer::Step { virtual bool LocateConfigFile(); bool Check(const boost::filesystem::path& widget_path); - boost::filesystem::path config_; + boost::filesystem::path widget_path_; private: std::set ExtractPrivileges( diff --git a/src/wgt/step/filesystem/step_wgt_patch_icons.cc b/src/wgt/step/filesystem/step_wgt_patch_icons.cc index 2a995b2..01b62fd 100644 --- a/src/wgt/step/filesystem/step_wgt_patch_icons.cc +++ b/src/wgt/step/filesystem/step_wgt_patch_icons.cc @@ -56,6 +56,7 @@ common_installer::Step::Status StepWgtPatchIcons::process() { icon->text = strdup(icon_path.c_str()); } } else { + LOG(INFO) << "Application provides no icon. Using Tizen default icon."; // create default icon if there is no icon at all bf::path icon_path = common_icon_location / app->appid; icon_path += ".png"; -- 2.7.4 From 64c508da71cc52b695a29bd8b090b5928d923e23 Mon Sep 17 00:00:00 2001 From: Piotr Ganicz Date: Thu, 8 Sep 2016 10:56:32 +0200 Subject: [PATCH 06/16] Unit test for User Definded Plugin Change-Id: I3ca99aae0e79320941a1bb2b8ef9ee410ac75738 --- src/unit_tests/smoke_test.cc | 18 ++++++++++++++++++ .../test_samples/smoke/SimpleEchoPrivilege.wgt | Bin 0 -> 45719 bytes 2 files changed, 18 insertions(+) create mode 100644 src/unit_tests/test_samples/smoke/SimpleEchoPrivilege.wgt diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 49905e2..4e6606e 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -782,6 +782,24 @@ TEST_F(SmokeTest, MountUpdateMode) { ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "2\n")); } +TEST_F(SmokeTest, UserDefinedPlugins) { + bf::path path = kSmokePackagesDirectory / "SimpleEchoPrivilege.wgt"; + std::string pkgid = "0CSPVhKmRk"; + std::string appid = "0CSPVhKmRk.SimpleEcho"; + std::string call_privilege = "http://tizen.org/privilege/call"; + std::string location_privilege = "http://tizen.org/privilege/location"; + std::string power_privilege = "http://tizen.org/privilege/power"; + + ASSERT_EQ(Install(path, PackageType::WGT), ci::AppInstaller::Result::OK); + ValidatePackage(pkgid, {appid}); + std::vector res; + ASSERT_TRUE(ci::QueryPrivilegesForPkgId(pkgid, kTestUserId, &res)); + ASSERT_TRUE(std::find(res.begin(), res.end(), call_privilege) != res.end()); + ASSERT_TRUE(std::find(res.begin(), res.end(), location_privilege) + != res.end()); + ASSERT_TRUE(std::find(res.begin(), res.end(), power_privilege) != res.end()); +} + } // namespace common_installer int main(int argc, char** argv) { diff --git a/src/unit_tests/test_samples/smoke/SimpleEchoPrivilege.wgt b/src/unit_tests/test_samples/smoke/SimpleEchoPrivilege.wgt new file mode 100644 index 0000000000000000000000000000000000000000..e48d684d87f29070b100a44530402e7d83e7f38c GIT binary patch literal 45719 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 F{{WlGw^9HA literal 0 HcmV?d00001 -- 2.7.4 From 0ef0eba225ae78f6c748b337f830cc781ab1299c Mon Sep 17 00:00:00 2001 From: Piotr Ganicz Date: Thu, 8 Sep 2016 14:33:54 +0200 Subject: [PATCH 07/16] Fix installation User Defined Plugins Change-Id: I0e71b358bf437a40980881c5fc23ce095bd5012b --- src/wgt/step/security/step_check_extension_privileges.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wgt/step/security/step_check_extension_privileges.cc b/src/wgt/step/security/step_check_extension_privileges.cc index 15b305a..c28071a 100755 --- a/src/wgt/step/security/step_check_extension_privileges.cc +++ b/src/wgt/step/security/step_check_extension_privileges.cc @@ -115,7 +115,7 @@ bool StepCheckExtensionPrivileges::CheckPrivilegeLevel( std::string error_message; if (!common_installer::ValidatePrivilegeLevel( context_->privilege_level.get(), - false, + context_->pkg_type.get(), context_->manifest_data.get()->api_version, privileges, &error_message)) { -- 2.7.4 From 4d8b0f4845ff867b1b94161d1f6da5b392d97741 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Thu, 8 Sep 2016 16:07:32 +0900 Subject: [PATCH 08/16] add and fix step for fota and direct install - Add StepWgtPatchIcons at ManifestDirectInstall and Update to work it properly - Fix StepWgtPatchIcons to overwrite icon even exists Related changes [pkgmgr-tool] : https://review.tizen.org/gerrit/#/c/83327/ [app-installers] : https://review.tizen.org/gerrit/#/c/86789/ [tpk-backend] : https://review.tizen.org/gerrit/#/c/86846/ Change-Id: I9a13d6af490832e0a48fd8e837a7bc29aeb60648 Signed-off-by: Junghyun Yeon --- src/wgt/step/filesystem/step_wgt_patch_icons.cc | 2 +- src/wgt/wgt_installer.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/wgt/step/filesystem/step_wgt_patch_icons.cc b/src/wgt/step/filesystem/step_wgt_patch_icons.cc index 01b62fd..c01c1c8 100644 --- a/src/wgt/step/filesystem/step_wgt_patch_icons.cc +++ b/src/wgt/step/filesystem/step_wgt_patch_icons.cc @@ -60,7 +60,7 @@ common_installer::Step::Status StepWgtPatchIcons::process() { // create default icon if there is no icon at all bf::path icon_path = common_icon_location / app->appid; icon_path += ".png"; - bf::copy_file(kDefaultIconPath, icon_path, error); + bf::copy_file(kDefaultIconPath, icon_path, bf::copy_option::overwrite_if_exists, error); if (error) { LOG(ERROR) << "Failed to create default icon for web application"; return Status::ICON_ERROR; diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index d137fab..59cfa91 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -395,6 +395,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(ci::Plugin::ActionType::Install); @@ -422,6 +423,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); -- 2.7.4 From 89264dcafd21988f596a4bbdbb888fac41855445 Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Mon, 12 Sep 2016 10:25:28 +0200 Subject: [PATCH 09/16] Buildbreak fix Change-Id: Id966e9f9b2c75ea572c8c8184afc329dfd134053 --- src/wgt/step/configuration/step_check_start_files.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/wgt/step/configuration/step_check_start_files.cc b/src/wgt/step/configuration/step_check_start_files.cc index 7bf3ad6..6db5b8e 100644 --- a/src/wgt/step/configuration/step_check_start_files.cc +++ b/src/wgt/step/configuration/step_check_start_files.cc @@ -23,17 +23,21 @@ namespace configuration { common_installer::Step::Status StepCheckStartFiles::process() { bool flag = false; // it's not important in this step to use this flag std::string error; - bool result_check = CheckStartFile(static_cast - (context_->backend_data.get())->content.get(), - context_->unpacked_dir_path.get(), - &flag); + auto backend_data = + static_cast(context_->backend_data.get()); + auto content = std::make_shared(); + if (!backend_data->content.get().src().empty()) { + content.reset(new parse::ContentInfo(backend_data->content.get())); + } + + bool result_check = CheckStartFile(content, context_->unpacked_dir_path.get(), + &flag); if (!result_check) { LOG(ERROR) << "Could not find valid start file"; return common_installer::Step::Status::PARSE_ERROR; } - result_check = CheckServicesStartFiles(static_cast( - context_->backend_data.get())->service_list.get(), + result_check = CheckServicesStartFiles(backend_data->service_list.get(), context_->unpacked_dir_path.get(), &error); if (!result_check) { -- 2.7.4 From 906ff05c62f4d8739ed24193116be0be43e788fb Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Fri, 9 Sep 2016 11:06:45 +0200 Subject: [PATCH 10/16] Add package file ownership checking to smoke tests All tests passed after making fixes: - https://review.tizen.org/gerrit/#/c/87795/ - https://review.tizen.org/gerrit/#/c/87797/ Change-Id: Ic25afade3f3ffe4279a0ddf2562ba9c5420abff8 --- src/unit_tests/smoke_test.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 4e6606e..e13e6d5 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -39,6 +39,7 @@ namespace ci = common_installer; namespace { const uid_t kTestUserId = tzplatform_getuid(TZ_SYS_DEFAULT_USER); +const gid_t kTestGroupId = tzplatform_getgid(TZ_SYS_DEFAULT_USER); const std::string kTestUserIdStr = std::to_string(kTestUserId); @@ -203,6 +204,16 @@ void ValidatePackageFS(const std::string& pkgid, bf::path manifest_backup = ci::GetBackupPathForManifestFile(manifest_path); ASSERT_FALSE(bf::exists(package_backup)); ASSERT_FALSE(bf::exists(manifest_backup)); + + for (bf::recursive_directory_iterator iter(root_path); + iter != bf::recursive_directory_iterator(); ++iter) { + if (bf::is_symlink(symlink_status(iter->path()))) + continue; + struct stat stats; + stat(iter->path().c_str(), &stats); + ASSERT_EQ(kTestUserId, stats.st_uid); + ASSERT_EQ(kTestGroupId, stats.st_gid); + } } void PackageCheckCleanup(const std::string& pkgid, -- 2.7.4 From 5ea9333117c0942a2efe0263e1becd389618f68b Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Fri, 9 Sep 2016 11:30:43 +0200 Subject: [PATCH 11/16] Fix change owner for recovery mode Requires: - https://review.tizen.org/gerrit/#/c/87795/ Change-Id: I9b12839a97a748cc2fdb4e134903e7d869c8a29c --- src/hybrid/hybrid_installer.cc | 2 ++ src/wgt/wgt_installer.cc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index 6760416..7a5e12e 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -277,6 +278,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); break; case ci::RequestType::Clear: diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index 59cfa91..29e1d7e 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -293,6 +294,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); break; } -- 2.7.4 From 972fcb24db4136e8810198561de3889197de0e62 Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Wed, 7 Sep 2016 11:13:12 +0200 Subject: [PATCH 12/16] Fix generation of widget-application for hybrid apps Removed statement was performing invalid check. In hybrid apps we can generate widget-application for wgt as well as native app. If native part of package declared widget-application, installation fails. Therefore, this check was removed. Change-Id: Ie1fb73e33daf037fc613abacf967b305635ad5ed --- src/wgt/step/pkgmgr/step_generate_xml.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/wgt/step/pkgmgr/step_generate_xml.cc b/src/wgt/step/pkgmgr/step_generate_xml.cc index 8094412..d3e9aad 100644 --- a/src/wgt/step/pkgmgr/step_generate_xml.cc +++ b/src/wgt/step/pkgmgr/step_generate_xml.cc @@ -95,17 +95,16 @@ bool WriteWidgetApplicationAttributesAndElements( xmlTextWriterWriteAttribute(writer, BAD_CAST "multiple", BAD_CAST app->multiple); - // Generate attributes and elements not covered in manifest.xsd auto& appwidgets = widget_info.app_widgets(); const auto& appwidget = std::find_if(appwidgets.begin(), appwidgets.end(), [app](const wgt::parse::AppWidget& widget) { return widget.id == app->appid; }); if (appwidget == appwidgets.end()) { - LOG(ERROR) << "Failed to generate appwidget extra elements"; - return false; + return true; } + // Add extra elements for wgt widget-application xmlTextWriterWriteAttribute(writer, BAD_CAST "main", BAD_CAST (appwidget->primary ? "true" : "false")); // NOLINT if (!appwidget->update_period.empty()) { -- 2.7.4 From 78fdf7c4d6ec63e77ab35bca0f712744eaf63697 Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Tue, 13 Sep 2016 12:08:55 +0200 Subject: [PATCH 13/16] Nodisplay setting handling for webapp and checking privilege level for sound-mode and nodisplay Change-Id: I6b218368ad5a747edb9c08c420abbb443286618b --- src/wgt/step/configuration/step_parse.cc | 7 ++++++- src/wgt/step/security/step_check_settings_level.cc | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/wgt/step/configuration/step_parse.cc b/src/wgt/step/configuration/step_parse.cc index b2b4822..4fcc344 100644 --- a/src/wgt/step/configuration/step_parse.cc +++ b/src/wgt/step/configuration/step_parse.cc @@ -300,7 +300,12 @@ bool StepParse::FillMainApplicationInfo(manifest_x* manifest) { has_watch_catergory ? strdup("watchapp") : strdup("uiapp"); application->mainapp = strdup("true"); application->appid = strdup(app_info->id().c_str()); - application->nodisplay = has_ime ? strdup("true") : strdup("false"); + auto settings_info = + GetManifestDataForKey( + wgt::application_widget_keys::kTizenSettingKey); + bool no_display = settings_info ? settings_info->no_display() : false; + application->nodisplay = (has_ime || no_display) ? strdup("true") : + strdup("false"); application->taskmanage = has_ime ? strdup("false") : strdup("true"); SetApplicationXDefaults(application); if (has_watch_catergory) diff --git a/src/wgt/step/security/step_check_settings_level.cc b/src/wgt/step/security/step_check_settings_level.cc index 87f7702..2fd5923 100644 --- a/src/wgt/step/security/step_check_settings_level.cc +++ b/src/wgt/step/security/step_check_settings_level.cc @@ -36,6 +36,28 @@ bool ValidateSettingsForLevel(common_installer::PrivilegeLevel level, } LOG(INFO) << "Setting: 'long-polling' allowed"; } + + if (settings.no_display()) { + common_installer::PrivilegeLevel required_level = + common_installer::PrivilegeLevel::PARTNER; + if (!common_installer::SatifiesPrivilegeLevel(required_level, level)) { + LOG(ERROR) << "nodisplay requires visibility level: " + << common_installer::PrivilegeLevelToString(required_level); + return false; + } + LOG(INFO) << "Setting: 'nodisplay' allowed"; + } + + if (settings.sound_mode() != wgt::parse::SettingInfo::SoundMode::SHARED) { + common_installer::PrivilegeLevel required_level = + common_installer::PrivilegeLevel::PARTNER; + if (!common_installer::SatifiesPrivilegeLevel(required_level, level)) { + LOG(ERROR) << "sound-mode requires visibility level: " + << common_installer::PrivilegeLevelToString(required_level); + return false; + } + LOG(INFO) << "Setting: 'sound-mode' allowed"; + } return true; } -- 2.7.4 From 68d753ed147c7c6d08e5b2be24363036e6dbef09 Mon Sep 17 00:00:00 2001 From: jongmyeongko Date: Mon, 19 Sep 2016 16:49:23 +0900 Subject: [PATCH 14/16] remove the profile macro in the spec file. it's not used. Change-Id: Id3cd1253f824980766f664580f0219bf189873a4 Signed-off-by: jongmyeongko --- packaging/wgt-backend.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/packaging/wgt-backend.spec b/packaging/wgt-backend.spec index bc5af1e..dbc504c 100644 --- a/packaging/wgt-backend.spec +++ b/packaging/wgt-backend.spec @@ -1,6 +1,3 @@ -#Available values for profile: mobile, wearable, tv, ivi, common -%{!?profile:%define profile tv} - Name: wgt-backend Summary: Application installer backend for WGT Version: 0.1 -- 2.7.4 From 8a5a6135fae5b0b3adb0481672fceda198bbe431 Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Mon, 19 Sep 2016 13:03:15 +0200 Subject: [PATCH 15/16] Fix for StepParse - additional conditions checking for watch category in manifest Change-Id: I1a1051fc466616df92dd1e5b02e34d4a6e872dce --- src/wgt/step/configuration/step_parse.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/wgt/step/configuration/step_parse.cc b/src/wgt/step/configuration/step_parse.cc index 4fcc344..33bb0b2 100644 --- a/src/wgt/step/configuration/step_parse.cc +++ b/src/wgt/step/configuration/step_parse.cc @@ -274,14 +274,14 @@ bool StepParse::FillMainApplicationInfo(manifest_x* manifest) { LOG(ERROR) << "Application info manifest data has not been found."; return false; } - bool has_watch_catergory = false; + bool has_watch_category = false; bool has_ime = false; auto category_info = GetManifestDataForKey( app_keys::kTizenCategoryKey); if (category_info) { - has_watch_catergory = std::find_if(category_info->categories.begin(), + has_watch_category = std::find_if(category_info->categories.begin(), category_info->categories.end(), [](const std::string& category) { return category == kCategoryWearableClock || @@ -297,18 +297,19 @@ bool StepParse::FillMainApplicationInfo(manifest_x* manifest) { application_x* application = reinterpret_cast( calloc(1, sizeof(application_x))); application->component_type = - has_watch_catergory ? strdup("watchapp") : strdup("uiapp"); + has_watch_category ? strdup("watchapp") : strdup("uiapp"); application->mainapp = strdup("true"); application->appid = strdup(app_info->id().c_str()); auto settings_info = GetManifestDataForKey( wgt::application_widget_keys::kTizenSettingKey); bool no_display = settings_info ? settings_info->no_display() : false; - application->nodisplay = (has_ime || no_display) ? strdup("true") : - strdup("false"); - application->taskmanage = has_ime ? strdup("false") : strdup("true"); + application->nodisplay = (has_watch_category || has_ime || no_display) ? + strdup("true") : strdup("false"); + application->taskmanage = (has_watch_category || has_ime) ? strdup("false") : + strdup("true"); SetApplicationXDefaults(application); - if (has_watch_catergory) + if (has_watch_category) application->ambient_support = strdup(app_info->ambient_support() ? "true" : "false"); else -- 2.7.4 From 7d25dfa68256fa89555364e8f62cb86d7e6d811f Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Tue, 20 Sep 2016 14:05:29 +0900 Subject: [PATCH 16/16] Put metadata of app-widget into application_x Put metadata of app-widget at parsing time to Insert it into app metadata db Change-Id: I877fabfc4f324439344632a0a4909b9fe07a7b81 Signed-off-by: Junghyun Yeon --- src/wgt/step/configuration/step_parse.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/wgt/step/configuration/step_parse.cc b/src/wgt/step/configuration/step_parse.cc index 33bb0b2..914bbc3 100644 --- a/src/wgt/step/configuration/step_parse.cc +++ b/src/wgt/step/configuration/step_parse.cc @@ -70,6 +70,21 @@ GList* GenerateMetadataListX(const wgt::parse::MetaDataInfo& meta_info) { return list; } +void AppendWidgetMetadata(GList** metadatas, + const std::vector> metadata) { + GList* list = *metadatas; + for (auto& meta : metadata) { + metadata_x* new_meta = static_cast(calloc(1, sizeof(metadata_x))); + new_meta->key = strdup(meta.first.c_str()); + if (!meta.second.empty()) + new_meta->value = strdup(meta.second.c_str()); + + list = g_list_append(list, new_meta); + } + + *metadatas = list; +} + void SetApplicationXDefaults(application_x* application) { application->effectimage_type = strdup("image"); application->enabled = strdup("true"); @@ -433,6 +448,9 @@ bool StepParse::FillWidgetApplicationInfo(manifest_x* manifest) { application->icon = g_list_append(application->icon, icon); } + if (!app_widget.metadata.empty()) + AppendWidgetMetadata(&application->metadata, app_widget.metadata); + manifest->application = g_list_append(manifest->application, application); } return true; -- 2.7.4