1c7afe287Sopenharmony_ci/* 2c7afe287Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3c7afe287Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c7afe287Sopenharmony_ci * you may not use this file except in compliance with the License. 5c7afe287Sopenharmony_ci * You may obtain a copy of the License at 6c7afe287Sopenharmony_ci * 7c7afe287Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c7afe287Sopenharmony_ci * 9c7afe287Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c7afe287Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c7afe287Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c7afe287Sopenharmony_ci * See the License for the specific language governing permissions and 13c7afe287Sopenharmony_ci * limitations under the License. 14c7afe287Sopenharmony_ci */ 15c7afe287Sopenharmony_ci 16c7afe287Sopenharmony_ci#ifndef OHOS_CLOUD_OAID_SERVICE_STUB_H 17c7afe287Sopenharmony_ci#define OHOS_CLOUD_OAID_SERVICE_STUB_H 18c7afe287Sopenharmony_ci 19c7afe287Sopenharmony_ci#include <fstream> 20c7afe287Sopenharmony_ci#include <vector> 21c7afe287Sopenharmony_ci#include <map> 22c7afe287Sopenharmony_ci#include <string> 23c7afe287Sopenharmony_ci#include <pthread.h> 24c7afe287Sopenharmony_ci#include "cJSON.h" 25c7afe287Sopenharmony_ci#include "oaid_service_interface.h" 26c7afe287Sopenharmony_ci#include "ipc_skeleton.h" 27c7afe287Sopenharmony_ci#include "iremote_stub.h" 28c7afe287Sopenharmony_ci#include "event_handler.h" 29c7afe287Sopenharmony_ci#include "event_runner.h" 30c7afe287Sopenharmony_ci 31c7afe287Sopenharmony_cinamespace OHOS { 32c7afe287Sopenharmony_cinamespace Cloud { 33c7afe287Sopenharmony_ciclass OAIDServiceStub : public IRemoteStub<IOAIDService> { 34c7afe287Sopenharmony_cipublic: 35c7afe287Sopenharmony_ci OAIDServiceStub(); 36c7afe287Sopenharmony_ci virtual ~OAIDServiceStub() override; 37c7afe287Sopenharmony_ci 38c7afe287Sopenharmony_ci /* * 39c7afe287Sopenharmony_ci * Handle remote request. 40c7afe287Sopenharmony_ci * 41c7afe287Sopenharmony_ci * @param data Input param. 42c7afe287Sopenharmony_ci * @param reply Output param. 43c7afe287Sopenharmony_ci * @param option Message option. 44c7afe287Sopenharmony_ci * @return int32_t, return ERR_OK on success, others on failure. 45c7afe287Sopenharmony_ci */ 46c7afe287Sopenharmony_ci int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; 47c7afe287Sopenharmony_ci 48c7afe287Sopenharmony_ci int32_t RegisterObserver(const sptr<IRemoteConfigObserver>& observer) override; 49c7afe287Sopenharmony_ci 50c7afe287Sopenharmony_ciprivate: 51c7afe287Sopenharmony_ci int32_t OnGetOAID(MessageParcel& data, MessageParcel& reply); 52c7afe287Sopenharmony_ci int32_t OnResetOAID(MessageParcel& data, MessageParcel& reply); 53c7afe287Sopenharmony_ci int32_t SendCode(uint32_t code, MessageParcel &data, MessageParcel &reply); 54c7afe287Sopenharmony_ci int32_t HandleRegisterControlConfigObserver(MessageParcel& data, MessageParcel& reply); 55c7afe287Sopenharmony_ci 56c7afe287Sopenharmony_ci bool CheckPermission(const std::string &permissionName); 57c7afe287Sopenharmony_ci bool CheckSystemApp(); 58c7afe287Sopenharmony_ci void ExitIdleState(); 59c7afe287Sopenharmony_ci void PostDelayUnloadTask(); 60c7afe287Sopenharmony_ci int32_t ValidateResetOAIDPermission(std::string bundleName, MessageParcel &reply); 61c7afe287Sopenharmony_ci 62c7afe287Sopenharmony_ci std::shared_ptr<AppExecFwk::EventHandler> unloadHandler_; 63c7afe287Sopenharmony_ci std::mutex init_eventHandler_Mutex_; 64c7afe287Sopenharmony_ci}; 65c7afe287Sopenharmony_ci} // namespace Cloud 66c7afe287Sopenharmony_ci} // namespace OHOS 67c7afe287Sopenharmony_ci 68c7afe287Sopenharmony_ci#endif // OHOS_CLOUD_OAID_SERVICE_STUB_H