/* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "adapter/preview/external/ability/context.h" #include #include #include #include "adapter/preview/external/ability/fa/fa_context.h" #include "adapter/preview/external/ability/stage/stage_context.h" namespace OHOS::Ace { namespace { constexpr char MODULE_JSON[] = "module.json"; constexpr char CONFIG_JSON[] = "config.json"; #ifdef WINDOWS_PLATFORM constexpr char DELIMITER[] = "\\"; #else constexpr char DELIMITER[] = "/"; #endif } // namespace RefPtr Context::CreateContext(bool isStage, const std::string& rootDir) { std::string filename = rootDir + DELIMITER + (isStage ? MODULE_JSON : CONFIG_JSON); std::string contents; std::ostringstream formatMessage; std::ifstream fin(filename, std::ios::in); if (!fin) { LOGW("Unable to open input file: %{public}s", filename.c_str()); return nullptr; } while (fin >> contents) { formatMessage << contents; } contents = formatMessage.str(); fin.close(); RefPtr context; if (isStage) { context = AceType::MakeRefPtr(); } else { context = AceType::MakeRefPtr(); } context->Parse(contents); return context; } } // namespace OHOS::Ace