1 /*
2  * Copyright (c) 2022 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 "want_wrap_ohos.h"
17 
18 #include "napi_common_want.h"
19 
20 #include "base/utils/utils.h"
21 
22 namespace OHOS::Ace {
CreateWantWrap(napi_env env, napi_value value)23 RefPtr<WantParamsWrap> WantParamsWrap::CreateWantWrap(napi_env env, napi_value value)
24 {
25     return AceType::MakeRefPtr<WantParamsWrapOhos>(env, value);
26 }
WantParamsWrapOhos(napi_env env, napi_value value)27 WantParamsWrapOhos::WantParamsWrapOhos(napi_env env, napi_value value)
28 {
29     AppExecFwk::UnwrapWantParams(env, value, params_);
30 }
31 
ConvertToNativeValue(const OHOS::AAFwk::Want& want, napi_env env)32 napi_value WantWrap::ConvertToNativeValue(const OHOS::AAFwk::Want& want, napi_env env)
33 {
34     return OHOS::AppExecFwk::WrapWant(env, want);
35 }
36 
ConvertParamsToNativeValue(const OHOS::AAFwk::WantParams& wantParams, napi_env env)37 napi_value WantWrap::ConvertParamsToNativeValue(const OHOS::AAFwk::WantParams& wantParams, napi_env env)
38 {
39     return OHOS::AppExecFwk::WrapWantParams(env, wantParams);
40 }
41 
CreateWantWrap(napi_env env, napi_value value)42 RefPtr<WantWrap> WantWrap::CreateWantWrap(napi_env env, napi_value value)
43 {
44     if (env == nullptr || value == nullptr) {
45         LOGW("engine or value is nullptr when CreateWantWrap.");
46         return nullptr;
47     }
48 
49     return AceType::MakeRefPtr<WantWrapOhos>(env, value);
50 }
51 
CreateWantWrap(const std::string& bundleName, const std::string& abilityName)52 RefPtr<WantWrap> WantWrap::CreateWantWrap(const std::string& bundleName, const std::string& abilityName)
53 {
54     return AceType::MakeRefPtr<WantWrapOhos>(bundleName, abilityName);
55 }
56 
WantWrapOhos(const AAFwk::Want& want)57 WantWrapOhos::WantWrapOhos(const AAFwk::Want& want) : want_(want) {}
58 
WantWrapOhos(napi_env env, napi_value value)59 WantWrapOhos::WantWrapOhos(napi_env env, napi_value value)
60 {
61     OHOS::AppExecFwk::UnwrapWant(env, value, want_);
62 }
63 
WantWrapOhos(const std::string& bundleName, const std::string& abilityName)64 WantWrapOhos::WantWrapOhos(const std::string& bundleName, const std::string& abilityName)
65 {
66     want_.SetElementName(bundleName, abilityName);
67 }
68 
SetWantParamsFromWantWrap(void* want)69 void WantWrapOhos::SetWantParamsFromWantWrap(void* want)
70 {
71     auto destWant = reinterpret_cast<AAFwk::Want*>(want);
72     CHECK_NULL_VOID(destWant);
73     auto params = want_.GetParams();
74     destWant->SetParams(params);
75 }
76 
SetWantParam(const std::map<std::string, std::string>& params)77 void WantWrapOhos::SetWantParam(const std::map<std::string, std::string>& params)
78 {
79     for (const auto& param : params) {
80         want_.SetParam(param.first, param.second);
81     }
82 }
83 
ToString() const84 std::string WantWrapOhos::ToString() const
85 {
86     return want_.ToString();
87 }
88 } // namespace OHOS::Ace
89