1 /*
2 * Copyright (c) 2023 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 "session/host/include/extension_session.h"
17
18 #include "ws_common.h"
19 #include "window_manager_hilog.h"
20
21 namespace OHOS::Rosen {
22 namespace {
23 constexpr HiviewDFX::HiLogLabel LABEL = { LOG_CORE, HILOG_DOMAIN_WINDOW, "ExtensionSession" };
24 }
25
ExtensionSession(const SessionInfo & info)26 ExtensionSession::ExtensionSession(const SessionInfo& info) : Session(info)
27 {
28 WLOGFD("Create extension session, bundleName: %{public}s, moduleName: %{public}s, abilityName: %{public}s.",
29 info.bundleName_.c_str(), info.moduleName_.c_str(), info.abilityName_.c_str());
30 GeneratePersistentId(true, info);
31 }
32
TransferAbilityResult(uint32_t resultCode,const AAFwk::Want & want)33 WSError ExtensionSession::TransferAbilityResult(uint32_t resultCode, const AAFwk::Want& want)
34 {
35 if (extSessionEventCallback_ != nullptr &&
36 extSessionEventCallback_->transferAbilityResultFunc_ != nullptr) {
37 extSessionEventCallback_->transferAbilityResultFunc_(resultCode, want);
38 }
39 return WSError::WS_OK;
40 }
41
TransferExtensionData(const AAFwk::WantParams & wantParams)42 WSError ExtensionSession::TransferExtensionData(const AAFwk::WantParams& wantParams)
43 {
44 if (extSessionEventCallback_ != nullptr &&
45 extSessionEventCallback_->transferExtensionDataFunc_ != nullptr) {
46 extSessionEventCallback_->transferExtensionDataFunc_(wantParams);
47 }
48 return WSError::WS_OK;
49 }
50
TransferComponentData(const AAFwk::WantParams & wantParams)51 WSError ExtensionSession::TransferComponentData(const AAFwk::WantParams& wantParams)
52 {
53 if (!IsSessionValid()) {
54 return WSError::WS_ERROR_INVALID_SESSION;
55 }
56 sessionStage_->NotifyTransferComponentData(wantParams);
57 return WSError::WS_OK;
58 }
59
NotifyRemoteReady()60 void ExtensionSession::NotifyRemoteReady()
61 {
62 if (extSessionEventCallback_ != nullptr &&
63 extSessionEventCallback_->notifyRemoteReadyFunc_ != nullptr) {
64 extSessionEventCallback_->notifyRemoteReadyFunc_();
65 }
66 }
67
RegisterExtensionSessionEventCallback(const sptr<ExtensionSessionEventCallback> & extSessionEventCallback)68 void ExtensionSession::RegisterExtensionSessionEventCallback(
69 const sptr<ExtensionSessionEventCallback>& extSessionEventCallback)
70 {
71 extSessionEventCallback_ = extSessionEventCallback;
72 }
73
GetExtensionSessionEventCallback()74 sptr<ExtensionSession::ExtensionSessionEventCallback> ExtensionSession::GetExtensionSessionEventCallback()
75 {
76 if (extSessionEventCallback_ == nullptr) {
77 extSessionEventCallback_ = new(std::nothrow) ExtensionSessionEventCallback();
78 }
79
80 return extSessionEventCallback_;
81 }
82 } // namespace OHOS::Rosen
83