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 ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, token_, ILLEGAL_REQUEST_CODE);
30 HILOG_DEBUG("%{public}s. End calling StartAbility. ret=%{public}d.", __func__, err);
31 if (err != ERR_OK) {
32 HILOG_ERROR("WallpaperContext::StartAbility is failed %{public}d!", err);
33 }
34 return err;
35 }
36
StartAbility(const AAFwk::Want & want,const AAFwk::StartOptions & startOptions) const37 ErrCode WallpaperExtensionContext::StartAbility(const AAFwk::Want &want, const AAFwk::StartOptions &startOptions) const
38 {
39 HILOG_DEBUG("%{public}s begin.", __func__);
40 ErrCode err =
41 AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, startOptions, token_, ILLEGAL_REQUEST_CODE);
42 HILOG_DEBUG("%{public}s. End calling StartAbility. ret=%{public}d", __func__, err);
43 if (err != ERR_OK) {
44 HILOG_ERROR("WallpaperContext::StartAbility is failed %{public}d!", err);
45 }
46 return err;
47 }
48
ConnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const49 bool WallpaperExtensionContext::ConnectAbility(
50 const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
51 {
52 HILOG_DEBUG("%{public}s begin.", __func__);
53 ErrCode ret = ConnectionManager::GetInstance().ConnectAbility(token_, want, connectCallback);
54 HILOG_DEBUG("WallpaperExtensionContext::ConnectAbility ErrorCode = %{public}d.", ret);
55 return ret == ERR_OK;
56 }
57
StartAbilityWithAccount(const AAFwk::Want & want,int32_t accountId) const58 ErrCode WallpaperExtensionContext::StartAbilityWithAccount(const AAFwk::Want &want, int32_t accountId) const
59 {
60 HILOG_DEBUG("%{public}s begin.", __func__);
61 ErrCode err =
62 AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, token_, ILLEGAL_REQUEST_CODE, accountId);
63 HILOG_DEBUG("%{public}s. End calling StartAbilityWithAccount. ret=%{public}d.", __func__, err);
64 if (err != ERR_OK) {
65 HILOG_ERROR("WallpaperContext::StartAbilityWithAccount is failed %{public}d!", err);
66 }
67 return err;
68 }
69
StartAbilityWithAccount(const AAFwk::Want & want,int32_t accountId,const AAFwk::StartOptions & startOptions) const70 ErrCode WallpaperExtensionContext::StartAbilityWithAccount(
71 const AAFwk::Want &want, int32_t accountId, const AAFwk::StartOptions &startOptions) const
72 {
73 HILOG_DEBUG("%{public}s begin.", __func__);
74 ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(
75 want, startOptions, 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
ConnectAbilityWithAccount(const AAFwk::Want & want,int32_t accountId,const sptr<AbilityConnectCallback> & connectCallback) const83 bool WallpaperExtensionContext::ConnectAbilityWithAccount(
84 const AAFwk::Want &want, int32_t accountId, const sptr<AbilityConnectCallback> &connectCallback) const
85 {
86 HILOG_DEBUG("%{public}s begin.", __func__);
87 ErrCode ret = ConnectionManager::GetInstance().ConnectAbilityWithAccount(token_, want, accountId, connectCallback);
88 HILOG_DEBUG("WallpaperExtensionContext::ConnectAbilityWithAccount ErrorCode = %{public}d.", ret);
89 return ret == ERR_OK;
90 }
91
DisconnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const92 ErrCode WallpaperExtensionContext::DisconnectAbility(
93 const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
94 {
95 HILOG_DEBUG("%{public}s begin.", __func__);
96 ErrCode ret = ConnectionManager::GetInstance().DisconnectAbility(token_, want.GetElement(), connectCallback);
97 if (ret != ERR_OK) {
98 HILOG_ERROR("%{public}s end DisconnectAbility error, ret=%{public}d!", __func__, ret);
99 }
100 return ret;
101 }
102
TerminateAbility()103 ErrCode WallpaperExtensionContext::TerminateAbility()
104 {
105 HILOG_DEBUG("%{public}s begin.", __func__);
106 ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->TerminateAbility(token_, -1, nullptr);
107 if (err != ERR_OK) {
108 HILOG_ERROR("WallpaperExtensionContext::TerminateAbility is failed %{public}d!", err);
109 }
110 return err;
111 }
112
GetAbilityInfoType() const113 AppExecFwk::AbilityType WallpaperExtensionContext::GetAbilityInfoType() const
114 {
115 std::shared_ptr<AppExecFwk::AbilityInfo> info = GetAbilityInfo();
116 if (info == nullptr) {
117 HILOG_ERROR("WallpaperContext::GetAbilityInfoType info == nullptr.");
118 return AppExecFwk::AbilityType::UNKNOWN;
119 }
120
121 return info->type;
122 }
123 } // namespace AbilityRuntime
124 } // namespace OHOS