2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FWebCtrlILoadingListener.h
20 * @brief This is the header file for the %ILoadingListener interface.
22 * This header file contains the declarations of the %ILoadingListener interface.
24 #ifndef _FWEB_CTRL_ILOADING_LISTENER_H_
25 #define _FWEB_CTRL_ILOADING_LISTENER_H_
27 #include <FBaseRtIEventListener.h>
28 #include <FBaseString.h>
30 namespace Tizen { namespace Graphics
35 namespace Tizen { namespace Net { namespace Http
38 }}} // Tizen::Neb::Http
40 namespace Tizen { namespace Web { namespace Controls
42 class AuthenticationChallenge;
43 }}} // Tizen::Web::Controls
45 namespace Tizen { namespace Web { namespace Controls
49 * @enum WebNavigationType
51 * Defines the type of %Web navigation.
55 enum WebNavigationType
57 WEB_NAVIGATION_LINK_CLICKED, /**< The clicking of a link on the page */
58 WEB_NAVIGATION_FORM_SUBMITTED, /**< The submission of a form */
59 WEB_NAVIGATION_BACKFORWARD, /**< The back and forward navigation*/
60 WEB_NAVIGATION_RELOAD, /**< The reloading of the page */
61 WEB_NAVIGATION_FORM_RESUBMITTED, /**< The resubmission of the form */
62 WEB_NAVIGATION_OTHER /**< A navigation other than any of the above */
66 * @enum LoadingErrorType
68 * Defines the types of loading errors.
74 WEB_ERROR_UNKNOWN, /**< An unknown error*/
75 WEB_REQUEST_TIMEOUT, /**< The request timeout */
76 WEB_NO_CONNECTION, /**< The network is not in service */
77 WEB_MIME_NOT_SUPPORTED, /**< The content type is not supported */
78 WEB_BAD_URL, /**< The URL is invalid */
79 WEB_HTTP_RESPONSE, /**< The hypertext transfer protocol (HTTP) response */
80 WEB_OUT_OF_MEMORY, /**< The memory is not enough to load the page */
81 WEB_FILE_ACCESS_FAILED, /**< The file access has failed */
82 WEB_REQUEST_MAX_EXCEEDED, /**< The request has failed because the total number of requests have exceeded the maximum limit */
83 WEB_INVALID_CERTIFICATE /**< The hypertext transfer protocol secure (HTTPS) request has failed due to an invalid certificate or CA */
87 * @enum DecisionPolicy
89 * Defines the decision policy.
95 WEB_DECISION_DOWNLOAD, /**< The download policy*/
96 WEB_DECISION_CONTINUE, /**< The usage policy*/
97 WEB_DECISION_IGNORE, /**< The ignore policy*/
101 * @interface ILoadingListener
102 * @brief This interface is for receiving the events that occur during the loading of data.
106 * The %ILoadingListener interface receives the events that occur during the loading of data.
107 * To listen to the events occurred during a data loading operation, implement this listener. If there is no
108 * registered load event listener, the browser engine handles these events according to its own settings.
110 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/web/controls_namespace.htm">Web Controls Guide</a>.
112 class _OSP_EXPORT_ ILoadingListener
113 : public virtual Tizen::Base::Runtime::IEventListener
117 * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called.
121 virtual ~ILoadingListener(void) {}
124 * Called when an authentication is requested.
128 * @return @c true if the ownership is taken by the application, @n
129 * else @c false, and a default dialog for the ID and password is displayed @n
130 * If this method returns @c true, the application must delete the AuthenticationChallenge instance.
131 * @param[in] host The host requiring the authentication
132 * @param[in] realm The description to help save the user credentials for future visits
133 * @param[in] authentication The handler to send a user response to the server that requested the authentication
135 virtual bool OnHttpAuthenticationRequestedN(const Tizen::Base::String& host, const Tizen::Base::String& realm, const Tizen::Web::Controls::AuthenticationChallenge& authentication) = 0;
138 * Called when the authentication request is cancelled.
142 virtual void OnHttpAuthenticationCanceled(void) = 0;
145 * Called when the loading operation starts.
149 virtual void OnLoadingStarted(void) = 0;
152 * Called when the loading operation is cancelled.
156 virtual void OnLoadingCanceled(void) = 0;
159 * Called when the loading operation fails.
163 * @param[in] error The error that occurred during loading
164 * @param[in] reason The reason for the loading failure:
165 * - @c WEB_HTTP_RESPONSE: The HTTP state code such as "404"
166 * - @c WEB_MIME_NOT_SUPPORTED: The Multipurpose Internet Mail Extensions (MIME) type such as "application/rdf+xml" is not supported.
167 * - @c WEB_BAD_URL: The URL is incorrect.
169 virtual void OnLoadingErrorOccurred(LoadingErrorType error, const Tizen::Base::String& reason) = 0;
172 * Called when the loading operation is completed.
176 virtual void OnLoadingCompleted(void) = 0;
179 * Called when the loading progress for the current page is requested. @n
180 * The progress rate is displayed as a percentage.
184 * @param[in] progress The progress rate ranging from [@c 0 to @c 100]
186 virtual void OnEstimatedProgress(int progress) = 0;
189 * Called when the title of the new page is received.
193 virtual void OnPageTitleReceived(const Tizen::Base::String& title) = 0;
196 * Called to notify an application of the URL to be requested. @n
197 * If an application wants to handle the URL, it must return @c true. If an application returns @c false, the request of the URL continues with the
202 * @return @c true if the application handles the URL after the request is canceled in the browser engine, @n
203 * else @c false if the browser engine proceeds with the requested URL
204 * @param[in] url The URL that is requested
205 * @param[in] type The type indicating how the URL is triggered
207 virtual bool OnLoadingRequested(const Tizen::Base::String& url, WebNavigationType type) = 0;
210 * Called to notify an application of the content type of the data to be downloaded. @n
211 * - To handle data by itself, the application must return @c WEB_DECISION_DOWNLOAD. The data is routed to IWebDownloadListener to be downloaded incrementally. @n
212 * - If an application returns @c WEB_DECISION_CONTINUE, the browser engine continues the downloading and tries to parse the data. @n
213 * - If an application returns @c WEB_DECISION_IGNORE, the browser engine cancels the downloading of the data.
217 * @return A value of the enumerator DecisionPolicy
218 * @param[in] mime The content type of the data that is downloaded
219 * @param[in] httpHeader The HTTP header string
221 virtual DecisionPolicy OnWebDataReceived(const Tizen::Base::String& mime, const Tizen::Net::Http::HttpHeader& httpHeader) = 0;
224 * Called when the favicon of the new page is received. @n
225 * If this callback is received once, an application can get favicon by using Tizen::Web::Controls::Web::GetFaviconN().
229 * @param[in] favicon The favicon image
230 * @see Tizen::Web::Controls::Web::GetFaviconN()
232 virtual void OnFaviconReceived(const Tizen::Graphics::Bitmap& favicon) {}
236 // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
238 // Gets the Impl instance.
242 virtual void ILoadingListener_Reserved1(void) {}
245 // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
247 // Gets the Impl instance.
251 virtual void ILoadingListener_Reserved2(void) {}
254 // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
256 // Gets the Impl instance.
260 virtual void ILoadingListener_Reserved3(void) {}
263 // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
265 // Gets the Impl instance.
269 virtual void ILoadingListener_Reserved4(void) {}
271 }; // ILoadingListener
273 }}} // Tizen::Web::Controls
274 #endif // _FWEB_CTRL_ILOADING_LISTENER_H_