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 that occur 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. @n
118 * This way, the destructors of the derived classes are called when the destructor of this interface is called.
122 virtual ~ILoadingListener(void) {}
125 * Called when an authentication is requested.
129 * @return @c true if the ownership is taken by the application, @n
130 * else @c false, and a default dialog for the ID and password is displayed @n
131 * If this method returns @c true, the application must delete the AuthenticationChallenge instance.
132 * @param[in] host The host requiring the authentication
133 * @param[in] realm The description to help save the user credentials for future visits
134 * @param[in] authentication The handler to send a user response to the server that requested the authentication
136 virtual bool OnHttpAuthenticationRequestedN(const Tizen::Base::String& host, const Tizen::Base::String& realm, const Tizen::Web::Controls::AuthenticationChallenge& authentication) = 0;
139 * Called when the authentication request is cancelled.
143 virtual void OnHttpAuthenticationCanceled(void) = 0;
146 * Called when the loading operation starts.
150 virtual void OnLoadingStarted(void) = 0;
153 * Called when the loading operation is cancelled.
157 virtual void OnLoadingCanceled(void) = 0;
160 * Called when the loading operation fails.
164 * @param[in] error The error that occurs during loading
165 * @param[in] reason The reason for the loading failure:
166 * - @c WEB_HTTP_RESPONSE: The HTTP state code such as "404"
167 * - @c WEB_MIME_NOT_SUPPORTED: The Multipurpose Internet Mail Extensions (MIME) type such as "application/rdf+xml" is not supported.
168 * - @c WEB_BAD_URL: The URL is incorrect.
170 virtual void OnLoadingErrorOccurred(LoadingErrorType error, const Tizen::Base::String& reason) = 0;
173 * Called when the loading operation is completed.
177 virtual void OnLoadingCompleted(void) = 0;
180 * Called when the loading progress for the current page is requested. @n
181 * The progress rate is displayed as a percentage.
185 * @param[in] progress The progress rate ranging from [@c 0 to @c 100]
187 virtual void OnEstimatedProgress(int progress) = 0;
190 * Called when the title of the new page is received.
194 virtual void OnPageTitleReceived(const Tizen::Base::String& title) = 0;
197 * Called to notify an application of the URL to be requested. @n
198 * 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
203 * @return @c true if the application handles the URL after the request is cancelled in the browser engine, @n
204 * else @c false if the browser engine proceeds with the requested URL
205 * @param[in] url The URL that is requested
206 * @param[in] type The type that indicates how the URL is triggered
208 virtual bool OnLoadingRequested(const Tizen::Base::String& url, WebNavigationType type) = 0;
211 * Called to notify an application of the content type of the data to be downloaded. @n
212 * - To handle data by itself, the application must return @c WEB_DECISION_DOWNLOAD. The data is routed to IWebDownloadListener to be downloaded incrementally. @n
213 * - If an application returns @c WEB_DECISION_CONTINUE, the browser engine continues the downloading and tries to parse the data. @n
214 * - If an application returns @c WEB_DECISION_IGNORE, the browser engine cancels the downloading of the data.
218 * @return A value of the enumerator DecisionPolicy
219 * @param[in] mime The content type of the data that is downloaded
220 * @param[in] httpHeader The HTTP header string
222 virtual DecisionPolicy OnWebDataReceived(const Tizen::Base::String& mime, const Tizen::Net::Http::HttpHeader& httpHeader) = 0;
225 * Called when the favicon of the new page is received. @n
226 * If this callback is received once, an application can get the favicon by using Tizen::Web::Controls::Web::GetFaviconN().
230 * @param[in] favicon The favicon image
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_