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 #ifndef PINAUTH_REGISTER_H 17 #define PINAUTH_REGISTER_H 18 19 #include <singleton.h> 20 #include <cstdint> 21 #include <mutex> 22 #include "iremote_object.h" 23 #include "i_inputer.h" 24 #include "refbase.h" 25 #include "pin_auth_interface.h" 26 27 namespace OHOS { 28 namespace UserIam { 29 namespace PinAuth { 30 class PinAuthRegister : public DelayedRefSingleton<PinAuthRegister> { 31 DECLARE_DELAYED_REF_SINGLETON(PinAuthRegister); 32 33 public: 34 /* 35 * register inputer that used to obtain pin data. 36 * 37 * param inputer used to obtain pin data. 38 * return is it successful. 39 */ 40 bool RegisterInputer(std::shared_ptr<IInputer> inputer); 41 42 /* 43 * unregister inputer that used to obtain pin data. 44 */ 45 void UnRegisterInputer(); 46 47 private: 48 class PinAuthDeathRecipient : public IRemoteObject::DeathRecipient, public NoCopyable { 49 public: 50 PinAuthDeathRecipient() = default; 51 ~PinAuthDeathRecipient() override = default; 52 void OnRemoteDied(const wptr<IRemoteObject>& remote) override; 53 }; 54 void ResetProxy(const wptr<IRemoteObject>& remote); 55 std::mutex mutex_; 56 sptr<PinAuthInterface> GetProxy(); 57 sptr<PinAuthInterface> proxy_ {nullptr}; 58 sptr<IRemoteObject::DeathRecipient> deathRecipient_ {nullptr}; 59 }; 60 } // namespace PinAuth 61 } // namespace UserIam 62 } // namespace OHOS 63 64 #endif // PINAUTH_REGISTER_H 65