1 /* 2 * Copyright (c) 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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_UI_EXTENSION_SECURITY_UI_EXTENSION_PATTERN_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_UI_EXTENSION_SECURITY_UI_EXTENSION_PATTERN_H 18 19 #include "core/common/dynamic_component_renderer.h" 20 #include "core/components_ng/pattern/ui_extension/accessibility_session_adapter_ui_extension.h" 21 #include "core/components_ng/pattern/ui_extension/platform_pattern.h" 22 #include "core/components_ng/pattern/ui_extension/ui_extension_hub.h" 23 #include "core/components_ng/pattern/ui_extension/ui_extension_model_ng.h" 24 25 namespace OHOS::Ace::NG { 26 class SecurityUIExtensionPattern : public PlatformPattern { 27 DECLARE_ACE_TYPE(SecurityUIExtensionPattern, PlatformPattern); 28 29 public: 30 SecurityUIExtensionPattern(); 31 ~SecurityUIExtensionPattern() override; 32 33 RefPtr<LayoutAlgorithm> CreateLayoutAlgorithm() override; 34 FocusPattern GetFocusPattern() const override; 35 RefPtr<AccessibilitySessionAdapter> GetAccessibilitySessionAdapter() override; 36 SetPlaceholderNode(const RefPtr<FrameNode> & placeholderNode)37 void SetPlaceholderNode(const RefPtr<FrameNode>& placeholderNode) 38 { 39 placeholderNode_ = placeholderNode; 40 } 41 CreateEventHub()42 RefPtr<EventHub> CreateEventHub() override 43 { 44 return MakeRefPtr<UIExtensionHub>(); 45 } 46 47 void Initialize(const NG::UIExtensionConfig& config); 48 void UnregisterResources(); 49 void UpdateWant(const RefPtr<OHOS::Ace::WantWrap>& wantWrap); 50 void UpdateWant(const AAFwk::Want& want); 51 void SetWantWrap(const RefPtr<OHOS::Ace::WantWrap>& wantWrap); 52 RefPtr<OHOS::Ace::WantWrap> GetWantWrap(); 53 void MountPlaceholderNode(); 54 void RemovePlaceholderNode(); 55 void OnConnect(); 56 void OnDisconnect(bool isAbnormal); 57 void NotifySizeChangeReason( 58 WindowSizeChangeReason type, const std::shared_ptr<Rosen::RSTransaction>& rsTransaction); 59 void NotifyForeground(); 60 void NotifyBackground(); 61 void NotifyDestroy(); 62 int32_t GetSessionId(); 63 int32_t GetNodeId(); 64 int32_t GetInstanceId(); 65 void OnExtensionDetachToDisplay(); 66 67 void OnSyncGeometryNode(const DirtySwapConfig& config) override; 68 void OnWindowShow() override; 69 void OnWindowHide() override; 70 void OnAttachToFrameNode() override; 71 void OnDetachFromFrameNode(FrameNode* frameNode) override; 72 void OnModifyDone() override; 73 void OnVisibleChange(bool visible) override; 74 void OnMountToParentDone() override; 75 void OnLanguageConfigurationUpdate() override; 76 void OnColorConfigurationUpdate() override; 77 int32_t GetUiExtensionId() override; 78 void DispatchDisplayArea(bool isForce = false); 79 void RegisterVisibleAreaChange(); 80 void DispatchOriginAvoidArea(const Rosen::AvoidArea& avoidArea, uint32_t type); 81 int64_t WrapExtensionAbilityId(int64_t extensionOffset, int64_t abilityId) override; 82 void FireOnErrorCallback( 83 int32_t code, const std::string& name, const std::string& message) override; 84 85 void FireOnRemoteReadyCallback(); 86 void FireBindModalCallback(); 87 void FireOnTerminatedCallback(int32_t code, const RefPtr<WantWrap>& wantWrap); 88 void FireOnReceiveCallback(const AAFwk::WantParams& params); 89 void SetSyncCallbacks( 90 const std::list<std::function<void(const RefPtr<NG::SecurityUIExtensionProxy>&)>>&& callbackList); 91 void FireSyncCallbacks(); 92 void SetAsyncCallbacks( 93 const std::list<std::function<void(const RefPtr<NG::SecurityUIExtensionProxy>&)>>&& callbackList); 94 void FireAsyncCallbacks(); 95 96 // Dpi 97 void SetDensityDpi(bool densityDpi); 98 bool GetDensityDpi(); 99 void DispatchFollowHostDensity(bool densityDpi); 100 void OnDpiConfigurationUpdate() override; 101 102 private: 103 bool HandleKeyEvent(const KeyEvent& event) override; 104 void HandleFocusEvent() override; 105 void HandleBlurEvent() override; 106 void DispatchFocusActiveEvent(bool isFocusActive) override; 107 void HandleTouchEvent(const TouchEventInfo& info) override; 108 void DispatchFocusState(bool focusState); 109 110 enum class AbilityState { 111 NONE = 0, 112 FOREGROUND, 113 BACKGROUND, 114 DESTRUCTION, 115 }; 116 117 const char* ToString(AbilityState state); 118 bool CheckConstraint(); 119 120 RefPtr<FrameNode> placeholderNode_ = nullptr; 121 RefPtr<OHOS::Ace::WantWrap> curWant_; 122 RefPtr<FrameNode> contentNode_; 123 RefPtr<SessionWrapper> sessionWrapper_; 124 RefPtr<AccessibilitySessionAdapterUIExtension> accessibilitySessionAdapter_; 125 AbilityState state_ = AbilityState::NONE; 126 bool isVisible_ = true; 127 bool isShowPlaceholder_ = false; 128 bool densityDpi_ = false; 129 int32_t callbackId_ = 0; 130 RectF displayArea_; 131 SessionType sessionType_ = SessionType::UI_EXTENSION_ABILITY; 132 int32_t uiExtensionId_ = 0; 133 134 std::list<std::function<void(const RefPtr<NG::SecurityUIExtensionProxy>&)>> onSyncOnCallbackList_; 135 std::list<std::function<void(const RefPtr<NG::SecurityUIExtensionProxy>&)>> onAsyncOnCallbackList_; 136 137 ACE_DISALLOW_COPY_AND_MOVE(SecurityUIExtensionPattern); 138 }; 139 } // namespace OHOS::Ace::NG 140 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_UI_EXTENSION_SECURITY_UI_EXTENSION_PATTERN_H 141