Merge "Fix for issue about memory leak" into tizen_2.2
[framework/osp/web.git] / inc / FWebCtrlILoadingListener.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16 //
17
18 /**
19  * @file                FWebCtrlILoadingListener.h
20  * @brief               This is the header file for the %ILoadingListener interface.
21  *
22  * This header file contains the declarations of the %ILoadingListener interface.
23  */
24 #ifndef _FWEB_CTRL_ILOADING_LISTENER_H_
25 #define _FWEB_CTRL_ILOADING_LISTENER_H_
26
27 #include <FBaseRtIEventListener.h>
28 #include <FBaseString.h>
29
30 namespace Tizen { namespace Graphics
31 {
32 class Bitmap;
33 }} // Tizen::Graphics
34
35 namespace Tizen { namespace Net { namespace Http
36 {
37 class HttpHeader;
38 }}} // Tizen::Neb::Http
39
40 namespace Tizen { namespace Web { namespace Controls
41 {
42 class AuthenticationChallenge;
43 }}} // Tizen::Web::Controls
44
45 namespace Tizen { namespace Web { namespace Controls
46 {
47
48 /**
49  * @enum WebNavigationType
50  *
51  * Defines the type of %Web navigation.
52  *
53  * @since       2.0
54  */
55 enum WebNavigationType
56 {
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 */
63 };
64
65 /**
66  * @enum LoadingErrorType
67  *
68  * Defines the types of loading errors.
69  *
70  * @since       2.0
71  */
72 enum LoadingErrorType
73 {
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 */
84 };
85
86 /**
87  * @enum DecisionPolicy
88  *
89  * Defines the decision policy.
90  *
91  * @since       2.0
92  */
93 enum DecisionPolicy
94 {
95         WEB_DECISION_DOWNLOAD,                          /**< The download policy*/
96         WEB_DECISION_CONTINUE,                          /**< The usage policy*/
97         WEB_DECISION_IGNORE,                                /**< The ignore policy*/
98 };
99
100 /**
101  * @interface   ILoadingListener
102  * @brief               This interface is for receiving the events that occur during the loading of data.
103  *
104  * @since       2.0
105  *
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.
109  * @n
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>.
111  */
112 class _OSP_EXPORT_ ILoadingListener
113         : public virtual Tizen::Base::Runtime::IEventListener
114 {
115 public:
116         /**
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.
118          *
119          * @since               2.0
120          */
121         virtual ~ILoadingListener(void) {}
122
123         /**
124          * Called when an authentication is requested.
125          *
126          * @since                       2.0
127          *
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
134          */
135         virtual bool OnHttpAuthenticationRequestedN(const Tizen::Base::String& host, const Tizen::Base::String& realm, const Tizen::Web::Controls::AuthenticationChallenge& authentication) = 0;
136
137         /**
138          * Called when the authentication request is cancelled.
139          *
140          * @since       2.0
141          */
142         virtual void OnHttpAuthenticationCanceled(void) = 0;
143
144         /**
145          * Called when the loading operation starts.
146          *
147          * @since       2.0
148          */
149         virtual void OnLoadingStarted(void) = 0;
150
151         /**
152          * Called when the loading operation is cancelled.
153          *
154          * @since       2.0
155          */
156         virtual void OnLoadingCanceled(void) = 0;
157
158         /**
159         * Called when the loading operation fails.
160         *
161         * @since        2.0
162         *
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.
168         */
169         virtual void OnLoadingErrorOccurred(LoadingErrorType error, const Tizen::Base::String& reason) = 0;
170
171         /**
172          * Called when the loading operation is completed.
173          *
174          * @since       2.0
175          */
176         virtual void OnLoadingCompleted(void) = 0;
177
178         /**
179          * Called when the loading progress for the current page is requested. @n
180          * The progress rate is displayed as a percentage.
181          *
182          * @since       2.0
183          *
184          * @param[in]   progress                The progress rate ranging from [@c 0 to @c 100]
185          */
186         virtual void OnEstimatedProgress(int progress) = 0;
187
188         /**
189          * Called when the title of the new page is received.
190          *
191          * @since       2.0
192          */
193         virtual void OnPageTitleReceived(const Tizen::Base::String& title) = 0;
194
195         /**
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
198          * browser engine.
199          *
200          * @since               2.0
201          *
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
206          */
207         virtual bool OnLoadingRequested(const Tizen::Base::String& url, WebNavigationType type) = 0;
208
209         /**
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.
214          *
215          * @since               2.0
216          *
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
220          */
221         virtual DecisionPolicy OnWebDataReceived(const Tizen::Base::String& mime, const Tizen::Net::Http::HttpHeader& httpHeader) = 0;
222
223         /**
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().
226          *
227          * @since               2.1
228          *
229          * @param[in]   favicon                 The favicon image
230          */
231         virtual void OnFaviconReceived(const Tizen::Graphics::Bitmap& favicon) {}
232
233 protected:
234         //
235         // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
236         //
237         // Gets the Impl instance.
238         //
239         // @since               2.0
240         //
241         virtual void ILoadingListener_Reserved1(void) {}
242
243         //
244         // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
245         //
246         // Gets the Impl instance.
247         //
248         // @since               2.0
249         //
250         virtual void ILoadingListener_Reserved2(void) {}
251
252         //
253         // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
254         //
255         // Gets the Impl instance.
256         //
257         // @since               2.0
258         //
259         virtual void ILoadingListener_Reserved3(void) {}
260
261         //
262         // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
263         //
264         // Gets the Impl instance.
265         //
266         // @since               2.0
267         //
268         virtual void ILoadingListener_Reserved4(void) {}
269
270 }; // ILoadingListener
271
272 }}} // Tizen::Web::Controls
273 #endif // _FWEB_CTRL_ILOADING_LISTENER_H_