1 /*
2 * Copyright (c) 2022-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 "datetime_manager_proxy.h"
17
18 #include "edm_log.h"
19 #include "func_code.h"
20
21 namespace OHOS {
22 namespace EDM {
23 std::shared_ptr<DatetimeManagerProxy> DatetimeManagerProxy::instance_ = nullptr;
24 std::once_flag DatetimeManagerProxy::flag_;
25 const std::u16string DESCRIPTOR = u"ohos.edm.IEnterpriseDeviceMgr";
26
DatetimeManagerProxy()27 DatetimeManagerProxy::DatetimeManagerProxy() {}
28
~DatetimeManagerProxy()29 DatetimeManagerProxy::~DatetimeManagerProxy() {}
30
GetDatetimeManagerProxy()31 std::shared_ptr<DatetimeManagerProxy> DatetimeManagerProxy::GetDatetimeManagerProxy()
32 {
33 std::call_once(flag_, []() {
34 if (instance_ == nullptr) {
35 instance_ = std::make_shared<DatetimeManagerProxy>();
36 }
37 });
38 return instance_;
39 }
40
SetDateTime(AppExecFwk::ElementName & admin,int64_t time,const std::string & permissionTag)41 int32_t DatetimeManagerProxy::SetDateTime(AppExecFwk::ElementName &admin, int64_t time,
42 const std::string &permissionTag)
43 {
44 EDMLOGD("DatetimeManagerProxy::SetDateTime");
45 MessageParcel data;
46 data.WriteInterfaceToken(DESCRIPTOR);
47 data.WriteInt32(WITHOUT_USERID);
48 data.WriteParcelable(&admin);
49 data.WriteString(permissionTag);
50 data.WriteInt64(time);
51 return this->SetDateTime(data);
52 }
53
SetDateTime(MessageParcel & data)54 int32_t DatetimeManagerProxy::SetDateTime(MessageParcel &data)
55 {
56 std::uint32_t funcCode = POLICY_FUNC_CODE((std::uint32_t)FuncOperateType::SET, EdmInterfaceCode::SET_DATETIME);
57 return EnterpriseDeviceMgrProxy::GetInstance()->HandleDevicePolicy(funcCode, data);
58 }
59
DisallowModifyDateTime(MessageParcel & data)60 int32_t DatetimeManagerProxy::DisallowModifyDateTime(MessageParcel &data)
61 {
62 return EnterpriseDeviceMgrProxy::GetInstance()->SetPolicyDisabled(data,
63 EdmInterfaceCode::DISALLOW_MODIFY_DATETIME);
64 }
65
IsModifyDateTimeDisallowed(MessageParcel & data,bool & result)66 int32_t DatetimeManagerProxy::IsModifyDateTimeDisallowed(MessageParcel &data, bool &result)
67 {
68 return EnterpriseDeviceMgrProxy::GetInstance()->IsPolicyDisabled(data, EdmInterfaceCode::DISALLOW_MODIFY_DATETIME,
69 result);
70 }
71 } // namespace EDM
72 } // namespace OHOS
73