• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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