1 /*
2  * Copyright (c) 2021 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 "trigger_info.h"
17 
18 using namespace OHOS::AAFwk;
19 
20 namespace OHOS::AbilityRuntime::WantAgent {
TriggerInfo()21 TriggerInfo::TriggerInfo() : permission_(""), extraInfo_(nullptr), want_(nullptr),
22     startOptions_(nullptr), resultCode_(0)
23 {}
24 
TriggerInfo(const std::string & permission,const std::shared_ptr<WantParams> & extraInfo,const std::shared_ptr<Want> & want,int resultCode)25 TriggerInfo::TriggerInfo(const std::string &permission, const std::shared_ptr<WantParams> &extraInfo,
26     const std::shared_ptr<Want> &want, int resultCode)
27 {
28     permission_ = permission;
29     if (extraInfo != nullptr) {
30         extraInfo_ = std::make_shared<WantParams>(*extraInfo);
31     }
32     if (want != nullptr) {
33         want_ = std::make_shared<Want>(*want);
34     }
35     resultCode_ = resultCode;
36 }
37 
TriggerInfo(const std::string & permission,const std::shared_ptr<WantParams> & extraInfo,const std::shared_ptr<Want> & want,const std::shared_ptr<StartOptions> & startOptions,int resultCode)38 TriggerInfo::TriggerInfo(const std::string &permission, const std::shared_ptr<WantParams> &extraInfo,
39     const std::shared_ptr<Want> &want, const std::shared_ptr<StartOptions> &startOptions, int resultCode)
40     : TriggerInfo(permission, extraInfo, want, resultCode)
41 {
42     startOptions_ = startOptions;
43 }
44 
TriggerInfo(const TriggerInfo & paramInfo)45 TriggerInfo::TriggerInfo(const TriggerInfo &paramInfo)
46 {
47     permission_ = paramInfo.GetPermission();
48     if (paramInfo.GetExtraInfo() != nullptr) {
49         extraInfo_ = std::make_shared<WantParams>(*paramInfo.GetExtraInfo());
50     }
51     if (paramInfo.GetWant() != nullptr) {
52         want_ = std::make_shared<Want>(*paramInfo.GetWant());
53     }
54     startOptions_ = paramInfo.GetStartOptions();
55     resultCode_ = paramInfo.GetResultCode();
56 }
57 
operator =(const TriggerInfo & paramInfo)58 const TriggerInfo &TriggerInfo::operator=(const TriggerInfo &paramInfo)
59 {
60     permission_ = paramInfo.GetPermission();
61     if (paramInfo.GetExtraInfo() != nullptr) {
62         extraInfo_ = std::make_shared<WantParams>(*paramInfo.GetExtraInfo());
63     }
64     if (paramInfo.GetWant() != nullptr) {
65         want_ = std::make_shared<Want>(*paramInfo.GetWant());
66     }
67     if (paramInfo.GetStartOptions() != nullptr) {
68         startOptions_ = std::make_shared<StartOptions>(*paramInfo.GetStartOptions());
69     }
70     resultCode_ = paramInfo.GetResultCode();
71 
72     return *this;
73 }
74 
GetPermission() const75 std::string TriggerInfo::GetPermission() const
76 {
77     return permission_;
78 }
79 
GetExtraInfo() const80 std::shared_ptr<WantParams> TriggerInfo::GetExtraInfo() const
81 {
82     return extraInfo_;
83 }
84 
GetWant() const85 std::shared_ptr<Want> TriggerInfo::GetWant() const
86 {
87     return want_;
88 }
89 
GetStartOptions() const90 std::shared_ptr<StartOptions> TriggerInfo::GetStartOptions() const
91 {
92     return startOptions_;
93 }
94 
GetResultCode() const95 int TriggerInfo::GetResultCode() const
96 {
97     return resultCode_;
98 }
99 
Builder()100 TriggerInfo::Builder::Builder()
101 {}
102 
SetPermission(const std::string & permission)103 std::shared_ptr<TriggerInfo::Builder> TriggerInfo::Builder::SetPermission(const std::string &permission)
104 {
105     permission_ = permission;
106     return shared_from_this();
107 }
108 
SetWantParams(const std::shared_ptr<WantParams> & params)109 std::shared_ptr<TriggerInfo::Builder> TriggerInfo::Builder::SetWantParams(const std::shared_ptr<WantParams> &params)
110 {
111     params_ = params;
112     return shared_from_this();
113 }
114 
SetWant(const std::shared_ptr<Want> & want)115 std::shared_ptr<TriggerInfo::Builder> TriggerInfo::Builder::SetWant(const std::shared_ptr<Want> &want)
116 {
117     want_ = want;
118     return shared_from_this();
119 }
120 
SetStartOptions(const std::shared_ptr<AAFwk::StartOptions> & startOptions)121 std::shared_ptr<TriggerInfo::Builder> TriggerInfo::Builder::SetStartOptions(
122     const std::shared_ptr<AAFwk::StartOptions> &startOptions)
123 {
124     startOptions_ = startOptions;
125     return shared_from_this();
126 }
127 
SetResultCode(int resultCode)128 std::shared_ptr<TriggerInfo::Builder> TriggerInfo::Builder::SetResultCode(int resultCode)
129 {
130     resultCode_ = resultCode;
131     return shared_from_this();
132 }
133 
Build()134 std::shared_ptr<TriggerInfo> TriggerInfo::Builder::Build()
135 {
136     return std::make_shared<TriggerInfo>(permission_, params_, want_, startOptions_, resultCode_);
137 }
138 }  // namespace OHOS::AbilityRuntime::WantAgent
139