1 /* 2 * Copyright (c) 2023-2024 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 OHOS_ABILITY_RUNTIME_AUTO_FILL_MANAGER_H 17 #define OHOS_ABILITY_RUNTIME_AUTO_FILL_MANAGER_H 18 19 #include <string> 20 21 #include "auto_fill_custom_config.h" 22 #include "auto_fill_event_handler.h" 23 #include "auto_fill_extension_callback.h" 24 #include "fill_request_callback_interface.h" 25 #include "nocopyable.h" 26 #include "save_request_callback_interface.h" 27 #include "task_handler_wrap.h" 28 #include "ui_content.h" 29 30 namespace OHOS { 31 namespace AbilityRuntime { 32 class AutoFillManager { 33 public: 34 static AutoFillManager &GetInstance(); 35 36 int32_t RequestAutoFill(Ace::UIContent *uiContent, const AutoFill::AutoFillRequest &request, 37 const std::shared_ptr<IFillRequestCallback> &fillCallback, AutoFill::AutoFillResult &result); 38 39 bool IsNeedToCreatePopupWindow(const AbilityBase::AutoFillType &autoFillType); 40 41 int32_t RequestAutoSave(Ace::UIContent *uiContent, const AutoFill::AutoFillRequest &request, 42 const std::shared_ptr<ISaveRequestCallback> &saveCallback, AutoFill::AutoFillResult &result); 43 44 void UpdateCustomPopupUIExtension(uint32_t autoFillSessionId, const AbilityBase::ViewData &viewData); 45 46 void CloseUIExtension(uint32_t autoFillSessionId); 47 48 void HandleTimeOut(uint32_t eventId); 49 void SetTimeOutEvent(uint32_t eventId); 50 void RemoveEvent(uint32_t eventId); 51 52 void BindModalUIExtensionCallback(const std::shared_ptr<AutoFillExtensionCallback> &extensionCallback, 53 Ace::ModalUIExtensionCallbacks &callback); 54 void RemoveAutoFillExtensionCallback(uint32_t callbackId); 55 private: 56 AutoFillManager(); 57 ~AutoFillManager(); 58 DISALLOW_COPY_AND_MOVE(AutoFillManager); 59 60 int32_t HandleRequestExecuteInner(Ace::UIContent *uiContent, const AutoFill::AutoFillRequest &request, 61 const std::shared_ptr<IFillRequestCallback> &fillCallback, 62 const std::shared_ptr<ISaveRequestCallback> &saveCallback, 63 AutoFill::AutoFillResult &result); 64 65 int32_t CreateAutoFillExtension(Ace::UIContent *uiContent, 66 const AutoFill::AutoFillRequest &request, 67 const Ace::ModalUIExtensionCallbacks &callback, 68 const AutoFill::AutoFillWindowType &autoFillWindowType, 69 bool isSmartAutoFill); 70 bool ConvertAutoFillWindowType(const AutoFill::AutoFillRequest &request, 71 bool &isSmartAutoFill, AutoFill::AutoFillWindowType &autoFillWindowType); 72 std::shared_ptr<AutoFillExtensionCallback> GetAutoFillExtensionCallback(uint32_t callbackId); 73 bool IsPreviousRequestFinished(Ace::UIContent *uiContent); 74 bool IsNeed2SaveRequest(const AbilityBase::ViewData &viewData, bool &isSmartAutoFill); 75 76 std::mutex extensionCallbacksMutex_; 77 std::map<uint32_t, std::shared_ptr<AutoFillExtensionCallback>> extensionCallbacks_; 78 79 std::shared_ptr<AutoFillEventHandler> eventHandler_; 80 }; 81 } // AbilityRuntime 82 } // OHOS 83 #endif // OHOS_ABILITY_RUNTIME_AUTO_FILL_MANAGER_H