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