• 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 #ifndef WEB_WEBVIEW_ARKWEB_UTILS_ARKWEB_UTILS_H
17 #define WEB_WEBVIEW_ARKWEB_UTILS_ARKWEB_UTILS_H
18 
19 #pragma once
20 
21 #include <climits>
22 #include <string>
23 
24 #ifndef ARKWEB_EXPORT
25 #define ARKWEB_EXPORT __attribute__((visibility("default")))
26 #endif
27 
28 #if !defined(CROSS_PLATFORM)
29 #define RETURN_IF_UNSUPPORTED_ENGINE(minVersion, funName)                   \
30 do {                                                                        \
31     auto engineVersion = OHOS::ArkWeb::getActiveWebEngineVersion();         \
32     if (engineVersion < (minVersion)) {    \
33         OHOS::ArkWeb::LogForUnsupportedFunc(engineVersion, funName);        \
34         return;                                                             \
35     }                                                                       \
36 } while (0)
37 #else
38 #define RETURN_IF_UNSUPPORTED_ENGINE(minVersion, funName)
39 #endif
40 
41 #if !defined(CROSS_PLATFORM)
42 #define IS_CALLING_FROM_M114() \
43     (OHOS::ArkWeb::getActiveWebEngineVersion() == OHOS::ArkWeb::ArkWebEngineVersion::M114)
44 #else
45 #define IS_CALLING_FROM_M114() false
46 #endif
47 
48 #if !defined(CROSS_PLATFORM)
49 #define RETURN_IF_CALLING_FROM_M114() \
50 do { \
51     if (IS_CALLING_FROM_M114()) { \
52         OHOS::ArkWeb::LogForUnsupportedFunc(OHOS::ArkWeb::ArkWebEngineVersion::M114, __func__); \
53         return; \
54     } \
55 } while (0)
56 #else
57 #define RETURN_IF_CALLING_FROM_M114()
58 #endif
59 
60 #define APP_ENGINE_VERSION_PREFIX "#--appEngineVersion="
61 
62 namespace OHOS::ArkWeb {
63 
64 enum class ArkWebEngineVersion {
65     SYSTEM_DEFAULT = 0,
66     M114 = 1,
67     M132 = 2,
68     SYSTEM_EVERGREEN = 99999
69 };
70 
71 enum class ArkWebEngineType {
72     LEGACY = static_cast<int>(ArkWebEngineVersion::M114),
73     EVERGREEN = static_cast<int>(ArkWebEngineVersion::M132),
74 };
75 
76 ARKWEB_EXPORT void setActiveWebEngineVersion(ArkWebEngineVersion version);
77 ARKWEB_EXPORT ArkWebEngineVersion getActiveWebEngineVersion();
78 ARKWEB_EXPORT ArkWebEngineType getActiveWebEngineType();
79 ARKWEB_EXPORT ArkWebEngineVersion getAppWebEngineVersion();
80 ARKWEB_EXPORT bool IsActiveWebEngineEvergreen();
81 
82 ARKWEB_EXPORT std::string GetArkwebLibPath();
83 ARKWEB_EXPORT std::string GetArkwebNameSpace();
84 ARKWEB_EXPORT std::string GetArkwebRelativePathForBundle();
85 ARKWEB_EXPORT std::string GetArkwebRelativePathForMock();
86 ARKWEB_EXPORT std::string GetArkwebInstallPath();
87 ARKWEB_EXPORT void PreloadArkWebLibForBrowser();
88 
89 ARKWEB_EXPORT void LogForUnsupportedFunc(ArkWebEngineVersion version, const char* msg);
90 
91 ARKWEB_EXPORT void* ArkWebBridgeHelperSharedInit(bool isPreDlopen, bool runMode = true);
92 } // namespace OHOS::ArkWeb
93 
94 #endif // WEB_WEBVIEW_ARKWEB_UTILS_ARKWEB_UTILS_H