• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 NWEB_CONTEXT_MENU_PARAMS_H
17 #define NWEB_CONTEXT_MENU_PARAMS_H
18 
19 #include <memory>
20 #include <string>
21 
22 #include "nweb_export.h"
23 #include "nweb_touch_handle_state.h"
24 
25 namespace OHOS::NWeb {
26 
27 class OHOS_NWEB_EXPORT NWebContextMenuParams {
28 public:
29     enum ContextMenuTypeFlags {
30         CM_TF_NONE = 0,
31         CM_TF_PAGE = 1 << 0,
32         CM_TF_FRAME = 1 << 1,
33         CM_TF_LINK = 1 << 2,
34         CM_TF_MEDIA = 1 << 3,
35         CM_TF_SELECTION = 1 << 4,
36         CM_TF_EDITABLE = 1 << 5,
37     };
38 
39     enum ContextMenuMediaType {
40         CM_MT_NONE,
41         CM_MT_IMAGE,
42     };
43 
44     enum ContextMenuEditStateFlags {
45         CM_ES_NONE = 0,
46         CM_ES_CAN_CUT = 1 << 0,
47         CM_ES_CAN_COPY = 1 << 1,
48         CM_ES_CAN_PASTE = 1 << 2,
49         CM_ES_CAN_SELECT_ALL = 1 << 3,
50     };
51 
52     enum ContextMenuInputFieldType {
53         CM_IT_NONE = 0,
54         CM_IT_PLAINTEXT = 1,
55         CM_IT_PASSWORD = 2,
56         CM_IT_NUMBER = 3,
57         CM_IT_TELEPHONE = 4,
58         CM_IT_OTHER = 5,
59     };
60 
61     enum ContextMenuSourceType {
62         CM_ST_NONE = 0,
63         CM_ST_MOUSE = 1,
64         CM_ST_LONG_PRESS = 2,
65     };
66 
67     virtual ~NWebContextMenuParams() = default;
68 
69     virtual int32_t GetXCoord() = 0;
70 
71     virtual int32_t GetYCoord() = 0;
72 
73     virtual int32_t GetContextMenuTypeFlags() = 0;
74 
75     virtual std::string GetLinkUrl() = 0;
76 
77     virtual std::string GetUnfilteredLinkUrl() = 0;
78 
79     virtual std::string GetSourceUrl() = 0;
80 
81     virtual bool HasImageContents() = 0;
82 
83     virtual std::string GetTitleText() = 0;
84 
85     virtual std::string GetPageUrl() = 0;
86 
87     virtual ContextMenuMediaType GetMediaType() = 0;
88 
89     virtual bool IsEditable() = 0;
90 
91     virtual int32_t GetEditStateFlags() = 0;
92 
93     virtual ContextMenuSourceType GetSourceType() = 0;
94 
95     virtual ContextMenuInputFieldType GetInputFieldType() = 0;
96 
97     virtual std::string GetSelectionText() = 0;
98 
GetImageRect(int & x,int & y,int & w,int & h)99     virtual void GetImageRect(int& x, int& y, int& w, int& h) {}
100 
IsAILink()101     virtual bool IsAILink() { return false; }
102 };
103 
104 class OHOS_NWEB_EXPORT NWebQuickMenuParams {
105 public:
106     enum QuickMenuEditStateFlags {
107         QM_EF_NONE = 0,
108         QM_EF_CAN_ELLIPSIS = 1 << 0,
109         QM_EF_CAN_CUT = 1 << 1,
110         QM_EF_CAN_COPY = 1 << 2,
111         QM_EF_CAN_PASTE = 1 << 3,
112         QM_EF_CAN_SELECT_ALL = 1 << 4,
113         QM_EF_CAN_AI_WRITE = 1 << 5,
114     };
115 
116     virtual ~NWebQuickMenuParams() = default;
117 
118     virtual int32_t GetXCoord() = 0;
119 
120     virtual int32_t GetYCoord() = 0;
121 
122     virtual int32_t GetWidth() = 0;
123 
124     virtual int32_t GetHeight() = 0;
125 
126     virtual int32_t GetEditStateFlags() = 0;
127 
128     virtual int32_t GetSelectX() = 0;
129 
130     virtual int32_t GetSelectY() = 0;
131 
132     virtual int32_t GetSelectWidth() = 0;
133 
134     virtual int32_t GetSelectXHeight() = 0;
135 
136     virtual std::shared_ptr<NWebTouchHandleState> GetTouchHandleState(NWebTouchHandleState::TouchHandleType type) = 0;
137 
GetIsLongPressActived()138     virtual bool GetIsLongPressActived() {
139         return false;
140     }
141 };
142 
143 enum MenuEventFlags {
144     EF_NONE = 0,
145     EF_CAPS_LOCK_ON = 1 << 0,
146     EF_SHIFT_DOWN = 1 << 1,
147     EF_CONTROL_DOWN = 1 << 2,
148     EF_ALT_DOWN = 1 << 3,
149     EF_LEFT_MOUSE_BUTTON = 1 << 4,
150     EF_MIDDLE_MOUSE_BUTTON = 1 << 5,
151     EF_RIGHT_MOUSE_BUTTON = 1 << 6,
152 };
153 
154 enum MenuCommandId {
155     CI_IMAGE_COPY = 0,
156     CI_COPY = 1,
157     CI_PASTE = 2,
158     CI_CUT = 3,
159     CI_SELECT_ALL = 4,
160     CI_DELETE = 5,
161     CI_REDO = 6,
162     CI_UNDO = 7,
163     CI_PASTE_AND_MATCH_STYLE = 8,
164 };
165 
166 class OHOS_NWEB_EXPORT NWebContextMenuCallback {
167 public:
168     virtual ~NWebContextMenuCallback() = default;
169 
170     virtual void Continue(int32_t commandId, MenuEventFlags flag) = 0;
171 
172     virtual void Cancel() = 0;
173 };
174 
175 class OHOS_NWEB_EXPORT NWebQuickMenuCallback {
176 public:
177     virtual ~NWebQuickMenuCallback() = default;
178 
179     virtual void Continue(int32_t commandId, MenuEventFlags flag) = 0;
180 
181     virtual void Cancel() = 0;
182 };
183 
184 } // namespace OHOS::NWeb
185 
186 #endif