X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fdevel-api%2Fadaptor-framework%2Fweb-engine-plugin.h;h=bbfa6f658be82d1566ae9a103664ef74ad8a009b;hb=aadc3293fd8e560de900b542f5fe92a77db8c3f5;hp=ea6339e594a81f29ce3657065d96f5d41673b82c;hpb=a56f496f5e55d85eb0ca6390650ede8e378b772d;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/devel-api/adaptor-framework/web-engine-plugin.h b/dali/devel-api/adaptor-framework/web-engine-plugin.h index ea6339e..bbfa6f6 100644 --- a/dali/devel-api/adaptor-framework/web-engine-plugin.h +++ b/dali/devel-api/adaptor-framework/web-engine-plugin.h @@ -19,10 +19,12 @@ */ // EXTERNAL INCLUDES +#include #include #include #include #include +#include namespace Dali { @@ -30,8 +32,13 @@ class KeyEvent; class PixelData; class TouchEvent; class WebEngineBackForwardList; +class WebEngineConsoleMessage; class WebEngineContext; class WebEngineCookieManager; +class WebEngineFormRepostDecision; +class WebEngineLoadError; +class WebEnginePolicyDecision; +class WebEngineRequestInterceptor; class WebEngineSettings; class HoverEvent; class WheelEvent; @@ -51,7 +58,7 @@ public: /** * @brief WebView signal type related with page loading error. */ - using WebEnginePageLoadErrorSignalType = Signal; + using WebEnginePageLoadErrorSignalType = Signal)>; // forward declaration. enum class ScrollEdge; @@ -67,6 +74,34 @@ public: using WebEngineUrlChangedSignalType = Signal; /** + * @brief WebView signal type related with screen captured. + */ + using ScreenshotCapturedCallback = std::function; + + /** + * @brief WebView signal type related with geolocation permission. + * Host and protocol of security origin will be provided when requesting + * geolocation permission. + * It returns true if a pop-up is created successfully, false otherwise. + */ + using GeolocationPermissionCallback = std::function; + + /** + * @brief WebView signal type related with video playing. + */ + using VideoPlayingCallback = std::function; + + /** + * @brief WebView signal type related with http request interceptor. + */ + using WebEngineRequestInterceptorSignalType = Signal)>; + + /** + * @brief WebView signal type related with console message will be logged. + */ + using WebEngineConsoleMessageSignalType = Signal)>; + + /** * @brief Alert callback when JavaScript alert is called with a message. * It returns true if a pop-up is created successfully, false otherwise. */ @@ -86,6 +121,21 @@ public: using JavaScriptPromptCallback = std::function; /** + * @brief WebView signal type related with form repost decision. + */ + using WebEngineFormRepostDecisionSignalType = Signal)>; + + /** + * @brief WebView signal type related with frame rendered. + */ + using WebEngineFrameRenderedSignalType = Signal; + + /** + * @brief WebView signal type related with policy would be decided. + */ + using WebEnginePolicyDecisionSignalType = Signal)>; + + /** * @brief Enumeration for the scroll edge. */ enum class ScrollEdge @@ -97,6 +147,22 @@ public: }; /** + * @brief Enumeration that provides the option to find text. + */ + enum class FindOption + { + NONE = 0, ///< No search flags, this means a case sensitive, no wrap, forward only search + CASE_INSENSITIVE = 1 << 0, ///< Case insensitive search + AT_WORD_STARTS = 1 << 1, ///< Search text only at the beginning of the words + TREAT_MEDIAL_CAPITAL_AS_WORD_START = 1 << 2, ///< Treat capital letters in the middle of words as word start + BACKWARDS = 1 << 3, ///< Search backwards + WRAP_AROUND = 1 << 4, ///< If not present the search stops at the end of the document + SHOW_OVERLAY = 1 << 5, ///< Show overlay + SHOW_FIND_INDICATOR = 1 << 6, ///< Show indicator + SHOW_HIGHLIGHT = 1 << 7, ///< Show highlight + }; + + /** * @brief Constructor. */ WebEnginePlugin() = default; @@ -107,7 +173,7 @@ public: virtual ~WebEnginePlugin() = default; /** - * @brief Creates WebEngine instance. + * @brief Create WebEngine instance. * * @param [in] width The width of Web * @param [in] height The height of Web @@ -117,7 +183,7 @@ public: virtual void Create(int width, int height, const std::string& locale, const std::string& timezoneId) = 0; /** - * @brief Creates WebEngine instance. + * @brief Create WebEngine instance. * * @param [in] width The width of Web * @param [in] height The height of Web @@ -127,7 +193,7 @@ public: virtual void Create(int width, int height, int argc, char** argv) = 0; /** - * @brief Destroys WebEngine instance. + * @brief Destroy WebEngine instance. */ virtual void Destroy() = 0; @@ -152,28 +218,28 @@ public: virtual WebEngineBackForwardList& GetBackForwardList() const = 0; /** - * @brief Loads a web page based on a given URL. + * @brief Load a web page based on a given URL. * * @param [in] url The URL of the resource to load */ virtual void LoadUrl(const std::string& url) = 0; /** - * @brief Returns the title of the Web. + * @brief Return the title of the Web. * * @return The title of web page */ virtual std::string GetTitle() const = 0; /** - * @brief Returns the Favicon of the Web. + * @brief Return the Favicon of the Web. * * @return Favicon of Dali::PixelData& type */ virtual Dali::PixelData GetFavicon() const = 0; /** - * @brief Gets image to render. + * @brief Get image to render. */ virtual NativeImageInterfacePtr GetNativeImageSource() = 0; @@ -185,78 +251,165 @@ public: virtual const std::string& GetUrl() = 0; /** - * @brief Loads a given string as web contents. + * @brief Load a given string as web contents. * * @param [in] htmlString The string to use as the contents of the web page */ virtual void LoadHtmlString(const std::string& htmlString) = 0; /** - * @brief Reloads the Web. + * @brief Load the specified html string as the content of the view overriding current history entry + * + * @param[in] html HTML data to load + * @param[in] basicUri Base URL used for relative paths to external objects + * @param[in] unreachableUrl URL that could not be reached + * + * @return true if successfully loaded, false otherwise + */ + virtual bool LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl) = 0; + + /** + * @brief Request loading the given contents by MIME type into the view object + * + * @param[in] contents The content to load + * @param[in] contentSize The size of contents (in bytes) + * @param[in] mimeType The type of contents, if 0 is given "text/html" is assumed + * @param[in] encoding The encoding for contents, if 0 is given "UTF-8" is assumed + * @param[in] baseUri The base URI to use for relative resources + * + * @return true if successfully request, false otherwise + */ + virtual bool LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri) = 0; + + /** + * @brief Reload the Web. */ virtual void Reload() = 0; /** - * @brief Stops loading web contents on the current page. + * @brief Reload the current page's document without cache + */ + virtual bool ReloadWithoutCache() = 0; + + /** + * @brief Stop loading web contents on the current page. */ virtual void StopLoading() = 0; /** - * @brief Suspends the operation associated with the view. + * @brief Suspend the operation associated with the view. */ virtual void Suspend() = 0; /** - * @brief Resumes the operation associated with the view object after calling Suspend(). + * @brief Resume the operation associated with the view object after calling Suspend(). */ virtual void Resume() = 0; /** - * @brief Scrolls the webpage of view by deltaX and deltaY. + * @brief To suspend all url loading + */ + virtual void SuspendNetworkLoading() = 0; + + /** + * @brief To resume new url network loading + */ + virtual void ResumeNetworkLoading() = 0; + + /** + * @brief Add custom header + * + * @param[in] name custom header name to add the custom header + * @param[in] value custom header value to add the custom header + * + * @return true if succeeded, false otherwise + */ + virtual bool AddCustomHeader(const std::string& name, const std::string& value) = 0; + + /** + * @brief Remove custom header + * + * @param[in] name custom header name to remove the custom header + * + * @return true if succeeded, false otherwise + */ + virtual bool RemoveCustomHeader(const std::string& name) = 0; + + /** + * @brief Start the inspector server + * + * @param[in] port port number + * + * @return the port number + */ + virtual uint32_t StartInspectorServer(uint32_t port) = 0; + + /** + * @brief Stop the inspector server + * + * @return true if succeeded, false otherwise + */ + virtual bool StopInspectorServer() = 0; + + /** + * @brief Scroll web page of view by deltaX and deltaY. + * + * @param[in] deltaX horizontal offset to scroll + * @param[in] deltaY vertical offset to scroll */ virtual void ScrollBy(int deltaX, int deltaY) = 0; /** + * @brief Scroll edge of view by deltaX and deltaY. + * + * @param[in] deltaX horizontal offset to scroll + * @param[in] deltaY vertical offset to scroll + * + * @return true if succeeded, false otherwise + */ + virtual bool ScrollEdgeBy(int deltaX, int deltaY) = 0; + + /** * @brief Scroll to the specified position of the given view. */ virtual void SetScrollPosition(int x, int y) = 0; /** - * @brief Gets the current scroll position of the given view. + * @brief Get the current scroll position of the given view. */ virtual Dali::Vector2 GetScrollPosition() const = 0; /** - * @brief Gets the possible scroll size of the given view. + * @brief Get the possible scroll size of the given view. */ virtual Dali::Vector2 GetScrollSize() const = 0; /** - * @brief Gets the last known content's size. + * @brief Get the last known content's size. */ virtual Dali::Vector2 GetContentSize() const = 0; /** - * @brief Returns whether forward is possible. + * @brief Return whether forward is possible. * * @return True if forward is possible, false otherwise */ virtual bool CanGoForward() = 0; /** - * @brief Goes to forward. + * @brief Go to forward. */ virtual void GoForward() = 0; /** - * @brief Returns whether backward is possible. + * @brief Return whether backward is possible. * * @return True if backward is possible, false otherwise */ virtual bool CanGoBack() = 0; /** - * @brief Goes to back. + * @brief Go to back. */ virtual void GoBack() = 0; @@ -298,27 +451,27 @@ public: /** * @brief Reply for JavaScript confirm. */ - virtual void JavaScriptConfirmReply( bool confirmed ) = 0; + virtual void JavaScriptConfirmReply(bool confirmed) = 0; /** * @brief Register a callback for JavaScript prompt. * * @param[in] callback The callback function */ - virtual void RegisterJavaScriptPromptCallback( JavaScriptPromptCallback callback ) = 0; + virtual void RegisterJavaScriptPromptCallback(JavaScriptPromptCallback callback) = 0; /** * @brief Reply for JavaScript prompt. */ - virtual void JavaScriptPromptReply( const std::string& result ) = 0; + virtual void JavaScriptPromptReply(const std::string& result) = 0; /** - * @brief Clears the history of Web. + * @brief Clear the history of Web. */ virtual void ClearHistory() = 0; /** - * @brief Clears all tiles resources of Web. + * @brief Clear all tiles resources of Web. */ virtual void ClearAllTilesResources() = 0; @@ -342,12 +495,47 @@ public: virtual void SetSize(int width, int height) = 0; /** - * @brief Sends Touch Events. + * @brief Set background color of web page. + * + * @param[in] color Background color + */ + virtual void SetDocumentBackgroundColor(Dali::Vector4 color) = 0; + + /** + * @brief Clear tiles when hidden. + * + * @param[in] cleared Whether tiles are cleared or not + */ + virtual void ClearTilesWhenHidden(bool cleared) = 0; + + /** + * @brief Set multiplier of cover area of tile. + * + * @param[in] multiplier The multiplier of cover area + */ + virtual void SetTileCoverAreaMultiplier(float multiplier) = 0; + + /** + * @brief Enable cursor by client. + * + * @param[in] enabled Whether cursor is enabled or not + */ + virtual void EnableCursorByClient(bool enabled) = 0; + + /** + * @brief Get the selected text. + * + * @return the selected text + */ + virtual std::string GetSelectedText() const = 0; + + /** + * @brief Send Touch Events. */ virtual bool SendTouchEvent(const TouchEvent& touch) = 0; /** - * @brief Sends Key Events. + * @brief Send Key Events. */ virtual bool SendKeyEvent(const KeyEvent& event) = 0; @@ -355,21 +543,132 @@ public: * @brief Support mouse events or not. * @param[in] enabled True if enabled, false othewise. */ - virtual void EnableMouseEvents( bool enabled ) = 0; + virtual void EnableMouseEvents(bool enabled) = 0; /** * @brief Support key events or not. * @param[in] enabled True if enabled, false othewise. */ - virtual void EnableKeyEvents( bool enabled ) = 0; + virtual void EnableKeyEvents(bool enabled) = 0; /** - * @brief Sets focus. + * @brief Set focus. * @param[in] focused True if focus is gained, false lost. */ virtual void SetFocus(bool focused) = 0; /** + * @brief Set zoom factor of the current page. + * @param[in] zoomFactor a new factor to be set. + */ + virtual void SetPageZoomFactor(float zoomFactor) = 0; + + /** + * @brief Query the current zoom factor of the page。 + * @return The current page zoom factor. + */ + virtual float GetPageZoomFactor() const = 0; + + /** + * @brief Set the current text zoom level。. + * @param[in] zoomFactor a new factor to be set. + */ + virtual void SetTextZoomFactor(float zoomFactor) = 0; + + /** + * @brief Get the current text zoom level. + * @return The current text zoom factor. + */ + virtual float GetTextZoomFactor() const = 0; + + /** + * @brief Get the current load progress of the page. + * @return The load progress of the page. + */ + virtual float GetLoadProgressPercentage() const = 0; + + /** + * @brief Scale the current page, centered at the given point. + * @param[in] scaleFactor a new factor to be scaled. + * @param[in] point a center coordinate. + */ + virtual void SetScaleFactor(float scaleFactor, Dali::Vector2 point) = 0; + + /** + * @brief Get the current scale factor of the page. + * @return The current scale factor. + */ + virtual float GetScaleFactor() const = 0; + + /** + * @brief Request to activate/deactivate the accessibility usage set by web app. + * @param[in] activated Activate accessibility or not. + */ + virtual void ActivateAccessibility(bool activated) = 0; + + /** + * @brief Request to set the current page's visibility. + * @param[in] visible Visible or not. + * + * @return true if succeeded, false otherwise + */ + virtual bool SetVisibility(bool visible) = 0; + + /** + * @brief Search and highlight the given string in the document. + * @param[in] text The text to find + * @param[in] options The options to find + * @param[in] maxMatchCount The maximum match count to find + * + * @return true if found & highlighted, false otherwise + */ + virtual bool HighlightText(const std::string& text, FindOption options, uint32_t maxMatchCount) = 0; + + /** + * @brief Add dynamic certificate path. + * @param[in] host host that required client authentication + * @param[in] certPath the file path stored certificate + */ + virtual void AddDynamicCertificatePath(const std::string& host, const std::string& certPath) = 0; + + /** + * @brief Get snapshot of the specified viewArea of page. + * + * @param[in] viewArea The rectangle of screen shot + * @param[in] scaleFactor The scale factor + * + * @return pixel data of screen shot + */ + virtual Dali::PixelData GetScreenshot(Dali::Rect viewArea, float scaleFactor) = 0; + + /** + * @brief Request to get snapshot of the specified viewArea of page asynchronously. + * + * @param[in] viewArea The rectangle of screen shot + * @param[in] scaleFactor The scale factor + * @param[in] callback The callback for screen shot + * + * @return true if requested successfully, false otherwise + */ + virtual bool GetScreenshotAsynchronously(Dali::Rect viewArea, float scaleFactor, ScreenshotCapturedCallback callback) = 0; + + /** + * @brief Asynchronously request to check if there is a video playing in the given view. + * + * @param[in] callback The callback called after checking if video is playing or not + * + * @return true if requested successfully, false otherwise + */ + virtual bool CheckVideoPlayingAsynchronously(VideoPlayingCallback callback) = 0; + + /** + * @brief Set callback which will be called upon geolocation permission request. + * + * @param[in] callback The callback for requesting geolocation permission + */ + virtual void RegisterGeolocationPermissionCallback(GeolocationPermissionCallback callback) = 0; + + /** * @brief Update display area. * @param[in] displayArea The display area need be updated. */ @@ -382,59 +681,100 @@ public: virtual void EnableVideoHole(bool enabled) = 0; /** - * @brief Sends Hover Events. + * @brief Send Hover Events. * @param[in] event The hover event would be sent. */ - virtual bool SendHoverEvent( const HoverEvent& event ) = 0; + virtual bool SendHoverEvent(const HoverEvent& event) = 0; /** - * @brief Sends Wheel Events. + * @brief Send Wheel Events. * @param[in] event The wheel event would be sent. */ - virtual bool SendWheelEvent( const WheelEvent& event ) = 0; + virtual bool SendWheelEvent(const WheelEvent& event) = 0; /** - * @brief Connects to this signal to be notified when page loading is started. + * @brief Connect to this signal to be notified when page loading is started. * * @return A signal object to connect with. */ virtual WebEnginePageLoadSignalType& PageLoadStartedSignal() = 0; /** - * @brief Connects to this signal to be notified when page loading is in progress. + * @brief Connect to this signal to be notified when page loading is in progress. * * @return A signal object to connect with. */ virtual WebEnginePageLoadSignalType& PageLoadInProgressSignal() = 0; /** - * @brief Connects to this signal to be notified when page loading is finished. + * @brief Connect to this signal to be notified when page loading is finished. * * @return A signal object to connect with. */ virtual WebEnginePageLoadSignalType& PageLoadFinishedSignal() = 0; /** - * @brief Connects to this signal to be notified when an error occurs in page loading. + * @brief Connect to this signal to be notified when an error occurs in page loading. * * @return A signal object to connect with. */ virtual WebEnginePageLoadErrorSignalType& PageLoadErrorSignal() = 0; /** - * @brief Connects to this signal to be notified when scroll edge is reached. + * @brief Connect to this signal to be notified when scroll edge is reached. * * @return A signal object to connect with. */ virtual WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal() = 0; /** - * @brief Connects to this signal to be notified when url is changed. + * @brief Connect to this signal to be notified when url is changed. * * @return A signal object to connect with. */ virtual WebEngineUrlChangedSignalType& UrlChangedSignal() = 0; + /** + * @brief Connect to this signal to be notified when form repost decision is requested. + * + * @return A signal object to connect with. + */ + virtual WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal() = 0; + + /** + * @brief Connect to this signal to be notified when frame is rendered. + * + * @return A signal object to connect with. + */ + virtual WebEngineFrameRenderedSignalType& FrameRenderedSignal() = 0; + + /** + * @brief Connects to this signal to be notified when http request need be intercepted. + * + * @return A signal object to connect with. + */ + virtual WebEngineRequestInterceptorSignalType& RequestInterceptorSignal() = 0; + + /** + * @brief Connect to this signal to be notified when console message will be logged. + * + * @return A signal object to connect with. + */ + virtual WebEngineConsoleMessageSignalType& ConsoleMessageSignal() = 0; + + /** + * @brief Connects to this signal to be notified when new policy would be decided. + * + * @return A signal object to connect with. + */ + virtual WebEnginePolicyDecisionSignalType& PolicyDecisionSignal() = 0; +}; + +// specialization has to be done in the same namespace +template<> +struct EnableBitMaskOperators +{ + static const bool ENABLE = true; }; } // namespace Dali