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