• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 "ability_connection.h"
17 #include "ability_manager_client.h"
18 #include "hilog_wrapper.h"
19 #include "wallpaper_extension_context.h"
20 
21 namespace OHOS {
22 namespace AbilityRuntime {
23 const size_t WallpaperExtensionContext::CONTEXT_TYPE_ID(std::hash<const char *>{}("WallpaperExtensionContext"));
24 int32_t WallpaperExtensionContext::ILLEGAL_REQUEST_CODE(-1);
25 
StartAbility(const AAFwk::Want & want) const26 ErrCode WallpaperExtensionContext::StartAbility(const AAFwk::Want &want) const
27 {
28     HILOG_DEBUG("%{public}s begin.", __func__);
29     std::shared_ptr<AAFwk::AbilityManagerClient> abilityManagerClient = AAFwk::AbilityManagerClient::GetInstance();
30     if (abilityManagerClient == nullptr) {
31         HILOG_ERROR("abilityManagerClient is nullptr");
32         return ERR_NO_INIT;
33     }
34     ErrCode err = abilityManagerClient->StartAbility(want, token_, ILLEGAL_REQUEST_CODE);
35     HILOG_DEBUG("%{public}s. End calling StartAbility. ret=%{public}d.", __func__, err);
36     if (err != ERR_OK) {
37         HILOG_ERROR("WallpaperContext::StartAbility is failed %{public}d!", err);
38     }
39     return err;
40 }
41 
StartAbility(const AAFwk::Want & want,const AAFwk::StartOptions & startOptions) const42 ErrCode WallpaperExtensionContext::StartAbility(const AAFwk::Want &want, const AAFwk::StartOptions &startOptions) const
43 {
44     HILOG_DEBUG("%{public}s begin.", __func__);
45     std::shared_ptr<AAFwk::AbilityManagerClient> abilityManagerClient = AAFwk::AbilityManagerClient::GetInstance();
46     if (abilityManagerClient == nullptr) {
47         HILOG_ERROR("abilityManagerClient is nullptr");
48         return ERR_NO_INIT;
49     }
50     ErrCode err = abilityManagerClient->StartAbility(want, startOptions, token_, ILLEGAL_REQUEST_CODE);
51     HILOG_DEBUG("%{public}s. End calling StartAbility. ret=%{public}d", __func__, err);
52     if (err != ERR_OK) {
53         HILOG_ERROR("WallpaperContext::StartAbility is failed %{public}d!", err);
54     }
55     return err;
56 }
57 
ConnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const58 bool WallpaperExtensionContext::ConnectAbility(
59     const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
60 {
61     HILOG_DEBUG("%{public}s begin.", __func__);
62     ErrCode ret = ConnectionManager::GetInstance().ConnectAbility(token_, want, connectCallback);
63     HILOG_DEBUG("WallpaperExtensionContext::ConnectAbility ErrorCode = %{public}d.", ret);
64     return ret == ERR_OK;
65 }
66 
StartAbilityWithAccount(const AAFwk::Want & want,int32_t accountId) const67 ErrCode WallpaperExtensionContext::StartAbilityWithAccount(const AAFwk::Want &want, int32_t accountId) const
68 {
69     HILOG_DEBUG("%{public}s begin.", __func__);
70     std::shared_ptr<AAFwk::AbilityManagerClient> abilityManagerClient = AAFwk::AbilityManagerClient::GetInstance();
71     if (abilityManagerClient == nullptr) {
72         HILOG_ERROR("abilityManagerClient is nullptr");
73         return ERR_NO_INIT;
74     }
75     ErrCode err = abilityManagerClient->StartAbility(want, token_, ILLEGAL_REQUEST_CODE, accountId);
76     HILOG_DEBUG("%{public}s. End calling StartAbilityWithAccount. ret=%{public}d.", __func__, err);
77     if (err != ERR_OK) {
78         HILOG_ERROR("WallpaperContext::StartAbilityWithAccount is failed %{public}d!", err);
79     }
80     return err;
81 }
82 
StartAbilityWithAccount(const AAFwk::Want & want,int32_t accountId,const AAFwk::StartOptions & startOptions) const83 ErrCode WallpaperExtensionContext::StartAbilityWithAccount(
84     const AAFwk::Want &want, int32_t accountId, const AAFwk::StartOptions &startOptions) const
85 {
86     HILOG_DEBUG("%{public}s begin.", __func__);
87     std::shared_ptr<AAFwk::AbilityManagerClient> abilityManagerClient = AAFwk::AbilityManagerClient::GetInstance();
88     if (abilityManagerClient == nullptr) {
89         HILOG_ERROR("abilityManagerClient is nullptr");
90         return ERR_NO_INIT;
91     }
92     ErrCode err = abilityManagerClient->StartAbility(want, startOptions, token_, ILLEGAL_REQUEST_CODE, accountId);
93     HILOG_DEBUG("%{public}s. End calling StartAbilityWithAccount. ret=%{public}d.", __func__, err);
94     if (err != ERR_OK) {
95         HILOG_ERROR("WallpaperContext::StartAbilityWithAccount is failed %{public}d!", err);
96     }
97     return err;
98 }
99 
ConnectAbilityWithAccount(const AAFwk::Want & want,int32_t accountId,const sptr<AbilityConnectCallback> & connectCallback) const100 bool WallpaperExtensionContext::ConnectAbilityWithAccount(
101     const AAFwk::Want &want, int32_t accountId, const sptr<AbilityConnectCallback> &connectCallback) const
102 {
103     HILOG_DEBUG("%{public}s begin.", __func__);
104     ErrCode ret = ConnectionManager::GetInstance().ConnectAbilityWithAccount(token_, want, accountId, connectCallback);
105     HILOG_DEBUG("WallpaperExtensionContext::ConnectAbilityWithAccount ErrorCode = %{public}d.", ret);
106     return ret == ERR_OK;
107 }
108 
DisconnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const109 ErrCode WallpaperExtensionContext::DisconnectAbility(
110     const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
111 {
112     HILOG_DEBUG("%{public}s begin.", __func__);
113     ErrCode ret = ConnectionManager::GetInstance().DisconnectAbility(token_, want.GetElement(), connectCallback);
114     if (ret != ERR_OK) {
115         HILOG_ERROR("%{public}s end DisconnectAbility error, ret=%{public}d!", __func__, ret);
116     }
117     return ret;
118 }
119 
TerminateAbility()120 ErrCode WallpaperExtensionContext::TerminateAbility()
121 {
122     HILOG_DEBUG("%{public}s begin.", __func__);
123     std::shared_ptr<AAFwk::AbilityManagerClient> abilityManagerClient = AAFwk::AbilityManagerClient::GetInstance();
124     if (abilityManagerClient == nullptr) {
125         HILOG_ERROR("abilityManagerClient is nullptr");
126         return ERR_NO_INIT;
127     }
128     ErrCode err = abilityManagerClient->TerminateAbility(token_, -1, nullptr);
129     if (err != ERR_OK) {
130         HILOG_ERROR("WallpaperExtensionContext::TerminateAbility is failed %{public}d!", err);
131     }
132     return err;
133 }
134 
GetAbilityInfoType() const135 AppExecFwk::AbilityType WallpaperExtensionContext::GetAbilityInfoType() const
136 {
137     std::shared_ptr<AppExecFwk::AbilityInfo> info = GetAbilityInfo();
138     if (info == nullptr) {
139         HILOG_ERROR("WallpaperContext::GetAbilityInfoType info == nullptr.");
140         return AppExecFwk::AbilityType::UNKNOWN;
141     }
142 
143     return info->type;
144 }
145 } // namespace AbilityRuntime
146 } // namespace OHOS