1 /*
2 * Copyright (c) 2021-2024 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 "extension.h"
17
18 #include "ability_local_record.h"
19 #include "configuration.h"
20 #include "extension_context.h"
21 #include "hilog_tag_wrapper.h"
22 #include "hitrace_meter.h"
23
24 namespace OHOS {
25 namespace AbilityRuntime {
Init(const std::shared_ptr<AppExecFwk::AbilityLocalRecord> & record,const std::shared_ptr<AppExecFwk::OHOSApplication> & application,std::shared_ptr<AppExecFwk::AbilityHandler> & handler,const sptr<IRemoteObject> & token)26 void Extension::Init(const std::shared_ptr<AppExecFwk::AbilityLocalRecord> &record,
27 const std::shared_ptr<AppExecFwk::OHOSApplication> &application,
28 std::shared_ptr<AppExecFwk::AbilityHandler> &handler,
29 const sptr<IRemoteObject> &token)
30 {
31 TAG_LOGD(AAFwkTag::EXT, "called");
32 if ((record == nullptr) || (application == nullptr) || (handler == nullptr) || (token == nullptr)) {
33 TAG_LOGE(AAFwkTag::EXT, "init failed, some obj null");
34 return;
35 }
36 abilityInfo_ = record->GetAbilityInfo();
37 handler_ = handler;
38 application_ = application;
39 }
40
OnStart(const AAFwk::Want & want)41 void Extension::OnStart(const AAFwk::Want &want)
42 {
43 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
44 TAG_LOGD(AAFwkTag::EXT, "extension:%{public}s", abilityInfo_->name.c_str());
45 SetLaunchWant(want);
46 SetLastRequestWant(want);
47 }
48
OnStart(const AAFwk::Want & want,sptr<AAFwk::SessionInfo> sessionInfo)49 void Extension::OnStart(const AAFwk::Want &want, sptr<AAFwk::SessionInfo> sessionInfo)
50 {
51 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
52 TAG_LOGD(AAFwkTag::EXT, "extension:%{public}s", abilityInfo_->name.c_str());
53 SetLaunchWant(want);
54 SetLastRequestWant(want);
55 }
56
OnStop()57 void Extension::OnStop()
58 {
59 TAG_LOGD(AAFwkTag::EXT, "extension:%{public}s", abilityInfo_->name.c_str());
60 }
61
OnStop(AppExecFwk::AbilityTransactionCallbackInfo<> * callbackInfo,bool & isAsyncCallback)62 void Extension::OnStop(AppExecFwk::AbilityTransactionCallbackInfo<> *callbackInfo, bool &isAsyncCallback)
63 {
64 isAsyncCallback = false;
65 OnStop();
66 }
67
OnStopCallBack()68 void Extension::OnStopCallBack()
69 {
70 }
71
OnConnect(const AAFwk::Want & want)72 sptr<IRemoteObject> Extension::OnConnect(const AAFwk::Want &want)
73 {
74 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
75 TAG_LOGD(AAFwkTag::EXT, "extension:%{public}s", abilityInfo_->name.c_str());
76 return nullptr;
77 }
78
OnConnect(const AAFwk::Want & want,AppExecFwk::AbilityTransactionCallbackInfo<sptr<IRemoteObject>> * callbackInfo,bool & isAsyncCallback)79 sptr<IRemoteObject> Extension::OnConnect(const AAFwk::Want &want,
80 AppExecFwk::AbilityTransactionCallbackInfo<sptr<IRemoteObject>> *callbackInfo, bool &isAsyncCallback)
81 {
82 isAsyncCallback = false;
83 return OnConnect(want);
84 }
85
OnDisconnect(const AAFwk::Want & want)86 void Extension::OnDisconnect(const AAFwk::Want &want)
87 {
88 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
89 TAG_LOGD(AAFwkTag::EXT, "extension:%{public}s", abilityInfo_->name.c_str());
90 }
91
OnDisconnect(const AAFwk::Want & want,AppExecFwk::AbilityTransactionCallbackInfo<> * callbackInfo,bool & isAsyncCallback)92 void Extension::OnDisconnect(const AAFwk::Want &want, AppExecFwk::AbilityTransactionCallbackInfo<> *callbackInfo,
93 bool &isAsyncCallback)
94 {
95 isAsyncCallback = false;
96 OnDisconnect(want);
97 }
98
OnCommand(const AAFwk::Want & want,bool restart,int startId)99 void Extension::OnCommand(const AAFwk::Want &want, bool restart, int startId)
100 {
101 TAG_LOGD(AAFwkTag::EXT, "restart:%{public}s,startId:%{public}d",
102 restart ? "true" : "false",
103 startId);
104 SetLastRequestWant(want);
105 }
106
OnCommandWindow(const AAFwk::Want & want,const sptr<AAFwk::SessionInfo> & sessionInfo,AAFwk::WindowCommand winCmd)107 void Extension::OnCommandWindow(const AAFwk::Want &want, const sptr<AAFwk::SessionInfo> &sessionInfo,
108 AAFwk::WindowCommand winCmd)
109 {
110 TAG_LOGD(AAFwkTag::EXT, "call");
111 }
112
OnForeground(const AAFwk::Want & want,sptr<AAFwk::SessionInfo> sessionInfo)113 void Extension::OnForeground(const AAFwk::Want &want, sptr<AAFwk::SessionInfo> sessionInfo)
114 {
115 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
116 TAG_LOGD(AAFwkTag::EXT, "extension:%{public}s", abilityInfo_->name.c_str());
117 }
118
OnBackground()119 void Extension::OnBackground()
120 {
121 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
122 TAG_LOGD(AAFwkTag::EXT, "extension:%{public}s", abilityInfo_->name.c_str());
123 }
124
SetLaunchWant(const AAFwk::Want & want)125 void Extension::SetLaunchWant(const AAFwk::Want &want)
126 {
127 launchWant_ = std::make_shared<AAFwk::Want>(want);
128 }
129
GetLaunchWant()130 std::shared_ptr<AAFwk::Want> Extension::GetLaunchWant()
131 {
132 return launchWant_;
133 }
134
SetLastRequestWant(const AAFwk::Want & want)135 void Extension::SetLastRequestWant(const AAFwk::Want &want)
136 {
137 lastRequestWant_ = std::make_shared<AAFwk::Want>(want);
138 }
139
SetCallingInfo(const CallingInfo & callingInfo)140 void Extension::SetCallingInfo(const CallingInfo &callingInfo)
141 {
142 callingInfo_ = std::make_shared<CallingInfo>(callingInfo);
143 }
144
GetCallingInfo()145 std::shared_ptr<CallingInfo> Extension::GetCallingInfo()
146 {
147 return callingInfo_;
148 }
149
OnConfigurationUpdated(const AppExecFwk::Configuration & configuration)150 void Extension::OnConfigurationUpdated(const AppExecFwk::Configuration &configuration)
151 {
152 TAG_LOGD(AAFwkTag::EXT, "call");
153 }
154
OnMemoryLevel(int level)155 void Extension::OnMemoryLevel(int level)
156 {
157 TAG_LOGD(AAFwkTag::EXT, "call");
158 }
159
Dump(const std::vector<std::string> & params,std::vector<std::string> & info)160 void Extension::Dump(const std::vector<std::string> ¶ms, std::vector<std::string> &info)
161 {
162 TAG_LOGD(AAFwkTag::EXT, "call");
163 }
164
SetExtensionWindowLifeCycleListener(const sptr<Rosen::IWindowLifeCycle> & listener)165 void Extension::SetExtensionWindowLifeCycleListener(const sptr<Rosen::IWindowLifeCycle> &listener)
166 {
167 extensionWindowLifeCycleListener_ = listener;
168 }
169
OnAbilityResult(int requestCode,int resultCode,const Want & want)170 void Extension::OnAbilityResult(int requestCode, int resultCode, const Want &want)
171 {
172 TAG_LOGD(AAFwkTag::EXT, "call");
173 }
174
OnCommandWindowDone(const sptr<AAFwk::SessionInfo> & sessionInfo,AAFwk::WindowCommand winCmd)175 void Extension::OnCommandWindowDone(const sptr<AAFwk::SessionInfo> &sessionInfo, AAFwk::WindowCommand winCmd)
176 {
177 TAG_LOGD(AAFwkTag::EXT, "call");
178 }
179
OnInsightIntentExecuteDone(const sptr<AAFwk::SessionInfo> & sessionInfo,const AppExecFwk::InsightIntentExecuteResult & result)180 void Extension::OnInsightIntentExecuteDone(const sptr<AAFwk::SessionInfo> &sessionInfo,
181 const AppExecFwk::InsightIntentExecuteResult &result)
182 {
183 TAG_LOGD(AAFwkTag::EXT, "call");
184 }
185
SetLaunchParam(const AAFwk::LaunchParam & launchParam)186 void Extension::SetLaunchParam(const AAFwk::LaunchParam &launchParam)
187 {
188 launchParam_ = launchParam;
189 }
190
GetLaunchParam() const191 const AAFwk::LaunchParam &Extension::GetLaunchParam() const
192 {
193 return launchParam_;
194 }
195
HandleInsightIntent(const AAFwk::Want & want)196 bool Extension::HandleInsightIntent(const AAFwk::Want &want)
197 {
198 TAG_LOGD(AAFwkTag::EXT, "call");
199 return true;
200 }
201
OnInsightIntentExecuteDone(uint64_t intentId,const AppExecFwk::InsightIntentExecuteResult & result)202 bool Extension::OnInsightIntentExecuteDone(uint64_t intentId, const AppExecFwk::InsightIntentExecuteResult &result)
203 {
204 TAG_LOGD(AAFwkTag::EXT, "call");
205 return true;
206 }
207 }
208 }
209