• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_WEB_WEB_DECLARATION_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_WEB_WEB_DECLARATION_H
18 
19 #include "core/components/declaration/common/declaration.h"
20 #include "core/components/declaration/web/web_client.h"
21 #include "frameworks/bridge/common/dom/dom_type.h"
22 
23 namespace OHOS::Ace {
24 
25 struct WebAttribute : Attribute {
26     std::string src;
27     std::string data;
28 };
29 
30 struct WebEvent : Event {
31     EventMarker pageStartEventId;
32     EventMarker pageFinishEventId;
33     EventMarker titleReceiveEventId;
34     EventMarker geolocationHideEventId;
35     EventMarker geolocationShowEventId;
36     EventMarker requestFocusEventId;
37     EventMarker pageErrorEventId;
38     EventMarker httpErrorEventId;
39     EventMarker messageEventId;
40     EventMarker downloadStartEventId;
41     EventMarker renderExitedEventId;
42     EventMarker refreshAccessedHistoryId;
43     EventMarker resourceLoadId;
44     EventMarker scaleChangeId;
45     EventMarker permissionRequestId;
46     EventMarker searchResultReceiveEventId;
47     EventMarker scrollId;
48     EventMarker fullScreenExitEventId;
49     EventMarker windowExitId;
50     EventMarker overScrollId;
51     EventMarker nativeEmbedLifecycleChangeId;
52     EventMarker nativeEmbedGestureEventId;
53 };
54 
55 struct WebMethod : Method {
ReloadWebMethod56     void Reload() const
57     {
58         WebClient::GetInstance().ReloadWebview();
59     }
60 };
61 
62 class ACE_EXPORT WebDeclaration : public Declaration {
63     DECLARE_ACE_TYPE(WebDeclaration, Declaration);
64 
65 public:
66     WebDeclaration() = default;
67     ~WebDeclaration() override = default;
68     WebMethod webMethod;
69 
SetWebSrc(const std::string & src)70     void SetWebSrc(const std::string& src)
71     {
72         auto& attribute = MaybeResetAttribute<WebAttribute>(AttributeTag::SPECIALIZED_ATTR);
73         attribute.src = src;
74     }
75 
GetWebSrc()76     const std::string& GetWebSrc() const
77     {
78         auto& attribute = static_cast<WebAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
79         return attribute.src;
80     }
81 
SetWebData(const std::string & data)82     void SetWebData(const std::string& data)
83     {
84         auto& attribute = MaybeResetAttribute<WebAttribute>(AttributeTag::SPECIALIZED_ATTR);
85         attribute.data = data;
86     }
87 
GetWebData()88     const std::string& GetWebData() const
89     {
90         auto& attribute = static_cast<WebAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
91         return attribute.data;
92     }
93 
SetPageStartedEventId(const EventMarker & pageStartedEventId)94     void SetPageStartedEventId(const EventMarker& pageStartedEventId)
95     {
96         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
97         event.pageStartEventId = pageStartedEventId;
98     }
99 
GetPageStartedEventId()100     const EventMarker& GetPageStartedEventId() const
101     {
102         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
103         return event.pageStartEventId;
104     }
105 
SetPageFinishedEventId(const EventMarker & pageFinishedEventId)106     void SetPageFinishedEventId(const EventMarker& pageFinishedEventId)
107     {
108         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
109         event.pageFinishEventId = pageFinishedEventId;
110     }
111 
GetPageFinishedEventId()112     const EventMarker& GetPageFinishedEventId() const
113     {
114         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
115         return event.pageFinishEventId;
116     }
117 
SetTitleReceiveEventId(const EventMarker & titleReceiveEventId)118     void SetTitleReceiveEventId(const EventMarker& titleReceiveEventId)
119     {
120         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
121         event.titleReceiveEventId = titleReceiveEventId;
122     }
123 
GetTitleReceiveEventId()124     const EventMarker& GetTitleReceiveEventId() const
125     {
126         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
127         return event.titleReceiveEventId;
128     }
129 
SetOnFullScreenExitEventId(const EventMarker & fullScreenExitEventId)130     void SetOnFullScreenExitEventId(const EventMarker& fullScreenExitEventId)
131     {
132         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
133         event.fullScreenExitEventId = fullScreenExitEventId;
134     }
135 
GetOnFullScreenExitEventId()136     const EventMarker& GetOnFullScreenExitEventId() const
137     {
138         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
139         return event.fullScreenExitEventId;
140     }
141 
SetGeolocationHideEventId(const EventMarker & geolocationHideEventId)142     void SetGeolocationHideEventId(const EventMarker& geolocationHideEventId)
143     {
144         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
145         event.geolocationHideEventId = geolocationHideEventId;
146     }
147 
GetGeolocationHideEventId()148     const EventMarker& GetGeolocationHideEventId() const
149     {
150         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
151         return event.geolocationHideEventId;
152     }
153 
SetGeolocationShowEventId(const EventMarker & geolocationShowEventId)154     void SetGeolocationShowEventId(const EventMarker& geolocationShowEventId)
155     {
156         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
157         event.geolocationShowEventId = geolocationShowEventId;
158     }
159 
GetGeolocationShowEventId()160     const EventMarker& GetGeolocationShowEventId() const
161     {
162         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
163         return event.geolocationShowEventId;
164     }
165 
SetDownloadStartEventId(const EventMarker & downloadStartEventId)166     void SetDownloadStartEventId(const EventMarker& downloadStartEventId)
167     {
168         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
169         event.downloadStartEventId = downloadStartEventId;
170     }
171 
GetDownloadStartEventId()172     const EventMarker& GetDownloadStartEventId() const
173     {
174         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
175         return event.downloadStartEventId;
176     }
177 
SetRequestFocusEventId(const EventMarker & requestFocusEventId)178     void SetRequestFocusEventId(const EventMarker& requestFocusEventId)
179     {
180         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
181         event.requestFocusEventId = requestFocusEventId;
182     }
183 
GetRequestFocusEventId()184     const EventMarker& GetRequestFocusEventId() const
185     {
186         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
187         return event.requestFocusEventId;
188     }
189 
SetPageErrorEventId(const EventMarker & pageErrorEventId)190     void SetPageErrorEventId(const EventMarker& pageErrorEventId)
191     {
192         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
193         event.pageErrorEventId = pageErrorEventId;
194     }
195 
GetPageErrorEventId()196     const EventMarker& GetPageErrorEventId() const
197     {
198         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
199         return event.pageErrorEventId;
200     }
201 
SetHttpErrorEventId(const EventMarker & httpErrorEventId)202     void SetHttpErrorEventId(const EventMarker& httpErrorEventId)
203     {
204         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
205         event.httpErrorEventId = httpErrorEventId;
206     }
207 
GetHttpErrorEventId()208     const EventMarker& GetHttpErrorEventId() const
209     {
210         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
211         return event.httpErrorEventId;
212     }
213 
SetMessageEventId(const EventMarker & messageEventId)214     void SetMessageEventId(const EventMarker& messageEventId)
215     {
216         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
217         event.messageEventId = messageEventId;
218     }
219 
GetMessageEventId()220     const EventMarker& GetMessageEventId() const
221     {
222         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
223         return event.messageEventId;
224     }
225 
SetRenderExitedId(const EventMarker & renderExitedEventId)226     void SetRenderExitedId(const EventMarker& renderExitedEventId)
227     {
228         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
229         event.renderExitedEventId = renderExitedEventId;
230     }
231 
GetRenderExitedId()232     const EventMarker& GetRenderExitedId() const
233     {
234         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
235         return event.renderExitedEventId;
236     }
237 
SetRefreshAccessedHistoryId(const EventMarker & refreshAccessedHistoryId)238     void SetRefreshAccessedHistoryId(const EventMarker& refreshAccessedHistoryId)
239     {
240         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
241         event.refreshAccessedHistoryId = refreshAccessedHistoryId;
242     }
243 
GetRefreshAccessedHistoryId()244     const EventMarker& GetRefreshAccessedHistoryId() const
245     {
246         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
247         return event.refreshAccessedHistoryId;
248     }
249 
SetResourceLoadId(const EventMarker & resourceLoadId)250     void SetResourceLoadId(const EventMarker& resourceLoadId)
251     {
252         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
253         event.resourceLoadId = resourceLoadId;
254     }
255 
GetResourceLoadId()256     const EventMarker& GetResourceLoadId() const
257     {
258         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
259         return event.resourceLoadId;
260     }
261 
SetScaleChangeId(const EventMarker & scaleChangeId)262     void SetScaleChangeId(const EventMarker& scaleChangeId)
263     {
264         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
265         event.scaleChangeId = scaleChangeId;
266     }
267 
GetScaleChangeId()268     const EventMarker& GetScaleChangeId() const
269     {
270         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
271         return event.scaleChangeId;
272     }
273 
SetScrollId(const EventMarker & scrollId)274     void SetScrollId(const EventMarker& scrollId)
275     {
276         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
277         event.scrollId = scrollId;
278     }
279 
GetScrollId()280     const EventMarker& GetScrollId() const
281     {
282         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
283         return event.scrollId;
284     }
285 
SetPermissionRequestEventId(const EventMarker & permissionRequestId)286     void SetPermissionRequestEventId(const EventMarker& permissionRequestId)
287     {
288         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
289         event.permissionRequestId = permissionRequestId;
290     }
291 
GetPermissionRequestEventId()292     const EventMarker& GetPermissionRequestEventId() const
293     {
294         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
295         return event.permissionRequestId;
296     }
297 
SetSearchResultReceiveEventId(const EventMarker & searchResultReceiveEventId)298     void SetSearchResultReceiveEventId(const EventMarker& searchResultReceiveEventId)
299     {
300         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
301         event.searchResultReceiveEventId = searchResultReceiveEventId;
302     }
303 
GetSearchResultReceiveEventId()304     const EventMarker& GetSearchResultReceiveEventId() const
305     {
306         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
307         return event.searchResultReceiveEventId;
308     }
309 
SetWindowExitEventId(const EventMarker & windowExitId)310     void SetWindowExitEventId(const EventMarker& windowExitId)
311     {
312         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
313         event.windowExitId = windowExitId;
314     }
315 
GetWindowExitEventId()316     const EventMarker& GetWindowExitEventId() const
317     {
318         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
319         return event.windowExitId;
320     }
321 
SetOverScrollId(const EventMarker & overScrollId)322     void SetOverScrollId(const EventMarker& overScrollId)
323     {
324         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
325         event.overScrollId = overScrollId;
326     }
327 
GetOverScrollId()328     const EventMarker& GetOverScrollId() const
329     {
330         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
331         return event.overScrollId;
332     }
333 
SetNativeEmbedLifecycleChangeId(const EventMarker & embedLifecycleChangeId)334     void SetNativeEmbedLifecycleChangeId(const EventMarker& embedLifecycleChangeId)
335     {
336         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
337         event.nativeEmbedLifecycleChangeId = embedLifecycleChangeId;
338     }
339 
GetNativeEmbedLifecycleChangeId()340     const EventMarker& GetNativeEmbedLifecycleChangeId() const
341     {
342         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
343         return event.nativeEmbedLifecycleChangeId;
344     }
SetNativeEmbedGestureEventId(const EventMarker & embedGestureEventId)345     void SetNativeEmbedGestureEventId(const EventMarker& embedGestureEventId)
346     {
347         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
348         event.nativeEmbedGestureEventId = embedGestureEventId;
349     }
350 
GetNativeEmbedGestureEventId()351     const EventMarker& GetNativeEmbedGestureEventId() const
352     {
353         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
354         return event.nativeEmbedGestureEventId;
355     }
356 
357 protected:
358     void InitSpecialized() override;
359     bool SetSpecializedAttr(const std::pair<std::string, std::string>& attr) override;
360     bool SetSpecializedEvent(int32_t pageId, const std::string& eventId, const std::string& event) override;
361     void CallSpecializedMethod(const std::string& method, const std::string& args) override;
362 };
363 
364 } // namespace OHOS::Ace
365 
366 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_WEB_WEB_DECLARATION_H
367