• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <cstdint>
17 #include <gtest/gtest.h>
18 #include <string>
19 #include <vector>
20 
21 #include "arkweb_utils.h"
22 #include "parameters.h"
23 #include "system_properties_adapter_impl.h"
24 
25 using namespace testing::ext;
26 
27 namespace OHOS::ArkWeb {
28 #if defined(webview_arm64)
29 const std::string ARK_WEB_CORE_HAP_LIB_PATH =
30     "/data/storage/el1/bundle/arkwebcore/libs/arm64";
31 const std::string ARK_WEB_CORE_LEGACY_HAP_LIB_PATH =
32     "/data/storage/el1/bundle/arkwebcorelegacy/libs/arm64";
33 const std::string ARK_WEB_CORE_PATH_FOR_MOCK = "libs/arm64";
34 const std::string ARK_WEB_CORE_PATH_FOR_BUNDLE = "arkwebcore/libs/arm64";
35 const std::string ARK_WEB_CORE_LEGACY_PATH_FOR_BUNDLE = "arkwebcorelegacy/libs/arm64";
36 #elif defined(webview_x86_64)
37 const std::string ARK_WEB_CORE_HAP_LIB_PATH =
38     "/data/storage/el1/bundle/arkwebcore/libs/x86_64";
39 const std::string ARK_WEB_CORE_LEGACY_HAP_LIB_PATH =
40     "/data/storage/el1/bundle/arkwebcorelegacy/libs/x86_64";
41 const std::string ARK_WEB_CORE_PATH_FOR_MOCK = "libs/x86_64";
42 const std::string ARK_WEB_CORE_PATH_FOR_BUNDLE = "arkwebcore/libs/x86_64";
43 const std::string ARK_WEB_CORE_LEGACY_PATH_FOR_BUNDLE = "arkwebcorelegacy/libs/x86_64";
44 #else
45 const std::string ARK_WEB_CORE_HAP_LIB_PATH =
46     "/data/storage/el1/bundle/arkwebcore/libs/arm";
47 const std::string ARK_WEB_CORE_LEGACY_HAP_LIB_PATH =
48     "/data/storage/el1/bundle/arkwebcorelegacy/libs/arm";
49 const std::string ARK_WEB_CORE_PATH_FOR_MOCK = "libs/arm";
50 const std::string ARK_WEB_CORE_PATH_FOR_BUNDLE = "arkwebcore/libs/arm";
51 const std::string ARK_WEB_CORE_LEGACY_PATH_FOR_BUNDLE = "arkwebcorelegacy/libs/arm";
52 #endif
53 
54 #if defined(IS_ASAN)
55 #if defined(webview_arm64)
56 const std::string ARK_WEB_CORE_ASAN_PATH_FOR_BUNDLE = "arkwebcore_asan/libs/arm64";
57 const std::string WEBVIEW_RELATIVE_SANDBOX_PATH_FOR_LIBRARY =
58                     "data/storage/el1/bundle/arkwebcore_asan/libs/arm64/libarkweb_engine.so";
59 #elif defined(webview_x86_64)
60 const std::string ARK_WEB_CORE_ASAN_PATH_FOR_BUNDLE = "arkwebcore_asan/libs/x86_64";
61 #else
62 const std::string ARK_WEB_CORE_ASAN_PATH_FOR_BUNDLE = "arkwebcore_asan/libs/arm";
63 #endif
64 #endif
65 
66 const std::string PRECONFIG_LEGACY_HAP_PATH = "/system/app/ArkWebCoreLegacy/ArkWebCoreLegacy.hap";
67 const std::string  PRECONFIG_EVERGREEN_HAP_PATH =
68     "/system/app/ArkWebCore/ArkWebCore.hap";
69 const std::string SANDBOX_LEGACY_HAP_PATH = "/data/storage/el1/bundle/arkwebcorelegacy/entry.hap";
70 const std::string SANDBOX_EVERGREEN_HAP_PATH = "/data/storage/el1/bundle/arkwebcore/entry.hap";
71 
72 const std::string JSON_CONFIG_PATH =
73     "/data/service/el1/public/update/param_service/install/system/etc/ArkWebSafeBrowsing/generic/ArkWebCoreCfg.json";
74 
TEST(arkweb_utils_test,setActiveWebEngineVersion001)75 TEST(arkweb_utils_test, setActiveWebEngineVersion001) {
76     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
77 
78     EXPECT_EQ(getAppWebEngineVersion(), ArkWebEngineVersion::SYSTEM_DEFAULT);
79 }
80 
TEST(arkweb_utils_test,setActiveWebEngineVersion002)81 TEST(arkweb_utils_test, setActiveWebEngineVersion002) {
82     setActiveWebEngineVersion(ArkWebEngineVersion::M114);
83 
84     EXPECT_EQ(getAppWebEngineVersion(), ArkWebEngineVersion::M114);
85 }
86 
TEST(arkweb_utils_test,setActiveWebEngineVersion003)87 TEST(arkweb_utils_test, setActiveWebEngineVersion003) {
88     setActiveWebEngineVersion(ArkWebEngineVersion::M132);
89 
90     EXPECT_EQ(getAppWebEngineVersion(), ArkWebEngineVersion::M132);
91 }
92 
TEST(arkweb_utils_test,setActiveWebEngineVersion004)93 TEST(arkweb_utils_test, setActiveWebEngineVersion004) {
94     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
95     setActiveWebEngineVersion(static_cast<ArkWebEngineVersion>(3));
96 
97     EXPECT_EQ(getAppWebEngineVersion(), ArkWebEngineVersion::SYSTEM_DEFAULT);
98 }
99 
TEST(arkweb_utils_test,getActiveWebEngineVersion001)100 TEST(arkweb_utils_test, getActiveWebEngineVersion001) {
101     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
102     OHOS::system::SetParameter("web.engine.enforce", std::to_string(1));
103 
104     auto res = getActiveWebEngineVersion();
105     EXPECT_EQ(res, ArkWebEngineVersion::M132);
106     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
107 }
108 
TEST(arkweb_utils_test,getActiveWebEngineVersion002)109 TEST(arkweb_utils_test, getActiveWebEngineVersion002) {
110     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
111     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
112     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
113 
114     auto res = getActiveWebEngineVersion();
115     EXPECT_EQ(res, ArkWebEngineVersion::M132);
116     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
117 }
118 
TEST(arkweb_utils_test,getActiveWebEngineVersion003)119 TEST(arkweb_utils_test, getActiveWebEngineVersion003) {
120     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
121     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
122     setActiveWebEngineVersion(ArkWebEngineVersion::M114);
123 
124     auto res = getActiveWebEngineVersion();
125     EXPECT_EQ(res, ArkWebEngineVersion::M114);
126     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
127 }
128 
TEST(arkweb_utils_test,getActiveWebEngineType001)129 TEST(arkweb_utils_test, getActiveWebEngineType001) {
130     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
131     OHOS::system::SetParameter("web.engine.enforce", std::to_string(2));
132 
133     auto res = getActiveWebEngineType();
134     EXPECT_EQ(res, ArkWebEngineType::EVERGREEN);
135     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
136 }
137 
TEST(arkweb_utils_test,getActiveWebEngineType002)138 TEST(arkweb_utils_test, getActiveWebEngineType002) {
139     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
140     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
141     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
142 
143     auto res = getActiveWebEngineType();
144     EXPECT_EQ(res, ArkWebEngineType::EVERGREEN);
145     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
146 }
147 
TEST(arkweb_utils_test,getActiveWebEngineType003)148 TEST(arkweb_utils_test, getActiveWebEngineType003) {
149     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
150     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
151     setActiveWebEngineVersion(ArkWebEngineVersion::M114);
152 
153     auto res = getActiveWebEngineType();
154     EXPECT_EQ(res, ArkWebEngineType::LEGACY);
155     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
156 }
157 
TEST(arkweb_utils_test,GetArkwebLibPath001)158 TEST(arkweb_utils_test, GetArkwebLibPath001) {
159     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
160     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
161     setActiveWebEngineVersion(ArkWebEngineVersion::M114);
162 
163     auto res = GetArkwebLibPath();
164     EXPECT_EQ(res, ARK_WEB_CORE_LEGACY_HAP_LIB_PATH);
165     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
166 }
167 
TEST(arkweb_utils_test,GetArkwebLibPath002)168 TEST(arkweb_utils_test, GetArkwebLibPath002) {
169     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
170     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
171     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
172 
173     auto res = GetArkwebLibPath();
174     EXPECT_EQ(res, ARK_WEB_CORE_HAP_LIB_PATH);
175     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
176 }
177 
TEST(arkweb_utils_test,GetArkwebNameSpace001)178 TEST(arkweb_utils_test, GetArkwebNameSpace001) {
179     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
180     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
181     setActiveWebEngineVersion(ArkWebEngineVersion::M114);
182 
183     auto res = GetArkwebNameSpace();
184     EXPECT_EQ(res, "nweb_ns_legacy");
185     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
186 }
187 
TEST(arkweb_utils_test,GetArkwebNameSpace002)188 TEST(arkweb_utils_test, GetArkwebNameSpace002) {
189     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
190     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
191     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
192 
193     auto res = GetArkwebNameSpace();
194     EXPECT_EQ(res, "nweb_ns");
195     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
196 }
197 
TEST(arkweb_utils_test,GetArkwebRelativePathForBundle001)198 TEST(arkweb_utils_test, GetArkwebRelativePathForBundle001) {
199     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
200     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
201     setActiveWebEngineVersion(ArkWebEngineVersion::M114);
202 
203     auto res = GetArkwebRelativePathForBundle();
204 #if defined(IS_ASAN)
205     EXPECT_EQ(res, ARK_WEB_CORE_ASAN_PATH_FOR_BUNDLE);
206 #else
207     EXPECT_EQ(res, ARK_WEB_CORE_LEGACY_PATH_FOR_BUNDLE);
208 #endif
209     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
210 }
211 
TEST(arkweb_utils_test,GetArkwebRelativePathForBundle002)212 TEST(arkweb_utils_test, GetArkwebRelativePathForBundle002) {
213     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
214     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
215     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
216 
217     auto res = GetArkwebRelativePathForBundle();
218 #if defined(IS_ASAN)
219     EXPECT_EQ(res, ARK_WEB_CORE_ASAN_PATH_FOR_BUNDLE);
220 #else
221     EXPECT_EQ(res, ARK_WEB_CORE_PATH_FOR_BUNDLE);
222 #endif
223     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
224 }
225 
TEST(arkweb_utils_test,GetArkwebInstallPath001)226 TEST(arkweb_utils_test, GetArkwebInstallPath001) {
227     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
228     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
229     setActiveWebEngineVersion(ArkWebEngineVersion::M114);
230 
231     auto aclPath = GetArkwebInstallPath();
232     bool res = (aclPath == SANDBOX_LEGACY_HAP_PATH || aclPath == PRECONFIG_LEGACY_HAP_PATH);
233     // rk is default
234     std::string deviceType = OHOS::system::GetDeviceType();
235     if (deviceType == "default") {
236         EXPECT_FALSE(res);
237     } else {
238         EXPECT_TRUE(res);
239     }
240 
241     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
242 }
243 
TEST(arkweb_utils_test,GetArkwebInstallPath002)244 TEST(arkweb_utils_test, GetArkwebInstallPath002) {
245     int webEngineEnforce = OHOS::system::GetIntParameter("web.engine.enforce", 0);
246     OHOS::system::SetParameter("web.engine.enforce", std::to_string(0));
247     setActiveWebEngineVersion(ArkWebEngineVersion::SYSTEM_DEFAULT);
248 
249     auto aclPath = GetArkwebInstallPath();
250     bool res = (aclPath == SANDBOX_EVERGREEN_HAP_PATH || aclPath == PRECONFIG_EVERGREEN_HAP_PATH);
251     // rk is default
252     std::string deviceType = OHOS::system::GetDeviceType();
253     if (deviceType == "default") {
254         EXPECT_FALSE(res);
255     } else {
256         EXPECT_TRUE(res);
257     }
258 
259     OHOS::system::SetParameter("web.engine.enforce", std::to_string(webEngineEnforce));
260 }
261 } // namespace OHOS::NWeb