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> &params, 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