1 /*
2 * Copyright (c) 2022 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 "enterprise_admin_connection.h"
17
18 #include "admin_manager.h"
19 #include "edm_constants.h"
20 #include "edm_log.h"
21 #include "enterprise_conn_manager.h"
22
23 namespace OHOS {
24 namespace EDM {
~EnterpriseAdminConnection()25 EnterpriseAdminConnection::~EnterpriseAdminConnection() {}
26
SetIsOnAdminEnabled(bool isOnAdminEnabled)27 void EnterpriseAdminConnection::SetIsOnAdminEnabled(bool isOnAdminEnabled)
28 {
29 isOnAdminEnabled_ = isOnAdminEnabled;
30 }
31
OnAbilityConnectDone(const AppExecFwk::ElementName & element,const sptr<IRemoteObject> & remoteObject,int32_t resultCode)32 void EnterpriseAdminConnection::OnAbilityConnectDone(
33 const AppExecFwk::ElementName& element, const sptr<IRemoteObject>& remoteObject, int32_t resultCode)
34 {
35 EDMLOGI("EnterpriseAdminConnection OnAbilityConnectDone");
36 proxy_ = (new (std::nothrow) EnterpriseAdminProxy(remoteObject));
37 if (!proxy_) {
38 EDMLOGE("EnterpriseAdminConnection get enterpriseAdminProxy failed.");
39 return;
40 }
41 switch (code_) {
42 case IEnterpriseAdmin::COMMAND_ON_ADMIN_ENABLED:
43 if (isOnAdminEnabled_) {
44 proxy_->OnAdminEnabled();
45 }
46 break;
47 case IEnterpriseAdmin::COMMAND_ON_ADMIN_DISABLED:
48 proxy_->OnAdminDisabled();
49 break;
50 default:
51 return;
52 }
53 EDMLOGI("EnterpriseAdminConnection OnAbilityConnectDone over");
54 }
55
OnAbilityDisconnectDone(const AppExecFwk::ElementName & element,int32_t resultCode)56 void EnterpriseAdminConnection::OnAbilityDisconnectDone(const AppExecFwk::ElementName& element, int32_t resultCode)
57 {
58 EDMLOGI("EnterpriseAdminConnection OnAbilityDisconnectDone");
59 if (AdminManager::GetInstance()->IsSuperAdmin(want_.GetElement().GetBundleName())) {
60 std::shared_ptr<EnterpriseConnManager> manager = DelayedSingleton<EnterpriseConnManager>::GetInstance();
61 sptr<IEnterpriseConnection> connection = manager->CreateAdminConnection(want_,
62 IEnterpriseAdmin::COMMAND_ON_ADMIN_ENABLED, EdmConstants::DEFAULT_USER_ID, false);
63 manager->ConnectAbility(connection);
64 }
65 }
66 } // namespace EDM
67 } // namespace OHOS
68