123b3eb3cSopenharmony_ci/* 223b3eb3cSopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 323b3eb3cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 423b3eb3cSopenharmony_ci * you may not use this file except in compliance with the License. 523b3eb3cSopenharmony_ci * You may obtain a copy of the License at 623b3eb3cSopenharmony_ci * 723b3eb3cSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 823b3eb3cSopenharmony_ci * 923b3eb3cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1023b3eb3cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1123b3eb3cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1223b3eb3cSopenharmony_ci * See the License for the specific language governing permissions and 1323b3eb3cSopenharmony_ci * limitations under the License. 1423b3eb3cSopenharmony_ci */ 1523b3eb3cSopenharmony_ci 1623b3eb3cSopenharmony_ci#ifndef FOUNDATION_ACE_ADAPTER_PREVIEW_ACE_CONTAINER_H 1723b3eb3cSopenharmony_ci#define FOUNDATION_ACE_ADAPTER_PREVIEW_ACE_CONTAINER_H 1823b3eb3cSopenharmony_ci 1923b3eb3cSopenharmony_ci#include <memory> 2023b3eb3cSopenharmony_ci#include <mutex> 2123b3eb3cSopenharmony_ci#include <string> 2223b3eb3cSopenharmony_ci#include <vector> 2323b3eb3cSopenharmony_ci 2423b3eb3cSopenharmony_ci#include "adapter/preview/entrance/ace_run_args.h" 2523b3eb3cSopenharmony_ci#include "adapter/preview/entrance/ace_view_preview.h" 2623b3eb3cSopenharmony_ci#include "adapter/preview/external/ability/stage/stage_pkg_context_info.h" 2723b3eb3cSopenharmony_ci#include "adapter/preview/osal/fetch_manager.h" 2823b3eb3cSopenharmony_ci#include "base/resource/asset_manager.h" 2923b3eb3cSopenharmony_ci#include "base/thread/task_executor.h" 3023b3eb3cSopenharmony_ci#include "base/utils/noncopyable.h" 3123b3eb3cSopenharmony_ci#include "core/common/ace_view.h" 3223b3eb3cSopenharmony_ci#include "core/common/container.h" 3323b3eb3cSopenharmony_ci#include "core/common/js_message_dispatcher.h" 3423b3eb3cSopenharmony_ci#include "core/common/platform_bridge.h" 3523b3eb3cSopenharmony_ci#include "frameworks/bridge/js_frontend/engine/common/js_engine.h" 3623b3eb3cSopenharmony_ci 3723b3eb3cSopenharmony_ci 3823b3eb3cSopenharmony_ci#include <refbase.h> 3923b3eb3cSopenharmony_ci 4023b3eb3cSopenharmony_cinamespace OHOS::Rosen { 4123b3eb3cSopenharmony_ci class Window; 4223b3eb3cSopenharmony_ci} 4323b3eb3cSopenharmony_ci 4423b3eb3cSopenharmony_cinamespace OHOS::Ace::Platform { 4523b3eb3cSopenharmony_ci 4623b3eb3cSopenharmony_cinamespace { 4723b3eb3cSopenharmony_ci// Different with mobile, we don't support multi-instances in Windows, because we only want 4823b3eb3cSopenharmony_ci// preview UI effect, it doesn't make sense to create multi ability in one process. 4923b3eb3cSopenharmony_ciconstexpr int32_t ACE_INSTANCE_ID = 0; 5023b3eb3cSopenharmony_ci} // namespace 5123b3eb3cSopenharmony_ci 5223b3eb3cSopenharmony_ciusing UIEnvCallback = std::function<void(const OHOS::Ace::RefPtr<PipelineContext>& context)>; 5323b3eb3cSopenharmony_ciusing OnRouterChangeCallback = bool (*)(const std::string currentRouterPath); 5423b3eb3cSopenharmony_ci 5523b3eb3cSopenharmony_ci// AceContainer is the instance have its own pipeline and thread models, it can contains multiple pages. 5623b3eb3cSopenharmony_ciclass AceContainer : public Container, public JsMessageDispatcher { 5723b3eb3cSopenharmony_ci DECLARE_ACE_TYPE(AceContainer, Container, JsMessageDispatcher); 5823b3eb3cSopenharmony_ci 5923b3eb3cSopenharmony_cipublic: 6023b3eb3cSopenharmony_ci static void CreateContainer( 6123b3eb3cSopenharmony_ci int32_t instanceId, FrontendType type, bool useNewPipeline, bool useCurrentEventRunner = false); 6223b3eb3cSopenharmony_ci static void DestroyContainer(int32_t instanceId); 6323b3eb3cSopenharmony_ci 6423b3eb3cSopenharmony_ci static void AddAssetPath(int32_t instanceId, const std::string& packagePath, const std::vector<std::string>& paths); 6523b3eb3cSopenharmony_ci static void SetResourcesPathAndThemeStyle(int32_t instanceId, const std::string& systemResourcesPath, 6623b3eb3cSopenharmony_ci const std::string& hmsResourcesPath, const std::string& appResourcesPath, const int32_t& themeId, 6723b3eb3cSopenharmony_ci const ColorMode& colorMode); 6823b3eb3cSopenharmony_ci 6923b3eb3cSopenharmony_ci#ifndef ENABLE_ROSEN_BACKEND 7023b3eb3cSopenharmony_ci static void SetView(AceViewPreview* view, double density, int32_t width, int32_t height); 7123b3eb3cSopenharmony_ci#else 7223b3eb3cSopenharmony_ci static void SetView(AceViewPreview* view, sptr<Rosen::Window> rsWindow, double density, int32_t width, 7323b3eb3cSopenharmony_ci int32_t height, UIEnvCallback callback); 7423b3eb3cSopenharmony_ci#endif 7523b3eb3cSopenharmony_ci 7623b3eb3cSopenharmony_ci static UIContentErrorCode RunPage(int32_t instanceId, const std::string& url, const std::string& params); 7723b3eb3cSopenharmony_ci static RefPtr<AceContainer> GetContainerInstance(int32_t instanceId); 7823b3eb3cSopenharmony_ci static void AddRouterChangeCallback(int32_t instanceId, const OnRouterChangeCallback& onRouterChangeCallback); 7923b3eb3cSopenharmony_ci static void NativeOnConfigurationUpdated(int32_t instanceId); 8023b3eb3cSopenharmony_ci 8123b3eb3cSopenharmony_ci AceContainer(int32_t instanceId, FrontendType type, bool useNewPipeline, bool useCurrentEventRunner = false); 8223b3eb3cSopenharmony_ci ~AceContainer() override = default; 8323b3eb3cSopenharmony_ci 8423b3eb3cSopenharmony_ci void Initialize() override; 8523b3eb3cSopenharmony_ci 8623b3eb3cSopenharmony_ci void Destroy() override; 8723b3eb3cSopenharmony_ci 8823b3eb3cSopenharmony_ci void DestroyView() override; 8923b3eb3cSopenharmony_ci 9023b3eb3cSopenharmony_ci int32_t GetInstanceId() const override 9123b3eb3cSopenharmony_ci { 9223b3eb3cSopenharmony_ci return instanceId_; 9323b3eb3cSopenharmony_ci } 9423b3eb3cSopenharmony_ci 9523b3eb3cSopenharmony_ci std::string GetHostClassName() const override 9623b3eb3cSopenharmony_ci { 9723b3eb3cSopenharmony_ci return ""; 9823b3eb3cSopenharmony_ci } 9923b3eb3cSopenharmony_ci 10023b3eb3cSopenharmony_ci RefPtr<Frontend> GetFrontend() const override 10123b3eb3cSopenharmony_ci { 10223b3eb3cSopenharmony_ci return frontend_; 10323b3eb3cSopenharmony_ci } 10423b3eb3cSopenharmony_ci 10523b3eb3cSopenharmony_ci RefPtr<PlatformBridge> GetMessageBridge() const 10623b3eb3cSopenharmony_ci { 10723b3eb3cSopenharmony_ci return messageBridge_; 10823b3eb3cSopenharmony_ci } 10923b3eb3cSopenharmony_ci 11023b3eb3cSopenharmony_ci RefPtr<TaskExecutor> GetTaskExecutor() const override 11123b3eb3cSopenharmony_ci { 11223b3eb3cSopenharmony_ci return taskExecutor_; 11323b3eb3cSopenharmony_ci } 11423b3eb3cSopenharmony_ci 11523b3eb3cSopenharmony_ci RefPtr<AssetManager> GetAssetManager() const override 11623b3eb3cSopenharmony_ci { 11723b3eb3cSopenharmony_ci return assetManager_; 11823b3eb3cSopenharmony_ci } 11923b3eb3cSopenharmony_ci 12023b3eb3cSopenharmony_ci RefPtr<PlatformResRegister> GetPlatformResRegister() const override 12123b3eb3cSopenharmony_ci { 12223b3eb3cSopenharmony_ci return resRegister_; 12323b3eb3cSopenharmony_ci } 12423b3eb3cSopenharmony_ci 12523b3eb3cSopenharmony_ci RefPtr<PipelineBase> GetPipelineContext() const override 12623b3eb3cSopenharmony_ci { 12723b3eb3cSopenharmony_ci return pipelineContext_; 12823b3eb3cSopenharmony_ci } 12923b3eb3cSopenharmony_ci 13023b3eb3cSopenharmony_ci int32_t GetViewWidth() const override 13123b3eb3cSopenharmony_ci { 13223b3eb3cSopenharmony_ci return aceView_ ? aceView_->GetWidth() : 0; 13323b3eb3cSopenharmony_ci } 13423b3eb3cSopenharmony_ci 13523b3eb3cSopenharmony_ci int32_t GetViewHeight() const override 13623b3eb3cSopenharmony_ci { 13723b3eb3cSopenharmony_ci return aceView_ ? aceView_->GetHeight() : 0; 13823b3eb3cSopenharmony_ci } 13923b3eb3cSopenharmony_ci 14023b3eb3cSopenharmony_ci int32_t GetViewPosX() const override 14123b3eb3cSopenharmony_ci { 14223b3eb3cSopenharmony_ci return 0; 14323b3eb3cSopenharmony_ci } 14423b3eb3cSopenharmony_ci 14523b3eb3cSopenharmony_ci int32_t GetViewPosY() const override 14623b3eb3cSopenharmony_ci { 14723b3eb3cSopenharmony_ci return 0; 14823b3eb3cSopenharmony_ci } 14923b3eb3cSopenharmony_ci 15023b3eb3cSopenharmony_ci uint32_t GetWindowId() const override 15123b3eb3cSopenharmony_ci { 15223b3eb3cSopenharmony_ci return 0; 15323b3eb3cSopenharmony_ci } 15423b3eb3cSopenharmony_ci 15523b3eb3cSopenharmony_ci void SetWindowId(uint32_t windowId) override {} 15623b3eb3cSopenharmony_ci 15723b3eb3cSopenharmony_ci bool WindowIsShow() const override 15823b3eb3cSopenharmony_ci { 15923b3eb3cSopenharmony_ci return true; 16023b3eb3cSopenharmony_ci } 16123b3eb3cSopenharmony_ci 16223b3eb3cSopenharmony_ci RefPtr<AceView> GetAceView() const override 16323b3eb3cSopenharmony_ci { 16423b3eb3cSopenharmony_ci return aceView_; 16523b3eb3cSopenharmony_ci } 16623b3eb3cSopenharmony_ci 16723b3eb3cSopenharmony_ci void* GetView() const override 16823b3eb3cSopenharmony_ci { 16923b3eb3cSopenharmony_ci return static_cast<void*>(AceType::RawPtr(aceView_)); 17023b3eb3cSopenharmony_ci } 17123b3eb3cSopenharmony_ci 17223b3eb3cSopenharmony_ci void SetWindowModal(WindowModal windowModal) 17323b3eb3cSopenharmony_ci { 17423b3eb3cSopenharmony_ci windowModal_ = windowModal; 17523b3eb3cSopenharmony_ci } 17623b3eb3cSopenharmony_ci 17723b3eb3cSopenharmony_ci void SetColorScheme(ColorScheme colorScheme) 17823b3eb3cSopenharmony_ci { 17923b3eb3cSopenharmony_ci colorScheme_ = colorScheme; 18023b3eb3cSopenharmony_ci } 18123b3eb3cSopenharmony_ci 18223b3eb3cSopenharmony_ci FrontendType GetType() const 18323b3eb3cSopenharmony_ci { 18423b3eb3cSopenharmony_ci return type_; 18523b3eb3cSopenharmony_ci } 18623b3eb3cSopenharmony_ci 18723b3eb3cSopenharmony_ci ResourceConfiguration GetResourceConfiguration() const 18823b3eb3cSopenharmony_ci { 18923b3eb3cSopenharmony_ci return resourceInfo_.GetResourceConfiguration(); 19023b3eb3cSopenharmony_ci } 19123b3eb3cSopenharmony_ci 19223b3eb3cSopenharmony_ci void SetResourceConfiguration(const ResourceConfiguration& config) 19323b3eb3cSopenharmony_ci { 19423b3eb3cSopenharmony_ci resourceInfo_.SetResourceConfiguration(config); 19523b3eb3cSopenharmony_ci } 19623b3eb3cSopenharmony_ci 19723b3eb3cSopenharmony_ci void UpdateResourceConfiguration(const std::string& jsonStr) override; 19823b3eb3cSopenharmony_ci 19923b3eb3cSopenharmony_ci void FetchResponse(const ResponseData responseData, const int32_t callbackId) const; 20023b3eb3cSopenharmony_ci 20123b3eb3cSopenharmony_ci void CallCurlFunction(const RequestData requestData, const int32_t callbackId) const override; 20223b3eb3cSopenharmony_ci 20323b3eb3cSopenharmony_ci void Dispatch( 20423b3eb3cSopenharmony_ci const std::string& group, std::vector<uint8_t>&& data, int32_t id, bool replyToComponent) const override; 20523b3eb3cSopenharmony_ci 20623b3eb3cSopenharmony_ci void DispatchSync( 20723b3eb3cSopenharmony_ci const std::string& group, std::vector<uint8_t>&& data, uint8_t** resData, int64_t& position) const override 20823b3eb3cSopenharmony_ci {} 20923b3eb3cSopenharmony_ci 21023b3eb3cSopenharmony_ci void DispatchPluginError(int32_t callbackId, int32_t errorCode, std::string&& errorMessage) const override; 21123b3eb3cSopenharmony_ci 21223b3eb3cSopenharmony_ci void UpdateDeviceConfig(const DeviceConfig& deviceConfig); 21323b3eb3cSopenharmony_ci 21423b3eb3cSopenharmony_ci void LoadDocument(const std::string& url, const std::string& componentName); 21523b3eb3cSopenharmony_ci 21623b3eb3cSopenharmony_ci void RunNativeEngineLoop(); 21723b3eb3cSopenharmony_ci 21823b3eb3cSopenharmony_ci void SetStageCardConfig(const std::string& pageProfile, const std::string& selectUrl); 21923b3eb3cSopenharmony_ci 22023b3eb3cSopenharmony_ci void SetPkgContextInfo(const RefPtr<StagePkgContextInfo>& PkgContextInfo); 22123b3eb3cSopenharmony_ci 22223b3eb3cSopenharmony_ci void SetPageProfile(const std::string& pageProfile) 22323b3eb3cSopenharmony_ci { 22423b3eb3cSopenharmony_ci pageProfile_ = pageProfile; 22523b3eb3cSopenharmony_ci } 22623b3eb3cSopenharmony_ci 22723b3eb3cSopenharmony_ci void InitializeAppConfig(const std::string& assetPath, const std::string& bundleName, 22823b3eb3cSopenharmony_ci const std::string& moduleName, const std::string& compileMode); 22923b3eb3cSopenharmony_ci 23023b3eb3cSopenharmony_ci void SetCardFrontend(WeakPtr<Frontend> frontend, int64_t cardId) override 23123b3eb3cSopenharmony_ci { 23223b3eb3cSopenharmony_ci std::lock_guard<std::mutex> lock(cardFrontMutex_); 23323b3eb3cSopenharmony_ci cardFrontendMap_.try_emplace(cardId, frontend); 23423b3eb3cSopenharmony_ci } 23523b3eb3cSopenharmony_ci 23623b3eb3cSopenharmony_ci WeakPtr<Frontend> GetCardFrontend(int64_t cardId) const override 23723b3eb3cSopenharmony_ci { 23823b3eb3cSopenharmony_ci std::lock_guard<std::mutex> lock(cardFrontMutex_); 23923b3eb3cSopenharmony_ci auto it = cardFrontendMap_.find(cardId); 24023b3eb3cSopenharmony_ci if (it != cardFrontendMap_.end()) { 24123b3eb3cSopenharmony_ci return it->second; 24223b3eb3cSopenharmony_ci } 24323b3eb3cSopenharmony_ci return nullptr; 24423b3eb3cSopenharmony_ci } 24523b3eb3cSopenharmony_ci 24623b3eb3cSopenharmony_ci void GetCardFrontendMap(std::unordered_map<int64_t, WeakPtr<Frontend>>& cardFrontendMap) const override 24723b3eb3cSopenharmony_ci { 24823b3eb3cSopenharmony_ci cardFrontendMap = cardFrontendMap_; 24923b3eb3cSopenharmony_ci } 25023b3eb3cSopenharmony_ci 25123b3eb3cSopenharmony_ci void SetCardPipeline(WeakPtr<PipelineBase> pipeline, int64_t cardId) override 25223b3eb3cSopenharmony_ci { 25323b3eb3cSopenharmony_ci std::lock_guard<std::mutex> lock(cardPipelineMutex_); 25423b3eb3cSopenharmony_ci cardPipelineMap_.try_emplace(cardId, pipeline); 25523b3eb3cSopenharmony_ci } 25623b3eb3cSopenharmony_ci 25723b3eb3cSopenharmony_ci WeakPtr<PipelineBase> GetCardPipeline(int64_t cardId) const override 25823b3eb3cSopenharmony_ci { 25923b3eb3cSopenharmony_ci std::lock_guard<std::mutex> lock(cardPipelineMutex_); 26023b3eb3cSopenharmony_ci auto it = cardPipelineMap_.find(cardId); 26123b3eb3cSopenharmony_ci if (it == cardPipelineMap_.end()) { 26223b3eb3cSopenharmony_ci return nullptr; 26323b3eb3cSopenharmony_ci } 26423b3eb3cSopenharmony_ci return it->second; 26523b3eb3cSopenharmony_ci } 26623b3eb3cSopenharmony_ci 26723b3eb3cSopenharmony_ci static std::string GetContentInfo(int32_t instanceId, ContentInfoType type); 26823b3eb3cSopenharmony_ci void SetSharedRuntime(void* runtime) override 26923b3eb3cSopenharmony_ci { 27023b3eb3cSopenharmony_ci sharedRuntime_ = runtime; 27123b3eb3cSopenharmony_ci } 27223b3eb3cSopenharmony_ci void SetInstallationFree(bool installationFree) 27323b3eb3cSopenharmony_ci { 27423b3eb3cSopenharmony_ci installationFree_ = installationFree; 27523b3eb3cSopenharmony_ci } 27623b3eb3cSopenharmony_ci 27723b3eb3cSopenharmony_ci void SetLabelId(int32_t labelId) 27823b3eb3cSopenharmony_ci { 27923b3eb3cSopenharmony_ci labelId_ = labelId; 28023b3eb3cSopenharmony_ci } 28123b3eb3cSopenharmony_ci static void SetComponentModeFlag(bool isComponentMode) 28223b3eb3cSopenharmony_ci { 28323b3eb3cSopenharmony_ci isComponentMode_ = isComponentMode; 28423b3eb3cSopenharmony_ci } 28523b3eb3cSopenharmony_ci 28623b3eb3cSopenharmony_ci void SetContainerSdkPath(const std::string& containerSdkPath) 28723b3eb3cSopenharmony_ci { 28823b3eb3cSopenharmony_ci containerSdkPath_ = containerSdkPath; 28923b3eb3cSopenharmony_ci } 29023b3eb3cSopenharmony_ci 29123b3eb3cSopenharmony_ci void NotifyConfigurationChange(bool, const ConfigurationChange& configurationChange) override; 29223b3eb3cSopenharmony_ci 29323b3eb3cSopenharmony_ci // Support to execute the ets code mocked by developer 29423b3eb3cSopenharmony_ci void SetMockModuleList(const std::map<std::string, std::string>& mockJsonInfo) 29523b3eb3cSopenharmony_ci { 29623b3eb3cSopenharmony_ci mockJsonInfo_ = mockJsonInfo; 29723b3eb3cSopenharmony_ci } 29823b3eb3cSopenharmony_ci 29923b3eb3cSopenharmony_ci void SetBundleName(const std::string& bundleName) 30023b3eb3cSopenharmony_ci { 30123b3eb3cSopenharmony_ci bundleName_ = bundleName; 30223b3eb3cSopenharmony_ci } 30323b3eb3cSopenharmony_ci 30423b3eb3cSopenharmony_ci void SetModuleName(const std::string& moduleName) 30523b3eb3cSopenharmony_ci { 30623b3eb3cSopenharmony_ci moduleName_ = moduleName; 30723b3eb3cSopenharmony_ci } 30823b3eb3cSopenharmony_ci 30923b3eb3cSopenharmony_ciprivate: 31023b3eb3cSopenharmony_ci void InitializeFrontend(); 31123b3eb3cSopenharmony_ci void InitializeCallback(); 31223b3eb3cSopenharmony_ci void SetHspBufferTrackerCallback(); 31323b3eb3cSopenharmony_ci // Support to execute the ets code mocked by developer 31423b3eb3cSopenharmony_ci void SetMockModuleListToJsEngine(); 31523b3eb3cSopenharmony_ci 31623b3eb3cSopenharmony_ci#ifndef ENABLE_ROSEN_BACKEND 31723b3eb3cSopenharmony_ci void AttachView( 31823b3eb3cSopenharmony_ci std::shared_ptr<Window> window, AceViewPreview* view, double density, int32_t width, int32_t height); 31923b3eb3cSopenharmony_ci#else 32023b3eb3cSopenharmony_ci void AttachView(std::shared_ptr<Window> window, AceViewPreview* view, double density, int32_t width, int32_t height, 32123b3eb3cSopenharmony_ci UIEnvCallback callback); 32223b3eb3cSopenharmony_ci#endif 32323b3eb3cSopenharmony_ci 32423b3eb3cSopenharmony_ci RefPtr<AceViewPreview> aceView_ = nullptr; 32523b3eb3cSopenharmony_ci int32_t instanceId_; 32623b3eb3cSopenharmony_ci RefPtr<TaskExecutor> taskExecutor_; 32723b3eb3cSopenharmony_ci RefPtr<AssetManager> assetManager_; 32823b3eb3cSopenharmony_ci RefPtr<PlatformResRegister> resRegister_; 32923b3eb3cSopenharmony_ci RefPtr<PipelineBase> pipelineContext_; 33023b3eb3cSopenharmony_ci RefPtr<Frontend> frontend_; 33123b3eb3cSopenharmony_ci RefPtr<PlatformBridge> messageBridge_; 33223b3eb3cSopenharmony_ci FrontendType type_ { FrontendType::JSON }; 33323b3eb3cSopenharmony_ci WindowModal windowModal_ { WindowModal::NORMAL }; 33423b3eb3cSopenharmony_ci ColorScheme colorScheme_ { ColorScheme::SCHEME_LIGHT }; 33523b3eb3cSopenharmony_ci ResourceInfo resourceInfo_; 33623b3eb3cSopenharmony_ci static std::once_flag onceFlag_; 33723b3eb3cSopenharmony_ci std::string pageProfile_; 33823b3eb3cSopenharmony_ci std::unordered_map<int64_t, WeakPtr<Frontend>> cardFrontendMap_; 33923b3eb3cSopenharmony_ci std::unordered_map<int64_t, WeakPtr<PipelineBase>> cardPipelineMap_; 34023b3eb3cSopenharmony_ci mutable std::mutex cardFrontMutex_; 34123b3eb3cSopenharmony_ci mutable std::mutex cardPipelineMutex_; 34223b3eb3cSopenharmony_ci void* sharedRuntime_ = nullptr; 34323b3eb3cSopenharmony_ci std::string bundleName_; 34423b3eb3cSopenharmony_ci std::string moduleName_; 34523b3eb3cSopenharmony_ci RefPtr<StagePkgContextInfo> PkgContextInfo_; 34623b3eb3cSopenharmony_ci 34723b3eb3cSopenharmony_ci // Support to execute the ets code mocked by developer 34823b3eb3cSopenharmony_ci std::map<std::string, std::string> mockJsonInfo_; 34923b3eb3cSopenharmony_ci 35023b3eb3cSopenharmony_ci // app bar to use 35123b3eb3cSopenharmony_ci bool installationFree_ = false; 35223b3eb3cSopenharmony_ci int32_t labelId_; 35323b3eb3cSopenharmony_ci static bool isComponentMode_; 35423b3eb3cSopenharmony_ci std::string containerSdkPath_; 35523b3eb3cSopenharmony_ci 35623b3eb3cSopenharmony_ci ACE_DISALLOW_COPY_AND_MOVE(AceContainer); 35723b3eb3cSopenharmony_ci}; 35823b3eb3cSopenharmony_ci 35923b3eb3cSopenharmony_ci} // namespace OHOS::Ace::Platform 36023b3eb3cSopenharmony_ci 36123b3eb3cSopenharmony_ci#endif // FOUNDATION_ACE_ADAPTER_PREVIEW_ACE_CONTAINER_H 362