• 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 };
51 
52 struct WebMethod : Method {
ReloadWebMethod53     void Reload() const
54     {
55         WebClient::GetInstance().ReloadWebview();
56     }
57 };
58 
59 class ACE_EXPORT WebDeclaration : public Declaration {
60     DECLARE_ACE_TYPE(WebDeclaration, Declaration);
61 
62 public:
63     WebDeclaration() = default;
64     ~WebDeclaration() override = default;
65     WebMethod webMethod;
66 
SetWebSrc(const std::string & src)67     void SetWebSrc(const std::string& src)
68     {
69         auto& attribute = MaybeResetAttribute<WebAttribute>(AttributeTag::SPECIALIZED_ATTR);
70         attribute.src = src;
71     }
72 
GetWebSrc()73     const std::string& GetWebSrc() const
74     {
75         auto& attribute = static_cast<WebAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
76         return attribute.src;
77     }
78 
SetWebData(const std::string & data)79     void SetWebData(const std::string& data)
80     {
81         auto& attribute = MaybeResetAttribute<WebAttribute>(AttributeTag::SPECIALIZED_ATTR);
82         attribute.data = data;
83     }
84 
GetWebData()85     const std::string& GetWebData() const
86     {
87         auto& attribute = static_cast<WebAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
88         return attribute.data;
89     }
90 
SetPageStartedEventId(const EventMarker & pageStartedEventId)91     void SetPageStartedEventId(const EventMarker& pageStartedEventId)
92     {
93         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
94         event.pageStartEventId = pageStartedEventId;
95     }
96 
GetPageStartedEventId()97     const EventMarker& GetPageStartedEventId() const
98     {
99         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
100         return event.pageStartEventId;
101     }
102 
SetPageFinishedEventId(const EventMarker & pageFinishedEventId)103     void SetPageFinishedEventId(const EventMarker& pageFinishedEventId)
104     {
105         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
106         event.pageFinishEventId = pageFinishedEventId;
107     }
108 
GetPageFinishedEventId()109     const EventMarker& GetPageFinishedEventId() const
110     {
111         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
112         return event.pageFinishEventId;
113     }
114 
SetTitleReceiveEventId(const EventMarker & titleReceiveEventId)115     void SetTitleReceiveEventId(const EventMarker& titleReceiveEventId)
116     {
117         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
118         event.titleReceiveEventId = titleReceiveEventId;
119     }
120 
GetTitleReceiveEventId()121     const EventMarker& GetTitleReceiveEventId() const
122     {
123         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
124         return event.titleReceiveEventId;
125     }
126 
SetOnFullScreenExitEventId(const EventMarker & fullScreenExitEventId)127     void SetOnFullScreenExitEventId(const EventMarker& fullScreenExitEventId)
128     {
129         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
130         event.fullScreenExitEventId = fullScreenExitEventId;
131     }
132 
GetOnFullScreenExitEventId()133     const EventMarker& GetOnFullScreenExitEventId() const
134     {
135         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
136         return event.fullScreenExitEventId;
137     }
138 
SetGeolocationHideEventId(const EventMarker & geolocationHideEventId)139     void SetGeolocationHideEventId(const EventMarker& geolocationHideEventId)
140     {
141         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
142         event.geolocationHideEventId = geolocationHideEventId;
143     }
144 
GetGeolocationHideEventId()145     const EventMarker& GetGeolocationHideEventId() const
146     {
147         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
148         return event.geolocationHideEventId;
149     }
150 
SetGeolocationShowEventId(const EventMarker & geolocationShowEventId)151     void SetGeolocationShowEventId(const EventMarker& geolocationShowEventId)
152     {
153         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
154         event.geolocationShowEventId = geolocationShowEventId;
155     }
156 
GetGeolocationShowEventId()157     const EventMarker& GetGeolocationShowEventId() const
158     {
159         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
160         return event.geolocationShowEventId;
161     }
162 
SetDownloadStartEventId(const EventMarker & downloadStartEventId)163     void SetDownloadStartEventId(const EventMarker& downloadStartEventId)
164     {
165         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
166         event.downloadStartEventId = downloadStartEventId;
167     }
168 
GetDownloadStartEventId()169     const EventMarker& GetDownloadStartEventId() const
170     {
171         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
172         return event.downloadStartEventId;
173     }
174 
SetRequestFocusEventId(const EventMarker & requestFocusEventId)175     void SetRequestFocusEventId(const EventMarker& requestFocusEventId)
176     {
177         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
178         event.requestFocusEventId = requestFocusEventId;
179     }
180 
GetRequestFocusEventId()181     const EventMarker& GetRequestFocusEventId() const
182     {
183         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
184         return event.requestFocusEventId;
185     }
186 
SetPageErrorEventId(const EventMarker & pageErrorEventId)187     void SetPageErrorEventId(const EventMarker& pageErrorEventId)
188     {
189         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
190         event.pageErrorEventId = pageErrorEventId;
191     }
192 
GetPageErrorEventId()193     const EventMarker& GetPageErrorEventId() const
194     {
195         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
196         return event.pageErrorEventId;
197     }
198 
SetHttpErrorEventId(const EventMarker & httpErrorEventId)199     void SetHttpErrorEventId(const EventMarker& httpErrorEventId)
200     {
201         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
202         event.httpErrorEventId = httpErrorEventId;
203     }
204 
GetHttpErrorEventId()205     const EventMarker& GetHttpErrorEventId() const
206     {
207         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
208         return event.httpErrorEventId;
209     }
210 
SetMessageEventId(const EventMarker & messageEventId)211     void SetMessageEventId(const EventMarker& messageEventId)
212     {
213         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
214         event.messageEventId = messageEventId;
215     }
216 
GetMessageEventId()217     const EventMarker& GetMessageEventId() const
218     {
219         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
220         return event.messageEventId;
221     }
222 
SetRenderExitedId(const EventMarker & renderExitedEventId)223     void SetRenderExitedId(const EventMarker& renderExitedEventId)
224     {
225         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
226         event.renderExitedEventId = renderExitedEventId;
227     }
228 
GetRenderExitedId()229     const EventMarker& GetRenderExitedId() const
230     {
231         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
232         return event.renderExitedEventId;
233     }
234 
SetRefreshAccessedHistoryId(const EventMarker & refreshAccessedHistoryId)235     void SetRefreshAccessedHistoryId(const EventMarker& refreshAccessedHistoryId)
236     {
237         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
238         event.refreshAccessedHistoryId = refreshAccessedHistoryId;
239     }
240 
GetRefreshAccessedHistoryId()241     const EventMarker& GetRefreshAccessedHistoryId() const
242     {
243         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
244         return event.refreshAccessedHistoryId;
245     }
246 
SetResourceLoadId(const EventMarker & resourceLoadId)247     void SetResourceLoadId(const EventMarker& resourceLoadId)
248     {
249         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
250         event.resourceLoadId = resourceLoadId;
251     }
252 
GetResourceLoadId()253     const EventMarker& GetResourceLoadId() const
254     {
255         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
256         return event.resourceLoadId;
257     }
258 
SetScaleChangeId(const EventMarker & scaleChangeId)259     void SetScaleChangeId(const EventMarker& scaleChangeId)
260     {
261         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
262         event.scaleChangeId = scaleChangeId;
263     }
264 
GetScaleChangeId()265     const EventMarker& GetScaleChangeId() const
266     {
267         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
268         return event.scaleChangeId;
269     }
270 
SetScrollId(const EventMarker & scrollId)271     void SetScrollId(const EventMarker& scrollId)
272     {
273         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
274         event.scrollId = scrollId;
275     }
276 
GetScrollId()277     const EventMarker& GetScrollId() const
278     {
279         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
280         return event.scrollId;
281     }
282 
SetPermissionRequestEventId(const EventMarker & permissionRequestId)283     void SetPermissionRequestEventId(const EventMarker& permissionRequestId)
284     {
285         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
286         event.permissionRequestId = permissionRequestId;
287     }
288 
GetPermissionRequestEventId()289     const EventMarker& GetPermissionRequestEventId() const
290     {
291         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
292         return event.permissionRequestId;
293     }
294 
SetSearchResultReceiveEventId(const EventMarker & searchResultReceiveEventId)295     void SetSearchResultReceiveEventId(const EventMarker& searchResultReceiveEventId)
296     {
297         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
298         event.searchResultReceiveEventId = searchResultReceiveEventId;
299     }
300 
GetSearchResultReceiveEventId()301     const EventMarker& GetSearchResultReceiveEventId() const
302     {
303         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
304         return event.searchResultReceiveEventId;
305     }
306 
SetWindowExitEventId(const EventMarker & windowExitId)307     void SetWindowExitEventId(const EventMarker& windowExitId)
308     {
309         auto& event = MaybeResetEvent<WebEvent>(EventTag::SPECIALIZED_EVENT);
310         event.windowExitId = windowExitId;
311     }
312 
GetWindowExitEventId()313     const EventMarker& GetWindowExitEventId() const
314     {
315         auto& event = static_cast<WebEvent&>(GetEvent(EventTag::SPECIALIZED_EVENT));
316         return event.windowExitId;
317     }
318 
319 protected:
320     void InitSpecialized() override;
321     bool SetSpecializedAttr(const std::pair<std::string, std::string>& attr) override;
322     bool SetSpecializedEvent(int32_t pageId, const std::string& eventId, const std::string& event) override;
323     void CallSpecializedMethod(const std::string& method, const std::string& args) override;
324 };
325 
326 } // namespace OHOS::Ace
327 
328 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_WEB_WEB_DECLARATION_H
329