Merge "Update ATSPI code according to DALi coding rule" into devel/master
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / web-engine-plugin.h
1 #ifndef DALI_WEB_ENGINE_PLUGIN_H
2 #define DALI_WEB_ENGINE_PLUGIN_H
3
4 /*
5  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <functional>
23 #include <memory>
24
25 // INTERNAL INCLUDES
26 #include <dali/devel-api/adaptor-framework/web-engine-hit-test.h>
27 #include <dali/devel-api/common/bitwise-enum.h>
28 #include <dali/public-api/images/native-image-interface.h>
29 #include <dali/public-api/math/rect.h>
30 #include <dali/public-api/signals/dali-signal.h>
31
32 namespace Dali
33 {
34 class KeyEvent;
35 class PixelData;
36 class TouchEvent;
37 class WebEngineBackForwardList;
38 class WebEngineCertificate;
39 class WebEngineConsoleMessage;
40 class WebEngineContext;
41 class WebEngineContextMenu;
42 class WebEngineCookieManager;
43 class WebEngineFormRepostDecision;
44 class WebEngineHitTest;
45 class WebEngineHttpAuthHandler;
46 class WebEngineLoadError;
47 class WebEnginePolicyDecision;
48 class WebEngineRequestInterceptor;
49 class WebEngineSettings;
50 class HoverEvent;
51 class WheelEvent;
52
53 /**
54  * @brief WebEnginePlugin is an abstract interface, used by dali-adaptor to access WebEngine plugin.
55  * A concrete implementation must be created for each platform and provided as dynamic library.
56  */
57 class WebEnginePlugin
58 {
59 public:
60   /**
61    * @brief WebEngine signal type related with page loading.
62    */
63   using WebEnginePageLoadSignalType = Signal<void(const std::string&)>;
64
65   /**
66    * @brief WebView signal type related with page loading error.
67    */
68   using WebEnginePageLoadErrorSignalType = Signal<void(std::shared_ptr<Dali::WebEngineLoadError>)>;
69
70   // forward declaration.
71   enum class ScrollEdge;
72
73   /**
74    * @brief WebView signal type related with scroll edge reached.
75    */
76   using WebEngineScrollEdgeReachedSignalType = Signal<void(const ScrollEdge)>;
77
78   /**
79    * @brief WebView signal type related with page url changed.
80    */
81   using WebEngineUrlChangedSignalType = Signal<void(const std::string&)>;
82
83   /**
84    * @brief WebView signal type related with screen captured.
85    */
86   using ScreenshotCapturedCallback = std::function<void(Dali::PixelData)>;
87
88   /**
89    * @brief WebView signal type related with geolocation permission.
90    *  Host and protocol of security origin will be provided when requesting
91    *  geolocation permission.
92    *  It returns true if a pop-up is created successfully, false otherwise.
93    */
94   using GeolocationPermissionCallback = std::function<bool(const std::string&, const std::string&)>;
95
96   /**
97    * @brief WebView signal type related with video playing.
98    */
99   using VideoPlayingCallback = std::function<void(bool)>;
100
101   /**
102    * @brief WebView signal type related with http request interceptor.
103    */
104   using WebEngineRequestInterceptorSignalType = Signal<void(std::shared_ptr<Dali::WebEngineRequestInterceptor>)>;
105
106   /**
107    * @brief WebView signal type related with console message logged.
108    */
109   using WebEngineConsoleMessageSignalType = Signal<void(std::shared_ptr<Dali::WebEngineConsoleMessage>)>;
110
111   /**
112    * @brief WebView signal type related with certificate changed.
113    */
114   using WebEngineCertificateSignalType = Signal<void(std::shared_ptr<Dali::WebEngineCertificate>)>;
115
116   /**
117    * @brief WebView signal type related with http authentication.
118    */
119   using WebEngineHttpAuthHandlerSignalType = Signal<void(std::shared_ptr<Dali::WebEngineHttpAuthHandler>)>;
120
121   /**
122    * @brief WebView signal type related with context menu shown.
123    */
124   using WebEngineContextMenuShownSignalType = Signal<void(std::shared_ptr<Dali::WebEngineContextMenu>)>;
125
126   /**
127    * @brief WebView signal type related with context menu hidden.
128    */
129   using WebEngineContextMenuHiddenSignalType = Signal<void(std::shared_ptr<Dali::WebEngineContextMenu>)>;
130
131   /**
132    * @brief Alert callback when JavaScript alert is called with a message.
133    *  It returns true if a pop-up is created successfully, false otherwise.
134    */
135   using JavaScriptAlertCallback = std::function<bool(const std::string&)>;
136
137   /**
138    * @brief Confirm callback when JavaScript confirm is called with a message.
139    *  It returns true if a pop-up is created successfully, false otherwise.
140    */
141   using JavaScriptConfirmCallback = std::function<bool(const std::string&)>;
142
143   /**
144    * @brief Prompt callback when JavaScript prompt is called with a message
145    *  and an optional value that is the default value for the input field.
146    *  It returns true if a pop-up is created successfully, false otherwise.
147    */
148   using JavaScriptPromptCallback = std::function<bool(const std::string&, const std::string&)>;
149
150   /**
151    * @brief WebView signal type related with form repost decision.
152    */
153   using WebEngineFormRepostDecisionSignalType = Signal<void(std::shared_ptr<Dali::WebEngineFormRepostDecision>)>;
154
155   /**
156    * @brief WebView signal type related with frame rendered.
157    */
158   using WebEngineFrameRenderedSignalType = Signal<void(void)>;
159
160   /**
161    * @brief WebView signal type related with response policy would be decided.
162    */
163   using WebEngineResponsePolicyDecisionSignalType = Signal<void(std::shared_ptr<Dali::WebEnginePolicyDecision>)>;
164
165   /**
166    * @brief Hit test callback called after hit test is created asynchronously.
167    */
168   using WebEngineHitTestCreatedCallback = std::function<bool(std::unique_ptr<Dali::WebEngineHitTest>)>;
169
170   /**
171    * @brief Enumeration for the scroll edge.
172    */
173   enum class ScrollEdge
174   {
175     LEFT,   ///< Left edge reached.
176     RIGHT,  ///< Right edge reached.
177     TOP,    ///< Top edge reached.
178     BOTTOM, ///< Bottom edge reached.
179   };
180
181   /**
182    * @brief Enumeration that provides the option to find text.
183    */
184   enum class FindOption
185   {
186     NONE                               = 0,      ///<  No search flags, this means a case sensitive, no wrap, forward only search
187     CASE_INSENSITIVE                   = 1 << 0, ///<  Case insensitive search
188     AT_WORD_STARTS                     = 1 << 1, ///<  Search text only at the beginning of the words
189     TREAT_MEDIAL_CAPITAL_AS_WORD_START = 1 << 2, ///<  Treat capital letters in the middle of words as word start
190     BACKWARDS                          = 1 << 3, ///<  Search backwards
191     WRAP_AROUND                        = 1 << 4, ///<  If not present the search stops at the end of the document
192     SHOW_OVERLAY                       = 1 << 5, ///<  Show overlay
193     SHOW_FIND_INDICATOR                = 1 << 6, ///<  Show indicator
194     SHOW_HIGHLIGHT                     = 1 << 7, ///<  Show highlight
195   };
196
197   /**
198    * @brief Constructor.
199    */
200   WebEnginePlugin() = default;
201
202   /**
203    * @brief Destructor.
204    */
205   virtual ~WebEnginePlugin() = default;
206
207   /**
208    * @brief Create WebEngine instance.
209    *
210    * @param [in] width The width of Web
211    * @param [in] height The height of Web
212    * @param [in] locale The locale of Web
213    * @param [in] timezoneId The timezoneID of Web
214    */
215   virtual void Create(uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId) = 0;
216
217   /**
218    * @brief Create WebEngine instance.
219    *
220    * @param [in] width The width of Web
221    * @param [in] height The height of Web
222    * @param [in] argc The count of application arguments
223    * @param [in] argv The string array of application arguments
224    */
225   virtual void Create(uint32_t width, uint32_t height, uint32_t argc, char** argv) = 0;
226
227   /**
228    * @brief Destroy WebEngine instance.
229    */
230   virtual void Destroy() = 0;
231
232   /**
233    * @brief Get settings of WebEngine.
234    */
235   virtual WebEngineSettings& GetSettings() const = 0;
236
237   /**
238    * @brief Get context of WebEngine.
239    */
240   virtual WebEngineContext& GetContext() const = 0;
241
242   /**
243    * @brief Get cookie manager of WebEngine.
244    */
245   virtual WebEngineCookieManager& GetCookieManager() const = 0;
246
247   /**
248    * @brief Get back-forward list of WebEngine.
249    */
250   virtual WebEngineBackForwardList& GetBackForwardList() const = 0;
251
252   /**
253    * @brief Load a web page based on a given URL.
254    *
255    * @param [in] url The URL of the resource to load
256    */
257   virtual void LoadUrl(const std::string& url) = 0;
258
259   /**
260    * @brief Return the title of the Web.
261    *
262    * @return The title of web page
263    */
264   virtual std::string GetTitle() const = 0;
265
266   /**
267    * @brief Return the Favicon of the Web.
268    *
269    * @return Favicon of Dali::PixelData& type
270    */
271   virtual Dali::PixelData GetFavicon() const = 0;
272
273   /**
274    * @brief Get image to render.
275    */
276   virtual NativeImageInterfacePtr GetNativeImageSource() = 0;
277
278   /**
279    * @brief Return the URL of the Web.
280    *
281    * @return Url of string type
282    */
283   virtual std::string GetUrl() const = 0;
284
285   /**
286    * @brief Load a given string as web contents.
287    *
288    * @param [in] htmlString The string to use as the contents of the web page
289    */
290   virtual void LoadHtmlString(const std::string& htmlString) = 0;
291
292   /**
293    * @brief Load the specified html string as the content of the view overriding current history entry
294    *
295    * @param[in] html HTML data to load
296    * @param[in] basicUri Base URL used for relative paths to external objects
297    * @param[in] unreachableUrl URL that could not be reached
298    *
299    * @return true if successfully loaded, false otherwise
300    */
301   virtual bool LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl) = 0;
302
303   /**
304    * @brief Request loading the given contents by MIME type into the view object
305    *
306    * @param[in] contents The content to load
307    * @param[in] contentSize The size of contents (in bytes)
308    * @param[in] mimeType The type of contents, if 0 is given "text/html" is assumed
309    * @param[in] encoding The encoding for contents, if 0 is given "UTF-8" is assumed
310    * @param[in] baseUri The base URI to use for relative resources
311    *
312    * @return true if successfully request, false otherwise
313    */
314   virtual bool LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri) = 0;
315
316   /**
317    * @brief Reload the Web.
318    */
319   virtual void Reload() = 0;
320
321   /**
322    * @brief Reload the current page's document without cache
323    */
324   virtual bool ReloadWithoutCache() = 0;
325
326   /**
327    * @brief Stop loading web contents on the current page.
328    */
329   virtual void StopLoading() = 0;
330
331   /**
332    * @brief Suspend the operation associated with the view.
333    */
334   virtual void Suspend() = 0;
335
336   /**
337    * @brief Resume the operation associated with the view object after calling Suspend().
338    */
339   virtual void Resume() = 0;
340
341   /**
342    * @brief To suspend all url loading
343    */
344   virtual void SuspendNetworkLoading() = 0;
345
346   /**
347    * @brief To resume new url network loading
348    */
349   virtual void ResumeNetworkLoading() = 0;
350
351   /**
352    * @brief Add custom header
353    *
354    * @param[in] name custom header name to add the custom header
355    * @param[in] value custom header value to add the custom header
356    *
357    * @return true if succeeded, false otherwise
358    */
359   virtual bool AddCustomHeader(const std::string& name, const std::string& value) = 0;
360
361   /**
362    * @brief Remove custom header
363    *
364    * @param[in] name custom header name to remove the custom header
365    *
366    * @return true if succeeded, false otherwise
367    */
368   virtual bool RemoveCustomHeader(const std::string& name) = 0;
369
370   /**
371    * @brief Start the inspector server
372    *
373    * @param[in] port port number
374    *
375    * @return the port number
376    */
377   virtual uint32_t StartInspectorServer(uint32_t port) = 0;
378
379   /**
380    * @brief Stop the inspector server
381    *
382    * @return true if succeeded, false otherwise
383    */
384   virtual bool StopInspectorServer() = 0;
385
386   /**
387    * @brief Scroll web page of view by deltaX and deltaY.
388    *
389    * @param[in] deltaX horizontal offset to scroll
390    * @param[in] deltaY vertical offset to scroll
391    */
392   virtual void ScrollBy(int32_t deltaX, int32_t deltaY) = 0;
393
394   /**
395    * @brief Scroll edge of view by deltaX and deltaY.
396    *
397    * @param[in] deltaX horizontal offset to scroll
398    * @param[in] deltaY vertical offset to scroll
399    *
400    * @return true if succeeded, false otherwise
401    */
402   virtual bool ScrollEdgeBy(int32_t deltaX, int32_t deltaY) = 0;
403
404   /**
405    * @brief Scroll to the specified position of the given view.
406    */
407   virtual void SetScrollPosition(int32_t x, int32_t y) = 0;
408
409   /**
410    * @brief Get the current scroll position of the given view.
411    */
412   virtual Dali::Vector2 GetScrollPosition() const = 0;
413
414   /**
415    * @brief Get the possible scroll size of the given view.
416    */
417   virtual Dali::Vector2 GetScrollSize() const = 0;
418
419   /**
420    * @brief Get the last known content's size.
421    */
422   virtual Dali::Vector2 GetContentSize() const = 0;
423
424   /**
425    * @brief Return whether forward is possible.
426    *
427    * @return True if forward is possible, false otherwise
428    */
429   virtual bool CanGoForward() = 0;
430
431   /**
432    * @brief Go to forward.
433    */
434   virtual void GoForward() = 0;
435
436   /**
437    * @brief Return whether backward is possible.
438    *
439    * @return True if backward is possible, false otherwise
440    */
441   virtual bool CanGoBack() = 0;
442
443   /**
444    * @brief Go to back.
445    */
446   virtual void GoBack() = 0;
447
448   /**
449    * @brief Evaluate JavaScript code represented as a string.
450    *
451    * @param[in] script The JavaScript code
452    * @param[in] resultHandler The callback function to be called by the JavaScript runtime. This carries evaluation result.
453    */
454   virtual void EvaluateJavaScript(const std::string& script, std::function<void(const std::string&)> resultHandler) = 0;
455
456   /**
457    * @brief Add a message handler into JavaScript.
458    *
459    * @param[in] exposedObjectName The name of exposed object
460    * @param[in] handler The callback function
461    */
462   virtual void AddJavaScriptMessageHandler(const std::string& exposedObjectName, std::function<void(const std::string&)> handler) = 0;
463
464   /**
465    * @brief Register a callback for JavaScript alert.
466    *
467    * @param[in] callback The callback function
468    */
469   virtual void RegisterJavaScriptAlertCallback(JavaScriptAlertCallback callback) = 0;
470
471   /**
472    * @brief Reply for JavaScript alert.
473    */
474   virtual void JavaScriptAlertReply() = 0;
475
476   /**
477    * @brief Register a callback for JavaScript confirm.
478    *
479    * @param[in] callback The callback function
480    */
481   virtual void RegisterJavaScriptConfirmCallback(JavaScriptConfirmCallback callback) = 0;
482
483   /**
484    * @brief Reply for JavaScript confirm.
485    */
486   virtual void JavaScriptConfirmReply(bool confirmed) = 0;
487
488   /**
489    * @brief Register a callback for JavaScript prompt.
490    *
491    * @param[in] callback The callback function
492    */
493   virtual void RegisterJavaScriptPromptCallback(JavaScriptPromptCallback callback) = 0;
494
495   /**
496    * @brief Reply for JavaScript prompt.
497    */
498   virtual void JavaScriptPromptReply(const std::string& result) = 0;
499
500   /**
501    * @brief Create a new hit test.
502    *
503    * @param[in] x the horizontal position to query
504    * @param[in] y the vertical position to query
505    * @param[in] mode the mode of hit test
506    *
507    * @return a new hit test object.
508    */
509   virtual std::unique_ptr<Dali::WebEngineHitTest> CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode) = 0;
510
511   /**
512    * @brief create a hit test asynchronously.
513    *
514    * @param[in] x the horizontal position to query
515    * @param[in] y the vertical position to query
516    * @param[in] mode the mode of hit test
517    * @param[in] callback The callback function
518    *
519    * @return true if succeeded, false otherwise
520    */
521   virtual bool CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, WebEngineHitTestCreatedCallback callback) = 0;
522
523   /**
524    * @brief Clear the history of Web.
525    */
526   virtual void ClearHistory() = 0;
527
528   /**
529    * @brief Clear all tiles resources of Web.
530    */
531   virtual void ClearAllTilesResources() = 0;
532
533   /**
534    * @brief Get user agent string.
535    *
536    * @return The string value of user agent
537    */
538   virtual std::string GetUserAgent() const = 0;
539
540   /**
541    * @brief Set user agent string.
542    *
543    * @param[in] userAgent The string value of user agent
544    */
545   virtual void SetUserAgent(const std::string& userAgent) = 0;
546
547   /**
548    * @brief Set size of Web Page.
549    */
550   virtual void SetSize(uint32_t width, uint32_t height) = 0;
551
552   /**
553    * @brief Set background color of web page.
554    *
555    * @param[in] color Background color
556    */
557   virtual void SetDocumentBackgroundColor(Dali::Vector4 color) = 0;
558
559   /**
560    * @brief Clear tiles when hidden.
561    *
562    * @param[in] cleared Whether tiles are cleared or not
563    */
564   virtual void ClearTilesWhenHidden(bool cleared) = 0;
565
566   /**
567    * @brief Set multiplier of cover area of tile.
568    *
569    * @param[in] multiplier The multiplier of cover area
570    */
571   virtual void SetTileCoverAreaMultiplier(float multiplier) = 0;
572
573   /**
574    * @brief Enable cursor by client.
575    *
576    * @param[in] enabled Whether cursor is enabled or not
577    */
578   virtual void EnableCursorByClient(bool enabled) = 0;
579
580   /**
581    * @brief Get the selected text.
582    *
583    * @return the selected text
584    */
585   virtual std::string GetSelectedText() const = 0;
586
587   /**
588    * @brief Send Touch Events.
589    */
590   virtual bool SendTouchEvent(const TouchEvent& touch) = 0;
591
592   /**
593    * @brief Send Key Events.
594    */
595   virtual bool SendKeyEvent(const KeyEvent& event) = 0;
596
597   /**
598    * @brief Support mouse events or not.
599    * @param[in] enabled True if enabled, false othewise.
600    */
601   virtual void EnableMouseEvents(bool enabled) = 0;
602
603   /**
604    * @brief Support key events or not.
605    * @param[in] enabled True if enabled, false othewise.
606    */
607   virtual void EnableKeyEvents(bool enabled) = 0;
608
609   /**
610    * @brief Set focus.
611    * @param[in] focused True if focus is gained, false lost.
612    */
613   virtual void SetFocus(bool focused) = 0;
614
615   /**
616    * @brief Set zoom factor of the current page.
617    * @param[in] zoomFactor a new factor to be set.
618    */
619   virtual void SetPageZoomFactor(float zoomFactor) = 0;
620
621   /**
622    * @brief Query the current zoom factor of the page。
623    * @return The current page zoom factor.
624    */
625   virtual float GetPageZoomFactor() const = 0;
626
627   /**
628    * @brief Set the current text zoom level。.
629    * @param[in] zoomFactor a new factor to be set.
630    */
631   virtual void SetTextZoomFactor(float zoomFactor) = 0;
632
633   /**
634    * @brief Get the current text zoom level.
635    * @return The current text zoom factor.
636    */
637   virtual float GetTextZoomFactor() const = 0;
638
639   /**
640    * @brief Get the current load progress of the page.
641    * @return The load progress of the page.
642    */
643   virtual float GetLoadProgressPercentage() const = 0;
644
645   /**
646    * @brief Scale the current page, centered at the given point.
647    * @param[in] scaleFactor a new factor to be scaled.
648    * @param[in] point a center coordinate.
649    */
650   virtual void SetScaleFactor(float scaleFactor, Dali::Vector2 point) = 0;
651
652   /**
653    * @brief Get the current scale factor of the page.
654    * @return The current scale factor.
655    */
656   virtual float GetScaleFactor() const = 0;
657
658   /**
659    * @brief Request to activate/deactivate the accessibility usage set by web app.
660    * @param[in] activated Activate accessibility or not.
661    */
662   virtual void ActivateAccessibility(bool activated) = 0;
663
664   /**
665    * @brief Request to set the current page's visibility.
666    * @param[in] visible Visible or not.
667    *
668    * @return true if succeeded, false otherwise
669    */
670   virtual bool SetVisibility(bool visible) = 0;
671
672   /**
673    * @brief Search and highlight the given string in the document.
674    * @param[in] text The text to find
675    * @param[in] options The options to find
676    * @param[in] maxMatchCount The maximum match count to find
677    *
678    * @return true if found & highlighted, false otherwise
679    */
680   virtual bool HighlightText(const std::string& text, FindOption options, uint32_t maxMatchCount) = 0;
681
682   /**
683    * @brief Add dynamic certificate path.
684    * @param[in] host host that required client authentication
685    * @param[in] certPath the file path stored certificate
686    */
687   virtual void AddDynamicCertificatePath(const std::string& host, const std::string& certPath) = 0;
688
689   /**
690    * @brief Get snapshot of the specified viewArea of page.
691    *
692    * @param[in] viewArea The rectangle of screen shot
693    * @param[in] scaleFactor The scale factor
694    *
695    * @return pixel data of screen shot
696    */
697   virtual Dali::PixelData GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor) = 0;
698
699   /**
700    * @brief Request to get snapshot of the specified viewArea of page asynchronously.
701    *
702    * @param[in] viewArea The rectangle of screen shot
703    * @param[in] scaleFactor The scale factor
704    * @param[in] callback The callback for screen shot
705    *
706    * @return true if requested successfully, false otherwise
707    */
708   virtual bool GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, ScreenshotCapturedCallback callback) = 0;
709
710   /**
711    * @brief Asynchronously request to check if there is a video playing in the given view.
712    *
713    * @param[in] callback The callback called after checking if video is playing or not
714    *
715    * @return true if requested successfully, false otherwise
716    */
717   virtual bool CheckVideoPlayingAsynchronously(VideoPlayingCallback callback) = 0;
718
719   /**
720    * @brief Set callback which will be called upon geolocation permission request.
721    *
722    * @param[in] callback The callback for requesting geolocation permission
723    */
724   virtual void RegisterGeolocationPermissionCallback(GeolocationPermissionCallback callback) = 0;
725
726   /**
727    * @brief Update display area.
728    * @param[in] displayArea The display area need be updated.
729    */
730   virtual void UpdateDisplayArea(Dali::Rect<int32_t> displayArea) = 0;
731
732   /**
733    * @brief Enable video hole.
734    * @param[in] enabled True if enabled, false othewise.
735    */
736   virtual void EnableVideoHole(bool enabled) = 0;
737
738   /**
739    * @brief Send Hover Events.
740    * @param[in] event The hover event would be sent.
741    */
742   virtual bool SendHoverEvent(const HoverEvent& event) = 0;
743
744   /**
745    * @brief Send Wheel Events.
746    * @param[in] event The wheel event would be sent.
747    */
748   virtual bool SendWheelEvent(const WheelEvent& event) = 0;
749
750   /**
751    * @brief Connect to this signal to be notified when page loading is started.
752    *
753    * @return A signal object to connect with.
754    */
755   virtual WebEnginePageLoadSignalType& PageLoadStartedSignal() = 0;
756
757   /**
758    * @brief Connect to this signal to be notified when page loading is in progress.
759    *
760    * @return A signal object to connect with.
761    */
762   virtual WebEnginePageLoadSignalType& PageLoadInProgressSignal() = 0;
763
764   /**
765    * @brief Connect to this signal to be notified when page loading is finished.
766    *
767    * @return A signal object to connect with.
768    */
769   virtual WebEnginePageLoadSignalType& PageLoadFinishedSignal() = 0;
770
771   /**
772    * @brief Connect to this signal to be notified when an error occurs in page loading.
773    *
774    * @return A signal object to connect with.
775    */
776   virtual WebEnginePageLoadErrorSignalType& PageLoadErrorSignal() = 0;
777
778   /**
779    * @brief Connect to this signal to be notified when scroll edge is reached.
780    *
781    * @return A signal object to connect with.
782    */
783   virtual WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal() = 0;
784
785   /**
786    * @brief Connect to this signal to be notified when url is changed.
787    *
788    * @return A signal object to connect with.
789    */
790   virtual WebEngineUrlChangedSignalType& UrlChangedSignal() = 0;
791
792   /**
793    * @brief Connect to this signal to be notified when form repost decision is requested.
794    *
795    * @return A signal object to connect with.
796    */
797   virtual WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal() = 0;
798
799   /**
800    * @brief Connect to this signal to be notified when frame is rendered.
801    *
802    * @return A signal object to connect with.
803    */
804   virtual WebEngineFrameRenderedSignalType& FrameRenderedSignal() = 0;
805
806   /**
807    * @brief Connect to this signal to be notified when http request need be intercepted.
808    *
809    * @return A signal object to connect with.
810    */
811   virtual WebEngineRequestInterceptorSignalType& RequestInterceptorSignal() = 0;
812
813   /**
814    * @brief Connect to this signal to be notified when console message will be logged.
815    *
816    * @return A signal object to connect with.
817    */
818   virtual WebEngineConsoleMessageSignalType& ConsoleMessageSignal() = 0;
819
820   /**
821    * @brief Connect to this signal to be notified when response policy would be decided.
822    *
823    * @return A signal object to connect with.
824    */
825   virtual WebEngineResponsePolicyDecisionSignalType& ResponsePolicyDecisionSignal() = 0;
826
827   /**
828    * @brief Connect to this signal to be notified when certificate need be confirmed.
829    *
830    * @return A signal object to connect with.
831    */
832   virtual WebEngineCertificateSignalType& CertificateConfirmSignal() = 0;
833
834   /**
835    * @brief Connect to this signal to be notified when ssl certificate is changed.
836    *
837    * @return A signal object to connect with.
838    */
839   virtual WebEngineCertificateSignalType& SslCertificateChangedSignal() = 0;
840
841   /**
842    * @brief Connect to this signal to be notified when http authentication need be confirmed.
843    *
844    * @return A signal object to connect with.
845    */
846   virtual WebEngineHttpAuthHandlerSignalType& HttpAuthHandlerSignal() = 0;
847
848   /**
849    * @brief Connect to this signal to be notified when context menu would be shown.
850    *
851    * @return A signal object to connect with.
852    */
853   virtual WebEngineContextMenuShownSignalType& ContextMenuShownSignal() = 0;
854
855   /**
856    * @brief Connect to this signal to be notified when context menu would be hidden.
857    *
858    * @return A signal object to connect with.
859    */
860   virtual WebEngineContextMenuHiddenSignalType& ContextMenuHiddenSignal() = 0;
861 };
862
863 // specialization has to be done in the same namespace
864 template<>
865 struct EnableBitMaskOperators<WebEnginePlugin::FindOption>
866 {
867   static const bool ENABLE = true;
868 };
869
870 } // namespace Dali
871
872 #endif