• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "inputmethod_extension_context.h"
17 
18 #include "ability_connection.h"
19 #include "ability_manager_client.h"
20 #include "global.h"
21 
22 namespace OHOS {
23 namespace AbilityRuntime {
24 const size_t InputMethodExtensionContext::CONTEXT_TYPE_ID(
25     std::hash<const char *> {}("InputMethodExtensionContext"));
26 int InputMethodExtensionContext::ILLEGAL_REQUEST_CODE(-1);
27 
StartAbility(const AAFwk::Want & want) const28 ErrCode InputMethodExtensionContext::StartAbility(const AAFwk::Want &want) const
29 {
30     IMSA_HILOGD("%{public}s begin.", __func__);
31     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, token_, ILLEGAL_REQUEST_CODE);
32     IMSA_HILOGD("%{public}s ret=%{public}d", __func__, err);
33     if (err != ERR_OK) {
34         IMSA_HILOGE("InputMethodExtensionContext::StartAbility failed: %{public}d", err);
35     }
36     return err;
37 }
38 
StartAbility(const AAFwk::Want & want,const AAFwk::StartOptions & startOptions) const39 ErrCode InputMethodExtensionContext::StartAbility(
40     const AAFwk::Want &want, const AAFwk::StartOptions &startOptions) const
41 {
42     IMSA_HILOGD("%{public}s begin.", __func__);
43     ErrCode err =
44         AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, startOptions, token_, ILLEGAL_REQUEST_CODE);
45     IMSA_HILOGD("%{public}s ret=%{public}d", __func__, err);
46     if (err != ERR_OK) {
47         IMSA_HILOGE("InputMethodExtensionContext::StartAbility failed: %{public}d", err);
48     }
49     return err;
50 }
51 
ConnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const52 bool InputMethodExtensionContext::ConnectAbility(
53     const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
54 {
55     IMSA_HILOGI("%{public}s begin.", __func__);
56     ErrCode ret = ConnectionManager::GetInstance().ConnectAbility(token_, want, connectCallback);
57     IMSA_HILOGI("InputMethodExtensionContext::ConnectAbility ret = %{public}d", ret);
58     return ret == ERR_OK;
59 }
60 
StartAbilityWithAccount(const AAFwk::Want & want,int accountId) const61 ErrCode InputMethodExtensionContext::StartAbilityWithAccount(const AAFwk::Want &want, int accountId) const
62 {
63     IMSA_HILOGI("%{public}s begin, accountId: %{public}d", __func__, accountId);
64     ErrCode err =
65         AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, token_, ILLEGAL_REQUEST_CODE, accountId);
66     IMSA_HILOGD("%{public}s ret=%{public}d", __func__, err);
67     if (err != ERR_OK) {
68         IMSA_HILOGE("InputMethodExtensionContext::StartAbilityWithAccount failed: %{public}d", err);
69     }
70     return err;
71 }
72 
StartAbilityWithAccount(const AAFwk::Want & want,int accountId,const AAFwk::StartOptions & startOptions) const73 ErrCode InputMethodExtensionContext::StartAbilityWithAccount(
74     const AAFwk::Want &want, int accountId, const AAFwk::StartOptions &startOptions) const
75 {
76     IMSA_HILOGD("%{public}s begin.", __func__);
77     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(
78         want, startOptions, token_, ILLEGAL_REQUEST_CODE, accountId);
79     IMSA_HILOGD("%{public}s ret=%{public}d", __func__, err);
80     if (err != ERR_OK) {
81         IMSA_HILOGE("InputMethodContext::StartAbilityWithAccount is failed %{public}d", err);
82     }
83     return err;
84 }
85 
ConnectAbilityWithAccount(const AAFwk::Want & want,int accountId,const sptr<AbilityConnectCallback> & connectCallback) const86 bool InputMethodExtensionContext::ConnectAbilityWithAccount(
87     const AAFwk::Want &want, int accountId, const sptr<AbilityConnectCallback> &connectCallback) const
88 {
89     IMSA_HILOGI("%{public}s begin.", __func__);
90     ErrCode ret = ConnectionManager::GetInstance().ConnectAbilityWithAccount(token_, want, accountId, connectCallback);
91     IMSA_HILOGI("InputMethodExtensionContext::ConnectAbilityWithAccount ret = %{public}d", ret);
92     return ret == ERR_OK;
93 }
94 
DisconnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const95 ErrCode InputMethodExtensionContext::DisconnectAbility(
96     const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
97 {
98     IMSA_HILOGI("%{public}s begin.", __func__);
99     ErrCode ret = ConnectionManager::GetInstance().DisconnectAbility(token_, want.GetElement(), connectCallback);
100     if (ret != ERR_OK) {
101         IMSA_HILOGE("%{public}s end DisconnectAbility error, ret=%{public}d", __func__, ret);
102     }
103     IMSA_HILOGI("%{public}s end DisconnectAbility", __func__);
104     return ret;
105 }
106 
TerminateAbility()107 ErrCode InputMethodExtensionContext::TerminateAbility()
108 {
109     IMSA_HILOGI("%{public}s begin.", __func__);
110     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->TerminateAbility(token_, -1, nullptr);
111     if (err != ERR_OK) {
112         IMSA_HILOGE("InputMethodExtensionContext::TerminateAbility failed: %{public}d", err);
113     }
114     IMSA_HILOGI("%{public}s end.", __func__);
115     return err;
116 }
117 
GetAbilityInfoType() const118 AppExecFwk::AbilityType InputMethodExtensionContext::GetAbilityInfoType() const
119 {
120     std::shared_ptr<AppExecFwk::AbilityInfo> info = GetAbilityInfo();
121     if (info == nullptr) {
122         IMSA_HILOGE("InputMethodContext::GetAbilityInfoType info == nullptr");
123         return AppExecFwk::AbilityType::UNKNOWN;
124     }
125     return info->type;
126 }
127 } // namespace AbilityRuntime
128 } // namespace OHOS