• 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 "wallpaper_extension_context.h"
17 
18 #include "ability_connection.h"
19 #include "ability_manager_client.h"
20 #include "hilog_wrapper.h"
21 
22 namespace OHOS {
23 namespace AbilityRuntime {
24 const size_t WallpaperExtensionContext::CONTEXT_TYPE_ID(std::hash<const char*> {} ("WallpaperExtensionContext"));
25 int WallpaperExtensionContext::ILLEGAL_REQUEST_CODE(-1);
26 
StartAbility(const AAFwk::Want & want) const27 ErrCode WallpaperExtensionContext::StartAbility(const AAFwk::Want &want) const
28 {
29     HILOG_DEBUG("%{public}s begin.", __func__);
30     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, token_, ILLEGAL_REQUEST_CODE);
31     HILOG_DEBUG("%{public}s. End calling StartAbility. ret=%{public}d", __func__, err);
32     if (err != ERR_OK) {
33         HILOG_ERROR("WallpaperContext::StartAbility is failed %{public}d", err);
34     }
35     return err;
36 }
37 
StartAbility(const AAFwk::Want & want,const AAFwk::StartOptions & startOptions) const38 ErrCode WallpaperExtensionContext::StartAbility(const AAFwk::Want &want, const AAFwk::StartOptions &startOptions) const
39 {
40     HILOG_DEBUG("%{public}s begin.", __func__);
41     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, startOptions, token_,
42         ILLEGAL_REQUEST_CODE);
43     HILOG_DEBUG("%{public}s. End calling StartAbility. ret=%{public}d", __func__, err);
44     if (err != ERR_OK) {
45         HILOG_ERROR("WallpaperContext::StartAbility is failed %{public}d", err);
46     }
47     return err;
48 }
49 
ConnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const50 bool WallpaperExtensionContext::ConnectAbility(
51     const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
52 {
53     HILOG_INFO("%{public}s begin.", __func__);
54     ErrCode ret =
55         ConnectionManager::GetInstance().ConnectAbility(token_, want, connectCallback);
56     HILOG_INFO("WallpaperExtensionContext::ConnectAbility ErrorCode = %{public}d", ret);
57     return ret == ERR_OK;
58 }
59 
StartAbilityWithAccount(const AAFwk::Want & want,int accountId) const60 ErrCode WallpaperExtensionContext::StartAbilityWithAccount(const AAFwk::Want &want, int accountId) const
61 {
62     HILOG_DEBUG("%{public}s begin.", __func__);
63     HILOG_INFO("%{public}d accountId:", accountId);
64     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(
65         want, token_, ILLEGAL_REQUEST_CODE, accountId);
66     HILOG_DEBUG("%{public}s. End calling StartAbilityWithAccount. ret=%{public}d", __func__, err);
67     if (err != ERR_OK) {
68         HILOG_ERROR("WallpaperContext::StartAbilityWithAccount is failed %{public}d", err);
69     }
70     return err;
71 }
72 
StartAbilityWithAccount(const AAFwk::Want & want,int accountId,const AAFwk::StartOptions & startOptions) const73 ErrCode WallpaperExtensionContext::StartAbilityWithAccount(
74     const AAFwk::Want &want, int accountId, const AAFwk::StartOptions &startOptions) const
75 {
76     HILOG_DEBUG("%{public}s begin.", __func__);
77     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, startOptions, token_,
78         ILLEGAL_REQUEST_CODE, accountId);
79     HILOG_DEBUG("%{public}s. End calling StartAbilityWithAccount. ret=%{public}d", __func__, err);
80     if (err != ERR_OK) {
81         HILOG_ERROR("WallpaperContext::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 WallpaperExtensionContext::ConnectAbilityWithAccount(
87     const AAFwk::Want &want, int accountId, const sptr<AbilityConnectCallback> &connectCallback) const
88 {
89     HILOG_INFO("%{public}s begin.", __func__);
90     ErrCode ret =
91         ConnectionManager::GetInstance().ConnectAbilityWithAccount(token_, want, accountId, connectCallback);
92     HILOG_INFO("WallpaperExtensionContext::ConnectAbilityWithAccount ErrorCode = %{public}d", ret);
93     return ret == ERR_OK;
94 }
95 
DisconnectAbility(const AAFwk::Want & want,const sptr<AbilityConnectCallback> & connectCallback) const96 ErrCode WallpaperExtensionContext::DisconnectAbility(
97     const AAFwk::Want &want, const sptr<AbilityConnectCallback> &connectCallback) const
98 {
99     HILOG_INFO("%{public}s begin.", __func__);
100     ErrCode ret =
101         ConnectionManager::GetInstance().DisconnectAbility(token_, want.GetElement(), connectCallback);
102     if (ret != ERR_OK) {
103         HILOG_ERROR("%{public}s end DisconnectAbility error, ret=%{public}d", __func__, ret);
104     }
105     HILOG_INFO("%{public}s end DisconnectAbility", __func__);
106     return ret;
107 }
108 
TerminateAbility()109 ErrCode WallpaperExtensionContext::TerminateAbility()
110 {
111     HILOG_INFO("%{public}s begin.", __func__);
112     ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->TerminateAbility(token_, -1, nullptr);
113     if (err != ERR_OK) {
114         HILOG_ERROR("WallpaperExtensionContext::TerminateAbility is failed %{public}d", err);
115     }
116     HILOG_INFO("%{public}s end.", __func__);
117     return err;
118 }
119 
GetAbilityInfoType() const120 AppExecFwk::AbilityType WallpaperExtensionContext::GetAbilityInfoType() const
121 {
122     std::shared_ptr<AppExecFwk::AbilityInfo> info = GetAbilityInfo();
123     if (info == nullptr) {
124         HILOG_ERROR("WallpaperContext::GetAbilityInfoType info == nullptr");
125         return AppExecFwk::AbilityType::UNKNOWN;
126     }
127 
128     return info->type;
129 }
130 }  // namespace AbilityRuntime
131 }  // namespace OHOS