1 /*
2 * Copyright (c) 2022-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 "iplugin.h"
17 #include <string_ex.h>
18
19 namespace OHOS {
20 namespace EDM {
GetPolicyName()21 std::string IPlugin::GetPolicyName()
22 {
23 return policyName_;
24 }
25
NeedSavePolicy()26 bool IPlugin::NeedSavePolicy()
27 {
28 return needSave_;
29 }
30
IsGlobalPolicy()31 bool IPlugin::IsGlobalPolicy()
32 {
33 return isGlobal_;
34 }
35
GetAllPermission(FuncOperateType operaType)36 IPlugin::PolicyPermissionConfig IPlugin::GetAllPermission(FuncOperateType operaType)
37 {
38 if (permissionConfig_.permissionType == PermissionType::UNKNOWN && permissionMap_.count(operaType) > 0) {
39 return permissionMap_[operaType];
40 }
41 return permissionConfig_;
42 }
43
GetPermission(FuncOperateType operaType,std::string permissionTag)44 std::string IPlugin::GetPermission(FuncOperateType operaType, std::string permissionTag)
45 {
46 if (permissionConfig_.permissionType == PermissionType::UNKNOWN && permissionMap_.count(operaType) > 0) {
47 PolicyPermissionConfig config = permissionMap_[operaType];
48 return CheckAndGetPermissionFromConfig(permissionTag, config.tagPermissions, config.permission);
49 }
50 return CheckAndGetPermissionFromConfig(permissionTag, permissionConfig_.tagPermissions,
51 permissionConfig_.permission);
52 }
53
CheckAndGetPermissionFromConfig(const std::string & permissionTag,std::map<std::string,std::string> tagPermissions,const std::string & commonPermission)54 std::string IPlugin::CheckAndGetPermissionFromConfig(const std::string &permissionTag,
55 std::map<std::string, std::string> tagPermissions, const std::string &commonPermission)
56 {
57 if (permissionTag.empty()) {
58 return tagPermissions.empty() ? commonPermission : NONE_PERMISSION_MATCH;
59 } else {
60 return (!tagPermissions.empty() && tagPermissions.count(permissionTag) > 0 ?
61 tagPermissions[permissionTag] : NONE_PERMISSION_MATCH);
62 }
63 }
64
GetPermissionType(FuncOperateType operaType)65 IPlugin::PermissionType IPlugin::GetPermissionType(FuncOperateType operaType)
66 {
67 if (permissionConfig_.permissionType == PermissionType::UNKNOWN && permissionMap_.count(operaType) > 0) {
68 return permissionMap_[operaType].permissionType;
69 }
70 return permissionConfig_.permissionType;
71 }
72
GetApiType(FuncOperateType operaType)73 IPlugin::ApiType IPlugin::GetApiType(FuncOperateType operaType)
74 {
75 if (permissionConfig_.apiType == ApiType::UNKNOWN && permissionMap_.count(operaType) > 0) {
76 return permissionMap_[operaType].apiType;
77 }
78 return permissionConfig_.apiType;
79 }
80
GetCode()81 std::uint32_t IPlugin::GetCode()
82 {
83 return policyCode_;
84 }
85
MergePolicyData(const std::string & adminName,std::string & mergeJsonData)86 ErrCode IPlugin::MergePolicyData(const std::string &adminName, std::string &mergeJsonData)
87 {
88 return ERR_OK;
89 }
90
WritePolicyToParcel(const std::string & policyJsonData,MessageParcel & reply)91 ErrCode IPlugin::WritePolicyToParcel(const std::string &policyJsonData, MessageParcel &reply)
92 {
93 return reply.WriteString(policyJsonData) ? ERR_OK : ERR_EDM_OPERATE_PARCEL;
94 }
95
SetExtensionPlugin(std::shared_ptr<IPlugin> extensionPlugin)96 void IPlugin::SetExtensionPlugin(std::shared_ptr<IPlugin> extensionPlugin)
97 {
98 extensionPlugin_ = extensionPlugin;
99 }
100
ResetExtensionPlugin()101 void IPlugin::ResetExtensionPlugin()
102 {
103 if (extensionPlugin_ != nullptr) {
104 extensionPlugin_.reset();
105 }
106 }
107
GetExtensionPlugin()108 std::shared_ptr<IPlugin> IPlugin::GetExtensionPlugin()
109 {
110 return extensionPlugin_;
111 }
112
SetExecuteStrategy(std::shared_ptr<IPluginExecuteStrategy> strategy)113 void IPlugin::SetExecuteStrategy(std::shared_ptr<IPluginExecuteStrategy> strategy)
114 {
115 strategy_ = strategy;
116 }
117
GetExecuteStrategy()118 std::shared_ptr<IPluginExecuteStrategy> IPlugin::GetExecuteStrategy()
119 {
120 return strategy_;
121 }
122
SetPluginType(IPlugin::PluginType type)123 void IPlugin::SetPluginType(IPlugin::PluginType type)
124 {
125 type_ = type;
126 }
127
GetPluginType()128 IPlugin::PluginType IPlugin::GetPluginType()
129 {
130 return type_;
131 }
132
~IPlugin()133 IPlugin::~IPlugin() {}
134 } // namespace EDM
135 } // namespace OHOS
136