1 /*
2 * Copyright (c) 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 "ability_stage_context.h"
17
18 #include "context.h"
19 #include "context_impl.h"
20 #include "hilog_tag_wrapper.h"
21
22 namespace OHOS {
23 namespace AbilityRuntime {
24 const size_t AbilityStageContext::CONTEXT_TYPE_ID(std::hash<const char*> {} ("AbilityStageContext"));
25
AbilityStageContext()26 AbilityStageContext::AbilityStageContext()
27 {
28 contextImpl_ = std::make_shared<ContextImpl>();
29 }
30
SetParentContext(const std::shared_ptr<Context> & context)31 void AbilityStageContext::SetParentContext(const std::shared_ptr<Context> &context)
32 {
33 if (contextImpl_ == nullptr) {
34 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
35 return;
36 }
37
38 contextImpl_->SetParentContext(context);
39 }
40
InitHapModuleInfo(const std::shared_ptr<AppExecFwk::AbilityInfo> & abilityInfo)41 void AbilityStageContext::InitHapModuleInfo(const std::shared_ptr<AppExecFwk::AbilityInfo> &abilityInfo)
42 {
43 if (contextImpl_ == nullptr) {
44 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
45 return;
46 }
47
48 contextImpl_->InitHapModuleInfo(abilityInfo);
49 }
50
InitHapModuleInfo(const AppExecFwk::HapModuleInfo & hapModuleInfo)51 void AbilityStageContext::InitHapModuleInfo(const AppExecFwk::HapModuleInfo &hapModuleInfo)
52 {
53 if (contextImpl_ == nullptr) {
54 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
55 return;
56 }
57
58 contextImpl_->InitHapModuleInfo(hapModuleInfo);
59 }
60
GetHapModuleInfo() const61 std::shared_ptr<AppExecFwk::HapModuleInfo> AbilityStageContext::GetHapModuleInfo() const
62 {
63 if (contextImpl_ == nullptr) {
64 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
65 return nullptr;
66 }
67
68 return contextImpl_->GetHapModuleInfo();
69 }
70
SetConfiguration(const std::shared_ptr<AppExecFwk::Configuration> & config)71 void AbilityStageContext::SetConfiguration(const std::shared_ptr<AppExecFwk::Configuration> &config)
72 {
73 if (contextImpl_ == nullptr) {
74 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
75 return;
76 }
77
78 contextImpl_->SetConfiguration(config);
79 }
80
GetConfiguration() const81 std::shared_ptr<AppExecFwk::Configuration> AbilityStageContext::GetConfiguration() const
82 {
83 if (contextImpl_ == nullptr) {
84 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
85 return nullptr;
86 }
87
88 return contextImpl_->GetConfiguration();
89 }
90
SetResourceManager(const std::shared_ptr<Global::Resource::ResourceManager> & resourceManager)91 void AbilityStageContext::SetResourceManager(const std::shared_ptr<Global::Resource::ResourceManager> &resourceManager)
92 {
93 if (contextImpl_ == nullptr) {
94 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
95 return;
96 }
97
98 contextImpl_->SetResourceManager(resourceManager);
99 }
100
GetResourceManager() const101 std::shared_ptr<Global::Resource::ResourceManager> AbilityStageContext::GetResourceManager() const
102 {
103 if (contextImpl_ == nullptr) {
104 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
105 return nullptr;
106 }
107
108 return contextImpl_->GetResourceManager();
109 }
110
GetBundleName() const111 std::string AbilityStageContext::GetBundleName() const
112 {
113 if (contextImpl_ == nullptr) {
114 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
115 return {};
116 }
117
118 return contextImpl_->GetBundleName();
119 }
120
GetApplicationInfo() const121 std::shared_ptr<AppExecFwk::ApplicationInfo> AbilityStageContext::GetApplicationInfo() const
122 {
123 if (contextImpl_ == nullptr) {
124 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
125 return nullptr;
126 }
127
128 return contextImpl_->GetApplicationInfo();
129 }
130
CreateBundleContext(const std::string & bundleName)131 std::shared_ptr<Context> AbilityStageContext::CreateBundleContext(const std::string &bundleName)
132 {
133 if (contextImpl_ == nullptr) {
134 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
135 return nullptr;
136 }
137
138 return contextImpl_->CreateBundleContext(bundleName);
139 }
140
CreateModuleContext(const std::string & moduleName)141 std::shared_ptr<Context> AbilityStageContext::CreateModuleContext(const std::string &moduleName)
142 {
143 if (contextImpl_ == nullptr) {
144 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
145 return nullptr;
146 }
147
148 return contextImpl_->CreateModuleContext(moduleName);
149 }
150
CreateModuleContext(const std::string & bundleName,const std::string & moduleName)151 std::shared_ptr<Context> AbilityStageContext::CreateModuleContext(const std::string &bundleName,
152 const std::string &moduleName)
153 {
154 if (contextImpl_ == nullptr) {
155 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
156 return nullptr;
157 }
158
159 return contextImpl_->CreateModuleContext(bundleName, moduleName);
160 }
161
CreateModuleResourceManager(const std::string & bundleName,const std::string & moduleName)162 std::shared_ptr<Global::Resource::ResourceManager> AbilityStageContext::CreateModuleResourceManager(
163 const std::string &bundleName, const std::string &moduleName)
164 {
165 if (contextImpl_ == nullptr) {
166 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
167 return nullptr;
168 }
169
170 return contextImpl_->CreateModuleResourceManager(bundleName, moduleName);
171 }
172
CreateSystemHspModuleResourceManager(const std::string & bundleName,const std::string & moduleName,std::shared_ptr<Global::Resource::ResourceManager> & resourceManager)173 int32_t AbilityStageContext::CreateSystemHspModuleResourceManager(const std::string &bundleName,
174 const std::string &moduleName, std::shared_ptr<Global::Resource::ResourceManager> &resourceManager)
175 {
176 if (contextImpl_ == nullptr) {
177 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
178 return ERR_INVALID_VALUE;
179 }
180
181 return contextImpl_->CreateSystemHspModuleResourceManager(bundleName, moduleName, resourceManager);
182 }
183
GetBundleCodePath() const184 std::string AbilityStageContext::GetBundleCodePath() const
185 {
186 if (contextImpl_ == nullptr) {
187 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
188 return {};
189 }
190
191 return contextImpl_->GetBundleCodePath();
192 }
193
GetBundleCodeDir()194 std::string AbilityStageContext::GetBundleCodeDir()
195 {
196 if (contextImpl_ == nullptr) {
197 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
198 return {};
199 }
200
201 return contextImpl_->GetBundleCodeDir();
202 }
203
GetCacheDir()204 std::string AbilityStageContext::GetCacheDir()
205 {
206 if (contextImpl_ == nullptr) {
207 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
208 return {};
209 }
210
211 return contextImpl_->GetCacheDir();
212 }
213
GetTempDir()214 std::string AbilityStageContext::GetTempDir()
215 {
216 if (contextImpl_ == nullptr) {
217 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
218 return {};
219 }
220
221 return contextImpl_->GetTempDir();
222 }
223
GetFilesDir()224 std::string AbilityStageContext::GetFilesDir()
225 {
226 if (contextImpl_ == nullptr) {
227 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
228 return {};
229 }
230
231 return contextImpl_->GetFilesDir();
232 }
233
GetResourceDir()234 std::string AbilityStageContext::GetResourceDir()
235 {
236 if (contextImpl_ == nullptr) {
237 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
238 return {};
239 }
240
241 return contextImpl_->GetResourceDir();
242 }
243
GetDatabaseDir()244 std::string AbilityStageContext::GetDatabaseDir()
245 {
246 if (contextImpl_ == nullptr) {
247 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
248 return {};
249 }
250
251 return contextImpl_->GetDatabaseDir();
252 }
253
GetPreferencesDir()254 std::string AbilityStageContext::GetPreferencesDir()
255 {
256 if (contextImpl_ == nullptr) {
257 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
258 return {};
259 }
260
261 return contextImpl_->GetPreferencesDir();
262 }
263
GetGroupDir(std::string groupId)264 std::string AbilityStageContext::GetGroupDir(std::string groupId)
265 {
266 if (contextImpl_ == nullptr) {
267 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
268 return {};
269 }
270
271 return contextImpl_->GetGroupDir(groupId);
272 }
273
GetSystemDatabaseDir(const std::string & groupId,bool checkExist,std::string & databaseDir)274 int32_t AbilityStageContext::GetSystemDatabaseDir(const std::string &groupId, bool checkExist, std::string &databaseDir)
275 {
276 if (contextImpl_ == nullptr) {
277 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
278 return ERR_INVALID_VALUE;
279 }
280
281 return contextImpl_->GetSystemDatabaseDir(groupId, checkExist, databaseDir);
282 }
283
GetSystemPreferencesDir(const std::string & groupId,bool checkExist,std::string & preferencesDir)284 int32_t AbilityStageContext::GetSystemPreferencesDir(const std::string &groupId, bool checkExist,
285 std::string &preferencesDir)
286 {
287 if (contextImpl_ == nullptr) {
288 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
289 return ERR_INVALID_VALUE;
290 }
291
292 return contextImpl_->GetSystemPreferencesDir(groupId, checkExist, preferencesDir);
293 }
294
GetDistributedFilesDir()295 std::string AbilityStageContext::GetDistributedFilesDir()
296 {
297 if (contextImpl_ == nullptr) {
298 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
299 return {};
300 }
301
302 return contextImpl_->GetDistributedFilesDir();
303 }
304
GetCloudFileDir()305 std::string AbilityStageContext::GetCloudFileDir()
306 {
307 if (contextImpl_ == nullptr) {
308 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
309 return {};
310 }
311
312 return contextImpl_->GetCloudFileDir();
313 }
314
GetBaseDir() const315 std::string AbilityStageContext::GetBaseDir() const
316 {
317 if (contextImpl_ == nullptr) {
318 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
319 return {};
320 }
321
322 return contextImpl_->GetBaseDir();
323 }
324
IsUpdatingConfigurations()325 bool AbilityStageContext::IsUpdatingConfigurations()
326 {
327 if (contextImpl_ == nullptr) {
328 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
329 return false;
330 }
331
332 return contextImpl_->IsUpdatingConfigurations();
333 }
334
PrintDrawnCompleted()335 bool AbilityStageContext::PrintDrawnCompleted()
336 {
337 if (contextImpl_ == nullptr) {
338 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
339 return false;
340 }
341
342 return contextImpl_->PrintDrawnCompleted();
343 }
344
GetToken()345 sptr<IRemoteObject> AbilityStageContext::GetToken()
346 {
347 if (contextImpl_ == nullptr) {
348 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
349 return nullptr;
350 }
351
352 return contextImpl_->GetToken();
353 }
354
SetToken(const sptr<IRemoteObject> & token)355 void AbilityStageContext::SetToken(const sptr<IRemoteObject> &token)
356 {
357 if (contextImpl_ == nullptr) {
358 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
359 return;
360 }
361
362 contextImpl_->SetToken(token);
363 }
364
SwitchArea(int mode)365 void AbilityStageContext::SwitchArea(int mode)
366 {
367 if (contextImpl_ == nullptr) {
368 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
369 return;
370 }
371
372 contextImpl_->SwitchArea(mode);
373 }
374
GetArea()375 int AbilityStageContext::GetArea()
376 {
377 if (contextImpl_ == nullptr) {
378 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
379 return ContextImpl::EL_DEFAULT;
380 }
381
382 return contextImpl_->GetArea();
383 }
384
GetDeviceType() const385 Global::Resource::DeviceType AbilityStageContext::GetDeviceType() const
386 {
387 if (contextImpl_ == nullptr) {
388 TAG_LOGE(AAFwkTag::APPKIT, "Invalid contextImpl");
389 return Global::Resource::DeviceType::DEVICE_PHONE;
390 }
391
392 return contextImpl_->GetDeviceType();
393 }
394 } // namespace AbilityRuntime
395 } // namespace OHOS
396