/* * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef WINDOW_REGISTER_MANAGER_H #define WINDOW_REGISTER_MANAGER_H #include #include #include #include "window_listener.h" namespace OHOS { namespace Rosen { class CjWindowRegisterManager { public: CjWindowRegisterManager(); ~CjWindowRegisterManager() {} WmErrorCode RegisterListener(sptr, std::string type, CaseType caseType, int64_t callbackObject); WmErrorCode UnregisterListener(sptr, std::string type, CaseType caseType, int64_t callbackObject); private: bool IsCallbackRegistered(std::string type, int64_t callbackObject); WmErrorCode ProcessWindowChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessSystemAvoidAreaChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessAvoidAreaChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessLifeCycleEventRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessOccupiedAreaChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessSystemBarChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessTouchOutsideRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessScreenshotRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessDialogTargetTouchRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessDialogDeathRecipientRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessGestureNavigationEnabledChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessWaterMarkFlagChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessWindowVisibilityChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessDisplayIdChangeRegister(const sptr& listener, const sptr& window, bool isRegister); WmErrorCode ProcessWindowStatusChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessWindowTitleButtonRectChangeRegister(sptr listener, sptr window, bool isRegister); using Func = std::function, sptr, bool)>; std::map>> cjCbMap_; mutable std::shared_mutex mtx_; std::map> listenerProcess_; }; } } #endif