From a7f086eae7d00cddda21d553c7d19b4e98b6e447 Mon Sep 17 00:00:00 2001 From: Zheng Yongjun Date: Thu, 17 Feb 2022 15:00:14 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8Dwebview=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Zheng Yongjun Change-Id: Id362317edade62a3f7215dcd31d419b30d11c37c --- src/appspawn_server.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) mode change 100644 => 100755 src/appspawn_server.cpp diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp old mode 100644 new mode 100755 index 227e09d8..e0a0a150 --- a/src/appspawn_server.cpp +++ b/src/appspawn_server.cpp @@ -48,6 +48,7 @@ #define GRAPHIC_PERMISSION_CHECK constexpr static mode_t FILE_MODE = 0711; +constexpr static mode_t WEBVIEW_FILE_MODE = 0511; namespace OHOS { namespace AppSpawn { @@ -448,10 +449,30 @@ int32_t AppSpawnServer::DoAppSandboxMount(const ClientSocket::AppProperty *appPr std::string destDistributedGroupPath = rootPath + "/data/storage/el2/auth_groups"; DoAppSandboxMountOnce(oriDistributedGroupPath.c_str(), destDistributedGroupPath.c_str()); - std::string oriappdataPath = "/data/accounts/account_0/appdata/"; + const std::string oriappdataPath = "/data/accounts/account_0/appdata/"; std::string destappdataPath = rootPath + oriappdataPath; DoAppSandboxMountOnce(oriappdataPath.c_str(), destappdataPath.c_str()); + // to create some useful dir when mount point created + std::vector mkdirInfo; + std::string dirPath; + mkdirInfo.push_back("/data/storage/el1/bundle/webview"); + mkdirInfo.push_back("/data/storage/el2/base/el3"); + mkdirInfo.push_back("/data/storage/el2/base/el3/base"); + mkdirInfo.push_back("/data/storage/el2/base/el4"); + mkdirInfo.push_back("/data/storage/el2/base/el4/base"); + + for (int i = 0; i < mkdirInfo.size(); i++) { + dirPath = rootPath + mkdirInfo[i]; + mkdir(dirPath.c_str(), FILE_MODE); + } + + // do webview adaption + std::string oriwebviewPath = "/data/app/el1/bundle/public/com.ohos.webviewhap"; + std::string destwebviewPath = destInstallPath + "/webview"; + chmod(destwebviewPath.c_str(), WEBVIEW_FILE_MODE); + DoAppSandboxMountOnce(oriwebviewPath.c_str(), destwebviewPath.c_str()); + return 0; } @@ -494,10 +515,6 @@ void AppSpawnServer::DoAppSandboxMkdir(std::string sandboxPackagePath, const Cli mkdirInfo.push_back("/data/storage/el1/database"); mkdirInfo.push_back("/data/storage/el2"); mkdirInfo.push_back("/data/storage/el2/base"); - mkdirInfo.push_back("/data/storage/el2/base/el3"); - mkdirInfo.push_back("/data/storage/el2/base/el3/base"); - mkdirInfo.push_back("/data/storage/el2/base/el4"); - mkdirInfo.push_back("/data/storage/el2/base/el4/base"); mkdirInfo.push_back("/data/storage/el2/database"); mkdirInfo.push_back("/data/storage/el2/distributedfiles"); mkdirInfo.push_back("/data/storage/el2/auth_groups"); -- Gitee