185d2f8c5Sopenharmony_ci/* 285d2f8c5Sopenharmony_ci * Copyright (c) 2022-2024 Huawei Device Co., Ltd. 385d2f8c5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 485d2f8c5Sopenharmony_ci * you may not use this file except in compliance with the License. 585d2f8c5Sopenharmony_ci * You may obtain a copy of the License at 685d2f8c5Sopenharmony_ci * 785d2f8c5Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 885d2f8c5Sopenharmony_ci * 985d2f8c5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1085d2f8c5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1185d2f8c5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1285d2f8c5Sopenharmony_ci * See the License for the specific language governing permissions and 1385d2f8c5Sopenharmony_ci * limitations under the License. 1485d2f8c5Sopenharmony_ci */ 1585d2f8c5Sopenharmony_ci 1685d2f8c5Sopenharmony_ci#ifndef IAM_CONTEXT_H 1785d2f8c5Sopenharmony_ci#define IAM_CONTEXT_H 1885d2f8c5Sopenharmony_ci 1985d2f8c5Sopenharmony_ci#include <cstdint> 2085d2f8c5Sopenharmony_ci#include <memory> 2185d2f8c5Sopenharmony_ci#include <string> 2285d2f8c5Sopenharmony_ci#include <vector> 2385d2f8c5Sopenharmony_ci 2485d2f8c5Sopenharmony_ci#include "nocopyable.h" 2585d2f8c5Sopenharmony_ci 2685d2f8c5Sopenharmony_ci#include "schedule_node.h" 2785d2f8c5Sopenharmony_ci 2885d2f8c5Sopenharmony_cinamespace OHOS { 2985d2f8c5Sopenharmony_cinamespace UserIam { 3085d2f8c5Sopenharmony_cinamespace UserAuth { 3185d2f8c5Sopenharmony_ciconstexpr uint64_t REUSE_AUTH_RESULT_CONTEXT_ID = 1; 3285d2f8c5Sopenharmony_ci 3385d2f8c5Sopenharmony_cienum ContextState { 3485d2f8c5Sopenharmony_ci STATE_INIT, 3585d2f8c5Sopenharmony_ci STATE_RUNNING, 3685d2f8c5Sopenharmony_ci STATE_END, 3785d2f8c5Sopenharmony_ci}; 3885d2f8c5Sopenharmony_ci 3985d2f8c5Sopenharmony_cienum ContextType { 4085d2f8c5Sopenharmony_ci CONTEXT_SIMPLE_AUTH, 4185d2f8c5Sopenharmony_ci CONTEXT_ENROLL, 4285d2f8c5Sopenharmony_ci CONTEXT_IDENTIFY, 4385d2f8c5Sopenharmony_ci WIDGET_AUTH_CONTEXT, 4485d2f8c5Sopenharmony_ci REMOTE_AUTH_CONTEXT, 4585d2f8c5Sopenharmony_ci REMOTE_AUTH_INVOKER_CONTEXT, 4685d2f8c5Sopenharmony_ci SCHEDULE_HOLDER_CONTEXT, 4785d2f8c5Sopenharmony_ci}; 4885d2f8c5Sopenharmony_ci 4985d2f8c5Sopenharmony_ciclass Context { 5085d2f8c5Sopenharmony_cipublic: 5185d2f8c5Sopenharmony_ci using ContextStopCallback = std::function<void()>; 5285d2f8c5Sopenharmony_ci virtual ~Context() = default; 5385d2f8c5Sopenharmony_ci virtual bool Start() = 0; 5485d2f8c5Sopenharmony_ci virtual bool Stop() = 0; 5585d2f8c5Sopenharmony_ci virtual uint64_t GetContextId() const = 0; 5685d2f8c5Sopenharmony_ci virtual ContextType GetContextType() const = 0; 5785d2f8c5Sopenharmony_ci virtual std::shared_ptr<ScheduleNode> GetScheduleNode(uint64_t scheduleId) const = 0; 5885d2f8c5Sopenharmony_ci virtual uint32_t GetTokenId() const = 0; 5985d2f8c5Sopenharmony_ci virtual int32_t GetLatestError() const = 0; 6085d2f8c5Sopenharmony_ci virtual int32_t GetUserId() const = 0; 6185d2f8c5Sopenharmony_ci 6285d2f8c5Sopenharmony_ciprotected: 6385d2f8c5Sopenharmony_ci virtual void SetLatestError(int32_t error) = 0; 6485d2f8c5Sopenharmony_ci}; 6585d2f8c5Sopenharmony_ci} // namespace UserAuth 6685d2f8c5Sopenharmony_ci} // namespace UserIam 6785d2f8c5Sopenharmony_ci} // namespace OHOS 6885d2f8c5Sopenharmony_ci#endif // IAM_CONTEXT_H